Как уже говорилось, делая свой клон Танчиков на Unity, я стараюсь, насколько это возможно, придерживаться оригинала. Это касается и способа хранения уровней.
Вместо того, чтобы представлять каждый уровень отдельной сценой или префабом, я использую data-drive подход. Уровни хранятся в виде ассетов на базе
ScriptableObject, где карта тайлов (препятствий) и координаты базы и точек спавна игроков / врагов сериализованы в массивы.У этого подхода есть множество плюсов о которых я сейчас говорить не буду, но есть и очень большой минус – вбивать вручную массивы с координатами слишком муторно и трудозатратно. Чтобы этого избежать я под руководством ИИ-ассистента написал вот такой редактор, который позволяет легко "рисовать" уровни и сохранять их в ассеты.
😮💨 На это ушло около месяца, хотя ИИ может сгенерировать код для такого редактора за несколько минут. Но мне было важно разобраться, как это делается и работает, поэтому я писал его вручную шаг за шагом, вникая в каждую строку. К тому же ИИ не сможет за вас работать с интерфейсом движка (пока), тут нужно учиться самому.
В плане геймплея я решил отойти от канона – редактор позволяет устанавливать базу и точки спавна игроков / врагов в любом месте игрового поля. Так что, при создании собственных уровней, можно будет поэкспериментировать.
В дальнейшем я планирую, как и в оригинале, встроить редактор уровней в саму игру. Но пойти немного дальше и сделать возможность сохранять свои уровни в отдельные файлы и делиться ими друг с другом.
💡 Короче я собой доволен! А еще для меня стало открытием, что Unity помимо встроенных инструментов дает возможность создать и свои – более специфичные и заточенные под нужды конкретного проекта. Это очень круто!