Animated scene in the main menu
One of the "must have" items before the release is the replacement of a simple background picture in the main menu by a 3D animated scene with planets. As it is done in almost every space game. In SE, with its specialization on rendering of cosmic scenes, it is quite simple: create a special fake catalog planetary system with some catalog nebula in the background, and move the camera there when opening the menu. Engine must save all internal variables like terrain LOD, load other values used in the menu scene (to optimize performance - no one likes slow and long-to-load menus), and then restore them when user returns to the game. All this is done using new SE scripting: saving variables, moving the camera to the desired location, and starting the animation (by changing the rate of time). The menu, the planetarium and the game mode are now almost completely separated from each other. They have their own values of variables, time flow and graphics settings. SE still uses single config file to store variable values, but can later be split to separate configs for planetarium and game, and, for example, separate configs for VR mode (it is necessary to have different graphics settings in VR to increase performance, like terrain LOD and anti-aliasing level). The menu scene also has its own LOD, limiting magnitude, and other setting, in order to achieve 60 FPS on the middle-end hardware, and make scene loading as fast as possible. Thanks to the internal cache for stars, terrain textures, shaders, frequent entries and exits from the menu do not lead to any loading at all.
I tried several scenes for the menu, and stopped at the one shown at the beginning of this post. All of them are in a special catalog system, which is hidden from the search. The system itself is located in the Skylias Stellar Nursery Nebula - a fake nebula on the opposite side of the Milky Way, made in honor of Skylias - streamer who collected large donations for SpaceEngine several times. Since this nebula is not procedural, it will not change when mods are installed, which will also prevent the main menu from changing.
Scene with the far planets is, of course, loading much faster than the one with a view from a low orbit; I also like colors here more. In VR mode, there is only a nebula in the scene to maximize performance. Scene switching for VR/non-VR is done directly in the main menu script, using the new functions of the SE scripting language: the conditional operator and changing many internal SE variables, such as the current video mode, to the script-accessible ones. SE scripts are becoming more and more like a real programming language, although I do not rule out that at some point it will be easier to switch to some standard solution, such as Lua or Python.
Since everything in SE is moddable, I expect appearing of the main menu mods. Implementation of static (uncontrollable) ships allow using them in the scene as well. I plan to switch the background scene when entering the game mode to a different one, with some ships in orbit of the planet. But for this, I first need to add some script commands to control the movement and animation of ships (for example, engines). All transition between the menu, loading screen, planetarium and back are smooth, through the fading to black. SE logo has also been redesigned to better fit the the concept of the new menu. This is completion of the work started here.
Now I am working on tutorial lessons, and after completing them, I will send SE to the Steam team for review. This is a mandatory step before release. Yes, that means that release is soon. The main thing that left to do:
- Finish the main menu, tutorials and loading screen, make new textures for the SE splash (launch) window.
- Finish the procedural generation of new raymarched nebulae, integrate models made by Bambusman, Phunnie, and others (I will write about this in another blog).
- Update the catalog of exoplanets, integrate the community catalogs of asteroids, stars, etc.
- Update all the textures of real planets and satellites: change tile resolution to 256 x 256. This is necessary to enable engine to use S3TC texture compression. Yes, this means that the Solar System HD and Ultra addons must to be downloaded again. However, they will be distributed in Steam as free DLC for SE.
- Set up all SE pages in Steam, enable the Workshop. Make several iterations on release preparation with Steam team (this is unavoidable).
In fact, there is still a lot of work, but it can be done after the release. For example, implementation of PBR for ships is not finished, there are still too few presets of planet textures/palettes, too few raymarching nebulae models. But after the release, modders can help with creating more content.
Discuss this post on the forum.