Darkest Dungeon

File information

Last updated

Original upload

Created by

Seta nagato

Uploaded by

setanagato

Virus scan

Safe to use

About this mod

How to implement manually sounds to your skills from existing ones step by step, with images and all. What a deal!!

Permissions and credits
Tutorial - How to implement sound


Hello there, strange person from internet.

If you're here reading this tutorial this means that you were inflicted with the common syndrome of "the official modding guide is useless and now I'm stuck".

Worry not, my friend, because I had the same feeling but now you have the luck of having my knowledge being transmitted to you, so you will save a huge amount of time and frustration using this guide.
First things first. This tutorial is not a tutorial for newcomers, but for those who actually are in middle of class modding process and get at this part without knowing what to do. If you don't know if you're prepared, the minimum requirements are this ones:

  • Know how to create a mod using steam_workshop_upload.exe and making it usable inGame by the mod loading system (this is the most important thing you should learn before modding anything else). Highly recommended:
    • What "PublishedFileId" is and its purpose (if you don't know it, there's a quick explanation in the bottom of this tutorial) if your mod has text (which will have if you're creating a new class)
  • Know how to implement a new class to test this tutorial (so you can understand some concept like combat_skill ids and those stuffs).


If you, otherwise, don't know what are those things... you should learn those parts first since modding sounds (and curios) are special cases for the new modders. But fear not, once you had learned how to mod sounds you will see it wasn't that hard and even you can enjoy the process with my help (and dankiness).


Before start with the serious business

Before starting you need to repeat the golden rule of modding new content:
  • Always create independent files for your mods files, never ever modify original ones and overwrite them by using the same name file. This can create incompatibilities with another mods/vanilla content which has made the same thing. If you still want to do so, the mod will work fine anyways.
Now, I'll make an example class concept so you, my friend, can project your class concept in this class and make this process more visual for your understanding.

The meme Lord Class
Class id: meme_lord

Dps support class
Skills:
Dank Meme: Heals a targets - Will use the sound of the Vestal Divine Grace. [combat_skill: .id "dank_meme"]
Mlg trick shot: Deals 360% damage - Will use the sound of the shots from Skeleton Arbalets. [combat_skill: .id "mlg_shot"]


Why teaching by using two skills instead of explaining the direct theory? Everyone knows the examples are the best way to understand theorical concepts, but by doing so with this two skills you gonna see how to implement one skill with a familiar sound (the vestal one) and get use to the initial part of pre-loading the sound + setting your skill sound. Then with the second one how to search for an unknown sound you want (normally form enemies) and using the previous knowledge to implement it.

Having this in mind you can somehow imagine what we should do... but don't know how. That's ok, right now the most important thing is to prepare yourself and try to associate with what you gonna do. Take your time if you need, but don't worry if you don't since I'll explain it later more properly.


Recommended references

It's very useful to have some examples to check or copy so this learning process is less confusing/tedious for you. My personal recommendations are:
  • Download the templates that I uploaded in this mod page and pasting the audio in your mod folder. Some notes:
    • Move, if you have, your old audio folder to somewhere else so you have it as a backup.
    • Remember to re-name the files with the proper name of your class. Forget about the content inside those files for now, I'll explain how to edit this files later
  • Have an audio files completed already so you can check how others moders has made them by themselves. If you are afraid about downloading others persons content for not knowing if it's restricted or not (and by coping directly could be an infraction), you can always check in my class mods since I don't mind at all if you use them as a reference .
  • Have some GUIDs guide opened with all sound references so you can copy from it. If you don't have any or don't know where to check it out, I've uploaded one recently: Vanilla Audio GUID references (don't be afraid if you see a lot of text with a lot of numbers. For now you will not use it until later)


Starting with loading the sound of the skill "Dank Meme"

If you have skipped all the wall text to get at this part, I must say it's a obligatory read (I know, seems tedious but it's necessary... and I saving you a time with this tutorial, so at least be patient). If is otherwise, lets continue.


Rename the templates file with the correspondent class id your mod has.

Initially should look like:


To this:


Open the .campaign.load_order.json file.

Once opened, it should appear something like this (I'm using my personal framework [sublimetext] for the coding stuff, it's not obligatory to have it thou. So don't get scared if yours seems different fron notepad. Just remember to respect the { } [ ]  stuff)


As you can see, there's some strange name like "the_bank_you_want_to_load" so you can understand you have to change it. Rename this part with the bank sound you want to load. In my case (for the dank meme skill) I want the vestal bank. So I rename this "the_bank_you_want_to_load" to ""hero_vestal". By doing so the game will load all the vestal sound in its memory and I can use her sound for my skills. It should look like this (I erased the next line for now. Its purpose is to show you how to load various banks of sounds, but now I'm using only the vestal one. If you want to load more than 2 banks, just add a , next the bank" and copy the same line before):


How do I know this is the correct line? Well, as you can see I've opened in another tap the base.heroes.load_order.json (you can check all audio files in \darkestdungeon\audio\secondary_banks\) to check it out. But the rule of thumb is all sound from heroes has the same pattern: secondary_banks/hero_the_vanilla_class.bank  (the_vanilla_class is the name of the class you are searching - with "_" as spaces).
This is applies to those sound already created for vanilla classes. The enemy ones will be explained afterwards.


Congrats!! You have loaded the sounds for your skill!



Adding the sound for the skill "Dank Meme"

Now now, we're gonna open the .campaign.guid_overrides.json file (the another file we didn't opened yet). This file is the one which contains the skills and its related sounds. Once opened it should look like this:


