I wasn't able to get a devlog out for May, but at least the gap between the previous devlog (#003) and this one is smaller than the gap between Devlog #002 and Devlog #003. And we got another unexpected patch to the Physics Update. Plus, a little something extra which I'll save for last. Let's quickly address the most recent patch first.
What happened is while I was using the Physics Update as a reference for the Modding Update, I happened to trigger a null reference exception while testing something out. Judging by the log, it looks like it didn't affect anything. And I only caught it because the test was done in the editor, which I have set to stop execution upon encountering an error. When checking how it affects the game, I noticed that (a) the error only happens once instead of say, every frame, and (b) nothing happens within the game that would give any indication that there even was a bug in the first place.
Now that we've got that out of the way, let's address what's going on for the Modding Update.
The Systems Overhaul
For starters, part of the Modding Update involves overhauling most (if not all) of the game's systems, which is quite the chore. The good news is that a lot of code is simply a matter of copy-pasting into different locations in an effort to make the code easier to maintain. The bad news is that moving so much code around breaks a lot of stuff.
I also have more bad news: My game engine is taking way too long to develop for it to make it viable to port Solar Lander to it. Not only have I discovered several major problems with the current implementation of the engine's systems, but having to create nearly every system from scratch or nearly from scratch is quite time-consuming. This is especially true when I'm stuck for extended periods of time trying to figure out how I'm going to resolve the various issues that I've come across. This is time I believe is better spent developing the Modding Update. So that's exactly what I've been doing.
What Is Finished
One of the goals for the Modding Update is to have a nice way to package mods for distribution, whether it be through the Steam Workshop or other means. It would also be nice if the game could use these mods without having to unpack them. So let me introduce you to the ".mod" extension. It's a simple archive format that the game will be able to read that'll contain all of the files that will make the mod usable in-game.
Of course, it wouldn't be any fun if you had to repackage a mod that you were developing every time you made a change somewhere. So the game will also be able to use mods which are not packaged into a .mod file. The code for reading and writing a .mod file already exists. The details of how a mod should be made however, do not. Not yet, anyways. But I have decided that mods will not have any sub-folders.
I have however, decided that every mod will contain a mod_info.ini file, which will contain some basic information about the mod, like who the author of the mod is, what the mod contains (eg: space craft, game modes, flight computer programs, etc.), the display name for the mod, and any dependencies on other mods. The exact specifications of this file are not yet finished, but at least now you have some ideas of what to expect.
Solar Lander mods can optionally have a credits.txt and readme.txt which will be readable in-game. As for playable content, there will be a number of files including Lua scripts (eg: for flight computer programs and custom game modes), custom spacecraft and other objects, custom planets, and possibly a few other things that I haven't decided on yet.
Some of the other things that I've completed in terms of porting over from the Physics Update are the Main Menu, Single Player Menu, High Scores Screen, and Credits Screen.
What Needs Work
Currently, the Modding Update is not in a state where it is playable. The whole program is just the game's menu. And even the settings screen isn't fully functional. Right now, I'm focusing on the settings screen. By the way, here's what that currently looks like:

The Help screen is probably going to be saved for last, as I want to make sure that everything else is finished first. It'll give a basic overview of all of the systems in the game, but I'm wanting to implement other features to give more in-depth help. For example, I'm also hoping to implement tooltips to various items along with a Tutorial game mode, which probably won't be out until just before the Modding Update is officially published.
Also, I'm going to be shifting the game's graphics from a mixture of sprite and vector graphics to be purely vector graphics (with the exception of the UI and background image), including some sort of animation system. Another goal is to make it so that objects can break-up upon crashing, creating debris that you have to watch out for.
Also, the API hasn't even been started, though I do have Lua 5.4 working. I am considering dropping down to Lua 5.2 so that I can integrate LuaJIT into the project, which will speed-up script execution by about 5-7 times what we would get without using LuaJIT, which would be just slightly shy of native performance.
Speaking of which, I'm going to make a game mode as a mod published on the Workshop, as well as implement an unpacked "Vanilla" mod distributed with the game that you can play around with.
Much of what I plan to add to the game will come after I put the Modding Update on the beta branch, but will be available by the time it goes onto the main branch. I will post an announcement when I put the Modding Update on the beta branch. And I also have not forgotten about the goal for implementing multiplayer.
Historic Branches
I just added 2 new branches to the game which can be accessed through the beta participation: "pre-physics-update" and "physics-update".
The "pre-physics-update" branch contains the last build before the game got its first version number. I did discover that, at least for Windows, this build crashes due to steam_api64.dll being in the wrong folder. Though I don't recall it ever crashing before the Physics Update. Just go to where the game is installed and navigate to "SolarLander_Data/Plugins" and move "steam_api64.dll" into the "x86_64" folder and it'll be fine.
The "physics-update" branch contains the latest build of the Physics Update. And once the Modding Update officially hits the "beta-builds" branch, the "physics-update" branch will contain the final Physics Update build. And once I have verified that all systems are working properly for the Modding Update, I'm going to simply delete the Physics Update's project files.
[ 2025-06-01 16:00:05 CET ] [ Original post ]