Modifying MegaGlest

MegaGlest is a highly moddable game, with nearly every aspect from the menus to the factions, techtrees, maps, tilesets, and scenarios being modifiable. This includes the creation of entirely new files or modifications of existing ones.

Techtrees
Techtrees are methods of storing factions. A techtree always contains at least one faction, but what separates them from factions is that they define the resources and damage multipliers as well, allowing more customizability, and factions in techtrees are isolated, you can only use factions that belong in the same techtree against eachother.

Factions
A sub-unit of techtrees (but often made standalone to go in pre-existing techtrees), factions define the units, upgrades, and starting units of a faction.

Tilesets
Tilesets are a collection of surface images and object models, combined with an XML file controlling the settings of how each map should look. The object models, for example, can instruct MegaGlest what model to use for trees on maps, or how the surfaces of the map will look. They do not actually change the map itself, just how it looks.

Maps
Maps are small binary files made with the map editor. They control the heights, placement of objects and resources, player positions, map size, etc. All those settings are defined in the map editor, rather than using any form of XML. They cannot change how the objects in the map, such as the trees, will look though (that can only be done by tilesets), but can change the positioning of them only.

Scenarios
Scenarios, which includes tutorials, are XML files which tell the game which predetermined settings (such as which map) to use. They are generally combined with Lua scripting to allow added depth and to allow them to do things not normally possible in the game, such as telling a story, having a campaign, enforcing the AI, or otherwise creating novelty in the game.

Additions
In addition to the regular types of mods, there are a few other things that can be changed or are useful to know for making a mod.

Windows/Linux Case sensitivity
As there are always problems with windows users ignoring case sensitivity, here is a script to fix it:  find -name "*[A-Z]*" -print0 | xargs -0 -L 1 bash -c 'mv "$0" "$(echo $0 | tr [:upper:] [:lower:])"' 

External Sites

 * MegaGlest Official Forums