The Glest Wiki

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 3 None 2 Mydata folder 1 Addons folder, can be compressed
AI Difficulty Levels 2 Normal and Ultra 1 Easy, Normal, Ultra, Mega 1 Easy, Normal, Ultra, Mega
Animated projectiles 3 No 1 Yes 3 No
Animations/Particles based on HP 3 No 1 Yes 3 No
Attack-boost 3 No 1 Yes 3 No
Auto-repair 3 No 3 No 1 Yes
Auto-return after attacking 3 No 3 No 1 Yes
Build animation based on progress 3 No 1 Yes 1 Yes
Cast-spell command 3 No 3 No 1 Yes
Clickable Resources with Info 3 No 1 Yes 1 Yes
Cloaking 3 No 3 No 1 Yes
Cliffs 3 No 1 Yes 3 No
Command Line Options 3 No 1 Expanded 2 Limited
Command Queuing 3 None 1 Control + Click 1 Shift + Click
Control of Fog of War 2 Turn on or off only 1 Can toggle off Fog of War and Shroud of Darkness individually 1 Can toggle off Fog of War and Shroud of Darkness individually
Cursor 2 Basic 2 Basic 1 Shows command and customizable
Customizable AI production 3 No 1 Minimum production and unit type assignment 3 No
Damage particles 3 No 1 Yes 3 No
Display Queued Commands 2 Displays numbers only 1 Displays numbers and lists them 2 Displays numbers only
Emanations / Effects 3 No 3 No 1 Yes
Faction Loading 2 Loads all factions 1 Only loads used factions 1 Only loads used factions
Faction Logos 3 No 1 Before-game only 1 During-game only
Faction Music 2 One per faction 2 One per faction 1 Multiple per faction + Shuffle
Fields 2 Land, Air 2 Land, Air 1 Land, Air, Water, Deep Water, Amphibious
FTP File Transfer 3 No 1 Yes 3 No
Generate Command 3 No 3 No 1 Yes
Guard / Patrol 3 No 3 No 1 Yes
Image Format Support 2 BMP, TGA 1 BMP, TGA, PNG, JPG 1 BMP, TGA, PNG, JPG
Image Formats that are Supported for Screenshots 3 TGA Only 1 TGA, PNG, JPG, and BMP 2 TGA and JPG
Kill count leveling 2 Basic 2 Basic 1 Customizable
Lua Scripting 2 Basic 1 Expanded 1 Expanded + dedicated console
Loading Screens 3 No 1 Yes, image presence based 1 Yes, XML declared
Map Player Filter 3 No 1 Yes 3 No
Map Preview 3 No 1 Yes 3 No
Maximum Players 2 4 1 8 1 8
Mod Download Center 3 No 1 Yes 3 No
Morph discount 2 Post-morph discount only 2 Post-morph discount only 1 Pre-morph and post-morph discounts
Multibuild 3 No 1 Yes 1 Yes
Multiplayer 2 LAN or IP Address, Cross-Platform is Unstable 1 Master server, LAN, or IP Address 2 LAN or IP Address, Cross-Platform is Unstable
Multiplayer Chat 2 In-game only 1 Pre-game IRC and in-game 2 In-game only
Multiplayer Scenarios 3 No 1 Yes 3 No
Multiple Animations 3 No 1 Yes 1 Yes
Normal Maps and Shaders 3 No 3 No 1 Yes
Observer Mode 3 No 1 Yes 3 No
Offscreen attack notification 3 No 1 Yes 1 Yes
Path Finder 2 A* 1 A* and Experimental 1 A* and Experimental
Pets and Masters 3 No 3 No 1 Yes
PhysFS Support 3 No 3 No 1 Yes
Rotatable Buildings 3 No 1 Yes 1 Yes
Rotated Climb 3 No 1 Yes 3 Broken
Saving and Loading Games 3 No 1 Yes 1 Yes
Scenario Preview Screen 3 No 1 Yes, image presence based 1 Yes, XML declared
Self-building 3 No 3 No 1 Yes
Subfactions 3 No 3 No 1 Yes
Submenus for Produce/Morph/Upgrade 3 No 3 No 1 Yes
Tags 3 No 3 No 1 Yes
Teleporting 3 No 3 No 1 Yes
Tileset and Resources Particle Effects 3 No 1 Yes 3 No
Tooltips 3 No 3 No 1 Yes
Transform command 3 No 3 No 1 Yes
Translating 2 Game and scenario only 2 Game and scenario only 1 Game, scenario, and techtree/faction
Transport Units 3 No 3 No 1 Yes
Unit Particle Systems 3 No 1 Yes 1 Yes
Upgrades system 2 Basic 2 Basic 1 Per unit enhancements, static modifiers and multipliers, store and cost modifiers

Lua scripting[]

Functions[]

