Hey everyone! Today I have a release that's an early test for a future feature, modding.
At the minute this is a template Unity project that you can use to setup ships and save them into Asset bundles that you will be able to import into the game later on (not now), there's a download link on the original post or you can download it here. Stand-alone tools that are much easier to use will be coming in the future, but for now this provides a quick and dirty way for me to test modding out and others to understand how it will work. Unity is completely free so there isn't any sort of price tag attached to being able to get Unity setup to test it out.
Right now it isn't documented at all other then what I will mention in just a second, but if you're feeling adventurous then it shouldn't take too long to understand how it works. I've included Wyvern's ship models as an example. In the root of the assets folder you will find a file called include.txt, this is where it gets more interesting:
Instead of searching through folders and expecting specific files, you have complete freedom of where you want to store assets and what you want to call them. This is done through a list of commands, here's an example of what it looks like:
Code:
START SHIP_HIGHPOLY
PREFAB MyShips/Example/Wyvern/Wyvern_HP
DISPLAYNAME Wyvern
FESPEED 0
FETHRUST 0
FEHANDLING 0
FESHIELD 0
END SHIP_HIGHPOLY
When a mod is loaded this will be the first thing to be read and as you can imagine, each command tells the game what to do. So in this instance what is happening is we're first telling the game that what it's going to be setting up is a highpoly ship (basically the normal, non PS1 styled ships) and then the location of where it can find the prefab with all the settings and references to locators (where to place things like effects). After that it is given a display name, the frontend stats are setup (what is shown on the menu) and then we're done.
This little command system will only be present if you use Unity to create asset bundles, the future stand-alone modding tools will automatically set all of these commands up for you. The reason I have chosen to go with this instead of something such as an XML or JSON file is just because it's more lightweight in that it doesn't require an additional library to be bundled with the game to read and write to a specific format, these are just lines of completely human readable words that can be interpreted with just a few lines of code.
The way a mod will be setup is through a pack that can contain custom tracks, ships, HUDs and music. Now Asset Bundles will be just one way this will be possible, and I'll be using this to add more content to the game post-release, but the other will be through just a folder containing all the files with a reference file to tell BallisticNG what it's looking for, however this method will be limited to just ships and music (HUDs and Tracks are a bit more complex). The track editor will be purely for creating a mesh and relevant track data to import into the game (or in this case the unity project tools).