Несколько вечеров проверял идею генерации космических баз. Космическая база в итоге не получилась, а вот на добротное подземелье результат похож. Поскольку шёл от простого к сложному и никакой суровой магии не делал, то решил переработать код в урок по генерации подземелий на Python.
Каким условиям должен соответствовать лабиринт чтобы быть космической базой? По вашему мнению. И почему не получилось?
Сложно точные критерии назвать, если бы я их знал, может быть получилась бы база :-)
Примерно так:
- Структура должна расходиться (достраиваться) из какого-то центрального блока.
- При отдалении от цетра, блоки должны уменьшаться.
- Возможно, структура должна быть фрактальной (например, всё расходится из центрального блока, на каком-то расстоянии от него образуются новые «подцентральные блоки»). Возможно, этого эффекта можно достичь варьируя количество шлюзов в комнатах.
- Должны более явно выделяться шлюзы и / или сам каркас, на котором держатся блоки.
- Должны быть некие признаки подвижности (приспособленности к вращению самой базы или её частей).
- Скорее всего, базовые элементы не должны быть прямоугольными (лучше округлыми, острыми и т.п.).
В целом, космическая база должна выглядеть более функциональной, чем подземелье. Каждый блок должен за что-то отвечать, а значит иметь некоторые уникальные признаки, характерные для его типа.
А может быть достаточно сделать стилизацию нужную: чёрный фон со звёздами, неоновые контуры и тому подобное.
Было бы пушкой, если бы сам код был побогаче прокомментирован.
Я не придумал что в комментарии такого записать можно, чтобы полезно было. Там дифы между шагами небольшие, а конкретные алгоритмы указаны в посте.
Хотя итоговый код, конечно, сходу может быть сложно воспринимать.
Если в каком-то месте непонятно — спрашивайте. Объясню и добавлю коментарии. А лучше делайте pull request :-D
Комментарий недоступен
Развивать тему этого поста не планирую. Это просто артефакт моих вечерних экспериментов.
Если вдруг ещё что-то интересное сделается, то обязательно напишу. Собственно, в блог я и пишу о том что сделал, прочитал или надумал.