Jump to content

Recommended Posts

Posted (edited)

This isn't something I am really working on, but I figured it might be interesting to others.

I've just discovered it is possible to have adventurers (the custom characters that can be hired from most inns) speak during a conversation!

In brief you can do this by adding the speaker GUID (these are found in speakers.gamedatabundle) of the voice set in use by the character to the SpeakerGuid and FocusedSpeaker sections of a conversation node. The name of the character and the current portrait will then appear in the conversation window. If there are audiofiles that correspond to the conversation node in the folder associated with the voice set these will also be played during the conversation.

This should in theory allow for the creation of rudimentary sidekicks/companions with voiced dialogue!

With a lot of work and some degree of trial and error possibly even full conversation hubs of their own... Though the main hurdle as far as that goes, is that the lack of a button to start a conversation with adventurers directly. So the only way I could think of is using something like an item to start the conversation, similar to how the burned book works. There is also the lack of modding documentation related to the data structure of .conversationbundle files to contend with.

None the less could be really cool to see what someone dedicated enough might come up with!

I'm happy to answer questions to the best of my ability about anything I have written here.

Edited by Kvellen
fixing some grammar
  • Like 3
Posted

Oh wow, that's an awesome discovery!

1 hour ago, Kvellen said:

Though the main hurdle as far as that goes, is that the lack of a button to start a conversation with adventurers directly. So the only way I could think of is using something like an item to start the conversation, similar to how the burned book works. 

Yeah, maybe also script hooks to trigger convos on entering specific locations.

1 hour ago, Kvellen said:

There is also the lack of modding documentation related to the data structure of .conversationbundle files to contend with.

Actually, I've been working on a thorough documentation of the conversation and quest formats. I'll clean up and post tomorrow.

  • Like 1
  • Thanks 2
Posted
1 hour ago, Noqn said:

Yeah, maybe also script hooks to trigger convos on entering specific locations.

Oh yeah now that you mention it, script hooks could total work for this couldn't they!

I do wonder though, would there potentially be some impact on performance with a lot of scripts checking if their conditions are met on level load?

1 hour ago, Noqn said:

Actually, I've been working on a thorough documentation of the conversation and quest formats. I'll clean up and post tomorrow.

Awesome!

  • Like 2
Posted (edited)

Ok. First up I believe that this blog post by Josh Sawyer gives a great introduction to the general concepts of Deadfire Conversations: https://jesawyer.tumblr.com/post/175082312536/im-curious-as-to-what-the-conversation-editor

 

Basically, Conversations are flow charts. They contain Nodes, where each Node represent e.g. a player dialogue option or an NPC line.

All Nodes have a unique ID, and they contain a list of Links pointing to the IDs "descending" Nodes.

 

Now, here's the WIP documentation on these data formats, I hope it's not too much of a mess: https://docs.google.com/document/d/1jv8GvSuWlunC_nElQsPBM9nqEt8iCOoOP5PlBVAT1Bc/edit?usp=sharing

Most properties and values are somewhat self-explanatory, I've tried to describe the ones that aren't. (The major remaining ones are the concepts of Ghost Links and Question Nodes.)

 

Edited by Noqn
  • Like 3
  • 2 weeks later...
Posted (edited)

So I did a bit of tinkering using the excellent documentation noqn has provided, and have created a basic proof of concept! PoE2_Adventurer_Conversation.zip

There isn't really much to this mod beyond this one custom conversation, with a man giving monosyllabic responses (and possibly challenging you to a staring contest), but it does maybe give some insights into a few aspects of how a custom conversations can be implemented. For convenience, the "Speech Bubble" in the actual mod comes pre-equipped on the character.

There is likely a lot I am skipping over explaining, so if there is something that anyone is curious about or would like me to go into further detail on, please let me know!

Here are a few interesting aspects:

As you can hear the conversation uses voice lines from the Stoic Male voice set. I've used the "ExternalVO" line on some nodes in the .conversationbundle to play specific audiofiles during certain points. For example "ExternalVO": "player_stoic_m/ch_player_stoic_m_investigate_40011", is used on the first node of the conversation for the character to give a sort of grunt as a greeting.

