I have read many questions about modding in Endless Space, so I wanted to update you on the subject. This is rather technical, but I know some of you are
Modding has been a consideration ever since the project was just a few lines of text in a design document. We understand how important it is for our community.
Obviously, a 4X Game offers many modding options, and we have built our game content as some kind of "default "mode. Modding could happen on different parts of the game: galaxy generation, game simulation, economic simulation rules, AI behavior, or even images and 3D models.
Right now, here is where we stand:
- Our galaxy generator is an external library, written in C# code. You feed it with an xml definition file (the generation options parameters), the selected settings (which galaxy, how many stars etc), and it produces a big xml file describing the galaxy. This xml file is then used by the game engine to create the universe. Galaxy shapes can also be edited simply to produce new shapes. It is our intent to give you the galaxy generation code so that you can change it as you wish, simply rebuild the library and share it with others.
- The game simulation, which runs many variables to describe a galactic empire in all its aspects, it defined and computed by xml files containing our "Descriptor" system. A descriptor system is a data and computation declaration, which can be used for a vast number of purposes : define data (how much food my building produces), filtering (to build this, I need that), and of course operations (additive, multiplicative, etc). Some games allow you to edit content in the form of data parameters, others allow you to rewrite the code entirely. Both approaches have advantages and drawbacks (such as performance and stability), but we think we have met both ends with our descriptor system, which a way to create computational data. Most of the rules for computing the economic simulation is therefors defined in a data file, not hard coded. Of course, we can open more API into the code to expand the possibilities of what descriptors can do (although it is already going to be huge with our initial quantity of faction traits), and we can even consider opening the code in the future.
- Modifying this data is one step, but you will want to create new elements. This is possible with this system, which should allow to create elements such as new system improvements, ship modules, heroes, resources, and many more. The only caveat concerns the link to graphical data, as described below.
- AI can also be a huge aspect of modding. Right now, we are finishing implementing the last high level code for the AI. The architecture seems to be satisfying, but we have exposed tons of parameters to finely tune the AI during the upcoming months (and we will need your help). I believe these parameters could also be exposed to mod the AI behavior.
- Adding new graphical / sound assets is more complex (although not impossible). We are discussing with Unity people (the technology we are using) what is the best way to incorporate new content that is not in the original project. Right now, Unity builds everything in a large asset bundle, so we must find the best way to add/take into account new files or bundles. More info on that soon.
Regarding the form that this modding could take, we still are in the progress of defining how it will be delivered and selected by the user. Some games offer a "one mod at a time" selection policy, some others allow you activate more than one at the same time. For the sake of stability and clarity, we will opt for the "one mod at a time" policy, and let the community merge popular mods in one bundle.
Thanks for your time!