Yeah, I know what you're thinking but stay with me and forget the right side for now. Lets focus in the left side.
  • There's this part "event_id": "event:/char/ally/your_class_skill" that you should change with the correspondent names in the (you_class_skill) part by changing the your_class for your class id and the skill part with the skill id.
  • In my case it will be: "event_id": "event:/char/ally/meme_lord_dank_meme"
  • Now the line below is the exact same line but with an additional _miss line: "event_id": "event:/char/ally/your_class_skill_miss". This event is for those times when you class fails the skills and the game plays the miss sound effect (if your skill never fails, you should not to worry about this... but I'll prefer to take the save choice and do it anyways).
  • Like above but with the _miss: "event_id": "event:/char/ally/meme_lord_dank_meme" (in this case, the skills is a heal so it won't fail. But I'll implement it anyways so if in some strange case it could happen. I recommend you to do the same)

Once finished, it should looks like this:




Now you have set your skills but the game will not play any sound since all those 0's means anything to the game. All those zeroes are the code number associated of the sounds (like an id), so if you can figure out what code is the sound you want (in my case the vestal's divine grace) the game will play the sound (since you already loaded in the game's memory before in the .campaign.load_order.json file)
So here's the part where that GUIDs references helps to fills those 0's.

Go to the GUIDs references file/page and ctrl+f the fuq out of the skill you want (or doing by scrolling don't if you're patient enough):



As you can see, there 2 event:/char/ally/vestal_divine_grace (the next one has the _miss part). From now one I'm sure what to do. But we did all this work together so lets continue in that way, ok?

Copy the code from the left side:



And paste it in your file:


Do the same for the miss part (if you want to assign another sound instead the miss sound, you can without problem as long it's a existing code).
Once finished, it should look like this:


Congrats!! You have assigned the sound to your skill! Now your skills will have their sounds!

From now on you can actually assign any sound to your skills from existing ones without problem. But if you still want more practice or know how to search for an unknown sound (or how to load enemies skill sounds). You can continue with the tutorial.



Doing the same for "Mlg trick shot" but with enemies sounds

First things first. Load the correspondent sound bank. There's a lot of files and you don't know where the file could. I take the assumption it could be the en_crypts file (the en_crypts means enemy_crypts. So those en_name.bank files are the ones which contains the sounds from enemies). This assumption is in fact incorrect, but I'll do it anyways like I didn't know about it.


Copy the name file inside the load_order file:


The problem is, like I say before, the skeleton arbalist doesn't appears only in the ruins/crypts but other places too, so that means he's originally in "secondary_banks/en_shared.bank". But I don't know this because no one explained this to me, the sounds doens't plays, I got really fustrated and then decided to do this:


This will load all sounds I think the skeleton could be from everywhere and it will be sure the sound it's loaded. The problem with this the game will take a little more time in load the dungeon... but to be honest the time which takes is so small that you can even ignore this and do it anyways (of course if you can avoid this behavior even better). Yeah, this is a secrets within modders, keep it in secret so the players don't get angry about it.

Once there, you have searched for the code but you cant find it even with the ctrl+f (this could happen since sometimes the in_game name varies from the actual id [or if you play the game in non-english language]). So you have reached this part:


Since you don't know where is the code and you're quite pissed at this point by scrolling all that wall of text... you have decided to search inside of the .info file of the skeleton arbalist in cuestion. So enter inside the monsters folder and search for the arbalist folder (searching for a folder is easier than search for a line within a wall of text). Sometimes the name of the enemy is different from the folder's name, in that case you have not choice but searching one by one and seeing if the sprite inside the folder is the same as the enemy you have searching for.


Search for some .art (or .info) file inside:


Inside, search for the skill you think it should be the skill what you're searching for. In this case I copied the fx id instead the skill id, I had lucky and this time the ids are the same, but I should have been more careful and copied the left id instead since its the id which the games associates the skill:


Copy the skill id and Ctrl+F for the code inside the GUIDs:




And from now you actually know how to do the rest.

Congrats!! You have learned "how to sound" your skills!

Go out there and finish you mod, my man!



Side note
  • <PublishedFileId>0000000000</PublishedFileId>: This field inside your .xml file is the tag assigned to your localization files (for text). The 000000000 (could be different than this one) is a number that steam assigns to your mod so it doesn't overwrites others localizations files from another mods. If you compile you mod with the dont_submit option this file will not be created/updates, so in case you don't have it and don't want incompatibilities issues with localizations files you can put whatever number you want instead those zeroes. If you don create this file inside the .xml, the localization file will have the value 0 as default and will replace or be replaced by others mods localization flies.