However it's totally possible to add new voiced dialogue for characters during a custom conversation! I only did things this way to keep it simple for myself. But as I mentioned in the original post, if there is an audio file related to a conversation in the folder associated with the speaker (this is defined by the ChatterPrefix line) the game will play it. The audio file itself needs to be named after conversation and the 4 digit ID of the specific node it should be played on. So for example if there were an audio file named "adventurer_caedman_0001.wem" in the "player_stoic_m" folder, this could be played without needing "ExternalVO": "", to be used.

There are a few minor details you might noticed that don't really sell this as a proper conversation between the characters:

  • The adventurer and Watcher don't turn to face each other when speaking. Which is pretty impolite if you ask me!
  • The Watcher won't approach the adventurer like they do other companions, which leads to potential for instances of conversations happening over long distances, or from other rooms entirely.

The scripts FaceTarget and AIPathToObject/AIPathToPoint could be potential solutions for these respective problems? But I've yet to actually test them, since I've only just become aware of them as I am writing this post.

Moving on to the character themselves, there are some pretty cool things that could potentially be done using the GUID of an exported character. An example of this is to do with the "Speech Bubble" item. On the "InspectOnUseButton": [ ]  there is a conditional to only display the "Talk to Caedman" button when a character with the specific GUID of the adventurer is in the party.

Oh and with regards to making a fully featured companion with topics of interest... this GUID can be used to link companion data to the adventurer!

E2poSEK.png

I haven't looked into anything really surrounding flagging a node as a topic, so I have no idea if this character will "roll their eyes and let out a long sigh" when an assigned topic is mentioned in other conversations.

So yeah really exciting stuff!

Edited by Kvellen
  • Like 3
  • 6 months later...
Posted (edited)

After some more testing utilising the power of Apotheosis here are some fresh insights: 

  • Adding the Adventurer's GUID (this will be in brackets of the .character file of an exported Adventurer) to the CompanionGuidString of CompanionData seems to stop the Adventurer from being exported again.
  • Adding progression tables to the linked CompanionData of an Adventurer, and using a script that does RemoveFromParty and then AddToParty opens the class selection menu allowing you to change their class in the same way as a sidekick/companion.
  • By making additions to relevant .conversationbundles, an Adventurer can have party banter and comment on points of interest pretty seamlessly.
  • While Companions will react and track their relationship to an Adventurer, reaction to topics and tracking of relationships isn't functional on the Adventurer's side for some reason.
  • Quest creation is possible with Apotheosis, and while I haven't figured out all the aspects of it, quests that involve an Adventurer can be done.

The following video of an adventurer based on Durance shows some examples of the above:

Class and Quest Pop-up 3:45 and Companion banter at 4:15.

Still can't figure out a way to get character to face each other during a staring contest conversation. 😑

Edited by Kvellen
  • Like 5
  • 1 month later...
Posted

Hey, Kvellen.

Could you pls release the mod with Durance as sidekick?

Have any chance for this?

Durance + Eder is my favorite characters from POE1.

I was very annoyed and dissapointed when I did not meet Durance in the quest The Bridge Ablaze. 😭


How i looking that?  - as sidekick with 3 class/multiclass options:

1) Priest (Magran);
2) Priest (Magran) + Berserker (Furyshaper);
3-A) Priest (Magran) + Monk (Shattered Pillar);
3-B) Priest (Magran) + Fighter (Tactician);
3-C) Priest (Magran) + Fighter (Black Jaket);

That looking like quite logical class/multiclass options, based on the origin and past of this character.




P.S: Kana Rua as sidekick would also be interesting enough (have all in-game portraits for that), but having Maia Rua in the party and not having conversations between them would look a bit odd. 🤔

  • Like 1
Posted

Hey @Gwynrick, I'm sorry to say I don't have any plans for further expanding on this I'm afraid. My aim with recreating Durance was at first as a way to explore how Deadfire's conversation system worked by referencing and recreating a PoE1 conversation. And then just used it as a way to show off some of what is possible in making a sidekick with the Apotheosis tool. There is pretty much only what is in that video, which is Durance's introductory conversation hub from PoE1, his banter with Pallegina and Aloth, and part of his voice set.

Best I can probably do is release what is there?

  • Like 1
  • Thanks 1
