[Released] uMod 2.0 - Modding support made easy!

2910153--231951--LogoWeb_Small.png

Asset Store | Website | Discord | Documentation | Scripting Reference

uMod 2.0 is a complete modding solution for the Unity game engine and makes it quick and painless to add mod support to your game. Modders are able to extend to and modify game-play by creating mods with assets, scripts and even entire scenes, all within the Unity editor.

Features

  • Basic mod support out of the box
  • Supports all assets that Unity can handle, Yes! even scenes and scripts can be included
  • Load from the local file system of from remote server
  • Supports command line launching of mods
  • Supports multi-mod loading
  • Catches exceptions and errors generated by mods
  • Modders can create their content in the Unity editor and export easily using uMod Exporter
  • C# scripts and assemblies can be included in mods
  • Cross domain scripting allows communication between game and mod scripts
  • Script execution security allows developers to restrict modded code
  • Customizable build pipeline allows for custom exporter tools to be created
  • Supports asset sharing allowing modders to make use of game assets
  • Includes a directory utility for managing a mod directory
  • Dedicated online scripting reference
  • Many more features

Upgrading

If you purchased uMod 1.0 then you are entitled to a free upgrade to uMod 2.0. You should already be able to upgrade for free via the asset store even though the displayed upgrade price is $1.

Add-Ons
uMod 2.0 Runtime Compiler Add-On is an integration asset designed to add the features of our Roslyn C# asset to uMod 2.0 seamlessly. This means that the Roslyn compiler can now be used to compile and load scripts into a uMod script domain or as a standalone compiler. Compiled scripts will also be subject to code security verification checks when loaded which are performed by uMod.


The runitme compiler add-on is avaiable on the asset store here

Want to know more? Take a look here for more information about uMod 2.0

uMod 2.0 - Moddable Tanks Example Game

You can downlod the demo game from the asset store here (Currently pending review)

uMod 2.0 has an example game coming soon to demonstrate some of the modding concepts and how they can be implemented.

As you may have guessed, this example project adds modding support to the Unity Tanks tutorial game allowing for new levels to be created, props to be modded or replaced and new features to be added. This example game has been submitted to the store and could take a few weeks to be approved but here are some of the features of the project:

• Demonstrates usage of the ModDirectory to scan for available mods
• Shows how a mod manager UI could be implemented to allow users to manager mods in game
• Shows how mod levels could be loadable by the user by implementing a dynamic level list
• Allows mod levels to be created using assets from the Tanks game via Asset Sharing
• Demonstrates how utility scripts can be used in the mod tool package to help modders setup scene defaults when creating mod levels
• Shows how game assets could be used to draw custom spawn point gizmos to give a visual representation to the modder
• Demonstrates how a scene validator script can be run when building mods to ensure that created levels contain the necessary objects such as spawn points
• Shows how mod levels can be loaded via a bootstrap scene so that game systems and game managers can manage a mod level
• Shows how environment props can be modded using the uMod 2.0 moddable content system
• Shows how basic Game-Mod communication can be achieved using an interface assembly.
• Includes 6 example mods to add features or modify the game

There are 6 mods included by default with the ability to create your own. The default mods are:

  • Canyon Level: A mod which adds a new canyon level to the game to do battle in.
  • Hangars To Circus Tents: A fun little mod which replaces all hangar building with circus tent models
  • Tank AI: A mod which makes the player 2 tank AI controlled (Requires more work to complete but it does move around a bit)
  • Tank Direction indicator: Adds a direction indicator to the player 1 tank pointing to the player 2 tank
  • Timer Rounds: Adds a countdown timer to the game making each round time limited. The player with the most health when the timer reaches 0 wins or a draw is declared if both players have the same health
  • Whilte Cliffs: Another environmental mod which modifies the boundary cliffs to have a white material

All mods are capable of running in the default game scene or in modded scenes meaning that mods such as the tank indicator and hangars to circus tents can also affect mod scenes. As this is an example project, raw mod assets are included for the mods listed above. We also include the source code for game scripts and the interface assembly we created for Mod-Game communication.

Here are a few screenshots where you can see some of the mods in action:

Take a look at the Tanks example game User Guide here.

2 Likes

Version 2.0.1 has been submitted to the asset store. The version includes:

  • Small bug fixes in the exporter and core plugin
  • Added demo video showing how to create and export a basic mod
  • Added support for older Unity versions (5.0.0 to present)

Version 2.0.5 has been released.

The new version includes code security validation which allows you to setup namespace or assembly restrictions for modded code. Any code that breaks these restrictions will not be loaded making it possibly to have very safe modding support.

Any namespace or assembly name can be restricted but good candidates would be ‘System.IO’ and ‘System.Reflection’.


These restrictions can be setup in the security tab of the uMod settings window:

2969135--220509--uMod_2.0_SecurityScreenshot1.png

