I have improved the nVidia Ansel suppor tin my project, and now that the 4GB texture limitation has been removed, I can easily use Ansel to take super-resolution screenshots of my project.
I intend to use these to create displates, and for other art projects.
I have also tested and fixed several issues with the debug and release builds.
Unity 2020.1 has officially come out, and I have almost finished successfully porting the project to this version (from 2019.3).
I had some minor issues with networking, which was due to an initialised variable in one of my custom server messages. This worked fine in previous versions of unity, but in 2020.1 it gave an error, but this was an easy fix.
Everything else went fine, there were no issues, except for with Virtual Reality support.
Unity has deprecated the VR platform that I was using in favour of a new XR interaction toolkit. Thankfully, in 2020.1, the old platform is still usable, so I was able, with some effort, to get it working.
VR support now works fine, but in 2020.2 I will need to do quite a bit of work porting over to the new XR system or VR support will stop working.
2020.1 has some huge advantages over 2019.3. First of all, the 4GB texture bug is fixed, which means I don’t need to split my asset bundles into chunks smaller than 4GB.
2020.1 is also much faster. Switching from another program to the editor (when the code and assets haven’t changed) is instantaneous, and there are now better indicators of how long operations are taking.
I should be able to finish the first version of my project in 2020.1, I can worry about porting the VR code, and some other assets, once I have finished this.
I have added the ability to load in new scens at runtime, and transition the players control to and from a player controller in those scenes.
This was reasonably simple, but I intend to use it to create a Virtual Reality setup, essentially, a game within a game.
This will allow the player to load and interact with various scenes, or possibly with other characters, while nothing else is going on in the main game, such as during long space voyages, etc ( This project is intended to be a realistic virtual world, so there will not be any fast travel).
I can also use these VR mini-games for training and tutorials, teaching the player new skills, etc, etc.
I have basically finished with the world builder for now.
It is still quite basic, but it does provide enough randomness to produce interesting looking planets with some reasonably diverse biomes.
There are still some issues with placing cities. I spent some time looking into a way to manually flatten city terrain to create a flattened area for the city, and I did make some progress with this, but aligning the flattened area with the edges of the rest of the terrain would be difficult, and I don’t have time to do this now. I think I can solve this problem, but it will be a later feature.
I have made several improvements to the planet and world builder rendering systems.
There were also some bugs that I ran into here that I fixed. They were mainly related to placing ground cover objects and cities on planets.
When the planets parameters are highly randomised, the density and placement (height and steepness restrictions, etc) of the ground cover does not always work correctly.
I have fixed some of these issues, but there are still some problems with placing large random objects, like cities.
I have been working on some concepts for the interior artwork in the project.
I have had issues creating bright interiors with specularity, glossy materials, etc, in unity using only dynamic lights. I can’t use any baked lighting, baked materials, etc, due to the nature of the project.
I have achieved some reasonble results using the screen space reflections effect on the post processing stack, and using the specularity workflow.
In the below images, the coloured cubes are clearly reflecting onto the floors below, which is exactly the effect that I wanted. This works for both materials with emissive properties, like below, and also non-emissive materials.
This works great, and works well in the main scene too. It adds a great deal of detail to metal surfaces, etc. It is possible to see the scene geometry reflecting onto the metal floors, etc.
I have made adjustment to the random generation system to generate terrain that is more interesting and aesthetically pleasing.
The random planets (of all types) often produce good quality results that are suitable for exploration and crafting, building, etc.
There are still some issues here though.
The main issue is that when I adjust the radius of the planet, the scale of the individual terrain chunks changes. This makes it difficult to consistently place ground cover (trees, etc) and structures on planets with different radii.
I am still in process of fixing this, it could be quite a difficult challenge.
The core mechanics of the project have been extensively tested though, and they all seem to be working fine, even when the player is exploring at extreme distances from the origin.
I have created a new planet type: “Planetoid”. These planets are extremely small, do not have an atmosphere, and have very low gravity.
I have tested the terrain generator, and it works with planets which have a radius of less than 100 meters. This means that I have the ability to create much smaller planets, and possibly even large asteroids, using this system, and still allow the player to land on them, etc.
The next goal is to debug and improve the world builder, and adjust its creation parameters to create aesthetically pleasing planets in all cases, which still allowing them to be randomly generated.
I have also modified the FTL travel system to always drop the player the same distance from the planet, regardless of its radius.
I have finally solved the issues with dynamic object placement. The world space positions were not consistent when creating the objects and loading them from the server.
I have also added visible trails in grass, that displace the grass as the player walks through, and I have added footsteps in the snow, both of these features add realisim, and in the future, could also be used to allow for tracking of enemies, predators, prey, etc, in the world.
The terrain generation seems seems more or less ok, although I will need to adjust it’s creation variables and parameters, especially for randomly generated worlds, and for steep terrain.
I have also made improvements to the ground cover generation. The changes that I made to the terrain height system caused objects to spawn on terrain that was too steep, too high, etc. I believe I have fixed these issues now.
I have also added additional checks to make sure that cities, etc, spawn within a sensible range too.
I have fixed most of the issues and bugs with the randomly generated worlds.
I had to modify the code that I was using to generate a reliable “up” vector towards the center of the closest planet, as well as fix various other rotation and object placement issues.
I also added some improvements to the navigation system that allow more information to be displayed about nav objects. I still need to add more advanced, interactible, nav systems, but this is a substantial improvement for now.
There are still some issues with dynamic object placement, and with terrain generation and ground cover object placement, which I will look at next.