This page contains a general modding guide.
Document Status, Version
Void Expanse is an open-world, science fiction action-RPG set in deep space. Players take on the role of a spaceship pilot and navigate the vast reaches of a random galaxy. You can mine asteroids for valuable resources, trade to improve your ship, complete story missions offered by one of several factions with their own agendas, advance your character through skill-trees, and engage in fast-paced combat with hostile aliens, mercenaries and pirates in the universe. The game is also very easy to mod.
This page is a modding guide for the retail standalone edition and Steam workshop.
WARNING: If you are using third party mods, there is a high risk that it will corrupt any save files. High risk of this happening includes:
- If the mod is updated, always keep backups of save files and mod files.
- If the game client is updated, you can't do much about this if Steam auto updates. The retail edition you can hold off updating the game client and backup the manual patch files.
- Mixing multiple mods that have complicated dependencies. If you have a choice between standalone and bundled mods, always pick standalone.
- Downloading a bunch of untested mods at the same time and one or more of them overrides another's assets. This kind of thing happens a lot so you should test one mod at a time, not download heaps and then find out it breaks your game.
So it shouldn't require caution but here it is...
>>> USE AT YOUR OWN RISK!!! <<<
About VoidExpanse Mods
File Naming Scheme and File Types
There are two file formats used by the game executable. Core Pack Files *.cpk and Mod Pack Files *.mpk. They are essentially zip files with their extensions changed. The CPK file contains what is essentially the core files for the game built by the developer. You can unpack this and use it as reference for any mods. You should always pack your mods as MPK files as it will override any assets, behaviours or scripts contained in the CPK file. But to avoid any major conflicts, its just easier to create unique ids that no one but you will ever make.
I use the prefix "pkh" (denotes 'pinkeh'), then the mod type, then the item name, then version. For example the ship mod Minerva, version 1.1.1 would be identified as:
Thus the distributed mod file:
No one else, not even other modders will mistake my mod and use an id that'll clash with my mod. I initially started with mod ids like:
mod id: weapon_bfg
mod id: ship_minerva
But there was still a remote risk of overlap so i changed to the new naming scheme.
Mod folder structure
This is the folder structure. Each mod essentially comes with its own header.xml, image file "icon.png" (400x400 pixels) for steam (if applicable), a 'data' and 'content' folder.
The 'data' folder contains scripts and behaviours. The 'content' folder contains 3d models, textures, unit & item icons, and sound bytes.
Mods are unpacked into the following directory. Note: Local files always override mods from Steam workshop. Put MPK files in the folder below.
You will then have to activate the relevant mod from the main menu.
Subscribe to my mods through Steam Workshop.
You will need to check they are enabled under the mods menu.
Creating a New Item
I'm using my small cargo booster mod as a sample. You will need to replicate the basic mod structure for each new item. The files required in the mod are:
- header.xml describes the mod. This lets the game and steam workshop display general information about the mod as well as some important parameters like item id, versioning and dependencies. The id must be the same in the item script and the header or it won't work properly.
- pkh_booster_cargo_small.xml contains the item attributes and other relevant behaviours. See below from sample.
- pkh_booster_cargo_small.png is the store and ingame icon.
- icon.png is for Steam workshop files only. It's a square image, typically I use 512x512 pixels.
This is a header file for each mod that is used to describe what the mod does. The <id> is important. Don't change the attribute once you've released the mod as I discovered through experimentation. The savegames depend on the item IDs and will break if you change it. Get it right the first time: use unique ids that nobody else in the world will accidentally use.
<?xml version="1.0" encoding="utf-8"?> <root> <game>VoidExpanse</game> <id>pkh_booster_cargo</id> <title>Cargo Expanders</title> <author>Pinkeh</author> <description>Expanders sacrifices some structural integrity for additional inventory or cargo space.</description> <required_for_loading_savegame>1</required_for_loading_savegame> <version>1.0.0</version> <min_game_version>1.2.2</min_game_version> <updated>09.04.2015</updated> <modtype>2</modtype> <!-- 1 - server, 2 - client-server, 3 - client --> </root>
This is a sample script of my small cargo booster.
<?xml version="1.0" encoding="utf-8"?> <root> <header> <game_version>1.0.0</game_version> <id>pkh_booster_cargo_small</id> <title>Small Cargo Expander</title> <description>Expanders sacrifices some structural integrity for additional inventory or cargo space.</description> <enabled>1</enabled> </header> <gfx> <icon>items/boosters/pkh_booster_cargo_small.png</icon> </gfx> <data> <type>10</type> <shops> <shops_level>1</shops_level> <faction_filter></faction_filter> <faction_only>0</faction_only> <faction_reputation>0</faction_reputation> <price>5000</price> </shops> <upgrades_max>0</upgrades_max> <upgrades> <!-- none --> </upgrades> <requirements> <effects> <effect> <id>engineering_ability</id> <value>1</value> </effect> </effects> </requirements> <effects> <effect> <effect_type>cargo_capacity_value</effect_type> <effect_base>250</effect_base> </effect> <effect> <effect_type>structure_value</effect_type> <effect_base>-300</effect_base> </effect> </effects> <item_data> <durability>25000</durability> </item_data> </data> </root>
Sits in this folder:
Basically this is the ingame icon for the cargo booster.