luzarius Posted April 5, 2015 Posted April 5, 2015 (edited) Problem: Kolsc is an NPC in game who has no voice acting. Solution: Let's create OGG files for Kolsc and get them linked to the dialogue. 1. Folder: data\audio\vocalization\vo wav files 2. Add new folder data\audio\vocalization\vo wav files\kolsc 3. create voice filesets: - 07_cv_kolsc_0001.ogg - 07_cv_kolsc_0002.ogg - 07_cv_kolsc_0003.ogg - 07_cv_kolsc_0004.ogg 4. create xml mapping file that links dialogue to ogg voice files. data\conversations\07_gilded_vale\07_cv_kolsc.conversation The conversation file already exists. .... This is all hypothetical, could one of the devs give some insight? A dirty explanation would suffice. Doesn't every dialogue have it's own unique ID? Could you link that ID to it's associated ogg file even if the ogg voice file does not exist? string curDialogueID_047148_VoiceOgg = "\data\audio\vocalization\vo wav files\kolsc\dialogueid_047148.ogg"; string curDialogueID_047149_VoiceOgg = "\data\audio\vocalization\vo wav files\kolsc\dialogueid_047149.ogg"; string curDialogueID_047150_VoiceOgg = "\data\audio\vocalization\vo wav files\kolsc\dialogueid_047150.ogg"; string curDialogueID_047151_VoiceOgg = "\data\audio\vocalization\vo wav files\kolsc\dialogueid_047151.ogg"; if (file.exists(curDialogueID_047148_VoiceOgg) playsound(curDialogueID_047148_VoiceOgg) Let's say we're in a conversation with Kolsc, we then open up console and type: "currentNPC output dialogue tree XML" which outputs the entire dialogue tree and associated dialogue ids and dialogue text? Edited April 5, 2015 by luzarius Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
luzarius Posted April 6, 2015 Author Posted April 6, 2015 I managed to figure out how their system works.For example, the following conversation file belongs to durance: companion_cv_durance_hub_ashfall_v2.conversation - data\conversations\companions it contains talknodes that have an id: <FlowChartNode xsi:type="TalkNode"> <NodeID>52</NodeID> These talk nodes represent a line of dialogue whether it's voice acted or not.You can find out the text for this talk node by opening up the appropriate string talk table file: companion_cv_durance_hub_ashfall_v2.stringtable - data\localized\en\text\conversations\companions <Entry> <ID>52</ID> <DefaultText>Durance glances at his staff, then at you, and gives a crooked smile. "Can't take your eyes from it?" He chuckles. "Durance himself favored such knotted twists of heat, it was said, no shame in it."</DefaultText> <FemaleText>Durance glances at his staff, then at you, and gives a crooked smile. "Can't take your eyes from it?" He chuckles.</FemaleText> </Entry> Then I copy and pasted an existing OGG file under the above naming scheme: companion_cv_durance_hub_ashfall_v2_0052.ogg - data\audio\vocalization\vo wav files\durance Note the naming scheme and how I renamed it with the number 52 at the end.Unfortunately in game the voice file did not play. If anyone knows why please let me know. 1 Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
Justin Bell Posted April 6, 2015 Posted April 6, 2015 As you've discovered, voice file names correspond to the conversation name plus the conversation node number. So if the conversation name is 1_conversation_awesome and the node in question is 109, the voice file should be named 1_conversation_awesome_0109 (suffix numbers are always four digits long). Also there's a flag that indicates whether a node should be voiced or not, though I don't know what the flag is. Should be easy to figure out. Find a conversation that has some voiced and some unvoiced nodes and diff the params. Let me know if that gets you any closer to voicing Kolsc. 2
luzarius Posted April 6, 2015 Author Posted April 6, 2015 As you've discovered, voice file names correspond to the conversation name plus the conversation node number. So if the conversation name is 1_conversation_awesome and the node in question is 109, the voice file should be named 1_conversation_awesome_0109 (suffix numbers are always four digits long). Also there's a flag that indicates whether a node should be voiced or not, though I don't know what the flag is. Should be easy to figure out. Find a conversation that has some voiced and some unvoiced nodes and diff the params. Let me know if that gets you any closer to voicing Kolsc. I'm on it and thank you for your help. Once I figure it out, I will write an indepth tutorial and attach it to my signature, also make the tutorial available on Nexus. Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
luzarius Posted April 7, 2015 Author Posted April 7, 2015 I think I figured out why none of this is working. All the files located in the following directory are not used by the game. PillarsOfEternity_Data\data I think the files that actually get used by the game are in the following directory: \PillarsOfEternity_Data\assetbundles This means I would have to access the .conversation and .ogg files within the .unity3d files located in the above directory. If anyone could confirm this please let me know. That means I would have to edit the .unity3d file and include the OGG files into its package. However, there is an override folder: PillarsOfEternity_Data\assetbundles\override I wonder how the above folder works. For now, I need to figure out how to include OGG files into existing .unity3d files I think. Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
Matt516 Posted April 7, 2015 Posted April 7, 2015 (edited) OP, you rock. EDIT: As do you, Justin Bell. Beautiful music you've made, there. Edited April 7, 2015 by Matt516 1
luzarius Posted April 7, 2015 Author Posted April 7, 2015 (edited) Thanks! Just to give an update. Regarding Override folder I tried placing some of durance's voice files into the override folder using every single directory structure I could think of, but it did not work. Assetbundles Folder The game only uses the voice files found in this directory: PillarsOfEternity_Data\assetbundles\vo I removed all of *durance* unity3d files in the above directory, and his voiced dialogue in game did not play. So if I wanted to add new voice files for Durance, I would need to modify the following files: - PillarsOfEternity_Data\assetbundles\vo companion_cv_durance_hub_magran_v2.unity3d companion_cv_durance_hub_self_v2.unity3d companion_cv_durance_hub_v2.unity3d companion_cv_durance_scripted_sequences.unity3d companion_cv_durance_v2.unity3d companion_cv_durance_voice_set.unity3d companion_cv_durance_hub_ashfall_v2.unity3d Okay, now that this is confirmed. I need to learn how to use unity3d's asset editor with a certain plugin or something *sigh*. The only problem I see right now is in order to mod the game, you essentially need the PRO version of unity. Can anyone confirm this? Omg, this is a lot of work: http://rien-ici.com/iemod/asset_editor I'm currently messaging Bester to see if Assembly-CSharp.dll could read voice files from the PillarsOfEternity_Data\data\audio\vocalization directory instead of the PillarsOfEternity_Data\assetbundles\vo directory .. Edited April 7, 2015 by luzarius 1 Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
Justin Bell Posted April 7, 2015 Posted April 7, 2015 I'll see if I can get a programmer to weigh in. Stand by! EDIT: I just emailed the programmers group to see if they would weigh in. Hopefully someone will chime in with some insight for you.
luzarius Posted April 7, 2015 Author Posted April 7, 2015 (edited) I'll see if I can get a programmer to weigh in. Stand by! EDIT: I just emailed the programmers group to see if they would weigh in. Hopefully someone will chime in with some insight for you. I've made some more progress, I think I've figured it out, they might tell you the same thing I've discovered. I've been experimenting with file companion_cv_durance_hub_v2.unity3d located in PillarsOfEternity_Data\assetbundles\vo directory. It turns out that the game DOES use the voice files found in the directory PillarsOfEternity_Data\data\audio\vocalization, BUT it requires that companion_cv_durance_hub_v2.unity3d must contain a VOAsset for any given voice file. I was foolish to think Obsidian wouldn't use the sound files that were present (it's because I program a lot during the day so my brain is dead by the time I get home). I have unity open with Besters Pillars of Eternity Asset Editor: Basically I need to create a new VOAsset, then point it to the new OGG files that contain the voice acting. REGARDING KOLSC I think I need to create the following file: - PillarsOfEternity_Data\assetbundles\vo 07_cv_kolsc.unity3d Within that should be all the VOAssets linked to kolsc's sound files in the PillarsOfEternity_Data\data\audio\vocalization\kolsc . Now the question is if the game will automatically recognize the presence of a new asset 07_cv_kolsc.unity3d ........ Chances are this needs to be added somewhere in list or library in the unity files, which means I must investigate further. UPDATE: Besters Asset Editor breaks the new unity3d file when saving, *sigh*, I'll have to find another way. Man, I would never go this far if I didn't like the game so much LOL. If only there was an easier way to add voice packs, the community could easily get all the NPC's voice acted. Edited April 7, 2015 by luzarius Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
BMac Posted April 7, 2015 Posted April 7, 2015 I can pretty much just confirm what you already found. When the conversations are loaded, we look for an asset bundle at assetbundles/vo/[conversation_filename].unity3d. That bundle has to load successfully or we won't even try to play audio for that conversation. Once it has loaded, we then attempt to load the VOAssets from it on a per-node basis. I think you are nearly there - if you can get the 07_cv_kolsc bundle to export with the properly named VOAssets and add the sound files to the place you have referenced in /data/audio/vocalization/vo wav files, that should be all you need.
luzarius Posted April 9, 2015 Author Posted April 9, 2015 I can pretty much just confirm what you already found. When the conversations are loaded, we look for an asset bundle at assetbundles/vo/[conversation_filename].unity3d. That bundle has to load successfully or we won't even try to play audio for that conversation. Once it has loaded, we then attempt to load the VOAssets from it on a per-node basis. I think you are nearly there - if you can get the 07_cv_kolsc bundle to export with the properly named VOAssets and add the sound files to the place you have referenced in /data/audio/vocalization/vo wav files, that should be all you need. I appreciate your response, but unfortunately Besters POE Asset Editor is currently broken and he is no longer working on it. Is it possible to design 07_cv_kolsc.unity3d along with its VOAssets using Unity 4.6.1p2? Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
luzarius Posted April 9, 2015 Author Posted April 9, 2015 (edited) Devs, is there anyway to modify the actual function in charge of playing the VOAsset voice files. Basically if a VOAsset does not exist, play an alternate wav file located in the appropriate folder. This is a rough and dirty example: function YourFunctionThatPlaysVoiceFiles() if (getVOAsset(AssetDataWhatever) == true) ;your normal code ;line of dialogue has voasset, play the voice file else ;new code ;no voasset for this line of dialogue, play alternate wav file if it exists ;if user allows alternate voice acting in options menu if (boolmenuoption32 == true) ;example of sound file path ;since durance's dialogue id 432 has no VOAsset, play the alternate wav located in the folder ;\data\audio\vocalization\vo wav files\durance\14_cv_thaos_0432.wav string VOAssetAlternate = "\data\audio\vocalization\vo wav files\" + NPC + "\" + Data1 + "_" + Data2 + "_" + Data3 + "_" + VOAssetID + ".wav" ;check if alternate wav file exists, if it does play the alternate sound wav file if (file.exists(VOAssetAlternate) == true) SoundPlayer simpleSound = new SoundPlayer(VOAssetAlternate); simpleSound.Play(); endif endif endif endfunction Edited April 9, 2015 by luzarius Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
luzarius Posted April 10, 2015 Author Posted April 10, 2015 Bump anyone? Is reverse engineering the Assembly-CSharp.dll going to be the only way to achieve this? Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
luzarius Posted April 10, 2015 Author Posted April 10, 2015 Do you have (or need) actual voice acting? Sure, but I still haven't found a viable solution that won't cost me a huge amount of time. 1. I have to figure out how to make unity3d files that contains VOAssets that point to a ogg file. or 2. Do what Bester did and hack the Assembly dll file. Having trouble with the games combat on POTD, Trial of Iron? - Hurtin bomb droppin MONK - [MONK BUILD] - [CLICK HERE] - Think Rangers suck? You're wrong - [RANGER BUILD] + Tactics/Strategies - [CLICK HERE] - Fighter Heavy Tank - [FIGHTER BUILD] + Tactics/Strategies - [CLICK HERE] Despite what I may post, I'm a huge fan of Pillars of Eternity, it's one of my favorite RPG's. Anita Sarkeesian keeps Bioware's balls in a jar on her shelf.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now