Clone wiki

nota / doc / gameArchiveMap

Game Archive map

Nota is regular Spring game using usual folder structure

Archive map

Orgnized by archive folders:


  • Currently just cursor animation bmps here.


  • Contain bitmaps used in various effects (weapon explosions).


  • Contain definitions of static objects and corpses of units (in obsolete TDF text definition files)
  • There is plan to replace them with Lua generated definitions and delete this folder


  • Here are placed all configuration of engine supported classes of:
    • armors (resistance types which are used in weapons defs)
    • moves (move type definition affects path-planning on ground, in water, in the air)
    • sounds (units use those classes which link unit actions to sound files)
    • sides (game sides, factions)
    • icons (symbols replacing models when zoomed out)
    • and some other...
  • Also modrules are stored here
  • And resources list linking effect bitmaps to effects.
  • For some unknown reason explosions definitions are in this folder also :)

As you can see some of those files are still in TDF format, some of them are already lualized. Plan is to convert all defs in Lua.


  • All icons representing units when player distance > icon view distance are placed here.


  • Images shown on the background during launching the game are stored here. But same images are also stored in bitmaps and in different versions of engine different path is used (historical burden).


  • All game Lua scripted rules including starting setups, evauluation of game end, AI, etc., all is stored here.
  • Those scripts (Gadgets) are part of synced-code - it means that every player have same scripts, same game rules.
  • Our magic NOE framework is hidden in Config subfolder
  • More about Widgets&Gadgets


  • Another set of Lua scripts, mainly related to UI or other UX improvements.
  • Those scripts (Widgets) are part of unsynced-code - it means that every player can have own set of these scripts
  • Of couse but because of packed (released) file is evaluated to fit checksum during launch of game, also files contained in LuaUI are always the sime in "game" archive.
    • but players can on/off chosen Widgets.
    • by placing own LuaUI folder in their SpringData folder players can extra scripts unique to them (command macros, new UI items or features).
  • More about Widgets&Gadgets


  • Lua Particle System


  • Here are stored predefined scenarios - there are two way how scenarios are defined:
    • Scenario contain just special startscript.txt.
    • Scenario uses NOE framework and it is dynamically created based on own set of NOE configs.


  • All models or stored here.
  • More about modeling
  • There is running models remake project (TBD: add link)


  • Here we store all animations
  • Currently we use COB animations.
  • There is plan to replace them with Lua animations which are a bit less performance effective but much easier to develop and maintain.
  • Each animation file have to had name equal to model file name (without extension), usually units unitDef name.


  • Images of game sides/factions


  • All game sounds, linken by definitions in Gamedata
  • There is running sounds remake project (TBD: add link)


  • Stores all images used in build menu as units representation.


  • Stores definitions of all units in game.
  • Currently still in obsolete TDF format, will be lualized + generated.


  • All textures for models are stored here
  • Each texture file have to had name equal to model file name (without extension), usually units unitDef name.


  • Stores definitions of all weapons in game (there is also possible to define weapon in unitDef)
  • Currently still in obsolete TDF format, will be lualized + generated.

Other files

Some valuable mandatory top level files are stored without any folder.


  • Contain list of skirmish AIs.


  • Identification of game module.


  • Settings of game which can be set via lobby client.


  • Serves as changelog.
  • Provide some other info about the game package.

Tips & Tricks

Changing game objects definitions

  • There are three ways how definition values gets to the final objects (we use all three)
    • By changing values here in definition/config files
    • By changing them during game preload (when they are passed from files to engine), e.g.:
    • By post-spawn change based on event UnitCreated() (used in our hotfix 0fix_... gadgets), e.g.: