Анимированная сцена в главном меню
Один из "must have" пунктов перед релизом, это замена простой картинки на фоне главного меню на полноценную анимирвоанную сцену с планетами. Как это сделано во всех уважающих себя играх космической тематики. В SE с его заточенностью под рендер космических сцен, это сделать довольно просто - создать каталожную систему в определённом месте галактики, с каталожной туманностью на фоне, и перемещать камеру туда при открытии меню. При этом надо сохранить состояние всех внутренних переменных игры, загрузить свои значения для сцены меню (например, с целью оптимизации производительности - никто не любит, когда меню тормозит или долго загружается), а затем восстановить их при возвращении в игру. Всё это делается с помощью системы скриптов SE: и сохранение переменных, и перемещение камеры в нужную локацию, и запуск анимации (путём изменения скорости течения времени). Правда, для этого пришлось реализовать то самое сохранение переменных: меню, планетарий и игровой режим теперь почти полностью отделены друг от друга. У них свои значения переменных, течения времени и настроек графики. Конфиг-файл, где запоминаются значения переменных, всё ещё один, но в дальнейшем может быть разделён на отдельные конфиги для планетария и игры, плюс, например, отдельные конфиги для режима VR (для увеличения производительности в VR приходится менять некоторые настройки, например, LOD планет и уровень анти-алиасинга). У сцены меню тоже свои настрйоки LOD, предельной звёздной величины и т.д., для того, чтобы добиться 60 fps на среднем железе, и сделать её загрузку максимально быстрой. Благодаря кэшированию звёзд, текстур рельефа, шейдеров и пр, не зависящему от конкретной сцены, частые входы-выходы из меню вообще не приводят ни к каким прогрузкам.
Я попробовал несколько вариантов сцен для меню, пока остановился на той, что показана в начале этого поста. Все они находятся в специально созданной каталожной системе, которая скрыта из поиска. Сама система располагается в туманности Skylias Stellar Nursery - фейковой туманности на обратной стороне Млечного Пути, сделанной в честь Skylias - стримеру, несколько раз собиравшей крупные суммы пожертвований для SpaceEngine. Т.к. эта туманность не процедурная, она не будет меняться при установке модов, что также предохранит главное меню от изменения.
Вариант с далеко расположенными планетами загружается, разумеется, быстрее, чем вариант с видом с низкой орбиты; также у него мне больше нравится цветовая гамма. В режиме VR, в сцене присутствует только туманность, для максимизации производительности. Переключение сцен сделано прямо в скрипте главного меню, с помощью новых функций скриптового языка SE - условного оператора, а также перевода многих внутренних переменных SE, таких, как текущий видеорежим, в разряд скрипто-доступных переменных. Скрипты SE становятся всё более похожи на настоящий язык программирования, хотя я не исключаю, что в какой-то момент проще будет перейти на готовое решение, например Lua или Python.
Т.к. всё в SE модифицируемо, я ожидаю появления модов с другими сценами в меню. Реализация статических (неуправляемых) кораблей позволит использовать даже их в сцене. Я планирую переключать фон на сцену с кораблями на орбите планеты при входе в режим игры. Но для этого сначала нужно расширить систему скриптов, чтобы можно было управлять движением и анимацией кораблей (например, двигателями). Переход между меню, экраном загрузки, игрой и обратно плавный, через затемнение экрана. Лого SE также подверглось редизайну, чтобы лучше вписываться в концепт нового меню. Это завершение работы, начатой здесь.
Сейчас я работаю над обучающими уроками (туториалами), и после их завершения, отправлю SE команде Стима на проверку. Это обязательный этап перед релизом. Да, это означает, что релиз уже не за горами. Из основного, что осталось сделать:
- Доделать меню, туториалы и экран загрузки, сделать новые текстуры для окна запуска SE.
- Доделать процедурную генерацию новых туманностей, интегрировать модели, сделанные Bambusman, Phunnie и другими (об этом - в другой раз).
- Обновить каталог экзопланет, интегрировать каталоги астероидов, звёзд и пр. от сообщества.
- Переделать все текстуры планет и спутников Солнечной системы на разрешение 256 x 256, чтобы движок мог использовать S3TC сжатие. Да, это значит, что аддоны Solar System HD и Ultra придётся скачать снова. Впрочем, они будут распространяться в Стиме как бесплатные DLC для SE.
- Настроить все страницы SE в Стиме, подключить Мастерскую. Провести несколько итераций по подготовке релиза с командой Стима (это неизбежно).
На самом деле работы ещё очень много, но её можно ведь делать и после релиза. Реализация PBR кораблей не закончена, пресетов текстур/палитр планет ещё мало, моделей реймарчинговых туманностей всего несколько десятков. Но после релиза подключатся моддеры, что должно помочь с наполнением контента.
Обсудить этот пост на форуме.