Posted (edited)
On 2/12/2023 at 6:52 PM, Kvellen said:

Hey @Gwynrick, I'm sorry to say I don't have any plans for further expanding on this I'm afraid. My aim with recreating Durance was at first as a way to explore how Deadfire's conversation system worked by referencing and recreating a PoE1 conversation. And then just used it as a way to show off some of what is possible in making a sidekick with the Apotheosis tool. There is pretty much only what is in that video, which is Durance's introductory conversation hub from PoE1, his banter with Pallegina and Aloth, and part of his voice set.

Best I can probably do is release what is there?


Hey @Kvellen, I am Gwynrick.

I had to create a second account when I could not remember which e-mail the main account was registered to. 😅

It's very unfortunate to hear that you have no plans to release the mod.
But at the same time, I understand that this is a very time-consuming and labor-intensive task.


It would be great to see a version of the mod where Durance not only use his voice set for commenting basic actions (attack, etc.), because his banter with Aloth, Eder and Pallegina while traveling is very cool and atmospheric - but it's just wishlist.

The personal quest of Durance and other dialogues (available when use item from inventory) are not such an important thing, as it seems to me.

I will be glad if you release the "Sidekick Durance" mod in any form. 🙃

Edited by Khagmas
  • Like 1
Posted (edited)

Okay, what I'll do is polish up what I did for Durance and release it on Nexus as a demonstration of a custom Sidekick. and since Custom voice sets are something I am messing with at the moment, I'll include a ported version of Durance's voice set with it as well. 😁

Edited by Kvellen
  • Like 2
  • 2 weeks later...
  • 2 years later...
Posted (edited)

