Кухня создания игры
Сегодня экспериментальный пост. Не про финансы, но про программирование. Попробую рассказать о кухне создания мобильной игры глазами новичка. Я никогда раньше не писал компьютерные игры. Поэтому не претендую на правильную последовательность шагов, просто делюсь опытом.
Образование у меня профильное и когда-то давно, будучи студентом, я работал программистом. Один из бизнесов до сих пор тесно связан с веб-разработкой, поэтому с запуском ИТ-проектов знаком хорошо. Но роль программиста — это вызов и выход из зоны комфорта.
Я уже рассказывал, как для отработки новых правил мы с детьми рисовали заново игровое поле и играли в «Арифметику богатства». Каждая партия может занимать от 20 до 40 минут. При этом всегда есть вариативность и судить о том как повлияло на игру очередное изменение правил можно только приблизительно.
Когда базовые правила игры уже сложились, в моем списке всё еще оставалось много идей как «улучшить» игру. Но часть идей скорее всего ухудшат игровой процесс, как это проверить? Как быстро понимать что станет с игрой при добавлении очередного правила? Отыгрывать по несколько партий вживую с каждым изменением — это долго. Поэтому захотелось автоматизировать процесс.
Кодинг текстовой игры
Я не программировал уже 20 лет, поэтому пришлось вспоминать матчасть. В качестве жертвы для экспериментов был выбран Python. Это один из самых лёгких в освоении языков программирования. Кроме того, мне всегда нравилась лаконичность и красота питоновского кода.
После пары недель вечернего чтения самоучителей и просмотра обучающих роликов был со скрипом установлен Jupyter Notebook и я сел кодить.
Вечер за вечером я делал и переделывал. Сначала процесс шел очень медленно, но как только я немного разобрался появилась первая версия «Арифметики богатства» на Python.
Пока в ней нет никакого интерфейса — это текстовая игра. Правила игры — это строки кода. Данные о монетах в кошельке, о выбранном карьерном пути, о положении игроков на поле — это значения переменных. А интерфейс — это строчки, бегущие по экрану после очередного запуска. Пока все игроки виртуальные, то есть компьютер играет сам с собой.
Что хорошо — теперь я могу задавать разные начальные параметры, затем добавлять или убирать новые условия игры и буквально за несколько секунд отыгрывать партии. Для чистоты эксперимента я запускаю игру по 4-5 раз при каждом изменении. Наблюдаю как часто игроки становятся банкротами, на сколько ходов растягивается партия, возможен ли в принципе выигрыш и так далее. Что-то отметаю сразу, что-то видоизменяю и снова запускаю.
Такое моделирование уже позволило отобрать несколько удачных идей. Хотя, признаюсь честно, по больше части правила остались такими же как мы их придумали с детьми в ходе настольных баталий. Всё таки нет ничего лучше живого общение и обратной связи от игроков.
Но я доволен, потому что теперь есть модель для проверки гипотез. А логика, запрограммированная в текстовой версии, еще пригодится для разработки мобильной версии для iOS/Android.
Что дальше?
Сейчас продумываю прототипы экранов для того, чтобы позже красиво их отрисовать и запрограммировать на одном из движков.
Параллельно выбираю движок. Пока пробую свои силы на разных платформах. Возможные претенденты:
- PyGame
- Python Kivy
- React Native
- Unity
- Adalo
Игра «Арифметика богатства» будет простой и не требовательной к ресурсам, поэтому было бы логично написать её на одном из кросс-платформенных движков, а затем опубликовать сразу web-версию, версию для iOS и для Android.
Хотел еще написать про графику для игры, но это в следующий раз.
А пока почитайте лайфхаки, которые легли в основу первой стадии игры:
На сегодня всё.
Если вам интересно с какими трудностями я столкнусь в процессе разработки настольной и мобильной игры — подписывайтесь.
Лайк тоже не забывайте. И да пребудет с нами сила чистого кода.
P.S. Изобретаю игру, которая учит детей обращаться с деньгами.
Каждый игрок «проживает» несколько шагов: №0. Избавься от долгов№1. Накопи финансовую подушку№2. Сделай пассивный доход выше расходов №3. Воспитай наследников и продолжи династию
Правила настольной версии игры «Богатей» в свободном доступе.