Дневник разработки #4 Итоги к июню

Всем здравствуйте! Прошло уже более двух недель с последней статьи, а значит, у игры “Вечный пассажир” появились новости. По плану мы должны были сделать прототип игры в мае. Сейчас расскажу, на каком он свете, а также поделюсь, как идёт разработка в целом.

Если кратко:

  • Пополнение в команде, человек приступит к работе всего через 6-7 лет
  • Прототип сделали и даже поиграли, но что-то пошло не так
  • Пересмотрели поведение НПС и теперь они могут вмешиваться в диалоги друг друга
  • Добавили взаимодействие с предметами
  • Переписали существующие диалоги под новый формат
Смотри, какая швабра!
Смотри, какая швабра!

Пополнение в команде

В мае у двух членов команды случилось пополнение в семье. Новый человечек пока слишком мал, чтобы участвовать в разработке игры, зато он позволяет себе диктовать, когда и сколько работать организатору проекта. Тем не менее стараемся поддерживать тот же темп, хоть теперь это и требует больше усилий.

И вот несколько наблюдений о работе с грудным ребёнком на руках.

  • Сбивается дисциплина
    Если раньше я могла заранее знать, что сяду за проект, допустим в 12.00, и проведу за ним часов 8, то теперь я вообще не могу предсказать, сколько у меня будет времени на игру.
    В какой-то день я выкупала малыша, накормила его, положила в кроватку, рассчитывая, что он уйдёт в ночной сон, подарив мне часа 3. Но нет. Только я села за компьютер, он начал орать. Я повторила ритуалы, снова уложила его, села за компьютер. И снова он орёт. Я снова походила с ним, положила в кроватку, села за компьютер. И так повторилось раз 20, если не больше. Всё, что я успела – открыть юнити. Как вам открывать юнити 3 часа?
    Но бывают и хорошие дни, когда малыш крепко спит. Тогда я успеваю сделать довольно много.
Материнство - тоже своего рода день сурка
Материнство - тоже своего рода день сурка
  • Работа мозга в фоновом режиме не менее эффективна, чем в активном режиме

    В продолжение предыдущего пункта. Представьте, вы садитесь за компьютер, проводите за ним минут 5. Всё, что вы успеваете – вникнуть в суть задачи, решение пока не знаете. Далее вас выдёргивают земные дела – поменять памперс, покормить, переодеть, покачать, потанцевать с бубном и так далее. Затем вы снова садитесь за компьютер. И вуаля! Вы уже знаете, как решать задачу. А всё потому, что она обрабатывалась мозгом в фоновом режиме.

    Если раньше я тратила столько же времени на продумывание кода, ни на что не отвлекаясь, то теперь я могу просто загрузить в голову задачу, отвлечься, а решение приходит само. Конечно, так происходит не всегда. Но в большинстве случаев подсознание творит чудеса.

  • С ребёнком можно обсуждать работу
    Опять же, если непонятно, как решать какую-либо задачу, вместо сказочек и песенок малышу можно рассказать о трудностях в разработке игры. Все равно пока ничего не понимает, главное – интонации :)
    Проговаривание задач кому-то простым языком мне всегда очень помогало. А теперь, когда нет времени распивать чаи, роль слушателя выполняет малыш.
Такой вот разговор с самим собой
Такой вот разговор с самим собой
  • Можно сидеть за компьютером с малышом на руках
    Я научилась печатать одной рукой, одновременно качаясь из стороны в сторону. Я даже купила слинг, чтобы освободить вторую руку, но в условиях летней жары использовать его нереально.

Я не знаю, кому могут быть полезны мои наблюдения. Есть ли тут те, кто работает с малышом на руках?..

Главный вывод, который я сделала для себя – не переживать и не гнаться за дедлайнами. Если я что-то не успеваю, то это не из-за ребёнка, а из-за внезапных багов/ошибок в самой игре. Часто бывает, что я что-то плохо продумываю с точки зрения геймдизайна, из-за чего приходится много переделывать (об этом далее).

Эта сцена из "Москва слезам не верит" теперь воспринимается очень жизненно :)

Плюс я никогда себя не насилую. Если хочется лечь спать с ребёнком посреди дня – ложусь. Если вечером чувствую бодрость, могу просидеть над игрой всю ночь. Так что режим дня у меня абсолютно отсутствует. Главное правило – делай, сколько получается, пока есть возможность и силы.

