Как я писал первую игру и дипломный проект одновременно

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

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

Поскольку такая игра должна была стать довольно комплексной как по математической части, так и по части кода (а она и стала), то первой же мыслью было сделать данный проект своим дипломом и спокойно весь год заниматься любимым делом. В качестве сеттинга раздумывал над вариантами нарколаборатории и борделя. Заправлять баром, нанимать стриптизерш и варить мет в подвале до сих пор кажется мне очень интересной идеей. К сожалению, дипломному руководителю так не показалось, пришлось сменить сеттинг. Поменять направление нужно было быстро. Как оказалось, игр с темой про создание лекарств не так и много (а мне она казалась интересной), так и родился Pharmacy Tycoon.

​

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

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

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

Дизайн-документ — это важно, но что еще важнее – умение организовать разработку. Не обязательно владеть навыками продукт-менеджера, хватит и взять листок с ручкой, выписать необходимые задачи, разбить их на подзадачи. В идеале, желательно разбить на еще несколько подуровней, пока не дойдете до задач вроде «отобразить предмет в инвентаре». Лично я создал проект на гитхабе и постоянно создавал там новые таски и аккуратно следил за их выполнением, сразу перетаскивая в графу «Done». Для коллективной разработки это идеальный вариант. Но в итоге мне это осточертело, и я понял, что трачу на создание задач больше времени, чем на их выполнение (так как и ставил и выполнял все я единолично). Куда быстрее было просто взять ручку и записать, что я точно обязан сделать на текущей неделе, вместо того чтобы каждый раз запускать браузер.

Примерно так выглядел мой проект​
Примерно так выглядел мой проект​

Кроме того, при возможности, не бойтесь просить друзей/знакомых помочь с какими-то вещами, вроде тестирования, рисования и т.д. Если удастся вызывать у них интерес к игре, то, возможно, удастся и у других, после релиза . В команде делать проект куда веселее и проще, по моему опыту. Перед началом разработки мне удалось уговорить знакомого художника сделать для проекта часть арта, мне оставалось самое простое - написать весь код.

Разработка не всегда шла гладко, на некоторых проблемах я застревал и на несколько недель.

Самой большой болью были сохранения. К своему ужасу я узнал, что юнити может сериализировать только базовые типы данных, а сохранить объект с Monobehaviour или Scriptable Object это вообще катастрофа и нужно делать оберточные классы, в которые бы переносилась вся важная информация, а при загрузке эту информацию обратно по Monobehaviour и Scriptable Object раскидывать. Все это в разы растягивает код и мне очень не хотелось всю эту монотонную работу проделывать, потому что все мои сохраняемые данные на 70% только из таких объектов и состояли. В ходе игры пользователь строит разные комнаты, здания – это все не сохраняемый Monobehaviour, к примеру. Получилось так, что я не мог реализовать обычное сохранение базы игрока, а в самой игре без этого то и смысла не было. Кому нужен тайкун, где при каждом входе в игру нужно начинать заново? Слава богу, я нашел full serializer. Расширение для юнити, которые помогает засериализировать практически все что угодно и превратить это в Json файл. К сожалению, все равно пришлось писать больше 300 строк, чтоб правильно загружать все объекты.

Вид фармацевтической фабрики под конец игры​
Вид фармацевтической фабрики под конец игры​

Конечно были и другие моменты, тормозящие разработку. Например, пришлось писать собственную систему визуализации информации (графики, диаграммы и т.д), чтобы дать пользователю полное представление о его «финансовой» (и не только) деятельности. Возможно, я даже переборщил с разнообразными экономическими показателями. К примеру, вряд ли кто-то из игроков будет вникать, что такое «точка безубыточности». Но помните, что эту игру я выдавал за свой диплом, так что хоть какую-то математическую базу показать надо было.

Поначалу я думал, что самым тяжелым моментом будет интеграция гугл сервисов и подключение средств монетизации, т.к. ни с чем подобным я никогда в жизни дел не имел. На самом же деле, это оказалось самой простой частью. Я загрузил приложение в play market, подключил достижения и лидерборды, настроил внутриигровые покупки и рекламу всего за пару дней. Благодаря уже написанным API все это можно интегрировать в свой код за пару нажатий ctrl+c, ctrl+v, вообще не думая. В интернете уже лежит куча заготовок, только бери да подставляй свои значения. Важнее, перед загрузкой своего .apk, разобраться с тем, как подписывать приложение и зачем вообще нужны эти ключи шифрования. Потому что лично я запутался и какое-то время не мог понять, почему у меня ничего не работает. Удобства ради советую все-таки поручить управлять ключом подписи самому гуглу, так проще и безопаснее (хотя ничего в принципе не мешает хранить ключ и локально, если вы параноик. Главное - не потерять его).

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

Окно создания лекарств​
Окно создания лекарств​

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

Продавайте, зарабатывайте, расширяйте производство!​
Продавайте, зарабатывайте, расширяйте производство!​

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

К финальному этапу развития игрок вполне может затравить весь мир
К финальному этапу развития игрок вполне может затравить весь мир

Самое главное, что я вынес за свой небольшой опыт геймдева – не пытайтесь создать убийцу вова в качестве своего первого проекта (оставьте хотя бы на второй, если сильно хочется). В конце-концов вы поймете, что задумали больше, чем способны сделать. Если вы начинающий разработчик, не бойтесь унижаться до создания арканоидов, каких-то настольных игр или других клонов классических и широко известных игрушек. Это даст вам отличное представление о собственных силах и позволит почувствовать себя увереннее в выбранном движке и языке.

Но в то же время, не следует бояться принять вызов и сделать что-то чуточку сложнее, чем обычно. Порой мне казалось, что и Pharmacy Tycoon слишком для меня амбициозна, но я не сдавался и создал все практически в таком виде, в каком оно изначально и задумывалось, хоть на разработку и ушло около года. Я осознаю, что для инди игры с одним разработчиком это небольшой период времени, но мне он кажется огромным.

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

Буду рад, если кто-нибудь из вас опробует мой первый проект и даст знать, что о нём думает — любой фидбек будет крайне ценен.

Как я писал первую игру и дипломный проект одновременно
3838
19 комментариев

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

11
Ответить

интересно услышать мнение

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

когда он увидит, что его энтузиазм принёс кому-то вполне себе материальную выгоду.

4
Ответить

Имплаинг автор под дулом пистолета заставил бедного художника батрачить день и ночь. Если человек не против помочь - какие с этим могут быть проблемы? А уж будет с этого материальный профит и достанется ли он помощнику вопрос решаемый.

4
Ответить

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

1
Ответить

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

3
Ответить

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

6
Ответить

Ждем страничку Arkady Lyubchenko в Google Play Games.

Ответить