Search Unity

[moddable] - Build your online community with instant(!) mod support

Discussion in 'Assets and Asset Store' started by softrare, Jan 25, 2019.

  1. softrare

    softrare

    Joined:
    Jun 12, 2011
    Posts:
    444
    Hi guys!

    After months of hard work we are thrilled to announce [moddable] is released to the Asset Store: https://www.assetstore.unity3d.com/en/#!/content/29573



    [moddable] is a professional tool to add mod support to your Unity game, with the lowest possible integration overhead and learning curve.

    Mind a (really) short tutorial?

    Let's imagine this is a method somewhere in your current or future Unity game:

    public void Shoot(int firepower) {
    ....
    }

    Just add 1 word of code above the method, thus change to this:

    [moddable]
    public void Shoot(int firepower) {
    ....
    }

    This is ALL there is to it, this and not more! All other processing and mod bridging and execution logic is done by us!

    Add the attribute [moddable] to a few more methods and member varibales and at that point YOU - the gamedev - are done. Let the online community do its magic. Why not release your game early? With modding your customers can already invest in your game and have fun with it + sharing experiences with their friends.

    Demo game:
    https://moddable.softrare.eu/#manpages/demo.html



    Features:

    - Text based mods, no extensive IDE needed at all for modding
    - Integration is easy and abstracted from your native game functionality in an aspect-oriented approach. Just add "[moddable]" above your methods/member variables, ->Done! - built-in console for debug output and even modding at runtime.
    - JS-like modding language
    - Automatic generation of template mod, exposing and explaining your game mod API, no extra action needed on your part: (arrows indicating cross-execuability between mod and native game, automatic function stubs and documentation generation)


    - Define the mod function execution time (before or after the native method in the game), even override native game functionality completely by mods, or disallow any aspect of it (even decide per exposed Unity method): thus total control and flexibility.
    - Mod execution order (if needed)
    - Passing Unity Parameter values to the mods
    - Passing Unity method return values to the mods
    - Many built-in and ready to use mod functions. Need more? Just write them in Unity, expose, and ready.
    - Extensive documentation for the base API: https://moddable.softrare.eu/#manpages/api.html



    Planned Features:


    - Share mods online
    - modders will be able to create custom GUIs using uGUI (acutally a lot is already included, but as of yet largely undocumented)
    - Make mods Multiplayer-ready
    - Mesh importing
    - Prefab/component browser (imported meshes inclusive)
    - Creating events/callbacks in mods
    - More built-in API functions (bridge between mod and game)

    Platforms:

    At this point, [moddable] mod loading from files is suitable for Standalone players, but it's planned for all platforms through an online platform in the form of an overlay (you will be able to completely avoid this functionality if you want sharing of your game to happen exclusively "offline"). "Live modding" through the built-in console works everywhere already.

    Resources:

    Website
    Demo
    Tutorial
    Modding Manual
    API
     
    Last edited: Feb 5, 2019
    Gekigengar and ZhavShaw like this.
  2. cjbruce

    cjbruce

    Joined:
    Jun 26, 2017
    Posts:
    12
    We are looking for a solution to allow in-game AI programming by users. Specifically, we would like players to be able to write their own AI code for the robots they build in our game.

    Would it possible to use [moddable] to support in-game scripting?

    I would prefer to have a code editor built directly into the game itself, rather than requiring users to run our game in a window, and have another window open with Notepad++ or Sublime text. How hard would it be to get an in-game code editor working?

    The asset looks great! Nice work!
     
  3. softrare

    softrare

    Joined:
    Jun 12, 2011
    Posts:
    444
    Hi! It's very possible. You would have to integrate the code editor yourself, but in theory you can already now test live coding within the included console. In any case, if there are any difficulties just let me know and we'll assist you as well as possible in resolving these :)
     
  4. cjbruce

    cjbruce

    Joined:
    Jun 26, 2017
    Posts:
    12
    Sounds good!

    Our use case is this:

    1. We are creating a realistic robot building / robot combat game. In the game, players use our "Robot Workshop" to create their robots.
    2. We do not plan to support online multiplayer. Instead, players will create AI for their robots and share their robots with other players to fight AI vs AI.
    3. We plan to expose a bunch of user-generated values to the AI. For example, all robots will have access to a pathfinding "findNearestWaypoint()" function that will come from a Unity navmesh, as well as position, rotation, battery, heat, and other state variables. In addition, players will have the ability to add "sensors" to their robot. When an enemy enters a one of the sensor trigger zones, the AI should be notified.
    4. The AI should be capable of sending raw input commands to the robot's motors, just like a button press on the keyboard or a controller would do.
    5. We would like to have complete flexibility for players to script any sort of AI they would like: behavior tree, FSM, utility, etc.

    So, several questions:
    A. If players wanted to separate their AI into several different user script files, is this possible?
    B. Can players define classes / methods in the user script?
    C. How likely are things to break if we were to encode the scripts as JSON instead of writing them to a file? Ideally, all of the information required to build an entire robot (mesh, textures, data, and scripts) would be encoded into a single JSON file for ease of sharing.

    Thanks for the help and insight! I like that [moddable] looks a lot like javascript. This should make the AI scripting portion of the game accessible to a much wider audience (i.e. schools / students / teachers).
     
  5. softrare

    softrare

    Joined:
    Jun 12, 2011
    Posts:
    444
    A. Right now, that is not possible. The script files that are run correspond to real existing cs classes within the Unity assembly. Of course you can mod multiple files, meaning multiple scripts per game and/or game object within a single mod.
    B. They can define methods, yes.
    C. The system works with .modd files, an easy to learn JS-like modding language. You would have to unwrap the files from JSON, before presenting them to the [moddable] engine for processing.

    We agree that JS makes it easier to learn. At the same time we are keeping the advantages of cs/Unity's object-oriented approach (you can still access other objects, in example through http://moddable.softrare.eu/#manpages/api.html#CallNativeFunc)
     
    Last edited: Feb 28, 2019
  6. cjbruce

    cjbruce

    Joined:
    Jun 26, 2017
    Posts:
    12
    Thanks for the help. You have done a great job with this!
     
  7. softrare

    softrare

    Joined:
    Jun 12, 2011
    Posts:
    444
    Thank you, please come back any time if you have questions!
     
  8. Whitebrim

    Whitebrim

    Joined:
    Jul 11, 2017
    Posts:
    17
    Why are you using JS-like language - not C#?
     
  9. softrare

    softrare

    Joined:
    Jun 12, 2011
    Posts:
    444
    Hi! Sorry for the delay! Well, we had to build/license our own compiler and writing a pseudo-objectoriented JS compiler is more or less the difference between a development time of 6 months against 2 years probably :) The difference with many other packages is that we really parse the plugin code ourselves instead of just handing it all over to the C# engine and letting it execute. By doing this we can execute specific bits of plugin code whenever a method is called which is decorated by the attribute [moddable] in example, so flexibility is much higher in comparison with seemingly comparable packges.
     
  10. look001

    look001

    Joined:
    Mar 23, 2017
    Posts:
    111
    Hi there,
    do you still plan to add "live modding" to support plattforms like IOS and Webgl?
     
  11. softrare

    softrare

    Joined:
    Jun 12, 2011
    Posts:
    444
    Hi! "live modding" already works for all platforms!
     
    look001 likes this.
  12. look001

    look001

    Joined:
    Mar 23, 2017
    Posts:
    111
    Very cool thank you!
     
  13. ScaryMonsterStudios

    ScaryMonsterStudios

    Joined:
    May 8, 2014
    Posts:
    2
    Hello, I own and have used you UMMO script which is excellent and based on my experience with that I would like to purchase this as I'm sure it will be the same high-quality.. my question is the planned features include mesh Imports which I believe are imperative for a moddable game
    That is in your plan so I was wondering what the status is.
     
  14. softrare

    softrare

    Joined:
    Jun 12, 2011
    Posts:
    444
    Hi! Thanks a lot for your question and your nice words about uMMO! Mesh import is not in there yet natively, very sorry to tell you. But be sure to realize that you could always implement this yourself for any game! [moddable] is itself moddable in the sense that you can always just add functionality and call it in your mods and let your players use it just as if it was native functionality. I hope this helps!
     
  15. modiohq

    modiohq

    Joined:
    Nov 15, 2019
    Posts:
    13
  16. Mindcoord

    Mindcoord

    Joined:
    Apr 30, 2020
    Posts:
    3
    How to perform "live modding" in other platform? Is there any tutorial on this?
     
  17. GermiyanBey

    GermiyanBey

    Joined:
    Aug 18, 2017
    Posts:
    68
    I wonder if moddable is supporting Playmaker. I made my game almost fully with Playmaker and seeing [moddable] word makes anything moddable makes me excited. I hope if such "action" (Playmaker) can make my Playmaker FSMs or variables moddable too.
    If such can be done, this would be a great buy for me!