Всем здравствуйте! Прошло уже более двух недель с последней статьи, а значит, у игры “Вечный пассажир” появились новости. По плану мы должны были сделать прототип игры в мае. Сейчас расскажу, на каком он свете, а также поделюсь, как идёт разработка в целом. Если кратко:Пополнение в команде, человек приступит к работе всего через 6-7 летПрототип сделали и даже поиграли, но что-то пошло не такПересмотрели поведение НПС и теперь они могут вмешиваться в диалоги друг другаДобавили взаимодействие с предметамиПереписали существующие диалоги под новый форматСмотри, какая швабра!Пополнение в командеВ мае у двух членов команды случилось пополнение в семье. Новый человечек пока слишком мал, чтобы участвовать в разработке игры, зато он позволяет себе диктовать, когда и сколько работать организатору проекта. Тем не менее стараемся поддерживать тот же темп, хоть теперь это и требует больше усилий. И вот несколько наблюдений о работе с грудным ребёнком на руках. Сбивается дисциплина Если раньше я могла заранее знать, что сяду за проект, допустим в 12.00, и проведу за ним часов 8, то теперь я вообще не могу предсказать, сколько у меня будет времени на игру. В какой-то день я выкупала малыша, накормила его, положила в кроватку, рассчитывая, что он уйдёт в ночной сон, подарив мне часа 3. Но нет. Только я села за компьютер, он начал орать. Я повторила ритуалы, снова уложила его, села за компьютер. И снова он орёт. Я снова походила с ним, положила в кроватку, села за компьютер. И так повторилось раз 20, если не больше. Всё, что я успела – открыть юнити. Как вам открывать юнити 3 часа?Но бывают и хорошие дни, когда малыш крепко спит. Тогда я успеваю сделать довольно много.Материнство - тоже своего рода день суркаРабота мозга в фоновом режиме не менее эффективна, чем в активном режимеВ продолжение предыдущего пункта. Представьте, вы садитесь за компьютер, проводите за ним минут 5. Всё, что вы успеваете – вникнуть в суть задачи, решение пока не знаете. Далее вас выдёргивают земные дела – поменять памперс, покормить, переодеть, покачать, потанцевать с бубном и так далее. Затем вы снова садитесь за компьютер. И вуаля! Вы уже знаете, как решать задачу. А всё потому, что она обрабатывалась мозгом в фоновом режиме. Если раньше я тратила столько же времени на продумывание кода, ни на что не отвлекаясь, то теперь я могу просто загрузить в голову задачу, отвлечься, а решение приходит само. Конечно, так происходит не всегда. Но в большинстве случаев подсознание творит чудеса.С ребёнком можно обсуждать работуОпять же, если непонятно, как решать какую-либо задачу, вместо сказочек и песенок малышу можно рассказать о трудностях в разработке игры. Все равно пока ничего не понимает, главное – интонации :)Проговаривание задач кому-то простым языком мне всегда очень помогало. А теперь, когда нет времени распивать чаи, роль слушателя выполняет малыш.Такой вот разговор с самим собойМожно сидеть за компьютером с малышом на рукахЯ научилась печатать одной рукой, одновременно качаясь из стороны в сторону. Я даже купила слинг, чтобы освободить вторую руку, но в условиях летней жары использовать его нереально.Я не знаю, кому могут быть полезны мои наблюдения. Есть ли тут те, кто работает с малышом на руках?..Главный вывод, который я сделала для себя – не переживать и не гнаться за дедлайнами. Если я что-то не успеваю, то это не из-за ребёнка, а из-за внезапных багов/ошибок в самой игре. Часто бывает, что я что-то плохо продумываю с точки зрения геймдизайна, из-за чего приходится много переделывать (об этом далее). Эта сцена из "Москва слезам не верит" теперь воспринимается очень жизненно :)Плюс я никогда себя не насилую. Если хочется лечь спать с ребёнком посреди дня – ложусь. Если вечером чувствую бодрость, могу просидеть над игрой всю ночь. Так что режим дня у меня абсолютно отсутствует. Главное правило – делай, сколько получается, пока есть возможность и силы.Что с прототипом?Где-то +- в середине мая мы сделали первый билд. Я дала его поиграть членам семьи. ……!!!!Я не могла на это смотреть. Я хотела вырвать мышку из рук и закричать – ну вот же написано, куда нажимать. ПОСРЕДИ ЭКРАНА НАДПИСЬ!!!Чувствую себя мамой, которая приходит, и пропавшая вещь при ней материализуется...Но это пол беды. У меня так замылился взгляд, что я не учла: если находиться в диалоге с НПС и в этот момент к нему подойдёт другой НПС, игра сломается. Я так привыкла играть в свою же игру, что уже на автомате заводила диалоги с персонажами, избегая багов. То есть если я знала, что сейчас придёт Оля и будет соблазнять Мирослава, то с Мирославом говорить не надо. И почему-то в моей голове как аксиома стояло, что другие люди будут точно также увиливать от багов.Но я посмотрела, как играют люди. Никто, конечно, с уважением к багам не относился. Мало того, тестеры будто специально бились именно в те диалоги, которые прерываются другими персонажами. В итоге тестирование превратилось в полнейшую глупость.Тестер: *просто играет*Я: Не подходи к этому герою, пожалуйста…Я: К этому тоже пока нельзя…Я: О! Вот к этому беги скорее, пока можно!Я: Ой, не подходи уже, уже нельзя!Я: Нельзя, говорю! Сломал игру, варвар!Миссия невыполнима - или как я пытаюсь не попасть в багиТогда я решила, что нужно всё-таки останавливать время в диалогах с участием игрока. Ведь тогда остановятся все НПС, а значит, игрок не нарушит ход времени. Но мне не понравилось, как получилось. По сути игрок мог проскипать практически все диалоги за секунд 10-20 игрового времени. Контента на 5 минут сделать просто нереально при таких условиях.(Да, я решила всё-таки ввести возможность скипать фразы во время диалогов с участием игрока, иначе при многократном повторении игра воспринимается занудно. При скипе ритм не сбивает игровой поток, а вот вынужденное чтение одного и того же точно вызывает отвал – мне самой хотелось игру вырубить и больше не запускать никогда.)Пауза игрового времени не работала, как хотелось бы. И я убрала её. То есть время шло в диалогах с участием игрока как обычно – персонажи на фоне продолжали заниматься своими делами, но при этом игрок мог ускорить фразы того диалога, где находился. А пауза всё портила. Нужно было другое решение.НПС могут вмешиваться в диалоги друг другаТогда я и придумала, что нужно добавить дополнительные диалоги. Они будут запускаться, если НПС вмешивается в диалог говорящих персонажей (игрок может участвовать в этом диалоге, а может и не участвовать). Такое может произойти, если, например, игрок занял диалогом персонажа, из-за чего тот не успел вступить в диалог с другим персонажем. А когда вступил, к нему подошёл уже другой персонаж, который по таймингу должен был начать с ним диалог.Вот так стоим и ждём чуда...Вот пример: Бабка после подстрекательства игрока запускает диалог с Дачником, обвиняя его в шпионаже. Если бы игрок не надоумил её на это, Бабка бы этот диалог не запустила. Но тут приходит Контролёр проверять билет. Он подходит к Бабке. У него заготовлен диалог на проверку билета. Но Бабка уже в диалоге, и у Контролёра не прописана логика, что делать в таком случае. Раньше это вызвало бы зависание игры. Теперь же Контролёр видит, что Бабка в диалоге и выбирает альтернативный диалог. В нём сюжетно учтено, что Бабка уже говорит с кем-то. Выглядит вполне естественно. Так что я даже рада, что обнаружилась такая проблема. Я хочу, чтобы у игрока было ощущение, что персонажи живут своей жизнью, а любой дополнительный вариант диалога такое ощущение усиливает.Взаимодействие с предметамиТеперь игрок может взаимодействовать с предметами. При подходе, например, к закрытой двери туалета, появляются кнопки с вариантами действий – постучать, выбить дверь, взломать замок.Можно копаться в мусорке))Мы реализовали это через ту же самую диалоговую систему с нод-графами и триггерами. Как это сделано с персонажами: При подходе к НПС, игрок попадает в триггер этого НПС. Система обнаруживает нужный диалог-граф с этим НПС, подхватывая оттуда варианты ответов из первой реплики. И игроку сразу высвечиваются варианты реплик, как только он входит в триггер. Он выбирает вариант, нажимает кнопку и запускается, собственно диалог. Либо же игрок ничего не нажимает и просто покидает триггер, тогда кнопки с вариантами исчезают.С предметами практически то же самое. У каждого предмета есть свой триггер, куда подвязаны доступные диалоги. Когда игрок заходит в триггер, ему точно также высвечиваются варианты взаимодействия. То есть аналогично используются нод-графы. Даже если при взаимодействии с предметом нет ни одной реплики, а есть только, например, анимация, это работает точно также. Просто в нод графе будет пустая реплика, куда подвязывается функция, запускающая анимацию.Внутренняя кухня с триггерами у персонажей и предметов несколько отличается, но это уже тема для отдельной статьи.Переписали диалоги под новый форматМы всё ещё работаем над комфортной системой написания диалогов для сценаристов. Она организована в гугл-таблицах. Хочется, чтобы люди не циклились на количестве символов и прочей ерунде, а думали над хорошим сюжетом. А для этого надо сделать так, чтобы таблица думала за них. Превысили лимит символов? Строчка подчеркнётся красным. На грани превышения – жёлтым. О любой ошибке сценарист сразу же узнает и исправит. Когда диалог уже написан, исправлять и сокращать целое гораздо сложнее.Табличка с обратной связьюТакже ячейка с репликой практически идентична диалоговому баблу в игре. Как там перенесено – так, вероятнее всего, и будет в игре.Тот же диалог в игреМы исправили те диалоги, которые были, а новые добавляем уже с учётом формата. Чем занимаемся сейчас? К сожалению, из-за большого количества нововведений (не про всё упомянула в статье) немного поломался основной скрипт, отвечающий за интеллект НПС. Сейчас приходится через инспектор юнити вручную разрешать персонажу переходить к следующему действию. Мы усердно работаем над починкой. После реанимации мозга персонажей, остаётся добавить подсветку персонажа, с которым диалог, и квесты. Играть-то можно и без них, но мне кажется, небольшие пояснения, что делать, скрасят игру. Пока там будут квесты на уровне – выяснить, где ты находишься и осмотреться. Спасибо за внимание! Подписывайтесь на наш канал Telegram и группу VK. Там мы выкладываем посты несколько раз в неделю. vk.comВКонтакте | ВКонтактеt.meВЕЧНЫЙ ПАССАЖИР 🎮 PERPETUAL PASSENGER