We have intentions to allow our users to mod our game. The first iteration involves only server side modding (it’s an online game). Internally, we use Unity Editor tools to place down dynamic (seed) objects and specify regions and paths that are exported to data files used by our server gameplay code.
To allow users to use these tools, we would have to allow them to load the map (Unity Scene) in the Unity Editor so they too can use the same tools to place these objects/paths/regions.
The catch is that we probably don’t want to provide them with all of our raw assets in order to do this. It might not even be legal since our project contains some Unity Store bought assets.
I’ve begun to form a plan in my head of how we could pull this off and I’d like to get some feedback on it since I have limited experience with some of this stuff. Some of you might even have some other out of the box way to solve this problem and I’d love to hear it.
- Export our maps (scenes) and any dynamic objects that are placeable into asset bundles.
- Export the bare minimum of our scripts to allow you to load the scene and run the tools
- Create a new unity project for the “Toolkit” and import the scripts
- Create a script that on play, loads the selected map then populates it with the objects/regions/paths from the server data files
- The modder then presses play in the Editor and uses the Scene view to place down/modify the objects/regions/paths and uses the tool to save them back out
Would this even work?
The obvious alternative is to build the ability to place/modify objects/regions/paths directly into a modified version of our client and have them use all the tools directly from within the game. This would require us to recreate a great deal of our tool UI using our ingame UI system and also provide the ability to move/rotate/scale objects ingame. This to me seems like a much larger undertaking.