В настоящее время я готовлю первую сборку для отправки в Steam на проверку. Я завершил работу над крайне необходимой функцией, туториалами, и переключился на обновление контента. Это включает в себя интеграцию новых моделей туманностей и галактик, палитр и текстур планет, а также обновление каталогов. Возможно, после проверки в Steam потребуются некоторые исправления, которые могут задержать релиз. Однако релизная сборка должна быть как можно лучше отполирована - это крайне важно, т.к. старт продаж напрямую влияет на общую прибыль в течение всего времени жизни программы.

Изменения со времени последнего блог-поста:

  • Завершены туториалы планетария

Это самая важная функция, которая помешала мне выпустить релиз в Steam два года назад. SE является довольно сложной программой для новых пользователей, поэтому требовался некоторый встроенный «учитель». Поэтому два года назад я начал разрабатывать простой скриптовый язык, чтобы с его помощью реализовать туториалы. Всего их 7: введение в интерфейс SE, базовое управление (такое, как выбор и перелёт к объекту), управление в режиме свободного полёта с помощью клавиш WASD, управление временем, режим карты Вселенной, режим чарта, и звёздный браузер. В процессе реализации всех этих уроков я разработал настолько большой список скриптовых команд, что мне понадобилось написать справочное руководство для самого себя. Как побочный продукт, скрипты позволили создать приложение Overview и, вероятно, приведут к появлению нового типов модов для SE - заскриптованых туров.

  • Улучшенная форма континентов/морей

Более плоская форма морского дна делает озера на засушливых планетах более интересными.

Sea trench: Before Sea trench: After

Следующие изменения уже были показаны HarbingerDawn в его недавнем стриме:

  • Более реалистичное распределение солнечных пятен

В реальности солнечные пятна распределены по поверхности Солнца не равномерно, а группируются в средних широтах, избегая полярных областей и экватора:

Sunspots: Before Sunspots: After

  • При загрузке локации её скриншот отображается на экране загрузки с эффектом «старого телевизора».

Эффект линий развёртки - простой способ завуалировать низкое разрешение скриншота (512 × 256), но мне очень нравится, как он выглядит.

  • F2 открывает Браузер планетной системы на уровне иерархии выбранного объекта (поэтому, если выбрана луна, он открывает список лун); Shift-F2 открывает корневой уровень системы
  • Двойной клик для перехода на следующий уровень Браузера планетной системы
  • Браузер планетной системы отображает всплывающее окно с кратким описанием объекта при наведении мыши на ячейку таблицы
  • Браузер планетной системы отображает одиночные и двойные астероиды/кометы, если они были ранее выбраны каким-либо другим методом

Последний пункт полезен для изучения двойных/тройных астероидов, таких как 1999 TC36 (Лемпо). А всплывающее окно с описанием очень полезно в виртуальной реальности, где привычная таблица характеристик объекта в углу экрана не отображается.

  • Тип жизни на планетах определяется исходя из состава их поверхности, а не недр (таким образом, карбонии и феррии могут обладать органической жизнью, холодные акварии или терры могут обладать экзотической жизнью и т.д.)

Пример того, как теперь выглядят обитаемые пустынные и ледяные планеты:

  • Воздушная органическая жизнь на некоторых землеподобных планетах (на которых в результате изменения состава атмосферы возникает саморазгоняющийся парниковый эффект)

SpaceEngine «сеет жизнь» на планете после генерации планетной системы, затем изменяет состав атмосферы на планете в зависимости от того, как развивается жизнь (более старые планеты имеют многоклеточную жизнь, производящую кислород). Но изменение состава атмосферы может изменить климат планеты так сильно, так что она может впасть в ледниковый период, или наоборот, в состояние самоусиливающегося парникового эффекта. В этом случае SE "уничтожает жизнь" или меняет её биом на подледный или воздушный (если условия не такие суровые, как на Венере - умеренная температура в верхних слоях атмосферы и присутствие водяного пара). Таким образом, землеподобные планеты, похожие на Венеру, или мини-нептуны с водяным паром, могут иметь воздушную органическую жизнь, как некоторые газовые гиганты.

  • Отдельные переключатели в меню настроек для векторов планет (полярная ось, центральный меридиан, скорость и направление на родительский объект)
  • Слово «Каталог» заменено на «Реальные» в интерфейсе («Звёзды каталога» -> «Реальные звёзды» и т. д.)
  • Браузер звезд: настройки для поиска только среди реальных и/или процедурных звезд, или только в каталоге экзопланет

Эти опции полезны для поиска и изучения реальных экзопланет. Вот пример поиска известных экзопланет в системах с тремя звездами. В этом случае ввод очень большого радиуса поиска безопасен, поскольку звёздный браузер не будет генерировать миллиарды процедурных звезд, он только просмотрит звёздный каталог.

  • Экспериментальные джеты черных дыр на основе системы частиц хвоста кометы

На самом деле, это было реализовано очень давно, возможно, даже в 0.980, но я решил доделать эффект только сейчас. Джеты основаны на частицах (спрайтах), как и хвосты комет (в движке они даже используют один и тот же класс/структуру данных). Джеты анимированы, частицы быстро удаляются от центра, закручиваясь вокруг оси джета. Возможно, HarbingerDawn покажет их в своем следующем стриме. Джет, направленный на камеру, ярче и горячее, чем противоположный, из-за релятивистского синего смещения, вызванного субсветовой скоростью движения вещества.

  • Режим привязки камеры автоматически устанавливается на «Follow», если режим ИЛС корабля изменен на «Орбитальный» или «Варп», и на «SyncRot», если он изменен на «Горизонтальный» или «Стыковка»

