STARSIM - DEVLOG #2 - Как создавалась галактика?

Текстовая версия:

Создание реалистичной и захватывающей галактики — одно из ключевых аспектов разработки sci-fi ролевой космической игры. В этом девлоге я подробно расскажу о том, как создавал галактику для игры Starsim, и поделюсь своими мыслями о логике, лежащей в основе этой вселенной.
Сразу отмечу, что это ни в коем случае не руководство и не какой-то учебный материал. Скорее, один из примеров реализации.

STARSIM - DEVLOG #2 - Как создавалась галактика?

В самом начале разработки я решил использовать генерацию для создания галактики. Это позволяет создать обширную вселенную, которая будет меняться каждый раз, когда игрок начинает новую игру. Первым шагом в создании галактики я определил правила вселенной, определился с количеством секторов, звездных систем, количеством планет (обитаемых и необитаемых) и других объектов, которые я хотел сгенерировать и установил правила распределения этих объектов по галактике. В итоге решил, что карта галактики будет содержать 18 секторов, сетка 6х3. Для именования секторов решил использовать массив имен. Каждый новый сектор берет имя из общего пула имен секторов.

Пример: { "Атланта", "Меграц", "Нароби", "Кайло", "Фаави", "Оника", "Цефей", "Октант", "Лира", "Андромеда", "Эридан", "Гидра", "Кит", "Пегас", "Центавр", "Персей", "Кассиопея", "Киль", "Феникс", "Тукан" }

STARSIM - DEVLOG #2 - Как создавалась галактика?

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

STARSIM - DEVLOG #2 - Как создавалась галактика?

Для именования звездных систем я также использую общий массив имен. Например, "Альгенуби", "Толиман", "Менкар", "Тубан", "Альтаир", "Антарес". Для визуализации созвездий на карте я добавил линии между звездами.

STARSIM - DEVLOG #2 - Как создавалась галактика?

В свою очередь каждой системе создается от 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 слов. В итоге получается, например "Маленькая надежда" или "Горячее море".

STARSIM - DEVLOG #2 - Как создавалась галактика?

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

STARSIM - DEVLOG #2 - Как создавалась галактика?

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

Также в каждом секторе есть планетарные станции каждого типа. Медцентр, Исследовательская станция, Военная база, Пиратская база.

STARSIM - DEVLOG #2 - Как создавалась галактика?

Станции будут предоставлять некоторые услуги игроку за определенную плату. Также станции — один из важнейших оборонительных рубежей любой звездной системы. Невозможно захватить звездную систему, пока станция не уничтожена. Также создал функции для генерации различных типов небесных тел, таких как астероиды, луны. Разумеется, запрограммировал звездные системы так, чтобы они следовали реальным законам физики, например, как планеты вращаются вокруг звезд, а луны вращаются вокруг планет.

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

55
5 комментариев

Ну хоть кто-то пилит новых Космических Рейнджеров. Крут!

Upd: для большей реалистичности желательно сделать свечение атмосферы, тогда она будет лучше смотреться

1
Ответить

А у тебя есть глобальный сюжет, или это больше песочница?

1
Ответить
Автор

На текущем этапе разработки реализована только песочница, да и та не до конца.
Глобальный сюжет в планах есть. Не уверен - осилю ли я более глубокий (или хотя бы такой же) сюжет, чем в КР, но буду стараться.

Работаю над проектом в свободное от работы время, поэтому дело движется медленно.

Ответить
Автор

Да, читал твою статью.
Большую работу проделал по генерации мира)

Ответить