Probably, but the character is at the end of the day only an adventurer that you can just recreate at any inn.
All you need is this mod for Dyrwood Culture, and the portraits which are are in the gui folder of the .character (it's pretty much a zip file). Save your game and exit.
For the voice you can either remove the conditional statement in between the [square brackets] after "Components": [] "PlayerVoice_Durance.gamedatabundle" or select it later in the character customizer bmeBOfO.png once you have done following.

Change all the instances of "135d47bd-5a32-4af1-8a44-1f7d3822b0f9" in the mod's files to whatever the new GUID is for the character. You can find their GUID by hovering the mouse cursor over the character and entering this command into the console:

PrintInstance oei_hovered

It'll be in the combat log and should be on your clipboard for you to paste somewhere outside of game to reference.

Edited by Kvellen
  • Like 1
  • 3 months later...
Posted

This is absolutely beautiful.

What would be needed to make him a full sidekick?

I mean that you could find him standing somewhere, initiate a conversation and then recruit him, choose the class and then just a normal sidekick...?

  • Hmmm 1
Posted (edited)

Sadly there are a number of technical limitations and hurdles that would need to be overcome first to do that. Which aren't really possible with the built in modding support, and I'm honestly not well versed in advanced forms of Unity engine modding to know if it's possible at all.

The Adventurer Character Object (know as a "prefab" in Unity I think) that all Adventurers share doesn't support being talked to, as it completely lacks a component called "NPCInteraction" responsible for that interaction. This is what enables interaction with companions through the "Talk To x" button and on clicking on an npc. Which will point to a designated conversation GUID and load it when triggered.

There is a very hacky way to add the "NPCInteraction" to an Adventurer, and doing so shows the "Talk To x" button. Though it's completely non-functional sadly.

ERju4aF.jpeg

As for getting the character to spawn into a scene. I don't even know where to start.

The good news is that if someone were to figure out how to get around these hurdles everything else touched on in this thread is already supported by the game!

Edited by Kvellen
  • Like 1
Posted (edited)

Thank you Kvellen for the reply!

 

I reeeaaaallly want to make my own companion, a sidekick recruitable just like those others in the game. It would be a NPC from the first game that I really wanted to see more of. It's not one of the companions and it would probably be a very surprising choice for most Pillars players.

 

If there was any way to do it I would have wanted to do this:

  1. a companion you find in one of the map areas
  2. you talk to them and can recruit them
  3. custom voice: potentially dialogue, but if nothing else only area specific barks and fight lines
  4. custom face geometry and texture, like the glb-files in the game bundles – this would really sell the character as the character
  5. they have 1 stat-boosting and non-removable item, and possibly 1 unique weapon

 

Of these I could myself produce this:

  1. custom dialogue / trees
  2. I think good enough voice "sound / identity" .wem
  3. custom face geometry / texture
  4. custom items

 

Tying it together and placing them in the world, the script launching a dialogue or bark, is something I would need help with. And directed to which files I need to duplicate and customize. I know bits of React and Python, and might be able to manage some of the scrips if I can look at existing examples close enough to what I need.

 

So if I understand you correctly, and seeing your Durance mod:

  1. custom voice .wem's are possible
  2. iniating a dialogue and choosing a class is possible through an item script
  3. full start-to-end dialogue trees are possible
  4. but the player themself iniating a dialogue through speaking to a NPC placed in a map / level is unknown?
  5. and also placing a character in a map / level at all is also unkown?
  6. what about scripts for entering an area launching a bark or conversation?
  7. what about a custom face geometry / glb file?

 

Huge thanks if you can reply!

Edited by beatspores
  • Like 1
Posted (edited)
On 6/20/2025 at 9:26 AM, beatspores said:

It would be a NPC from the first game that I really wanted to see more of. It's not one of the companions and it would probably be a very surprising choice for most Pillars players.

Intriguing! 😯

On 6/20/2025 at 9:26 AM, beatspores said:

Of these I could myself produce this:

  1. custom dialogue / trees
  2. I think good enough voice "sound / identity" .wem
  3. custom face geometry / texture
  4. custom items

Honestly using an Adventurer as a stand-in to prototype the Items, voice set, and dialogue is a pretty good place to start such a project! As you'll be able to see how these all work in game.

On 6/20/2025 at 9:26 AM, beatspores said:

Tying it together and placing them in the world, the script launching a dialogue or bark, is something I would need help with. And directed to which files I need to duplicate and customize. I know bits of React and Python, and might be able to manage some of the scrips if I can look at existing examples close enough to what I need.

I don't know if this is what you are asking about, but a ModScriptHook that triggers the StartConversation script might be what you are looking for. Though be aware this has the limitation of only launching at the start of a level loading or on loading the game from a save.

I'd recommend looking into Apotheosis if you haven't already as that tool, amongst making modding Deadfire in general a easier, takes a lot of the headache out working with the game's scripting. Additionally the conversations editor is the best thing available for modding Deadfire's conversations as it's closer to how Obsdian's narrative designers actually worked with dialogue.

I could write up an example of a simple scripthook that triggers a conversation if that would be helpful?

On 6/20/2025 at 9:26 AM, beatspores said:

So if I understand you correctly, and seeing your Durance mod:

  1. custom voice .wem's are possible
  2. iniating a dialogue and choosing a class is possible through an item script
  3. full start-to-end dialogue trees are possible
  4. but the player themself iniating a dialogue through speaking to a NPC placed in a map / level is unknown?
  5. and also placing a character in a map / level at all is also unkown?
  6. what about scripts for entering an area launching a bark or conversation?
  7. what about a custom face geometry / glb file?
  1. Yup! I mentioned a bit about the naming convention for audio file related to conversations in my second post of this thread. If you have any question about this let me know!
  2. The "InspectOnUseButton" on items is the only way I'm aware to get player input to launch the StartConversation script.
  3. Indeed. Once a conversation is launched it can go on for as long as needed. Or get stuck in a loop forever if you're like me and forgot to put in an exit while testing...
  4. Correct. Linking a conversation to any character is not directly supported.
  5. Correct. The contents of maps aren't modifiable and the only way to spawn a character into scene is with a console command that requires their prefab to already exist in the games asset files.
  6. As I mentioned this can be done with a ModScriptHook that runs only on map/game loading. Otherwise there are a few conversation that are triggered for various points of interest that can be used to have a bark play just like other companions.
  7. I don't know if this is possible. It's not something I have looked into myself. I would guess this would require making additions to one or more of the .unity3d files. "character_hd.unity3d", "character_headandskin_hd.unity3d", or "characters.unity3d" maybe? Which isn't something I've seen in any Deadfire mods.

 

Edited by Kvellen

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...