8. Генерация имён планет

Процедурная генерация имён систем и галактик

Как генерируются имена для планет и систем.


В каждой из восьми галактик есть 256 систем, и каждая из этих 2048 систем имеет уникальное имя.


Cоздаются названия систем из специальных сидов и двухбуквенных токенов.

E нас есть некая машина, которая из набора чисел (сидов) может сделать имя для каждой системы. Итак, начнём:


1. Сиды (seeds)

В каждой системе есть три числа (назовём их s0, s1 и s2), которые называются сидами. Эти числа указывают, как мы будем создавать название.


2. Длина названия

Сначала мы смотрим на специальный бит (маленькую часть числа) в s0. Этот бит подсказывает нам, будет ли наше название из 6 или 8 букв:

- Если бит установлен (это значит, что он равен 1), тогда мы сделаем название из 8 букв.

- Если бит не установлен (это значит, что он равен 0), тогда мы сделаем название из 6 букв.


3. Создание двухбуквенных токенов

Далее, мы начинаем процесс создания пар букв (двухбуквенных токенов). Каждая пара букв получается из части числа s2.


Вот как это работает:

- Мы берем часть числа s2 и проверяем, не равна ли она нулю.

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


4. Скручивание сидов

После того как мы сделали пару букв, мы изменяем (или "скручиваем") наши сиды с помощью специальной процедуры. Это как если бы мы взяли наши числа и немного их перемешали.


5. Повторение процесса

Мы продолжаем этот процесс, пока не сделаем три или четыре пары букв (в зависимости от того, сколько букв должно быть в имени).


6. Восстановление сидов

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


Пример

Представим, что у нас есть три сида : s0 = 12, s1 = 34, s2 = 56.


1. Сначала мы проверяем бит в s0 и узнаём, что нам нужно сделать название из 6 букв.

2. Затем мы берём часть s2 и делаем первую пару букв.

3. "Скручиваем" сиды.

4. Повторяем шаги 2 и 3 ещё два раза, чтобы получить три пары букв.

5. Восстанавливаем сиды, чтобы они снова стали s0 = 12, s1 = 34, s2 = 56.


Таким образом, из наших сидов получается название системы или планеты