Modding tools access, replacing sound

Hi

In our game we plan to add modding tools for players. Now i’m starting to thinking how it will works. We want to give players possibility of replacing original sounds for sounds imported by them. How would it be possible? Each sound import will be added to existing bank or creating a new one?
For example: I’ve received game and all used sounds are contained in one .bank file. Now i want to replace one sound (e.g. steps sound played during player movement event). What should i do?

Thanks,
Crane

Hi Crane,

There are two methods of adding mod content into your game, depending on the complexity of the modding.

If you are just providing a way of importing single audio files, it would be recommended to use programmer instruments. These instruments provide callbacks that you can use to use these audio files when needed. Please see our documentation and the “programmer_sound” example in our FMOD Studio API example solution (available when you install the low level API).

https://www.fmod.com/resources/documentation-studio?page=working-with-instruments.html#programmer-instruments

https://www.fmod.com/resources/documentation-api?page=content/generated/engine_new_unity/script_example_programmersounds.html#/

https://www.fmod.com/resources/documentation-api?page=content/generated/engine_ue4/programmer_sounds.html#/

The second way is to provide a blank “master” project that users can add their own events to. This method requires the FMOD Studio project your game uses but stripped of everything but the Master Bus (ie. delete all events, buses, etc. from the main project and save a copy). The users can then build their own banks which your can can load. This method is more complicated to set up but provides the most flexibility to the modders.

This method is one used by X-Plane 11.

Another method would be to use the low-level API to use FMOD::Sounds.

I hope this has given you some guidance on adding modding for your game.

Thanks,
Richard

2 Likes

Thank you for answer ! :slight_smile: