Или если быть чуть скромнее то её участка в 5-6к звёзд для начала.
Для чего так много это дело десятое, тут не звёздная болезнь а есть небольшая прикидка с учётом игровых правил и прочего.
Собственно в чём проблема.
А проблема в генерации положения звёзд планет регионов(административных единиц) и созвездий(абстрактных а не реальных).
Проблема в том, что положится на рандом при таком кол-ве звёзд и планет мягко говоря бессмысленно), тк ручками всё не проверить.
Раньше я пробовал для себя вывести в экселевском файлике некоторое подобие многоэтажных формул и вроде не плохо получалось, но там была проблемы и сильные допуски:
-расстояния между планетами высчитывались по одной формуле(которая являлась математическим выражением закономерности расстояний планет солнечной системы от солнца, выведенная кем-то когда-то давно).
-все планеты лежали в одной плоскости
-тип планеты зависел только от порядкого номера в системе.
-планеты неподвижны
-регионы образовывали пояса вокруг центра получавшегося бублика
Те в той или иной степени получались клоны солнечной системы, отличающиеся лишь типами и кол-вом планет.
Это было до того как я узнал о существовании горячих юпитеров сверх земель и прочих нестандартных вещей.
Сейчас тот экселевский файлик успешно потерял, так что решил пересмотреть все эти допуски(кроме неподвижности планет), и добавить развличные типы звёзд (от солнца до гигантов, карликов и двойных звёзд).
Но мозг от такой задачи закипает:
-как реализовать чтобы звёзды не были слишком близко друг к другу(со слишком далёкими от общего скопления достаточно легко бороться), был элемент случайности, при этом положение задётся тремя координатами.
-регионы образовывали сетку, а не концентрические окружности
- планеты имели фривольное расположение и орбиты, задающиеся радиусом от центра системы, углом поворта плоскости вращения, и углом поворота планеты вокруг оси вращения. Но при этом, чтобы не было планет камикадзе(лежащих на близких орбитах, или на встречных курсах). Не лежащих внутри своей звезды (если планета гигант, или чтобы курс не проходил не проходил через звёзды в случае парных звёзд, слишком далёкие от солнца планеты тоже легко отсеиваются).
Поотдельности вроде бы некоторые решаем и для меня, но интересуют советы и рекомендации, если кто-то такое делал, может поделитесь опытом))
может использовать теорию вероятности для общей генерации?
Тогда там могут быть случаи близкого расположения планет или звёзд, которые ручками откопать не реально будет.
Поэтому случайная составляющая будет но хотелось бы на уровне формул(, чтобы уж точно.
В экселе даже с теми допусками у меня трёхэтажные получались...(по кол-ву условных операторов)
смотри, создаёшь 10 шаблонов систем или более и по этим шаблон генеришь планеты и системы.
А мысль интересная и простая до нельзя.
Только осталось решить прблему с регионами
Разбей пространство сеткой. При генерации координат проверяй, не попадает ли звезда в уже занятую ячейку. Ну и клади звезды только в четные ячейки, скажем.
Zizilk
Ни много, ни мало
Grammar Nazi.
begr
> Ни много, ни мало
да ладно, "немного не мало" - очень добротный, оригинальный и сильный оборот. вроде недоперепил.
Я чуствовал, что что-то не так)
Zizilk, Suslik
Ну вот, как теперь убрать? Чисто техническое замечание было, чтобы тема глаз не царапала :)
[Мечтательно] Вот бы и с heated... так.
Zizilk
Орбиты планетных систем находятся в одной плоскости потому, что
а) формируются закономерным образом из газопылевого облака
б) система с "нестандартным" расположением плоскостей орбит будет неустойчивой
PS
Звезды, которые ГСЧ посадил рядом, должны образовать двойные (кратные) звездные системы. IRL так, и довольно часто.
Ну просто сделать чтобы нестандартные системы попадались не часто.на счёт этого подумаю
а как к примеру такую получили карту (там ещё в одной плоскости)
http://eve-ru.com/data/images/com_img/evemap/universe/evemap.jpg
многоуровневые плоскости, то есть представь себе медовик или лазанью. плоскости находятся друг над другом и планеты располагаются на разных уровнях(высотах).
+ к старым баранам о разнообразии.
Можно сделать дополнительный фактор случайных планет, станций, астероидов. то есть в каждом шаблоне есть добавить по 1-5 переменных, которые могут быть чем угодно из списка.
Можно предложить раскидать случайно центры будущих кластеров по сетке с шагом К. Далее на первом шаге выбрать номер центра, а на втором расположение звезды в пределах радиуса К. Можно сделать тройной выбор кластер-субкластер-звезда.
MasterBlaster
> к старым баранам о разнообразии
Так оно у меня было уже там (в частности 5 типов планет, + разрушающиеся планеты(вообще никакого функционала на них просто для красоты), ну и пояса само собой)
Так же думаю будет и со звёздами( и не только)
begr
Похоже что так оно и было, особенно если там в самой игре смотреть.
Вообщем кажется вырисовалось как получить желаемой, только поход экселем тут не обойтись)
MasterBlaster
вот-вот, читая ТС это и хотел предложить.
Т.е. сделать по сути трехмерную матрицу - и всё. Т.к. не указан язык, то можно фантазировать. А в реальности надо будет оптимизировать нагрузку на сервер при выборке и тогда "ваши нежные розовые мечты разобьются о чугунную жопу реальности" (с) :)
П.с. кстати по трехмерному массиву не сложно сделать и "вращение".
Тема в архиве.