I hope to pick this up over the weekend if I can get the funds together. Is the price reduction temporary? If so, when do you plan to increase it?

Thanks for the interest. Not sure whether the price reduction will stay or not yet but it will last for at least a few weeks.

Thanks for the info, I bought the asset this morning.

1 Like

No problem, let me know if you need any help or want to request a feature :slight_smile:

Version 2.0.8 has been submitted to the asset store for review.

This is a fairly large update and includes a number of changes:

  • New scripting API for developer side. UMod.Scripting now allows developers to have far more control over loading and interaction of mod code. See documentation for more info.

  • New file format in preparation for future features. Unfortunately this means that backwards compatibility will be lost for previous versions and mods will need to be re-exported.

  • Expanded the assets API for developers and modders. You are now able to get detailed information about assets including full path, relative path, file extension, unique id and more.

  • Modified interface: ‘IModBoundary’ has been removed. (Use 'ModScript instead)

  • Modified interface: ‘IMod’ no longer accepts an argument for the method ‘OnModLoaded’

  • Removed old dll dependency that would sometimes cause errors on import.

  • Fixed an exporter bug where the export would fail if ‘compileScripts’ was enabled in the setting but there were no scripts in the mod folder. Script compilation will no be skipped in this case.

  • Exposed the exporter settings to developers so that all export data can be modified via editor scripts.

Hopefully the update should be live within the next few days.

Version 2.0.8 is now available in the asset store!

uMod 2.0 is now on sale with 25% off. Grab it while you can!

hi! when you plan to update the asset (it gives a warning that use some deprecated functions)

Those warnings are harmless and the unity api updated should automatically update the code on import, however we will distribute an additional package in the next update for later versions of unity that will remove those errors.

thanks :wink:

Hi there, using your package and whenever I export I get an error in my console:

[UMod.BuildEngine.Build.Assemblies.ScriptLinker]: Failed to locate assembly for type: UnityEngine.Vector3
UnityEngine.Debug:LogError(Object)
UMod.Shared.Log:Error(Object, Object[ ])
UMod.BuildEngine.Build.Assemblies.ScriptLinker:OnAssemblyLinkRequest(Type)
UMod.Shared.ModEvent:Invoke(Func`2, Type)
UMod.Interface.Link.TypeReference:.ctor(Type)
UMod.Interface.Link.LinkInstanceField:Serialize(FieldInfo, Object)
UMod.Interface.Link.LinkBehaviour:Serialize(Object)
UMod.BuildEngine.Build.Assemblies.ScriptLinker:SerializeScript(MonoBehaviour, Boolean)
UMod.BuildEngine.Build.Assemblies.ScriptLinker:LinkScript(MonoBehaviour, Boolean, Boolean)
UMod.BuildEngine.Build.Assemblies.PrefabLinker:LinkPrefab()
UMod.BuildEngine.Build.Sequence.d__2:MoveNext()
UMod.Shared.Editor.EditorCoroutineTask:MoveNext()
UMod.Shared.Editor.EditorCoroutine:OnUpdate()
UnityEditor.EditorApplication:Internal_CallUpdateFunctions()

The build seems to succeed and scripts seem to work ok in my host game, but wondering what this is and if there’s anything I can do to fix it. Thanks!

This is a known bug and is harmless. Basically it is saying that it can’t find the type ‘vector3’ in your mod scripts which is entirely expected as it is declared in ‘unityengine.dll’. The error should be fixed in the next update which will be released shortly.

@ghiboz What version of Unity are you using. We a currently trying to fix the depreciated API warnings you are seeing but we cannot reproduce these warnings in any major 5.x version.

Version 2.0.9 has been submitted to the asset store for review. The update includes:

  • Partially exposed part of the build API in preparation for customizable mod exporting.
  • Introduced asset processors which run on every mod asset during export (Customizable pipeline)
  • Slightly modified the internal file format to include meta data. (Mods build with older versions will need to be re-exported).
  • Removed an unused assembly reference which would cause errors while exporting mods and building to standalone player.
  • A number of minor bug fixes.

@scottyboy805 I’m on 5.6.0 and now 5.6.1… I wait the 2.0.9 and retry!

We have tried with both of those versions and cannot get the API warnings to appear no matter what we try. Give 2.0.9 a try and let us know if the problem is still occurring for you.

Thanks a lot for this update! I can confirm it completely eliminates the error.

Any chance we’ll see incremental build options? For example, I’m reworking my current game to support mods by moving the base game out to a mod. All of my art is finalized so I don’t need to back it up and re-export it very time I change a mod script. Is there any possibility we can only re-export items that have changed, or even manually choose what we want to re-export without affecting content that has already been exported? If this isn’t possible, is there any kind of workaround? I have hundreds of models and textures that I really don’t want to wait for.