Соло разработка игры в кактус. Очередная порция опыта.

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

Что сделал нового в игре

1) Добавил три вида кактусов (был один). Правда сам "горшок" в котором он растёт пока один и тот же.

2) Добавил полки (оранжерея) куда попадают выращенные кактусы.

Немного о гемплее

Кактус ловит падающие капли с неба и растет. Опасные градинки падающие с неба дают кактусу отрицательный рост и он уменьшается. Цель дорасти до неба. Когда кактус достигает неба - Победа! И можно смотреть на кактус в оранжерее на полках.

Что планирую сделать

1) Сделать горшики, в которых растёт кактус разными.

2) Наверное нужно добавить больше разновидностей кактусов.

3) Добавить изредка падающие цветочки. Если кактус поймает цветок, то он должен будет появиться на самом кактусе в рандомном месте.

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

Впечатления на основе текущего опыта соло-разработки игры

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

2) Даже простые вещи в игре делать сложно. И нужно учитывать множество факторов. Иногда появляются загвоздки, о которых на этапе планирования не знал и не предвидел. Например добавил я сейчас в игру три полки по пять ячеек итого 15 кактусов туда поместятся. На десктопе смотрится норм, а на мобилке не норм. Пришлось придумывать как адаптировать эти полки под мобильные экраны. Пришлось добавить кнопку листания полок. Это всё ок. Но что если я в будущем, когда моя игра захватит мир, захочу сделать бесконечное количество полок, нужно будет переписывать код в части полок примерно на 80%. Исходя из этого я старался писать код так, чтобы в будущем было как можно "легче" его расширить и дополнить без переписывания 80% кода.

3) Вытекает из второго. Когда пишу код стараюсь думать "наперед", а что если в будущем понадобится расширить функционал и стараюсь писать (организовывать классы, методы, файлы и т.д.) максимально (насколько это возмножно) гибко. Вроде бы правильно, но иногда это доходит до крайности и я не могу определиться с конкретным решение конкретной задачи. И тут мне на помощь приходять мысли о чувстве мере, о балансе между "идеальным кодом" и "главное чтобы работало", мысли о "лучше сеница в руках ...", мысли о том что жизнь коротка и нужно уже написать хоть какой-то вариант игры (базовый, минимальный, но работающий, так сказать в полном цикле вариант игры). Учитывая, что я солирую без команды и что это хобби в свободное от работы и от развлечений (сериалы, фильмы, игры, гитара, фортепиано, LLM, SD, лежание на диване, тупизм, пофигизм, иногда чтение преимущественно аудиокниг) время, то вариант получается уж совсем базовый. Но это норм. Тут опять встаёт вопрос приоритетов, филосовское "Зачем" и т.д. и т.п. Не будем отвлекаться :)

Еще такой вывод:

Как-бы идеально не планировался код, всё равно в будущем придется переделывать и переписывать. Поэтому не стоит много времени на это тратить. Достаточно в меру соблюдать базовые принципы кодинга, ну типа: "Do not repeat yourself", информативные имена для переменных (классов, методов), KISS и прочие ""bses practice", "code style" и т.д. и т.п.

Ссылка на игру без рекламы

Планирую игру выложить на всяких площадках. Там будет реклама после каждого третьего выращенного кактуса. Т.е. игрок видимо рекламу не увидит никогда :xD

Игру без рекламы для теста выложил на itch dot io.

2
2 комментария