User modding can extend a games lifetime dramatically as it allows for new and exciting scenarios to be explored as extra content is added to the game. The imagination of the community supporting these games knows no bounds and it would be such a shame to waste that talent. UMod is one solution to allow modders to create and integrate new and exciting content into your games with little effort from the developer or the modder.
UMod is a complete solution to supporting user created content within Unity games and as such handles all the complicated asset importing and script execution automatically resulting in a trouble free modding experience for both the developer and the community. The framework allows all types of content to be loaded at run-time allowing users to extend your game by including user created animated characters or even entire playable game levels.
Features
Easily allow the community to extend your game by adding mod support using UMod.
Save valuable development time by using UMod instead of rolling your own system.
Basic mod support out of the box with the ability to add advanced support.
Allow additional scripts, prefabs and scenes to be loaded at run-time.
Allow you modders to create their content within the Unity Editor.
Support for all content that Unity can load from animated meshes to audio clips.
Allow modders to access game scripts using attributes to control which classes or methods are available.
Allow modders to attach scripts from your game to their custom content.
Support for loading mods from file or URL.
Modders don’t need to buy expensive tools as the exporter plugin is free for anyone to download.
Catch run-time errors and display them to the modder.
All error messages have a unique reference number for quick lookup.
Support for command line launching (Allows build and run functionality from the exporter).
Find all mods in a directory and access their name, description, and version before loading them.
Many other useful features to make mod support simple.
Mod Examples
Below are a couple of examples showing how easily mods can be created using the UMod Exporter.
UMod is is made up of two assets which work together to make the modding process as simple as possibly. The UMod asset is used by developers to allow their games to load modded content created with the UMod Exporter. The UMod Exporter is a supporting tool for UMod that will package all the modded content into a format that can be loaded at run-time. For ease of use, the exporter plugin is implemented as an editor extension and is free to download and use.
UMod has many features to make the modding process as quick and simple as possible and is under constant development to improve the asset. There are many new features planned for future versions and we are always looking for feedback on our assets as to how we can improve them. If you have any questions or requests you can either reply to this thread or use one of the methods below.
Scripting Guide
UMod has a dedicated online scripting guide here: Scripting Guide
I want to buy this but before I buy I have a question.
I want my players to be able to make new maps for my fps game with models from my game, is there an easy way to do this? i don’t mind if i have to give the files because most mod support has model files you can use but i want to see if there is a better way.
The easiest way to achieve this is to export a package from Unity containing all the assets that your players can use and make it available for download. You could even modify the contents of the UMod Exporter package to include your custom assets and host that package online as an all-in-one mod tools package specially tailored to your game. That way when the modders download the export tools, they will already have the game specific assets ready to be used. Another alternative would be to use prefab markers to specify the placement of game objects but this would be tricky to visualize. More info here on prefab markers : Prefab Markers
I hope this helps,
Don’t hesitate to ask if you have any further questions.
Hello there, currently evaluating your plugin for use in a game I’m working on and we’re having an issue with your dll throwing Failed AOT cross compiler exceptions when making PS4 builds.
Could you please either provide sources or AOT compatible DLLs ?
Hi, I am sorry to hear that you are having trouble with our plugin. Unfortunately UMod only supports PC platforms at the moment and support for other platforms may be a while off due to security restrictions and other issues we have unearthed during development. After reviewing the asset store page I understand that this may not have been made clear and I apologize for that and any inconvenience it may have caused. I will be updating the page with supported platforms asap.
If you are unable to use the plugin to your satisfaction please feel free to contact me regarding a refund. Once again I apologize for failing to clearly display the supported platforms.
We wanted to use UMod for the PC Steam version of the game, only issue keeping us from using it are the DLL compile options…
Any chance you would reconsider providing otherwise compiled DLL or sources ? Was really looking forward to using this
ps: if issue is that you’re using Linq then it’s not an issue, check out UniLinq on GitHub, it’s an open source implemention that works with AOT compilation. We’re using it in production and it works great, only requires to change Using System.Linq, by Using UniLinq; once it’s added to your project…
Hi, If I understand correctly, having UMod in your project folder is preventing you from successfully building your game for PS4 since the DLL is not AOT compatible. I assume this is because use are using the same code base for all platforms so calling into the UMod API fails on PS4 since the DLL does not exist (Cannot be compiled). If this is the case then the only solution I can think of is to supply a dummy stub DLL for AOT platforms that contains the same methods and classes but without the functionality. This would allow you to compile for other platforms but would not provide any functionality of UMod. I should add that at this point I am unable to add AOT platform support due to an array of issues. Apart from that, the only other way would be to use pre-processor directives in the calling code which I can understand would be undesirable.
Hi,
How would this work with multiplayer games? We are looking into mod support frameworks and this seems the most robust modding solution. We were wondering if you had any ideas about modding support on authoritive server setups. Any suggestions or guidelines?
I will start off by saying I only have limited experience with multiplayer online games so sorry I cant be much help.
It would depend really on what sort of modding you want to add to your game.UMod has three main mod categories for modding which are level modding, asset modding and scripting modding and each work in slightly different ways.
Level modding would be easy enough to add to a multiplayer game since you would just make sure each client has the mod installed and loaded before joining the game. The level loading works exactly the same as normal using ‘Application.LoadLevel’.
I don’t think you would be able to make modded scripts work with a multiplayer game because there would be no way to synchronize the scripts across clients. It would depend really on what the scripts did and how they are used but since this is up to the modder then there is very little control.
Asset modding is essentially adding new prefabs into the game. The modder will create a new asset in the Unity editor and save it as a prefab. when it is loaded back in by UMod the prefab is exactly the same as the one created (Same components, scripts etc). I think it should work in a multiplayer game without problems unless there are scripts attached to the object and then you go back to the synchronization issue. You would just need to make sure that when you instantiate a modded prefab that all other clients get notified to allow them to spawn the same object.
I hope this helps a bit. Let me know if you are unsure about something or have other questions.
Hey,
I was thinking at first of UI mods and graphical mods instead of actual scripting, but as you can use MonoBehaviour scripts, this allows a large amount of customizability - something that would be good for modders. I was wondering if there might be a way of comparing mod info in a small string or byte array. I could then use this to make sure that the client has this mod installed and potentially download it if mod download information is provided.
I’m definitely not ruling this out, but I need to think about how modding would work with multiplayer a bit more.
Thanks for your support