Я всегда переключаю камеру в режим «Follow» (Shift-F), когда управляю кораблём в орбитальном или варп-режиме - это удобнее. Теперь SE делает это переключение автоматически. Вы всё еще можете переключиться обратно на «SyncRot» вручную (с помощью Shift-R).

  • Конфиг для настройки окна загрузки SE
  • Новые текстуры окна загрузки SE
  • Окно загрузки SE учитывает DPI монитора (масштабируется в соответствии с настройками DPI)
  • Главное окно SE учитывает DPI монитора (использует родное разрешение экрана)

Недавно я купил новый 4K-монитор (до этого я использовал 1080p TN монитор в течение 12 лет!), и немедленно исправил некоторые досадные баги, вызванные масштабированием в Windows. Теперь SE всегда рендерит изображение в родном разрешении экрана, игнорируя настройки масштабирования. Конечно, интерфейс стал слишком мелким в 4k, но это будет исправлено в будущих обновлениях. Кроме того, окно загрузки масштабируется в соответствии с DPI, но с четкими шрифтами и текстурой фона.

  • Возможность связать размер частиц звезд с разрешением окна/экрана SE

Ранее размер звезд не был связан с разрешением экрана - звёзды одинаковой яркости всегда имели один и тот же размер в пикселях. Но при растягивании окна SE на 4k дисплей (или создании скриншота в 4k путем изменения размера окна на меньшем дисплее) это приводило к очень маленькому размеру звёзды и кажущемуся уменьшению их яркости. Новая опция в меню настроек включает автоматическое изменение размера звёзд в зависимости от разрешения окна. Например, если звезда на 1080p дисплее имеет размер 1, на 2060p её размер будет 2.

  • Возможность ограничить LOD ладншафта на экране высокого разрешения

Я также сделал ограничение LOD на высоких разрешениях. LOD ландшафта также связан с пикселями, как и размер звезды. На любом дисплее SE пытается отобразить текстуры ландшафта с плотностью пикселей 1:1 (это при LOD 0, установка LOD -1 уменьшает плотность до 1:2, а LOD 1 увеличивает её до 2:1, как-бы суперсэмплинг). Но на 4k экране это означает, что движок будет генерировать и рендерить в 4 раза больше текстур - это эквивалентно использованию LOD 1 на 1080p экране. Мои GTX 1060 и RX 580 не очень этому рады, поэтому я вынужден был использовать LOD -1. Новая опция ограничивает внутреннее значение LOD в зависимости от разрешения экрана. Это работает, как если бы у вас всё ещё был экран 1080p, даже если фактическое разрешение экрана больше. Если присмотреться к текстурам на 4k дисплее, можно заметить, что они выглядят немного размыто, как при LOD -1. Но на нормальном расстоянии от экрана они всё ещё выглядят хорошо. Ближайшие к камере ноды ладншафта по-прежнему имеют плотность пикселей 1:1, поэтому они всегда выглядят чёткими.

  • Отображение азимута и высоты небесного объекта при наблюдении с поверхности планеты (в информационной таблице и вики)
  • Отображение географической координатной сетки на планетах

Это долгожданные функции. Отображение азимута/высоты полезно для использования SE в качестве планетария перед реальными наблюдениями. Или просто для того, чтобы посмотреть, как высоко будет Марс сегодня вечером при наблюдении из Вашего города.
Первая реализация географической сетки - это просто линии, отображаемые над поверхностью планеты (т.е. не спроецированные на реальную поверхность). Метки координат будут добавлены в будущем.

  • Горячая клавиша для сворачивания SE, когда он в полноэкранном режиме
  • Редактор планет: сохранение нулевых значений логарифмических слайдеров (исправление экспорта странных значений, таких как -1.#IND)
  • Редактор планет: логарифмические слайдеры отображают значение log(0), если параметр равен нулю, в этом случае ручка слайдера не видна
  • Редактор планет: чтобы установить значение параметра логарифмического слайдера в 0, просто введите 0 в поле ввода
  • Поддержка экспорта 32-битных текстур скайбоксов с плавающей точкой (в форматах dds и tiff)
  • Уменьшен алиасинг тонкого полумесяца атмосферы, когда планета находится далеко
  • Улучшенная плотность и распределение размеров небольших кратеров
  • Обновлены данные по семикратной звёздной системе Ню Скорпиона
  • Плавная анимация в чарте системы при смене режима или фильтров

Багфиксы: я не записываю все мелкие исправления, которые делаю каждый день. Даже записывать существенные исправления сейчас не просто, т.к. я не помню, была ли такая ошибка в 0.980 или же появилась во время разработки этой версии. Да, 2.5 года для одного обновления это слишком долго. Но работа подходит к концу!

  • Исправлена ошибка, из-за которой класс планеты не менялся, если на ней была жизнь, которая слишком сильно меняла температуру атмосферы
  • Исправлена ошибка с некорректной работой фильтра биомов экзотической жизни в браузере звезд (а никто до сих пор и не заметил этого!)
  • Исправлено множество артефактов, связанных с рендером океанов
  • Исправлено затухание объектов дальнего космоса в превью Вики при использовании её с поверхности планеты с атмосферой
  • Исправлены неточности в расположении полярных сияний по долготе и широте
  • Исправлена некорректная конечная ориентация камеры при переключении между камерами внешнего вида корабля при его вращении
  • Исправлена генерация температуры аккреционного диска в двойных системах, загружаемых из каталога
  • Исправлено некорректное чтение некоторых звёздных классов из каталога

Как и всегда, вы можете обсудить данный пост на форуме.