⭐ Forensic Friday 50: Mod Support out of nowhere
After 825 days since the first Forensic Friday, we’ve reached quite a significant landmark, Forensic Friday 50! While Forensic Friday is now a weekly blog, it wasn’t always this way, and during inconsistent schedules and many multi-month spanning hiatuses, we appreciate everyone one who has remained supportive and engaged with our game’s progress, new and old!
First and foremost let’s get into the nitty gritty for what we’ve been up to this week, before going on a trip down memory lane, looking back at the Forensic Fridays that have preceded this!
Utility AI Hell pit almost filled up #
All the major systems pre utility AI system have slowly been making their way over. The only outstanding features are combat! There are a few bugs with builders, but for the most part, the system works flawlessly, which means any NPC related features down the road will be implemented in a fraction of the time! NPCs feel much more alive and real as an added bonus, which undoubtedly adds value to the game.
We worked on visualing some of the features pertaining to the utility system for our and your convience! Take a look:
As these desires tick down, the NPCs will try to satisfy them, in a very dynamic way. Awesome!
MOD SUPPORT??? #
The tailend of this week took a very unexpected turn. We decided to implement mod support 30 Forensic Fridays early. Why? Well…
Considering we are already going through a major refactor with the new NPC AI system, we thought why not add mod support now? It would only become harder to add as the codebase gets more complex, and it will only take a few hours or so. Right? WRONG. After very many hours of labour and staring at errors, reading scarce articles and barebones documentations, we eventually got the resemblance of mod support up and running. Turns out, mod support isn’t exactly a well documented problem. Most advice follows the lines of:
“…figure out how to build the framework yourself, or use an external tool”
Well, since we are so high and mighty, we had to implement it from scratch, didn’t we?
The result though is a pretty elegant solution to mod support that will make out game moddable to any degree. This is facilitated by the fact that out base game now loads itself as a mod! So if our game is a mod, then modders practically have free range to do whatever they want! Heck if they wanted to make the game completely unrecognisable, they could!
Obviously there are still some kinks to iron out. Right now we are figuring out the best way to handle loading assets. But for the most part, mod support is done! Which is awesome! For those more technical people out there, heres how the mod making pipeline will work:
1) Create New Unity Project
2) Locate CoreMod in Mod Folder
3) Drag Core Mod into Unity Project
4) Write your mod entry class, and the rest of your mod (this is the best bit)
5) Create Mod Settings
6) Fill out Mod Settings
7) Build and Locate in Build Output Folder. You now have your mod! Ready publish, somewhere...
It’s rly that simple! This mod pipeline might not reflect the final version, but will probably be pretty close to it. One thing that may change is stuff specific to resource folders. But, as a modder, you’ll have access to all the games data files, allowing you to easily add new tiles and even create your own extensions of them. We basically give modders “Full Access”, so they can change the game in anyway they please.
The modding framework still needs to support dependency load ordering and such, but is pratically done. The only limitation is that you can’t use (sorry I am being super technical here) the unity Job System or Burst Compiler in mods. (As far as we know. This is due to an oversight of the unity developers, that may get ammended in the future, but it not rly an issue.)
All that out of the way. For those less technical, all you need to know is that we’ll have mod support right out of the box!
A Period of Self Reflection #
With that hefty news out of the way… onto something much less important! While the true number of blog updates is a lot higher, we really started getting serious with the game when we started Forensic Fridays. Spanning over the last 2 and a bit years, we’ve slowly made steps towards getting Containcorp finished, and we’re still going strong now. Just for the hell of it, let’s reflect on Forensic Friday’s come and gone, and see with hindsight how our previous work holds up to today’s standards!
Originally, when coming up with a name for the blog, we wanted to make the blog on Saturday, but couldn’t come up with a good alliteration for the name… the good old days before chatGPT. After some tussling and arguing we finally settled on Forensic Friday which doesn’t really make much sense since we weren’t investigating any crimes (unless the crime was our code which isn’t the greatest first impression!)
Forensic Friday 1 #
It’s funny looking back that we thought that Forensic Friday 1 was a stupidly long blog post - it’s become almost the norm. At this point in our development cycle, we were still getting the groundwork for multiple floors up and running. Everything from NPC’s multifloor pathing, to structural integrity were still in the works, although funnily enough, the pathing was recently reworked just a week back to be slightly less complex and utilise multithreading, but the implementation held up quite well!
Forensic Friday 2 #
Aww the old UI, such simple times… but that does make most of this post now redundant - a sentence I think I’ll be writing a lot more before this blog is finished! There’s also a showcase of our old health and damage system, which - shocker - has been reworked since to actually simulate separate bodyparts in relation to their location in a person etc.
Forensic Friday 3 #
ONE ANOMALY DOCUMENT A DAY WERE WE NUTS???? And a subreddit announcement that we eventually started and then left to rot… hopefully one day the game is popular enough to have an active subreddit, but until then another dud blog - although the addition of lifts was nice.
Forensic Friday 4 #
This was quite a significant blog, with NPC’s getting hands, a beauty system for determining what the environment is like to an NPC and a schedular for directing NPCs.
However, the schedular is with the old UI again so that was redone, along with the mental system, that has recently been morphed to work with the Utility AI system we have so determining NPC behaviour! There was also a whole planet generated because we obviously didn’t have our priorities straight, but who knows? Maybe we’ll be using that in the near future…
Forensic Friday 5 #
Game alerts were introduced, again with the old UI (fun drinking game idea - take a shot every time I say “old UI”). However, they’ve proven useful, even this week with Containment Procedures. Also a fire system rewrite, with a section joking about us rewriting the whole game… maybe we were onto something.
At the time, our plan was for the game to be finished by the summer of 2021, how naive we were…
Forensic Friday 6 #
Ah… the power system. This blog post on the whole was actually not too bad. The bezier curves for power lines and step up/down transformers for different power levels still hold up and haven’t been changed since their addition - outside of some bug fixes that were ongoing at the time.
Forensic Friday 7 #
The gas system and a fire shader was added - pretty neat + accumulators for power + explosions because… explosions are cool! No more rewrites to be seen here… yet ;)
Forensic Friday 8 #
The “new lighting system” described here was quite short lived because we went back to the old lighting afterwards… oh well, live and learn!
Forensic Friday 9 #
This is a bit of a yikes looking back! The old Wiki and a forum on our old website were in the works, which have both been redone and axed, respectively. Here also lies the start of our battle with pipes.
"With so many combinations of different fluid parts, there’s always one of these points that seems to go awry but just yesterday I had a promising breakthrough, which if successful you’ll hear about it next time."
The breakthrough was not successful.
Forensic Friday 10 #
After a couple of months break, “cleaning the code” for developers who never actually worked on the game due to personal commitments, we returned with zones! This has held up quite well, but everything else has been redone since - improvements to builders queueing tasks has been usurped by Utility AI, snow has been disabled in our current build, and the roadmap severely underestimated how long and which features we would require… the benefits of hindsight!
Forensic Friday 11 #
Our first Forensic Christmas! Structural integrity was started, which was mentioned as a feature we were starting in Forensic Friday 1! Pre-roadmap days were rough… The introduction of Convicts was also mentioned, which has somewhat been replaced by Utility AI, although the region requirements have now been generalised for all regions, not just prisoner cells. So a solid 4/10 for this blog!
Forensic Friday 11.5 #
We didn’t do an April fools blog in 2023, since this was already beating a dead horse!
Forensic Friday 12 #
The start of a good idea, we used the MoSCoW system for deciding what features our game should have. We had the right spirit, but were still a little misguided. Ironically, one of the features we said we wouldn’t have was Mod support, but today’s blog post says otherwise! On the whole this was when we started to make “cleverer” decisions. I wouldn’t say clever though, everything is relative.
Forensic Friday 13 #
Whew! The update from a Singleton design pattern to using events. This was a big one, and definitely necessary… I can’t imagine how much spaghetti code we had before this point.
Forensic Friday 14 #
The casual mention of introducing hauling! Which again has been redone using the Utility AI system after some painful debugging.
Forensic Friday 15 #
OLD UI ALERT!! Experimentation was started, using the old UI, so that was redone. Scientists working in research labs will eventually also need to be redone using the Utility AI system… what I wouldn’t do to be able to travel back and slap us then!
Forensic Friday 16 #
Experimentation was continued, and again, elements of this will probably be changed to use Utility AI in the coming months. Power was also changed to use the events system, resulting in quite the mess, which we swept under the carpet… surely that wouldn’t affect us in the future right?
Forensic Friday 17 #
More rule based stuff with prisoner NPCs that’s been affected by Utility AI, plus a solution to pipes that didn’t work, need I say more?
Forensic Friday 18 #
We started logging our work hours this week, and we still do this to this day! The Anomaly pipeline hasn’t really led to any anomalies being implemented properly as of yet as well…
Forensic Friday 19 #
NPCs hanging out has been redone to use Utility AI! Utility AI is the new “old AI” at this rate (probably worse).
Forensic Friday 20 #
Gangs… still need to be updated to Utility AI! I’m having so much fun right now.
Forensic Friday 21 #
Gangs… still need to be updated to Utility AI! I’m having so much fun right now. On an aside, do you ever get that feeling of déjà vu?
Forensic Friday 22 #
Prisoners were not implemented because they got redone to use Utility AI… 4 blog posts arghhh!!!
Forensic Friday 23 #
Pipes were finally done using cellular automata! It was about time, jeez.
Forensic Friday 24 #
THE NEW UI SYSTEM OMG FINALLY AS WELL. Pipes were being developed “properly” and the new UI was finally on the horizon, as late as December 2022 - that was quite recent thinking about it!
Forensic Friday 25 #
We announced the start of Mechanical Mondays this blog. While the format has changed slightly, Mechanical Mondays have essentially become our anomaly announcement blogs, which isn’t the worst thing in the world! Mockups for the new website were released as well, which were somewhat different from what we have now!
Forensic Friday 26 #
Forensic Friday 8 was voided here… we went back to the lighting used before, but it looks so good now, so it’s hard to stay mad! We also had our first anomaly poll winner - S-0039: “The Anomaly Tree”
Forensic Friday 27 #
We announced we were bankrupt and couldn’t afford to host the website! GoDaddy was just ripping us off and we’ve found a better solution since! Hence you can now read this blog! Meta… right?
Forensic Friday 28 #
The proper proper roadmap was announced here which… needs updating! Utility AI really did us dirty, but hopefully for the better in the long term. Looking back, we have no idea how we would’ve implemented some features like raids etc without Utility AI. There was also a year recap which totally didn’t inspire this post.
Forensic Friday 29 #
2023 arrived with perhaps the shortest Forensic Friday! The old UI was being overhauled… it feels like we’ve had the new UI for longer than 8 months but evidently not!
Forensic Friday 30 #
The new UI was finally showcased, and looking back, using React to render our UI is one of the best things we’ve ever done, at least when it comes to our sanity for creating new UI menus.
Forensic Friday 31 #
More elements were moved over to use the new UI, and bodyparts were finally refactored to not suck! The new website was unveiled, and while there were a couple changes to be made, it is very similar to what we have now!
Forensic Friday 32 #
The new UI was finally flagged as good enough to move on, and an overkill diagram for the bodypart system was unveiled, all in all a good week’s work.
Forensic Friday 33 #
After announcing that UI was good enough to move on we… continued transferring the UI? It needed doing but it looks really silly when phrased like that!
Forensic Friday 34 #
Dr. TGW (Extrel) and Dr. Kleine Evengald (Dinobetes) from our Discord had a tie for their submission in our anomaly poll this week, leading to a somewhat entertaining race to see who would get their submission chosen!
A new financial menu using the new UI was created in a week, which would’ve been unthinkable before! Also bodyparts were further refactored to take in their relative height on an NPC. Most of these changes are so recent that I’m obliged to say this is all good!
Forensic Friday 35 #
We were starting to catch up with the roadmap, not knowing that Utility AI was about to suckerpunch us… New additions such as bullet tracers and inventory system were announced this week as well, somewhat sweetening the lump of turd we’d have on our doorstep soon enough…
Forensic Friday 36 #
Further work on micro-managing prisoners would’ve been alleviated with Utility AI, but alas we were idiots. Firearms were introduced this week as well, along with modular NPCs that made our lives that tiny bit easier!
Forensic Friday 37 #
One of the benefits of the modules was knowing what functionality was implemented for NPCs! Using this, we were able to quickly get the NPC facing module, and correctly able to make NPCs face the correct way on meeting up! That’s great and all but Utility AI was about to null and void meeting up specifically :) However, jokes aside we still use the facing module now so definitely a good choice.
Forensic Friday 38 #
The steam page was supposedly on the horizon, but we kept failing tax forms for the next 3 weeks so that was a fun time. Business stuff is just the worst. However, this blog was the first on our new website, along with a new wiki and game website that was finally hosted without bankrupting ourselves!
We’ll leave it there #
We’re dangerously close to talking about blog posts that happened in recent memory, so we’ll leave it there! Looking back our progress, even since the start of the year while juggling university work has definitely been promising. While there have been quite a few mistakes along the way, it’s all a learning experience at the end of the day, and as long as we don’t make the same mistakes again, we’re more than happy with the state of things!
Case Closed #
It’s been quite the hefty one, so we’ll keep this part short! We’ll catch you all on Monday for the release of the Dwarves case file. Have a great weekend!