Дев блог: создание редактора уровней
Прошло довольно много времени с нашего последнего обновления, но все это время мы были заняты попытками понять, как создать удобный и простой редактор уровней для нашей игры. Редактор был в наших планах с первого дня разработки, но мы немного недооценили предстоящий объем работы и проблемы, которые необходимо при этом решить.
Возникает вопрос: зачем нам это нужно? Почему мы не можем просто взять и доделать игру?
Ответом будет: “из-за структуры игры”. Каждый уровень состоит из небольших элементов, которые мы называем “узлами”. Игроки могут перемещаться сквозь них и взаимодействовать с некоторыми из них. Самый маленький уровень в игре состоит из 22 узлов. И было бы смешно и непродуктивно расставлять каждый узел вручную и указывать каждое соединение между ними.
Структура уровня внутри игрового движка
Как только работы над проектом начались, мы изобрели свой текстовый формат, который описывал уровень игры, каждый узел, соединения между ними и возможные взаимодействия, доступные игроку. При запуске, игра берет файл с таким описанием уровня и просто генерирует его. Это была своего рода победа, потому что такой способ довольно-таки неплохо работал, но к примеру, файл с описанием первого уровня состоял из 112 строк! С использованием текстовых файлов уровни создавались быстрее, потому что ты мог копировать повторяющиеся части описания и быстро вносить в них изменения. Но возникла другая проблема: ошибки. При любом, даже самом маленьком изменении возникала вероятность возникновения ошибки. Ты забыл изменить параметр, скопировал лишнее, недокопировал нужное - и уровень генерируется некорректно или игра вообще не запускается. И чтобы найти и исправить такую ошибку, требовалось невероятное количество времени. К тому же создание файла уровня с 50+ узлами копипастой было тоже достаточно медленным процессом.
Пример структуры файла первого уровня
Мы создали пять уровней, используя этот подход, и решили двигаться в сторону создания хотя бы простейшего варианта редактора уровней, который выглядел примерно так:
С его помощью можно было создавать узлы, соединять их, перемещать, изменять их тип и редактор уровня генерировал файл, который потом использовался игрой, чтобы сгенерировать уровень… Тем не менее с этой версией редактора было тоже большое количество проблем. Он мог сгенерировать только структуру уровня, но другие вещи, как взаимодействия, враги, модули должны были вноситься в файл вручную (привет ошибки!). После того, как файл был завершен мы должны были его импортировать в движок, сгенерировать уровень, разместить освещение, декорации, все это запечь, протестировать и повторить по новой, если нужно внести какие-либо изменения. Несмотря на это, мы создали еще 25 уровней, используя этот “Кусок инструмента”.
Итак, игра была успешно выпущена в Раннем доступе, отзывы были собраны, а основные баги и проблемы исправлены. Настало время сделать перерыв и сфокусироваться на нашем основном инструменте - редакторе уровней. Настало время переписать его с нуля, держа в уме варианты решения всех описанных выше проблем и то, что после он будет доступен нашим пользователям. Он должен быть удобным, интуитивно понятным и полезным. И после месяца размышлений и экспериментов, кажется, мы нащупали способ, как этого можно добиться.
Оставайтесь с нами и до встречи в следующем обновлении.
