Post Release & Future Project

    Since the 1.0 release I have been continuing to fix bugs and overall improve the game. I am also collaborating with a team on a new project.

Minor Update-1.1

    A week after the release of the game I worked on the 1.1 version. The main features to pay attention to are the addition of Linux support and the option to have up to five save files. The other less flashy changes mostly include small bug fixes and minor improvements.
    Support for other platforms is something that I've wanted to do for some time but never got around to. It was only when that I got a specific request for a Mac version that I realized there was real demand for it. So I looked into packaging for other platforms and I found that it's not as simple as I would have hoped. In terms of making a Mac build from my Windows PC, I had no luck. You need an Apple machine to build for that platform so that was more or less out the window. I found you could rent machines over the internet running MacOS but I don't have the budget or time to really deal with that right now.
    So Mac wouldn't work but were there any other options? I then looked into Linux because hypothetically anyone could run Linux on the machine they have. This lead me to the cross-compiling guide for Linux and it was really simple. As it turns out because of the open source nature of Linux all you need to do is download a toolchain, rebuild the engine from source, and bob's your uncle. I did then have to make a few adjustments to the code because the Linux compiler didn't like certain syntax, but overall the process was very smooth.
A few other fixes/changes I made that deserve some attention are:
  • I fixed the video settings confirmation countdown not working in-game because timers don't work when the game is paused so instead I used delays.
  • Editing a gradient now updates all celestial bodies with an applied instance of that gradient. I did this by adding a delegate to UCurveLinearColor in the source code.
  • I translated the body moving actor (3Axis) from blueprint to C++.
  • I fixed multiple crashes due to delegates having duplicate bindings or bindings being removed that didn't exist.
  • I changed the star model so you can no longer see such obvious changes in the surface normals.
  • I finally got around to writing some documentation for the color curve widget constructor.
  • I fixed newly spawned bodies not being effected by gravity due to their mass being initialized to 0. For some reason this didn't cause a divide by zero crash?
  • Duplicating a body will now duplicate components like atmospheres and planetary rings.

Post-1.1

    Still mostly the same as the 1.1 update; just minor fixes and improvements. The one big change to note is the changes to the asteroids.
The asteroids before were quite low-poly and looked quite out of place. I wanted to make higher poly versions but when I did that with thousands of asteroids the framerate took a considerable hit. So, the first thing that came to mind was to make mesh LODs, the oldest trick in the book to reduce on-screen poly count. Doing some digging though revealed that Niagara does not automatically switch the LOD of a mesh particle. This was especially frustrating as it seemed like such an obvious engine feature.
    After multiple hours over multiple sessions I found the answer to all my questions and more: the official presentation about simulating large crowds using Niagara. The presentation is very well done and touches on multiple points about performance; one of which is faking mesh LODs. The way that the presenter faked mesh LODs was by having multiple mesh renderers, each with a different detail level mesh applied, and switching visibility between them based on a scratch pad module that finds the distance from the camera to the particle. Not the most elegant solution, but it works nonetheless. I am now able to get a framerate of >110 when rendering all 5000 asteroids whereas before I got dips as low as 50.


Future Project

    Now that development on Mini Solar System is coming to a close I am looking for new work. I am applying to many game studios, but in the meantime I want to get started on another portfolio piece. This is where this new team comes in. It is mostly comprised of Warren Tech alumni but we may also have a current student showing interest in doing sound for the game as well.
    We know that this project will feature lots of high-fidelity art courtesy of Quixel and we will be using UE5 to take full advantage of nanite and lumen. We also plan to heavily utilize Niagara to do special effects which will be integral for the game that will focus on magic and spells as a core feature. The design is being worked on day by day so nothing beyond what I have mentioned is concrete yet.
    We hope to have it done by March 2022 as it stands currently so it will be relatively limited in scope, but we hope to make it technically impressive more than anything. Next week I will be working on planning the menus (because in MSS that system was retroactively added) and pseudo-coding the spell classes with UML and other tools.

Comments

Popular posts from this blog

Mini Solar System Postmortem

A New Chapter

Polishing the Foundation