Introduction
Welcome to the Asteria Modding SDK! This documentation will guide you through the process of creating, modifying, and integrating custom content into Asteria. Whether you're adding new characters, items, abilities, or entire quests, this SDK provides the necessary tools and APIs.
Getting Started
Downloads
Installing the SDK
- Download the SDK from the official GitHub repository (latest release linked above).
- Install the listed Unity version above. Once installed, create a new project in that version through the Unity Hub.
- Once you have a fresh project, install the SDK by double clicking it/opening it within Unity. If you are new to Unity you can view how to import the SDK package here.
If you have modded a Unity game before:
Please note that our current modding support is entirely based around scriptable objects and being friendly towards those without modding experience. Due to this, direct C# or code injection is not natively supported. To write your own code and make much more complicated systems without workaround solutions you will need to leverage a third party mod loading software for C# injection, decompilation and recompilation. Although not supported right now, with community support we may eventually make it a native feature.
Modding API Overview
Asteria provides a couple modding interfaces you should be aware of:
- Scriptable Objects: Despite the name, you won't be doing any scripting. We use these objects to encapsulate all kinds of data to allow for modular asset creation. These objects will be essential for creating your own content and modifying existing content.
- Asset Injection: When you add images, sound effects, and any other object it gets injected into the game through your mod. Whatever you name files is extremely important as that is treated as its ID. When you use the same name as an asset already used in the game it will override that data, allowing you to not only create new data, but modify existing game data.
File Structure
When developing a mod, your directory should be structured somewhat as follows:
AsteriaMods/
│── ModName/
│ │── Data/
│ │ ├── Sprites/
│ │ │ ├── My_Character_Sprite_01
│ │ │ ├── My_Character_Sprite_02
│ │ │ ├── My_Character_Sprite_03
│ │ │ ├── My_Character_Sprite_04
│ │ ├── Characters/
│ │ │ ├── MyCharacter
│ │ ├── items/
│ │ │ ├── MyItem_01
│ │ │ ├── MyItem_02
│ │ │ ├── MyItem_03
│ │ ├── Audio/
│ │ │ ├── Battle_Theme_01
│ │── Mod Info/
│ │ ├── Info_ModName
This is only an example, and the file naming system is actually extremely lenient, but for organization and making it so other mod makers can account for your mod, you should name things in a way that isn't frustrating for others to use. There's also considerations to take into account, such as Windows max file name length, etc.
Make sure that you rename your mod info file as well as fill in its info. The mod info file gives your mod an identity which allows users of your mod to see the mod within their loaded mods list. If you delete the mod info file your mod will still load, but will not show in a users mod list, this can be used for libraries and other useful extension content for other mods.
Lastly, try not to use spaces within the names of files, with the exception of Character files. Use underscores (_) where possible.
Creating Mod Content
To create content you will need to create scriptable objects of the type of thing you want. Figure out what you want to make and then follow along with the documentation of that object linked below.
Complex Systems
These systems hold a lot of the complexity around creating a dynamic and modular framework for our game. Understanding these different elements will help you significantly with working with our systems.
Packaging & Publishing
Steps to prepare and share your mods coming soon...
FAQ
Common issues and troubleshooting coming soon...