среда, 20 января 2016 г.

Дневники разработчика

Так как работу над проектом мы начали до того как решили писать про все это в уютном бложике - попросил участников расщедриться на свою историю о том "как все начиналось" ну или просто поделиться полезной информацией :)

О том как это видел наш программист речь пойдет ниже.

- - -
Изначально у нас был выбор на каком же движке делать игру, думали, смотрели движки, пробовали. Первая демка была сделана на движке для визуальных новелл Ren'Py, причем нашим гейм дизайнером, я в этот момент в проекте не участвовал, был просто наблюдателем, а через некоторое время предложил свою помощь если вдруг ребята перейдут на юнити, так как сам являюсь юнити разработчиком.

Через пару недель я еще сильнее заинтересовался проектом, решил поискать какие-нибудь готовые решения для реализации визуальных новел. У юнити есть очень удобный магазин ассетов, туда первым делом и заглянул. Сначала думал что визуальные новеллы - это для гиков, там маленькая аудитория и поэтому в ассетсторе ничего не найду, но к своему удивлению нашел более 10 готовых решений. Какие-то из них кривые, косые, какие-то более или менее, но один из них явно выделялся - Fungus.


На утро рассказал парням про него и оказывается не я один знал про него. Зацепило еще то что самим ассетом занимается целая команда разработчиков работающих фулл тайм. Так решили перенести функционал демки на юнити.

Первые впечатления о фунгусе были очень положительные:

  • интерфейс интуитивно понятный - не смотря туториал разобрался минут за 10
  • глянул в код как реализована система, показалась простой и легко расширяемой
  • к самому ассету написан хороший редактор для юзеров, все очень просто
  • принцип работы похож на стейт машину - есть сценарий, в нем есть блоки, блоки содержат команды, из блока в блок можно переходить с помощью команд

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

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

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

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

Так мы хотим делать сохранение и загрузку прогресса =)
Посмотрим что из этого получится.

Комментариев нет:

Отправить комментарий