Что с прототипом?

Где-то +- в середине мая мы сделали первый билд. Я дала его поиграть членам семьи.

…!!!!

Я не могла на это смотреть. Я хотела вырвать мышку из рук и закричать – ну вот же написано, куда нажимать. ПОСРЕДИ ЭКРАНА НАДПИСЬ!!!

Чувствую себя мамой, которая приходит, и пропавшая вещь при ней материализуется...
Чувствую себя мамой, которая приходит, и пропавшая вещь при ней материализуется...

Но это пол беды.

У меня так замылился взгляд, что я не учла: если находиться в диалоге с НПС и в этот момент к нему подойдёт другой НПС, игра сломается. Я так привыкла играть в свою же игру, что уже на автомате заводила диалоги с персонажами, избегая багов. То есть если я знала, что сейчас придёт Оля и будет соблазнять Мирослава, то с Мирославом говорить не надо. И почему-то в моей голове как аксиома стояло, что другие люди будут точно также увиливать от багов.

Но я посмотрела, как играют люди. Никто, конечно, с уважением к багам не относился. Мало того, тестеры будто специально бились именно в те диалоги, которые прерываются другими персонажами. В итоге тестирование превратилось в полнейшую глупость.

Тестер: *просто играет*

Я: Не подходи к этому герою, пожалуйста…

Я: К этому тоже пока нельзя…

Я: О! Вот к этому беги скорее, пока можно!

Я: Ой, не подходи уже, уже нельзя!

Я: Нельзя, говорю! Сломал игру, варвар!

Миссия невыполнима - или как я пытаюсь не попасть в баги

Тогда я решила, что нужно всё-таки останавливать время в диалогах с участием игрока. Ведь тогда остановятся все НПС, а значит, игрок не нарушит ход времени. Но мне не понравилось, как получилось. По сути игрок мог проскипать практически все диалоги за секунд 10-20 игрового времени. Контента на 5 минут сделать просто нереально при таких условиях.

(Да, я решила всё-таки ввести возможность скипать фразы во время диалогов с участием игрока, иначе при многократном повторении игра воспринимается занудно. При скипе ритм не сбивает игровой поток, а вот вынужденное чтение одного и того же точно вызывает отвал – мне самой хотелось игру вырубить и больше не запускать никогда.)

Пауза игрового времени не работала, как хотелось бы. И я убрала её. То есть время шло в диалогах с участием игрока как обычно – персонажи на фоне продолжали заниматься своими делами, но при этом игрок мог ускорить фразы того диалога, где находился. А пауза всё портила. Нужно было другое решение.

НПС могут вмешиваться в диалоги друг друга

Тогда я и придумала, что нужно добавить дополнительные диалоги. Они будут запускаться, если НПС вмешивается в диалог говорящих персонажей (игрок может участвовать в этом диалоге, а может и не участвовать). Такое может произойти, если, например, игрок занял диалогом персонажа, из-за чего тот не успел вступить в диалог с другим персонажем. А когда вступил, к нему подошёл уже другой персонаж, который по таймингу должен был начать с ним диалог.

Вот так стоим и ждём чуда...
Вот так стоим и ждём чуда...

Вот пример: Бабка после подстрекательства игрока запускает диалог с Дачником, обвиняя его в шпионаже. Если бы игрок не надоумил её на это, Бабка бы этот диалог не запустила. Но тут приходит Контролёр проверять билет. Он подходит к Бабке. У него заготовлен диалог на проверку билета. Но Бабка уже в диалоге, и у Контролёра не прописана логика, что делать в таком случае. Раньше это вызвало бы зависание игры. Теперь же Контролёр видит, что Бабка в диалоге и выбирает альтернативный диалог. В нём сюжетно учтено, что Бабка уже говорит с кем-то. Выглядит вполне естественно.

Так что я даже рада, что обнаружилась такая проблема. Я хочу, чтобы у игрока было ощущение, что персонажи живут своей жизнью, а любой дополнительный вариант диалога такое ощущение усиливает.

Взаимодействие с предметами

Теперь игрок может взаимодействовать с предметами. При подходе, например, к закрытой двери туалета, появляются кнопки с вариантами действий – постучать, выбить дверь, взломать замок.

Можно копаться в мусорке))

Мы реализовали это через ту же самую диалоговую систему с нод-графами и триггерами.

