Текстовая версия:
Создание реалистичной и захватывающей галактики — одно из ключевых аспектов разработки sci-fi ролевой космической игры. В этом девлоге я подробно расскажу о том, как создавал галактику для игры Starsim, и поделюсь своими мыслями о логике, лежащей в основе этой вселенной.
Сразу отмечу, что это ни в коем случае не руководство и не какой-то учебный материал. Скорее, один из примеров реализации.
В самом начале разработки я решил использовать генерацию для создания галактики. Это позволяет создать обширную вселенную, которая будет меняться каждый раз, когда игрок начинает новую игру. Первым шагом в создании галактики я определил правила вселенной, определился с количеством секторов, звездных систем, количеством планет (обитаемых и необитаемых) и других объектов, которые я хотел сгенерировать и установил правила распределения этих объектов по галактике. В итоге решил, что карта галактики будет содержать 18 секторов, сетка 6х3. Для именования секторов решил использовать массив имен. Каждый новый сектор берет имя из общего пула имен секторов.
Пример: { "Атланта", "Меграц", "Нароби", "Кайло", "Фаави", "Оника", "Цефей", "Октант", "Лира", "Андромеда", "Эридан", "Гидра", "Кит", "Пегас", "Центавр", "Персей", "Кассиопея", "Киль", "Феникс", "Тукан" }
Чтобы добиться различий между секторами, когда игрок непосредственно внутри него, я использую одно из нескольких фоновых изображений туманностей, но добавляю некоторые изменения цвета. Каждый сектор содержит 3 или 4 звездные системы. Чтобы добиться различия между звездами - я также немного меняю цвет каждой звезды.
Для именования звездных систем я также использую общий массив имен. Например, "Альгенуби", "Толиман", "Менкар", "Тубан", "Альтаир", "Антарес". Для визуализации созвездий на карте я добавил линии между звездами.
В свою очередь каждой системе создается от 1-й до 6-ти планет. Всегда есть обитаемые планеты - от 1 до 3. Остальные - необитаемые. Для именования человеческих планет использую 2 массива имен и объединяю их в одно имя.
{ "Big ", "Little ", "Middle ", "Green ", "Red ", "Blue ", "Top ", "Bottom ", "New ", "Rocky ", "Cold ", "Warm ", "Hot ", "Windy " }; //14
{ "Apple", "Home", "Hope", "Land", "Fields", "Hills", "Sea", "Nest", "Miracle", "Ground", "Soil", "Terra", "Sod", "Glebe" }; //14
В каждом по 14 слов. В итоге получается, например "Маленькая надежда" или "Горячее море".
Теоретически это может дать 196 названий для обитаемых людьми планет. Для других инопланетных рас я использую аналогичный способ. Чтобы показать разницу между обитаемыми и необитаемыми планетами, я добавляю к обитаемым планетам облака или атмосферу, которая вращается по собственной траектории.
Одна из проблем создания галактики состоит в том, чтобы сделать ее реалистичной и правдоподобной. Чтобы достичь этого, приходится балансировать между случайностью и линейностью. Так например, несмотря на псевдослучайную генерацию звездных систем и планет стартовые сектора разных инопланетных рас я прописываю вручную, что бы не ломать баланс сил с самого старта игры.
Также в каждом секторе есть планетарные станции каждого типа. Медцентр, Исследовательская станция, Военная база, Пиратская база.
Станции будут предоставлять некоторые услуги игроку за определенную плату. Также станции — один из важнейших оборонительных рубежей любой звездной системы. Невозможно захватить звездную систему, пока станция не уничтожена. Также создал функции для генерации различных типов небесных тел, таких как астероиды, луны. Разумеется, запрограммировал звездные системы так, чтобы они следовали реальным законам физики, например, как планеты вращаются вокруг звезд, а луны вращаются вокруг планет.
Используя представленную генерацию, я очень надеюсь, что мне удастся создать правдоподобную и захватывающую вселенную, которая сможет увлечь игроков.
Лучшие комментарии
Так это ж один-в-один Косморейнджеры, не?
Основа геймплея — да.
Но отличий хватает. Сюжет другой. В КР полностью пошаговая система — у меня реалтайм с активной паузой. Крафтинга в Рейнждерах нету. Ну и бои 4х4 в стиле Star Traders/Darkest Dungeon.
К концу разработки, я полагаю, особенностей добавится.
Та я чисто про карту, кроме неё-то в этом посте ничего почти и нет
Было бы круто, прогресс уже приличный, надеюсь у тебя получится сделать интересную симуляцию мира
Есть еще и видео + предыдущий пост =)
Ну а по карте — да, один-в-один Косморейнджеры.
Было бы классно, да. Но, скорее всего, сил моих на это уже не хватит.
Спасибо, тоже на это надеюсь.