I've had a fair amount of modding experience, from modding the map in Pirates on the C64, through various games, Call to Power Series, Europa Universalis, SimCity 4, Victoria and Civ 4. If there's one thing I've learnt in over 20 years of modding it's this: some engines are built with modding in mind, some engines are not. The ones that are built with modding in mind open the game to new levels allowing modders to take an existing idea and change it, or in the case of Civ4 totally change the game with mods such as Combat Mod, Road to War and Age of Discovery II.
So what do I hope for in modding architecture for Elemental?
Game Data Input:
Modern game development is a complex process. There are staff who focus on different areas of the game. Some staff code AI, some graphics engines and particle processes, and some manipulate text-based files which contain the game data (the data the whole game is based off such as factions, leaders, traits, etc). My hope is that Elemental has a text-based game data input method, such as the commonly used XML. XML is fairly easy to learn, read and use. There are also numerous XML editors to help new people to XML become familiar with the layout and usage of XML files. Don't under estimate the power of text-based game data access. Editing of all the original settings within the game can produce an entirely new experience for the players of that mod. This level of modding usually compliments all other levels of modding because new information can also be stored within these text-based game data files. This is what is classed as first level modding.
Scripting Language:
In any very moddable game is a way for modders to write their own code. In Civ4 it was python. In Civ5 it will be lua. In Call to Power it was a custom language called SLIC. In many early generation games they used BASIC. My hope is that Elemental will also use a common scripting language, one such as lua or python. And hopefully a lot of callbacks from the main code into the lua, and exposed functions and classes will allow a lot of accessibility to the game via scripting. Modders can create entire new concepts purely through a scripting language, without ever needing access to game code (or knowledge on how to program in C++). This is what is classed as second level modding.
Game Source Code:
In most games, developers these days utilise 3rd-party apps to provide the core functions of the game, such as graphics, sound, networking and input device control. These 3rd-party apps usually have a strict license of no passing on the code. However, most games push all the actual game-code into a secondary file, a DLL. This file contains all the game functions, AI code, and all the "rules" of the game, whilst the 3rd-party and proprietary apps are protected in the executable file, which loads the game-code DLL. For those who modded Civ4 it was known as the CvGameCoreDLL. I hope that the game-code source will be released as a software development kit (SDK) allowing modders the ability to program completely new concepts and ideas into the game, and back it up with a competent AI that can use that new idea. In most cases, the AI is not able to be taught new concepts in second level modding, and direct code access is the only way. This is classed as third level modding.
Database:
I'm hoping that the back-end data store is a standards-based SQL style database. And I also hope that the database will have hooks exposed so that via a scripting language such as lua or python, we can access/manipulate the database using standard SQL type commands. Commands like "factions = SELECT * from Factions". This will allow us, the modders, to access the database during play to read or edit values on-the-fly. This is what is classed as fourth level modding.
Modularity of Mods:
Modularity of mods is a concept whereby the player can combine a number of mods together to create a new game experience. For instance, the player may download a new faction made by ModderA, a new leader from ModderB, and another new faction from ModderC. Now by rights they are three separate mods. Modularity of mods allows the player to use all three mods together in the same game. Players can mix-and-match to create their own custom playing experience based on their preferences for mods.
Modding Tools:
To assist modders, game developers can also construct tools to assist modders in implementing their designs. CryEngine (the engine that Crysis is built on) comes with a full editor allowing the creation of new characters, models, maps, entire campaigns with events and sound and NPC interactions, and even an entirely new game. Some modding tools which I hope Elemental will contain in it's arsenal include:
- Game data editor: this will help players with no modding experience change or add things like factions, units, leaders, etc. Should include some tutorials on how to create a new faction, create a new leader, the basic things for new modders.
- Scripting language API documentation: this document outlines all accessible game functions and classes within the scripting language and what each one does.
- Game code class definitions: this document explains the function of each class in the source, and gives examples on how to use that class.
- Image program plugins: these plugins are dropped into common image programs such as Blender, Maya, Photoshop, Gimp and allow the artist to export directly into a file readable by the game.
Mod Browser:
I really hope that Elemental will contain some way to browse and manage mods within the game. Players should be able to look down a list of mods via a browser and turn on or off any mods they wish to combine to play a game. After a player installs a mod, the mod browser includes it into a list of all mods on the computer. The player then just selects the mods to turn on, and clicks START NEW GAME with those mods in effect.
These are just some of my hopes for Elemental's modding architecture. With these components (I like to think of them as essentials) the modding community of Elemental will grow and prosper, and allow the game to live for years, like the modders of Civ keep their games alive.
Thanks for reading, I expect you stopped a quarter of the way down. 