Resources.lua
Location
resources.lua
is a file in the Gamedata/
directory of a Spring Game.
resources_map.lua
is a file in the Gamedata/
directory of a Spring Map.
Purpose
This file is used by a game to reference textures for use in Custom Explosion Generators, as well as various default explosions and other engine textures such as default trees and water etc. Maps have a corresponding file, resources_map.lua
which behaves in the same way.
Source
The engine source code which parses the data from this file is viewable here:
- rts/Rendering/ProjectileDrawer.cpp (smoke, groundfx & projectiletextures)
resources_map.lua
is only read here.
- rts/Rendering/GroundDecalHandler.cpp (scars)
- rts/Rendering/Env/AdvTreeGenerator.cpp (trees)
- rts/Map/MapInfo.cpp (caustics & maps)
Details
The engine loads textures from seven subtables within the graphics
subtable of the returned resources table. Certain tables are automatically added by the engine if a game is not overriding them, they are numerical arrays whereas all others are key-value associative arrays. Engine defaults which are required to be present are included in the #Automatic example below.
caustics
- Textures used with bumpmapped water. Automatically added by the engine.smoke
- Textures used for engine default smoke. Automatically added by the engine.scars
- Textures used for the burn scars left on the map by weapon explosions. Automatically added by the engine.trees
- Textures for engine default trees.maps
- Base textures in case a map does not provide it's own.groundfx
- Game or Map specific textures for CSimpleGroundFlash CEG's as well as engine default explosion groundflash.projectiletextures
- Game or Map specific textures for the other CEG-Classes as well as engine defaults. This is the only table that is read fromresources_map.lua
Example
Automatic
The following example (which is becoming a de facto standard) sets out the engine default textures, and recursively adds any textures from the game's Bitmaps/projectileTextures/
and Bitmaps/groundFX/
directories, respectively. It will ignore any directories created by SVN, and can be easily edited to filter out git or any other version control software.
local resources = { graphics = { -- Spring Defaults trees = { bark = 'Bark.bmp', leaf = 'bleaf.bmp', gran1 = 'gran.bmp', gran2 = 'gran2.bmp', birch1 = 'birch1.bmp', birch2 = 'birch2.bmp', birch3 = 'birch3.bmp', }, maps = { detailtex = 'detailtex2.bmp', watertex = 'ocean.jpg', }, groundfx = { groundflash = 'groundflash.tga', groundring = 'groundring.tga', seismic = 'circles.tga', }, projectiletextures = { circularthingy = 'circularthingy.tga', laserend = 'laserend.tga', laserfalloff = 'laserfalloff.tga', randdots = 'randdots.tga', smoketrail = 'smoketrail.tga', wake = 'wake.tga', flare = 'flare.tga', explo = 'explo.tga', explofade = 'explofade.tga', heatcloud = 'explo.tga', flame = 'flame.tga', muzzleside = 'muzzleside.tga', muzzlefront = 'muzzlefront.tga', largebeam = 'largelaserfalloff.tga', }, } } local VFSUtils = VFS.Include('gamedata/VFSUtils.lua') local function AutoAdd(subDir, map, filter) local dirList = RecursiveFileSearch("bitmaps/" .. subDir) for _, fullPath in ipairs(dirList) do local path, key, ext = fullPath:match("bitmaps/(.*/(.*)%.(.*))") if not fullPath:match("/%.svn") then local subTable = resources["graphics"][subDir] or {} resources["graphics"][subDir] = subTable if not filter or filter == ext then if not map then table.insert(subTable, path) else -- a mapped subtable subTable[key] = path end end end end end -- Add mod projectiletextures and groundfx AutoAdd("projectiletextures", true) AutoAdd("groundfx", true) return resources
External
cont/base/springcontent/gamedata/resources.lua - Engine base content resources.lua