*MVP (Minimum Viable Product) — минимально жизнеспособный продукт, базовая версия проекта.

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

Идея

Всё началось с RimWorld. Это одна из моих самых любимых игр. Не думаю, что "римка" нуждается в представлении, но если вы вдруг не в курсе - расскажу двух словах. Это симулятор колонии с непрямым управлением. Под вашим попечением есть энное число колонистов ("пешек"). Вы ставите задачи на строительство, добычу ресурсов, крафт. Затем выставляете приоритеты своим пешкам - кому чем заниматься, и дальше они сами бегут что-то делать. Короче, Dwarf Fortress на минималках, евпочя.

Чем больше я играл, тем чаще ловил себя на мысли, что какие-то элементы реализованы не так, как мне хотелось бы. И главная проблема для меня: "римка" изначально в своей задумке - плоская. Мне всё время хотелось закопаться поглубже под землю или построить вокруг колонии не только стены, а сторожевые вышки (с амбразурами, конечно). Моды многое добавляют в ванилу (без них играть уже прям не интересно), но, как я понял, сделать римку трехмерной невозможно принципиально - слишком сильно придется править ядро.

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

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

Going Medieval - почти хороша, но, на мой вкус, слишком сильно старается быть "красивой" (неудачно) и застряла в скучном средневековым сеттинге.

Colony Survival - очень прикольная по своей сути задумка - что-то среднее между "факторио" и "майнкрафтом". Но тут нет пешек у которых есть свои потребности, не о ком заботиться, это не совсем то, что мне хотелось бы видеть.

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

Stranded: Alien Dawn - очень крутая была бы игра, если бы она развивалась дальше. Сейчас у нее опять же, много недостатков: перегруженная графика, нет генератора персонажей, мало механик и др.

В общем, я решил попробовать создать свою "игру мечты" - ту, в которую мне хотелось бы играть самому. Основа геймплея - симулятор колонии с непрямым управлением персонифицированными персонажами. Сеттинг - научная фантастика: будущее, другая планета, пещерные технологии соседствуют с космическими. Мир — трёхмерный и воксельный. Графика — упрощённая, низкополигональная. Упор на строительство, добычу ресурсов, исследование технологий, крафт и путешествия по планете.

Движок

Godot. Я часто встречал хейт в сторону этого движка, но, поскольку я все-таки новичок в геймдеве, не могу понять, это просто вкусовщина или есть реальные причины. Тем не менее, я решил пока остановиться на нем. Думал в сторону Unity, но как будто бы пока к нему не готов: высокий порог входа, С# как основной язык (который я не знаю), и не особо приятная правовая политика. MIT-лицензия в Godot выглядит поинтереснее. Немного пощупал Godot со всех сторон, и, как будто, все мои потребности на текущий момент он закрывает: производительность вполне подходящая, довольно приятный python-подобный язык как один из основных.

Я читал, что у Godot есть минусы, связанные с производительностью. Но пока не понимаю, насколько большим должен быть проект, чтобы они проявились. В общем, если у вас есть что сказать на эту тему, прошу высказаться.

Мотивация и MVP

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

И тут нейросетевой интеллект посоветовал: "А ты начни, - говорит, - с MVP - может ты просто теряешь мотивацию, когда разрабатываешь бесконечно движок, но не видишь результата?" В этой идее есть зерно истины. Я люблю надолго закапываться в технологии, изучать, как реализуются те или иные механики. Но, при этом, осязаемого выхлопа-то, результата-то нет.

В общем, попробую идти этим путем: MVP, фиксирование результата, и посмотрим, будет ли интересно двигаться дальше.

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

  • Есть плоский мир размером условных 20x20 клеток.
  • В центре карты - красный кубик "база" и шарик "пешка".
  • Вокруг разбросаны зеленые кубики - это условные "ресурсы", которые можно собирать.
  • Я могу мышкой пометить ресурсы для сбора (рядом появляется "плюсик").
  • Когда я нажимаю кнопку "Собрать", пешка сама строит маршрут, по очереди собирает ресурсы и относит их на базу.
  • Когда ресурс сгружен на базу, увеличивается счетчик.
  • По таймеру (2 секунды) игра проверяет, сколько ресурсов на карте. Если их меньше пяти - в случайные координаты (кроме центральной области) доспавниваются еще ресурсы до лимита в 5 штук.
  • Цикл "отметить - собрать" можно повторять бесконечно.
  • И… пока на этом все.
Оно живое!

Что дальше?

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