First of all, I apologise for the (very) long time since the previous update! To summarise, I've been working on a major code overhaul (explained in more detail below) which ended up taking much longer than expected to implement and finalise. This update is not directly related to
the major one centered around villager agency and governance, but rather mainly behind-the-scenes changes which were long overdue to improve development speed and game quality overall. Fortunately, this is a sort of once-in-a-gametime overhaul, so there will definitely not be anything nearly as big and delayed as this in the future, and I expect the development timeline to resume with a more regular schedule from this point on!
To be honest, I'm actually really hyped that this is now out of the way and I get back to the more exciting stuff - stay tuned!
[h2]🔧 The Refactor[/h2]
Since the main change took so much time, I think it warrants an explanation of what it was and why it was required, but this will be mainly sort of half technical talk - so feel free to skip it if you're not interested in that sort of thing!
Once upon a time, a long long while ago, development on
Heard of the Story? began as a web game that was split into two parts: the Visuals (front-end) and the Brains (back-end). These two parts spoke in different languages and had to communicate with each other.
Eventually, the visuals were upgraded from BabylonJS (a web framework) to Unity, however, the Brains stayed the same and continued to communicate with Unity as a separate entity. When a new game was started, this Brains process was started, which is why you would strangely get a firewall pop-up from Windows at this time.
Structurally, the two-entity approach remained like this for a few years. Both the Unity Visuals and the Brains grew dramatically. This approach had several advantages, but its limitations also became very apparent over time. Mainly, it slowed the development of new features and placed a development penalty for anything that required a high bandwidth between villager understanding and world information. For example, small things like managing items in your inventory, or bigger things like villagers having a constant understanding of the environmental context around them.
This mission of this code overhaul was unify these two entities, or better put, deprecate the Brains as a separate entity in favour of an all C# / Unity approach. If you can imagine spending half of your programming time for 4 years on one project, and having to re-write that project, then you would expect it to take a long time. Fortunately, due to today's tooling, that 4-years worth of work was able to be rewritten in about a month and a half - which was awesome! The other time was essentially spent testing the new unified system, smoothing out some parts, re-working others to fit, and finding & fixing all the new inevitable bugs.
Having spent some time with this unified system already, I can say that there are indeed some negatives as well, in particular, Unity seems to be handling this large number of ASMDEFs and larger number of files rather poorly, simply crashing a lot of times I make any change, or just being exhaustingly slow (right now 10 mins to open, 20 mins to build, etc). Though I do believe that these issues are more minor to resolve and tractably optimisable. I've already made some helper scripts to help me manage some of them.
Despite this, I think this change will bear great fruit and I'm pretty excited to be working with this improved system. More tangibly, you should see improved rate of feature development, less bugs, more interesting features that better make use of the full data and villager thinking stack, as well as a much smoother game-start experience that is more compatible with a wider range of devices (yes I'm looking at you Linux players). Psychologically, it's also a huge weight off my shoulders to have a much cleaner and better aligned codebase to work with.
That being said, for the moment this is a fresh major change, so if you see find any new bugs that slipped past my testing, please let me know and I'll aim to have them fixed in the next update - if need-be as a stand-alone quick hot-fix.
[h2]🎯 Goals[/h2]
In general, this update also brings with it a few changes aimed to make
villagers much more capable of completing goals and hard buildings over time - and with good success! Specifically, villagers:
- Review previously failed goals every morning to see if they now have the skills to complete them
- Review goals upon learning a new recipe too
- Better take into account their skills during planning, such that even if they don't currently have the items they need, they can start that goal
- Always decide equally randomly between building and crafting goals, rather than eventually getting crowded by crafting goals
[h2]🤏 Small improvements[/h2]
- As a side-effect of the overall refactor and no longer needing ports for communication between processes, you can now have more than 1 game open at the same time!
- Villagers start actions much faster and are more likely to pick an action they can actually succeed in
- Made it easier for villagers to pick up stone
- Increased the spawn rate for tiny stones
- Added another little easter egg to the main menu :)
[h2]🐛 Minor changes[/h2]
- Fixed not being able to contribute to the jewellery from one side
- Fixed various glitches when previewing wall placements like the wall showing when it's not connected
- Fixed crafting goals not being talked about despite villagers having them and them showing up in the journal
- Fixed migration of old saves causing villagers to want to eat themselves
- Fixed villagers not talking to new villagers
- Fixed typos in dialogue
- Fixed merchant issues
- Fixed story telling sometimes failing
- Fixed some saves not loading due to LODs in mastery signs
- Removed a bunch of old files and now-deprecated EXEs from the game folder. The new install should be about 40% smaller on disk