Not Dead, aka Progress Report - 13/02/22


Happy New Year!

(what, what do you mean we're already halfway into February?)


Yes, I have been a little quieter here than I'd like. The last four months were not great and I really needed to rethink how I schedule work. But, development on this game still continues. Even though I don't have a new downloadable version to share yet, I would like to present in this post all the progress that's been made (along with my plans on bringing progress reports more frequently, more on that at the bottom).

.

The Great Refactoring

I started learning C# and developing this game at about the same time. Since it was originally a school project with a rather tight deadline, I ended up rushing a lot of the learning in favor of having something people can play. For the longest time I wasn't even aware of some basic concepts like Interfaces and dictionaries or the difference between fields and properties. As a result, the game's code foundation is just... bad.

I'm still not the greatest programmer, but I like to think my understanding of the language and some of its best practices has grown considerably since I started this about 2-3 years ago. As I inevitably started running into traps unknowingly set up by past me. I decided it's probably the best time to dive into the foundation and redesign how some things work to try and make the code more future-proof. Now I'm in the middle of rewriting/splitting/consolidating scripts, cleaning up and generally untangling spaghetti to the best of my ability.

It's going to be a long process and sadly one that doesn't create any visual results for me to show.

.

Saving, Loading and Scene Management

This was one of the main reasons behind 'the great refactoring'. I needed a way to store data and then load it before the rest of the game starts asking for it, and I needed a better way to deal with scenes than what Unity's build index allows (especially if I plan to have more than three levels). The answer to both of these problems (aside from creating a proper start-up sequence instead of trying to load the main menu right away) was the Unity Addressables package. As part of the backend redesign I've made the project support addressable assets, which greatly simplifies resource management, and might even allow for easier modding further down the line.

Addressables and Databox work nicely next to each other, so that when a level is loaded it receives all the relevant data it needs, such as default values for game mechanics.

The second problem I faced was that I wanted some properties to be editable by users outside of the game. Lot of games come with simple human-readable configuration files, which let you change settings without needing to have the game running. So, that's exactly what I did.

Not only does the game now (finally) remember settings between sessions, these settings are stored in a comprehensive configuration file, following the TOML specification (namely through its C# parser called Tommy )

TOML looks like INI at glance, but has tons of bells and whistles. Among the most useful are comments.

Naturally I've also put in place some necessary integrity and sanitation checks, which will repair invalid values or completely replace the file if it's corrupted or malformed. That should make this a fairly robust configuration system.

.

New Main Menu

As mentioned in my previous devlog, the old menu system is beyond ugly. I have made the first steps towards making it both prettier and more functional. I've completely rewritten the way navigation is being handled, creating a smarter system that lets me choose static or dynamic selection chains, and which also handles sliders and scroll fields so that they behave in an intuitive way when using only keyboard to navigate. Although the system is not 100% finished, pretty much the entire menu can now be navigated easily with either mouse or keyboard (and soon also gamepad).

A little bit of progress was made in the visual department, as I work towards bringing the game closer to the style I have in mind. This includes new layout and a fancy cube that displays an icon for the currently selected menu item:

The cube and its contents are made entirely via a Raymarching shader. Which is what makes these cool shape transitions possible.

.

Conclusion, Future and tl;dr

So, lot of the code is being rewritten in the background, the game can save and load some data now with settings being tied to a readable config file, and the main menu is slowly being overhauled. That is all I have for now, but I hope there will be more soon.

I've been working on setting myself a more reasonable schedule. Under this schedule I shall spend a week working on the game and then take week off to make progress on other projects. And with it comes a new resolution that I will attempt to maintain (no guarantees), which is a new progress report every two weeks. When I finish a week of game development with at least a bare minimum news to report, I will post a new devlog about it.

That should hopefully result in giving this page at least some semblance of activity. - And will also serve to spread my progress ramblings across multiple smaller posts instead of them being one giant monolithic thread every few months like this one.


With that I sign off once more.

If you have any questions, suggestions or just want to say hi, make sure to leave a comment!

As always, thank you for following the game, I will see you around!

Get FEL - Industries Outworld (prototype)

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.