Есть условная звезда, со своими параметрами, в виде 3D модели сферы, в простом
случае просто с текстурой поверхности она не имеет красивого эффекта и похожа на игры из 1995-х,
что бы улучшить ее графику есть 2 решения которые необходимо протестировать и выбрать лучшее,
1 - Вершинные шейдеры, которые заставляют поверхность звезды в космической фантастике шевелится создавая эффект короны, с этим
пока есть сложности в опциях 3D движка на котором сделано больше всего наработок, а на доводку текста программы в другом
движке требуется время, и этот
способ потребляет часть мощности видеокарты. 2 - Анимированная 3D модель,
которая меняет свою форму по таймеру имитируя метамарфозы поверхности, шейдеры тут ненужны совсем,
но размер файла 3D модели больше и занимает больше памяти в зависимости от размеров звезд.
Вокруг звезды для которой необходимо создать и протестировать анимацию поверхности, вращаются и летают планеты, астероиды, обломки, станции и корабли. Корабль в простом виде монолитной 3D модели особого впечатления не производит, как следствие приятного графического эффекта не имеет. Что бы он был привлекательным на вид требуется задать ему эффект двигателей, подсвеченную кабину желательно с материалом стекла, мерцающий корпус (дополнительные текстуры) все это не только увеличивает требоваия к системе и снижает FPS но и значительно увеличивает время создания такой модели, по сути требуя огромных затрат времени в сравнении с остальными задачами при создании игры на тему космической фантастики. Первая идея имитации двигателей была простейшая пирамидо-подобная модель пристыкованная к месту двигателя, с эффектом прозрачности которая появляется и исчезает в зависимости от того включены двигатели или нет, но посмотрев на разные скриншерты других игр о космической фантастике обнаруживаются другие интересные эффекты - в форме маленьких сфер яркого белого цвета вставленных в корму кораблей которые меняют яркость в виде пульсаций. Что бы не создавать корабль с местами для крепления двигателей, для теста эффекта их работы просще создать ракеты, обтекаемость в условиях космоса вокруг звезды им ненужна, так что ракеты подойдут в форме пирамид или параллепипедов (удобно плотно упаковывать).
Пока камера обзора пространства летает между звездами определяются самые ближайшие звезды и они включаются в 3D сцену космической фантастики, пока камера игрока долетает до них, в сцену включаются уже другие звезды которые есть по близости а те которые стали слишком далеко отключаются, и переводятся в режим отображения как дальние звезды. При этом рассчеты событий в этих звездах продолжаются просто эти подробности невидны пока не переместить к ним камеру. Отдельные тесты нужны для проверки работы распределения вычислений в мало-активных частях пространства. Между звездами можно летать не встречая никаких мест где стрельба непопадает по кораблю или где несрабатывает столкновение и так по всей игровой карте. Сложным местом является критическое падение FPS при большом числе 3D объектов в сумме в близких координатах что пока не решено, требуется очень высокая частота процессора.
При удалении камеры далеко от звезд включается глобальный режим, мелкие объекты отключаются и не участвуют в рендеренге, заменясь пиктограммами, звезды заменяются их менее детальными моделями включаясь всем скоплением в ренедеринг галактики, по аналогии можно сделать и отдельные галактики. Пока нерешенную проблему представляет собой выбор мышкой планеты или корабля, флоты кораблей и высокий FPS плохо совместимы, а он нужен для работы выбора 3D объектов - камера это прямоуголник, с центром координат. Позиция указателя на экране это отклонения координат от центра камеры, из этих координат указателя формируется луч который продолжается в направлении обзора камеры, и в какие модели попадает невидимый луч и какая из них будет ближе, значит на ту и указывает мышка и срабатывает ее подсвечивание (событие столкновения луча с моделью), эта система работает без промахов только при высоком FPS а он уже и так утилизируется астероидами и кораблями и уменьшать их число на сцене крайне нежелательно (на корабли и так нехватает мощности), или требуется вводить непрямое управление цивилизациями в игре отказавшись от прямых приказов кораблям, или все должно летать карайне медленно, или нужно искать еще один 3D движек и тестировать его.