Найти в Дзене

Создаю Инди Игру SpaceGuard. Не мытьем, так катаньем. Часть 7

Как вы могли заметить, неделю не было статей по SpaceGuard. Всё это время я работал над реализацией своей любимой механики — мерджа. Хотя она у меня не всегда получается, во всех играх и приходится использовать костыли, я продолжаю пытаться её реализовать. В этот раз я тоже столкнулся с проблемами, но давайте расскажу по порядку. Первой идеей стало то, что в игре может появиться слишком много кораблей, что нежелательно. Поэтому я решил внедрить систему слияния. На данный момент корабли спавнятся на базе в пяти точках и пересекаются на своих орбитах с другими кораблями. Я подумал, что при столкновении двух кораблей с одинаковым уровнем прокачки должен возникнуть новый корабль, но со вторым уровнем. Этот этап был легко реализован. Далее я планировал, что два корабля второго уровня столкнутся и перейдут на третий уровень. Однако каждый раз получалось одно и то же: корабли, переходившие на второй уровень, сталкивались с кораблями первого уровня и переходили сразу на третий. Хотя это тоже б
Оглавление

Предисловие.

Как вы могли заметить, неделю не было статей по SpaceGuard. Всё это время я работал над реализацией своей любимой механики — мерджа. Хотя она у меня не всегда получается, во всех играх и приходится использовать костыли, я продолжаю пытаться её реализовать. В этот раз я тоже столкнулся с проблемами, но давайте расскажу по порядку.

Задумка 1

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

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

Далее я планировал, что два корабля второго уровня столкнутся и перейдут на третий уровень. Однако каждый раз получалось одно и то же: корабли, переходившие на второй уровень, сталкивались с кораблями первого уровня и переходили сразу на третий. Хотя это тоже был хороший вариант, я хотел, чтобы механика слияния была похожа на игру 2048, которая была популярна в своё время.

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

Задумка 2

Второй идеей стало создание счетчика кораблей. Каждый десятый корабль должен был превращаться в корабль второго уровня. Сначала все шло гладко, но потом возникли проблемы. После создания первого корабля второго уровня следующий корабль второго уровня удалял его. Иногда корабли второго уровня начинали появляться сразу при спавне, что меня не устраивало.

Тогда я придумал гениальную, как мне тогда казалось, идею. Число, которое получалось после создания определенного количества кораблей, например, 1573, нужно было разбить на отдельные цифры (1, 5, 7, 3). Каждая цифра означала бы количество кораблей определенного уровня. В этом примере должен был появиться 1 корабль четвертого уровня, 5 кораблей третьего уровня, 7 кораблей второго уровня и 3 базовых корабля.

Однако возникла проблема: я не знал, как разбить одну цифру на четыре и сделать так, чтобы они постоянно обновлялись. Я поговорил со знающими людьми, и они предложили несколько вариантов. Но один из коллег посоветовал обратиться к нейросети Алисе. Она действительно подсказала, как это сделать в «Констракт 2». Правда, в ее ответах были ошибки, потому что не все функции были доступны в «Констракте».

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

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

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

Задумка 3. Итоговая

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

В «Космическом герое» тоже создавались космические модули. Слияние происходило при помощи перетаскивания двух объектов на нужные места, после чего они превращались в новый модуль. Я решил использовать похожий принцип, но с некоторыми изменениями, поскольку перетаскивать маленькие летящие объекты было не очень удобно. Я придумал механизм, при котором игрок нажимает на кнопку, которая выбирает случайный корабль, сравнивает его уровень и помещает в специальный бокс.

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

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

-2

С помощью зелёной и фиолетовой кнопок можно изменять уровень слияния. На первом уровне можно объединять только корабли первого уровня, на втором — корабли второго уровня и так далее.

-3

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

-4

Здесь видны три уровня кораблей. Красный цвет обозначает первый уровень, желтый — третий.

-5

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

Видео нового геймплея

Поиграть Тут

SpaceGuard

Пы. Сы. Подпишитесь и поставьте лайк за старание.