Gamasutra: The Art & Business of Making Gamesspacer
View All     RSS
September 21, 2018
arrowPress Releases
  • Editor-In-Chief:
    Kris Graft
  • Editor:
    Alex Wawro
  • Contributors:
    Chris Kerr
    Alissa McAloon
    Emma Kidwell
    Bryant Francis
    Katherine Cross
  • Advertising:
    Libby Kruse






If you enjoy reading this site, you might also want to check out these UBM Tech sites:


 

Building a mod toolkit for Edge Of Eternity

by ZELER-MAURY Jeremy on 09/04/18 10:33:00 am   Featured Blogs

2 comments Share on Twitter    RSS

The following blog post, unless otherwise noted, was written by a member of Gamasutra’s community.
The thoughts and opinions expressed are those of the writer and not Gamasutra or its parent company.

 

Edge of Eternity was built with community in mind at the core of the game, so creating features that would emphasis on this community is something that we really wanted to do so building a modding kit for the game was a very natural decision.

Unity have already builtin some super nice features to help building such features like AssetBundles and C# language that allow runtime assembly loading.

I will first start by describing all the modding kit features that we currently implemented (there is still more coming but it’s right now work in progress!) :

  • Asset swapping for Entity Models, Weapons, Audio, FXs

  • Creating or altering new entries in our databases (Actors, Items, Spells, Quests, Dialogs, Events, etc…)

  • Creating new maps or modify existing ones with Unity multi-scene system (And adding stuff like npcs, events, cutscenes, dialogs, quests, rewards, etc...)

  • Creating your own standalone adventure by changing the beginning of the game to your custom map and completely create a different story with new actors, npcs, etc… (we call it the EOE RPG Maker :p)

  • Coding in C# to extend the game in a limitless way, we just block access to a few critical function that would endanger computers of the players but otherwise there is no limit to what you can do

Our main ambition was to expose exactly the same tool that we use to create the game to modders, by working in that way we simplified our tools to make it easier for modders but also for us, it as very healthy for the project to optimize the workflow of everyone. So the basic decision to have the high level of freedom, using our tools, and leveraging Unity features was to build the modkit around Unity itself, being a package to open with Unity to setup the Unity environment to be ready to build mods for EOE.

Simple mod project inside Unity

First the modder have to enter the mods metadata onto a dedicated window on the mod toolkit

Mod metadatas tool

Those metadatas will serve the purpose of displaying the mods infos to the player and creating the unique pathes of the mod based on the Mod ID (Mod ID should be completely unique, if you have installed two mods sharing the same Mod ID they will overwrite themselves and not works correctly)

Ingame view for the players that downloaded mods

The mod can be built using a special build Window, with a custom option to automatically tag assets for AssetBundles, meaning that all the project will be bundled used or not used, allowing you to later use the assets by code if you are doing a coding mod (you can also turn off the auto tag feature if you want to manually manage which assets are embedded or not)

Mod Builder tool

You can also directly upload your mod to the Steam Workshop when it's ready, we are also working on the integration of other mod repository system but for now we have the Steam Workshop working

Steam workshop upload

Yay! Mods!

We also have a special mod that can be included in your mod dependency chain called the official asset databank, it allow you to use the models of the game without needing access to actual fbx models.

Imported databank assets used on a custom mod

When you'll start with the modkit, the simplest mod you can make is a model swap mod for main characters, we use the Unity Humanoid Animation System so you can make any model and just map it on the Humanoid Skeleton of Unity with the automatic system and the model will be ready to swap for any characters in the game (NPC, Monsters, Main Characters, etc ...) For swapping itself we have a simple tool called the Asset Override Tool that you can use to override any path used by the game asset loader

Asset Override Tool

What are you doing to the game :'(

After that you'll be able to edit or create new databases for the game, the database system is at the core of EOE dataset, it can basically add or edit any items, quests, events, etc..., everything that is pure data is stored here

Actor Database Editor

Simple Quest Database, one of the two ways to make quests in EOE

For Dialog, Dynamic Events and Spells we have a nodal system that allow to visually create those

Dialog event that spawn a timeline cutscene and then start a battle

Like you can see on the screenshot above you can also spawn cutscenes made with Unity Timeline, we'll have a more detailed tutorial about this but you can create a cutscene with Timeline that use actors and spawn dialogs and go back and forth between the node graph and the timeline cutscene for maximum creative freedom.

And last but not least, you can also add C# code to Edge Of Eternity with the modkit, you can do simple things like creating a Custom AI (Battle and Exploration) or a custom AuraScript for battle or more complex things by inheriting from IModInterface

IModInterface code

There is already a few events that you can override to receive messages from the game (but we plan to add a lot more along the development), you can from the IModInterface access to the whole API of EOE so your code can interact with the whole game it's not limited to the scope of the mod so be very careful when handling it!

Also we partially sandboxed the code, meaning that we analyze the code before loading it and we blacklisted nearly all filesystem access function and PInvoke/COM interop functions to guarantee more safety to the players, meaning that your assets must come from the project itself, your entry point is the GetModAsset/GetModAssetAsync functions that allow to load the Unity resources that you embedded into your mod.

The ModKit is far from final but it will be available day one November, 29th 2018 when Edge Of Eternity - Early Access will release and we're eager to ear feedbacks to improve the ModKit and add new features! https://store.steampowered.com/app/269190/Edge_Of_Eternity/

We just can't wait to see what you will create for Edge Of Eternity!


Related Jobs

Spatialand
Spatialand — Venice, California, United States
[09.20.18]

Unity Lead
Spatialand
Spatialand — Venice, California, United States
[09.20.18]

UX Lead
Heart Machine
Heart Machine — Culver City, California, United States
[09.20.18]

Gameplay Engineer
Phosphor Studios
Phosphor Studios — Chicago, Illinois, United States
[09.20.18]

Unreal Programmer





Loading Comments

loader image