Glest is more than just a game, it is a 3D RTS engine, meaning it can be customized based on the mods used to create the feeling of an entirely different game. Combined with the open-source nature of Glest, this makes it highly versatile. However, the original Glest fork is no longer being developed, with development having instead spread to the MegaGlest and Glest Advanced Engine forks. These two forks expand further on what Glest had, and add new features, making them the most common choice of development for modders and players today.
MegaGlest[]
MegaGlest is the most recent fork, having been developed by Softcoder and Titi largely as a method of exploring new particle systems and expanded multiplayer. It features unit particle systems (that is, particles that are always on while the unit is doing something. For example, smoke from a chimney), a master server, background loading images that vary by faction and scenario, and more. It also improves the AI and peformance, too.
Glest Advanced Engine[]
Glest Advanced Engine, or GAE, was the first fork to have been developed for Glest, and still in active development. While it cannot lay claim to a master server or stable multiplayer, it has more gameplay features, such as Auto-repair, effects, emanations, and water units.
Comparison of the Engines[]
Category | Glest | MegaGlest | Glest Advanced Engine |
---|---|---|---|
Addons | None | Mydata folder | Addons folder, can be compressed |
AI Difficulty Levels | Normal and Ultra | Easy, Normal, Ultra, Mega | Easy, Normal, Ultra, Mega |
Animated projectiles | No | Yes | No |
Animations/Particles based on HP | No | Yes | No |
Attack-boost | No | Yes | No |
Auto-repair | No | No | Yes |
Auto-return after attacking | No | No | Yes |
Build animation based on progress | No | Yes | Yes |
Cast-spell command | No | No | Yes |
Clickable Resources with Info | No | Yes | Yes |
Cloaking | No | No | Yes |
Cliffs | No | Yes | No |
Command Line Options | No | Expanded | Limited |
Command Queuing | None | Control + Click | Shift + Click |
Control of Fog of War | Turn on or off only | Can toggle off Fog of War and Shroud of Darkness individually | Can toggle off Fog of War and Shroud of Darkness individually |
Cursor | Basic | Basic | Shows command and customizable |
Customizable AI production | No | Minimum production and unit type assignment | No |
Damage particles | No | Yes | No |
Display Queued Commands | Displays numbers only | Displays numbers and lists them | Displays numbers only |
Emanations / Effects | No | No | Yes |
Faction Loading | Loads all factions | Only loads used factions | Only loads used factions |
Faction Logos | No | Before-game only | During-game only |
Faction Music | One per faction | One per faction | Multiple per faction + Shuffle |
Fields | Land, Air | Land, Air | Water, Deep Water, Amphibious | Land, Air,
FTP File Transfer | No | Yes | No |
Generate Command | No | No | Yes |
Guard / Patrol | No | No | Yes |
Image Format Support | BMP, TGA | BMP, TGA, PNG, JPG | BMP, TGA, PNG, JPG |
Image Formats that are Supported for Screenshots | TGA Only | TGA, PNG, JPG, and BMP | TGA and JPG |
Kill count leveling | Basic | Basic | Customizable |
Lua Scripting | Basic | Expanded | Expanded + dedicated console |
Loading Screens | No | Yes, image presence based | Yes, XML declared |
Map Player Filter | No | Yes | No |
Map Preview | No | Yes | No |
Maximum Players | 4 | 8 | 8 |
Mod Download Center | No | Yes | No |
Morph discount | Post-morph discount only | Post-morph discount only | Pre-morph and post-morph discounts |
Multibuild | No | Yes | Yes |
Multiplayer | LAN or IP Address, Cross-Platform is Unstable | Master server, LAN, or IP Address | LAN or IP Address, Cross-Platform is Unstable |
Multiplayer Chat | In-game only | Pre-game IRC and in-game | In-game only |
Multiplayer Scenarios | No | Yes | No |
Multiple Animations | No | Yes | Yes |
Normal Maps and Shaders | No | No | Yes |
Observer Mode | No | Yes | No |
Offscreen attack notification | No | Yes | Yes |
Path Finder | A* | A* and Experimental | A* and Experimental |
Pets and Masters | No | No | Yes |
PhysFS Support | No | No | Yes |
Rotatable Buildings | No | Yes | Yes |
Rotated Climb | No | Yes | Broken |
Saving and Loading Games | No | Yes | Yes |
Scenario Preview Screen | No | Yes, image presence based | Yes, XML declared |
Self-building | No | No | Yes |
Subfactions | No | No | Yes |
Submenus for Produce/Morph/Upgrade | No | No | Yes |
Tags | No | No | Yes |
Teleporting | No | No | Yes |
Tileset and Resources Particle Effects | No | Yes | No |
Tooltips | No | No | Yes |
Transform command | No | No | Yes |
Translating | Game and scenario only | Game and scenario only | techtree/faction | Game, scenario, and
Transport Units | No | No | Yes |
Unit Particle Systems | No | Yes | Yes |
Upgrades system | Basic | Basic | enhancements, static modifiers and multipliers, store and cost modifiers | Per unit
Lua scripting[]
Functions[]
Function | Glest | MegaGlest | GAE |
---|---|---|---|
addActor | No | No | Yes |
addConsoleText | No | Yes | consoleMsg() |
addConsoleLangText | No | Yes | No |
addDialog | No | No | Yes |
clearDisplayText | Yes | Yes | Yes |
clearHighlights | No | No | Yes |
consoleMsg | No | addConsoleText() | Yes |
createUnit | Yes | Yes | Yes |
damageUnit | No | No | Yes |
debugLog | No | No | Yes |
destroyUnit[1] | No | Yes | Yes |
disableAi | Yes | Yes | Yes |
disableConsume | No | Yes | No |
displayFormattedText | No | Yes | No |
displayFormattedLangText | No | Yes | No |
enableAi | No | Yes | No |
enableConsume | No | Yes | No |
endGame | Yes | Yes | Yes |
factionTypeName | No | No | Yes |
gameWon | No | Yes | No |
getAiEnabled | No | Yes | No |
getCellTriggerEventCount | No | Yes | No |
getConsumeEnabled | No | Yes | No |
getPlayerName[2] | No | Yes | playerName() |
getSystemMacroValue | No | Yes | No |
giveAttackCommand | Yes | Yes | Yes |
giveAttackStoppedCommand | No | Yes | giveStopCommand() |
giveKills | No | Yes | No |
giveResource | Yes | Yes | Yes |
givePositionCommand | Yes | Yes | Yes |
giveProductionCommand | Yes | Yes | Yes |
giveStopCommand[3] | No | giveAttackStoppedCommand() | Yes |
giveTargetCommand | No | No | Yes |
giveUpgradeCommand | Yes | Yes | Yes |
highlightCell | No | No | Yes |
highlightRegion | No | No | Yes |
lastAttackedUnit | No | Yes | No |
lastAttackedUnitName | No | Yes | No |
lastAttackingUnit | No | Yes | No |
lastAttackingUnitName | No | Yes | No |
lastCreatedUnit | Yes | Yes | Yes |
lastCreatedUnitName | Yes | Yes | Yes |
lastDeadUnit | Yes | Yes | Yes |
lastDeadUnitKiller | No | Yes | No |
lastDeadUnitKillerName | No | Yes | No |
lastDeadUnitName | Yes | Yes | Yes |
lockInput | No | No | Yes |
morphToUnit | No | Yes | No |
moveToUnit[4] | No | Yes | No |
playerName | No | Yes | Yes |
playStaticSound | No | Yes | No |
playStreamingSound | No | Yes | No |
registerCellTriggerEventForFactionToLocation | No | Yes | No |
registerCellTriggerEventForFactionToUnit | No | Yes | No |
registerCellTriggerEventForUnitToLocation | No | Yes | No |
registerCellTriggerEventForUnitToUnit | No | Yes | No |
registerEvent | No | No | Yes |
registerRegion | No | No | Yes |
resetTimerEvent | No | Yes | No |
resourceAmount | Yes | Yes | Yes |
scenarioDir | No | Yes | Yes |
setCameraMotion | No | No | Yes |
setCameraPosition | Yes | Yes | Yes |
setDisplayText | Yes | Yes | Yes |
setFactionTrigger | No | No | Yes |
setPlayerAsWinner | Yes | Yes | Yes |
setTimer | No | No | Yes |
setUnitTrigger | No | No | Yes |
setUnitTriggerX | No | No | Yes |
showMessage | Yes | Yes | Yes |
startLocation | Yes | Yes | Yes |
startTimerEvent | No | Yes | No |
stopAllSound | No | Yes | No |
stopStreamingSound | No | Yes | No |
stopTimer | No | No | Yes |
stopTimerEvent | No | Yes | No |
timerEventSecondsElapsed | No | Yes | No |
togglePauseGame | No | Yes | No |
triggeredCellEventId | No | Yes | No |
triggeredTimerEventId | No | Yes | No |
unfogMap | No | No | Yes |
unitCount | Yes | Yes | Yes |
unitCountOfType | Yes | Yes | Yes |
unitFaction | Yes | Yes | Yes |
unitPosition | Yes | Yes | Yes |
unlockInput | No | No | Yes |
unregisterCellTriggerEvent | No | Yes | No |
- ↑ MegaGlest's implementation only allows for the unit ID to be passed, GAE's allows unit ID and whether or not to make it clean (display the dead body).
- ↑ MegaGlest support both: getPlayerName() and playerName(), GAE supports only playerName().
- ↑ While MegaGlest's giveAttackStoppedCommand() function is able to issue attack stopped commands like giveStopCommand() can, only giveStopCommand() is able to give a regular stop command, as well.
- ↑ Other engines can specify to move to a unit by using unitPosition(), but they'll move directly to the location, whereas moveToUnit() moves to current location of the unit until it is reached.
XML events[]
Event | Glest | MegaGlest | GAE |
---|---|---|---|
cellTriggerEvent | No | Yes | No |
gameOver | No | Yes | No |
resourceHarvested | Yes | Yes | Yes |
startup | Yes | Yes | Yes |
timer | No | No | Yes |
timerTriggerEvent | No | Yes | No |
unitAttacked | No | Yes | No |
unitAttacking | No | Yes | No |
unitCreatedOfType | Yes | Yes | Yes |
unitDied | Yes | Yes | Yes |
unitEvent | No | No | Yes |