I've been experimenting with the game design software Articy Draft and implementing its exported content into Unity.
Unity implementation is new with the latest version so there's been a lot of fumbling blind and trawling through the very limited documentation.
I'm using Articy for handling branching dialogue and a database of characters and items.
Example of some conditional branching dialogue from my testing.
Example of separate conversation hubs from my testing.
Character definitions, in this case my shopkeeper with his inventory of items. Which are also defined within Articy.
Another character definition, in this case an NPC with all their stats and various options associated with them.
(Character asset by piablood sourced from the asset store, background art by Corentin Chevanne, placeholder assets only).
I modified a provided dialogue system attached to the Articy Unity SDK and implemented my UI driven character. The characters are imported from Articy and their local values can be manipulated by the dialogue, which I'm using to drive a simple emotion system which in turn connects to my animation system. I've also got various procedural elements which are driven by Scriptable Objects that link to the Articy Character reference, generating things like their appearance, personality, and eventually names and stats.
I can trigger dialogues or store interactions from clicking on sprite versions of the characters, in the case of shopkeepers, their store is populated with the items referenced as their inventory in Articy.
I've developed various scriptable objects to make things easier as well.
This object makes up for some limitations in Articy's Unity implementation, allowing me to connect the Articy reference to a local scriptable object and to override display their name, it also serves as a link for Aritcy's Dialogue system to readily find the scriptable objects. I realised this would quickly get crazy so I also made a custom inspector to easily break all the assets into groupings.
This is the local Unity scriptable object representation of a character, the main purpose of this object is for handling all of the procedural aspects of a character and communicating with the materials on a sprite or UI image. With how my generation and animation systems work, various other scriptable objects store sets of animations or sprites which can be used in generating a character, allowing for some control over the types of characters it can generate.