Как это сделано с персонажами: При подходе к НПС, игрок попадает в триггер этого НПС. Система обнаруживает нужный диалог-граф с этим НПС, подхватывая оттуда варианты ответов из первой реплики. И игроку сразу высвечиваются варианты реплик, как только он входит в триггер. Он выбирает вариант, нажимает кнопку и запускается, собственно диалог. Либо же игрок ничего не нажимает и просто покидает триггер, тогда кнопки с вариантами исчезают.

С предметами практически то же самое. У каждого предмета есть свой триггер, куда подвязаны доступные диалоги. Когда игрок заходит в триггер, ему точно также высвечиваются варианты взаимодействия. То есть аналогично используются нод-графы. Даже если при взаимодействии с предметом нет ни одной реплики, а есть только, например, анимация, это работает точно также. Просто в нод графе будет пустая реплика, куда подвязывается функция, запускающая анимацию.

Внутренняя кухня с триггерами у персонажей и предметов несколько отличается, но это уже тема для отдельной статьи.

Переписали диалоги под новый формат

Мы всё ещё работаем над комфортной системой написания диалогов для сценаристов.

Она организована в гугл-таблицах. Хочется, чтобы люди не циклились на количестве символов и прочей ерунде, а думали над хорошим сюжетом. А для этого надо сделать так, чтобы таблица думала за них. Превысили лимит символов? Строчка подчеркнётся красным. На грани превышения – жёлтым. О любой ошибке сценарист сразу же узнает и исправит. Когда диалог уже написан, исправлять и сокращать целое гораздо сложнее.

Табличка с обратной связью
Табличка с обратной связью

Также ячейка с репликой практически идентична диалоговому баблу в игре. Как там перенесено – так, вероятнее всего, и будет в игре.

Тот же диалог в игре
Тот же диалог в игре

Мы исправили те диалоги, которые были, а новые добавляем уже с учётом формата.

Чем занимаемся сейчас?

К сожалению, из-за большого количества нововведений (не про всё упомянула в статье) немного поломался основной скрипт, отвечающий за интеллект НПС. Сейчас приходится через инспектор юнити вручную разрешать персонажу переходить к следующему действию. Мы усердно работаем над починкой.

После реанимации мозга персонажей, остаётся добавить подсветку персонажа, с которым диалог, и квесты. Играть-то можно и без них, но мне кажется, небольшие пояснения, что делать, скрасят игру. Пока там будут квесты на уровне – выяснить, где ты находишься и осмотреться.

Спасибо за внимание! Подписывайтесь на наш канал Telegram и группу VK. Там мы выкладываем посты несколько раз в неделю.

1111
9 комментариев

Занимаюсь разработкой игры 8 месяцев а ребенку скоро 9 месяцев...
На вашу историю о том только сядете за компьютер и ребенок проснется. У меня максимально занимается хоть и жена ребенком. Но момент только соберёшься с мыслями, - на подержи малыша мне ванную надо или ещё что. В итоге задачу которую я мог решить за час, растягивается на весь день, либо пока вся семья не ляжет спать. Плюс ещё работа. Как я люблю жаловаться своей жене, весь мир максимально старается отвлекать от того чем я занимаюсь. Сейчас ребенок уже проявляет интерес к компьютеру и его цель жизни как только он попадает ко мне на руки, его миссия, быстро успеть начать бить ладошками по клавиатуре. А жена просекла фишку и постоянно просит его укладывать и рассказывать про игру. Каждый раз смеюсь над тем что у меня на столько интересный проект что ребенка вырубает за 5-10 минут моего монолога про игру ))

3
Ответить

Это очень мило)
Предполагаю, что когда ребенок постарше и проявляет интерес к миру - с ним сложнее. Грудной лежит себе да и всё)

Посмотрела ваш аккаунт, вы довольно далеко продвинулись. Желаю успехов в разработке!)

2
Ответить

классный стиль

уроды получились отменные

3
Ответить

Спасибо))

1
Ответить

Это что исповедь матери одиночки и ее самоубеждения что ребенок, бытовуха - не причем .
Так же делал свой легендарный ДС Хидэтака - в муках!

1
Ответить

Да, я уже часто пишу "мы сделали, мы протестировали, мы решили", разумеется, имея в виду не команду, а себя и тугосерьку)))

2
Ответить

Комментарий недоступен

1
Ответить