January 2025
Since we started working on roles a few months ago we've been focusing on a few specific goals. This is good, because what we've learned in years of theory crafting the system is that it's all too easy to get lost in hypotheticals and go down rabbit holes without really reaching a conclusion. Fundamentally the idea is that we can keep expanding our collection of roles, adding more nuance and situationally appropriate behaviours. Ultimately the complexity lies not in the system, but in the quantity and variety of roles, and when asked "what does the role system do?" the best answer we can give is "depends what you tell it to do". By focusing on few specific problems we can make progress without worrying too much about the endless potential applications. However, this is a critical moment in which we're defining not only a limited set of behaviours, but also the capabilities and details of the system.
We've done a lot in the past few months, much of it was building new AI features and behaviours rather than the roles themselves, but we've defined the mechanics for driving behaviours and activities with roles, how they can influence and exert control over emotions and solved various difficult problems. But the biggest obstacle in the system's design hasn't been how to make it function, but how to make its emergent complexity easy enough to make sense of and navigate for someone designing roles. It's important to understand that roles are not simple triggers and set behaviours, each one introduces possibilities, and many roles exist and are working at the same time. Basically we don't tell NPCs exactly what to do, we merely suggest things that they might want to do, but they are not limited to just a few choices that belong to expected paths.
One particular stumbling block has been "relational roles", which describe what individuals know or assume about each other, what specific relationships they might have, how they might interact under various circumstances and carry a detailed history of their previous interactions. These are usually reciprocal and often asymmetrical or dynamic pairings on both sides, which can explode into a huge number of relationships with varying affinities in both directions. This makes even apparently simple problems immediately confusing, and we've never been happy with this convoluted structure and its unclear implications. It has remained somewhat of an unsolved problem. We've been analysing many practical examples trying to narrow it down to something intuitive that could meet our requirements, and finally we've found something we're happy with.
We've also established some new mechanics for relational interactions, we simplified accessing and using complex role data by moving most of the complexity to the inner workings of our scripting language, which now has more advanced high level features and is supported by better visual tools. This also allows us to use fewer specialised roles and more intricate dynamic decision making. There's a lot of details we've established better, we have clear best practices in place of open ended problems. In finalising some of these details we've also dealt with another troublesome issue, which is that changing roles could cause historical data for them in saved games to not match up. This is inherently less problematic now and with the new tools we can easily track changes in role data allowing them to be patched.
We've completed, finally, the new AI behaviours and core mechanics to drive them. The scope of the roles is for now quite limited, but we're touching on everything the system needs to do. Having now also finalised how the roles themselves function, in a way that goes beyond our immediate requirements, we can now more quickly and confidently develop roles that aren't just placeholders. We're immediately seeing elegant solutions to introducing more complex behaviours and social dynamics for even the most basic and unintelligent encounters in the short term. We already have a very solid foundation for AI which works surprisingly well even without roles, so we're excited to see what we can do with proper roles that actually expand on this rather than hinder and limit it.
As for the clothing and cloth armour updates we've talked about recently, we completed the changes to how character models are generated and also identified and included more optimisations that will allow us to render characters more efficiently. We're very happy with some clever solutions we developed here, the entire system is much more efficient and robust. We're still replacing a couple more items, but the bulk of them is done. The new items look great, a huge upgrade from the items we replaced and with all these replacements, the new items and the material improvements, the overall upgrade to character visuals is huge. We also added a bunch of features and a tool for our new cloth physics system that allows us to use it for creating clothing assets and textures. We're able to change many parameters in real time, interact with the cloth and even dynamically change the structure. Our new cloth is very versatile and performant, we're able to do this with millions of polygons of cloth, tweaking and adjusting things in real time to quickly create some very high quality assets. We've yet to explore everything that we can do with this, but already we've gotten some very useful things out of it.
We think we're very close to being able to begin playtesting, we've been pushing the requirements for the first playtest further and further, but at this point everything looks quite final so there shouldn't be any more unexpected additions or requirements. The play test should be more about fixing issues and adding things rather than an early look at features that are still in development at this point.
Best,
Bare Mettle