Function Glest MegaGlest GAE
addActor 3 No 3 No 1 Yes
addConsoleText 3 No 1 Yes 2 consoleMsg()
addConsoleLangText 3 No 1 Yes 3 No
addDialog 3 No 3 No 1 Yes
clearDisplayText 1 Yes 1 Yes 1 Yes
clearHighlights 3 No 3 No 1 Yes
consoleMsg 3 No 2 addConsoleText() 1 Yes
createUnit 1 Yes 1 Yes 1 Yes
damageUnit 3 No 3 No 1 Yes
debugLog 3 No 3 No 1 Yes
destroyUnit[1] 3 No 1 Yes 1 Yes
disableAi 1 Yes 1 Yes 1 Yes
disableConsume 3 No 1 Yes 3 No
displayFormattedText 3 No 1 Yes 3 No
displayFormattedLangText 3 No 1 Yes 3 No
enableAi 3 No 1 Yes 3 No
enableConsume 3 No 1 Yes 3 No
endGame 1 Yes 1 Yes 1 Yes
factionTypeName 3 No 3 No 1 Yes
gameWon 3 No 1 Yes 3 No
getAiEnabled 3 No 1 Yes 3 No
getCellTriggerEventCount 3 No 1 Yes 3 No
getConsumeEnabled 3 No 1 Yes 3 No
getPlayerName[2] 3 No 1 Yes 2 playerName()
getSystemMacroValue 3 No 1 Yes 3 No
giveAttackCommand 1 Yes 1 Yes 1 Yes
giveAttackStoppedCommand 3 No 1 Yes 2 giveStopCommand()
giveKills 3 No 1 Yes 3 No
giveResource 1 Yes 1 Yes 1 Yes
givePositionCommand 1 Yes 1 Yes 1 Yes
giveProductionCommand 1 Yes 1 Yes 1 Yes
giveStopCommand[3] 3 No 2 giveAttackStoppedCommand() 1 Yes
giveTargetCommand 3 No 3 No 1 Yes
giveUpgradeCommand 1 Yes 1 Yes 1 Yes
highlightCell 3 No 3 No 1 Yes
highlightRegion 3 No 3 No 1 Yes
lastAttackedUnit 3 No 1 Yes 3 No
lastAttackedUnitName 3 No 1 Yes 3 No
lastAttackingUnit 3 No 1 Yes 3 No
lastAttackingUnitName 3 No 1 Yes 3 No
lastCreatedUnit 1 Yes 1 Yes 1 Yes
lastCreatedUnitName 1 Yes 1 Yes 1 Yes
lastDeadUnit 1 Yes 1 Yes 1 Yes
lastDeadUnitKiller 3 No 1 Yes 3 No
lastDeadUnitKillerName 3 No 1 Yes 3 No
lastDeadUnitName 1 Yes 1 Yes 1 Yes
lockInput 3 No 3 No 1 Yes
morphToUnit 3 No 1 Yes 3 No
moveToUnit[4] 3 No 1 Yes 3 No
playerName 3 No 1 Yes 1 Yes
playStaticSound 3 No 1 Yes 3 No
playStreamingSound 3 No 1 Yes 3 No
registerCellTriggerEventForFactionToLocation 3 No 1 Yes 3 No
registerCellTriggerEventForFactionToUnit 3 No 1 Yes 3 No
registerCellTriggerEventForUnitToLocation 3 No 1 Yes 3 No
registerCellTriggerEventForUnitToUnit 3 No 1 Yes 3 No
registerEvent 3 No 3 No 1 Yes
registerRegion 3 No 3 No 1 Yes
resetTimerEvent 3 No 1 Yes 3 No
resourceAmount 1 Yes 1 Yes 1 Yes
scenarioDir 3 No 1 Yes 1 Yes
setCameraMotion 3 No 3 No 1 Yes
setCameraPosition 1 Yes 1 Yes 1 Yes
setDisplayText 1 Yes 1 Yes 1 Yes
setFactionTrigger 3 No 3 No 1 Yes
setPlayerAsWinner 1 Yes 1 Yes 1 Yes
setTimer 3 No 3 No 1 Yes
setUnitTrigger 3 No 3 No 1 Yes
setUnitTriggerX 3 No 3 No 1 Yes
showMessage 1 Yes 1 Yes 1 Yes
startLocation 1 Yes 1 Yes 1 Yes
startTimerEvent 3 No 1 Yes 3 No
stopAllSound 3 No 1 Yes 3 No
stopStreamingSound 3 No 1 Yes 3 No
stopTimer 3 No 3 No 1 Yes
stopTimerEvent 3 No 1 Yes 3 No
timerEventSecondsElapsed 3 No 1 Yes 3 No
togglePauseGame 3 No 1 Yes 3 No
triggeredCellEventId 3 No 1 Yes 3 No
triggeredTimerEventId 3 No 1 Yes 3 No
unfogMap 3 No 3 No 1 Yes
unitCount 1 Yes 1 Yes 1 Yes
unitCountOfType 1 Yes 1 Yes 1 Yes
unitFaction 1 Yes 1 Yes 1 Yes
unitPosition 1 Yes 1 Yes 1 Yes
unlockInput 3 No 3 No 1 Yes
unregisterCellTriggerEvent 3 No 1 Yes 3 No
  1. 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).
  2. MegaGlest support both: getPlayerName() and playerName(), GAE supports only playerName().
  3. 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.
  4. 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 3 No 1 Yes 3 No
gameOver 3 No 1 Yes 3 No
resourceHarvested 1 Yes 1 Yes 1 Yes
startup 1 Yes 1 Yes 1 Yes
timer 3 No 3 No 1 Yes
timerTriggerEvent 3 No 1 Yes 3 No
unitAttacked 3 No 1 Yes 3 No
unitAttacking 3 No 1 Yes 3 No
unitCreatedOfType 1 Yes 1 Yes 1 Yes
unitDied 1 Yes 1 Yes 1 Yes
unitEvent 3 No 3 No 1 Yes

See Also[]