Duke: продолжается работа над реймарчинговыми туманностями. Предупреждение: будет много скриншотов!

Последнее время я экспериментировал с различными типами распределения, функциями скаттеринга и методами оптимизации шага. Интеграция новых туманностей задерживается из-за того, что SpaceEngineer работает над другими вещами в движке, поэтому я переключился на эксперименты с 3D-облаками, поверхностями звёзд и воды. Улучить рендеринг воды в SE довольно просто: всего лишь более качественная процедурная/фрактальная анимация «волн» (поверхность воды всё ещё плоская, но солнечные блики будут выглядеть лучше). Наверное, мы сможем сделать это для 0.981.

SpaceEngineer: я продолжаю работу над множеством задач, описанных в предыдущем блогпосте. Интеграция новой классификации планет требует серьезных изменений в коде генерации планетных систем. Я провел почти научное исследование по построению физически обоснованной сетки моделей внутренней структуры планет. SE теперь моделирует планеты, состоящие из 4 основных веществ: железа, силикатов, карбидов и воды/льда. Код генерирует содержание этих веществ в составе планеты при генерации системы, а затем вычисляет радиус планеты с использованием сетки моделей. Это важно, потому что радиус планеты довольно чувствителен к её составу: чисто железная планета в два раза меньше, чем планета, которая состоит полностью из воды, при той же массе. Далее ещё предстоит проделать такую же работу для газовых гигантов. В предыдущих версиях SpaceEngine также использовалась теоретическая зависимость массы от радиуса для планет, но там было всего 5 жёстко заданных моделей с постепенно увеличивающимся количеством воды и уменьшающимся количеством железа (и не было моделей с углеродом/карбидами – это одна из причин, по которым в SE до сих пор не было углеродных планет). Начиная с 0.981, SE станет первым игровым движком, который использует физически точную генерацию планет. Новая модель также позволяет рассчитывать внутреннюю структуру планеты: можно вычислить, при каком радиусе железное ядро переходит в силикатную мантию, какова в них температура, давление и плотность. Я не уверен, что это будет уже в 0.981, т.к. потребует много дополнительной работы (включая рендеринг планетарных слоев и интерфейс для него). Это всё самая настоящая наука: за прошлую неделю я прочитал много научных статей, взял из них уравнения, графики и таблицы данных, а также написал код, который производит интерполяцию в сетке моделей. Самое забавное, что этот код можно было бы использовать для реальной научной работы: для предсказания радиуса планеты, массы или объёмного состава, если один из этих параметров неизвестен. Это уже работает в SE для каталожных планет, хотя требуется некоторая отладка и дальнейшая проработка кода.

Ну всё, хватит науки, время скриншотов!