Everything that is specific to the game (and not to the engine).
Any piece of data which is in a format that can be used by the game engine.
All media elements that are presented to the player and protected by copyright.
Super Mario (1985)
Dangerous Dave (1988)
World of Warcraft (2004)
Order and Chaos 2 (2015)
Binary data
Bytecode
Text files
Hybrid files
Sounds
Images / Textures
Video
3D Models
Game Data
Levels, Maps
Scripts
Provides access to all resources (~assets)
Manages lifetime of each resource
Ensures that only one copy of each resource exists in memory
Loads required resources and unloads those no longer needed
Handles streaming
1 | RES ResourceLoader::_load(const String &p_path, const String &p_original_path, |
2 | const String &p_type_hint, bool p_no_cache, Error *r_error, bool p_use_sub_threads, |
3 | float *r_progress) { |
4 | bool found = false; |
5 | |
6 | // Try all loaders and pick the first match for the type hint |
7 | for (int i = 0; i < loader_count; i++) { |
8 | if (!loader[i]->recognize_path(p_path, p_type_hint)) { |
9 | continue; |
10 | } |
11 | found = true; |
12 | RES res = loader[i]->load(p_path, p_original_path != String() ? |
13 | p_original_path : p_path, r_error, p_use_sub_threads, r_progress, p_no_cache); |
14 | if (res.is_null()) { |
15 | continue; |
16 | } |
17 | |
18 | return res; |
19 | } |
20 | |
21 | ERR_FAIL_COND_V_MSG(found, RES(), vformat("Failed loading resource: %s.", p_path)); |
22 | } |
Level loading
Air locks
World streams
Shadow of the Tomb Raider (2018)
Wolfenstein II: The New Colossus (2018), cutscene
Portal (2007)
Hellblade: Senua's Sacrifice (2017)
World of Warcraft (2004)
Jazz Jackrabbit 2 (1998)
AIFF
WAV
MP3
OGG
JPEG
PNG
TGA
SVG
Another World, in-game
Wolfenstein 2: New Colossus, video
Warcraft 3, in-game
Warcraft 3 Reforged, video
Types
Formats
Diffuse
Displacement
Normal
Volumetric
Tileable
Sprite atlas
Sprite
Spritesheet
Sprite atlas
Mesh
Materials
Textures
Appr. mesh | Prec. mesh | CSG | Color | Material | Texture | Camera | Lights | |
---|---|---|---|---|---|---|---|---|
STL | ||||||||
OBJ | ||||||||
FBX | ||||||||
DAE | ||||||||
3DS | ||||||||
STEP | ||||||||
X3D | ||||||||
BLEND |
ZIP
zlib
Serialized data
Database
Save data
Local Storage
1 | let myStorage = window.localStorage; |
2 | |
3 | myStorage.setItem('player_state', player.stateId); |
4 | myStorage.removeItem('player_state'); |
5 | myStorage.clear(); |
IndexedDB
1 | await db.players.add({ |
2 | name: 'Warrior', |
3 | avatar: await getBlob('sprite_warrior.png'), |
4 | key_mapping: 'default' |
5 | }); |
1 | { |
2 | "player": { |
3 | "difficulty": "hard", |
4 | "scene": "mountains_02", |
5 | "posX" : 12, |
6 | "posY" : 56, |
7 | "inventory" : ["flashlight, lighter, candle"], |
8 | "stamina": 45, |
9 | "agility": 12 |
10 | } |
11 | } |
1 | // p_saveg.c::P_UnArchiveThinkers |
2 | while (1) { |
3 | tclass = *save_p++; |
4 | switch (tclass) { |
5 | case tc_mobj: |
6 | PADSAVEP(); |
7 | mobj = Z_Malloc (sizeof(*mobj), PU_LEVEL, NULL); |
8 | memcpy (mobj, save_p, sizeof(*mobj)); |
9 | save_p += sizeof(*mobj); |
10 | mobj->state = &states[(int)mobj->state]; |
11 | mobj->target = NULL; |
12 | if (mobj->player) { |
13 | mobj->player = &players[(int)mobj->player-1]; |
14 | mobj->player->mo = mobj; |
15 | } |
16 | P_SetThingPosition (mobj); |
17 | mobj->info = &mobjinfo[mobj->type]; |
18 | P_AddThinker (&mobj->thinker); |
Zelda (2004)
The Messenger (2018)
1 | <map version="1.0" orientation="orthogonal" renderorder="right-down" width="120" height="18" tilewidth="128" |
2 | tileheight="128" nextobjectid="1"> |
3 | <tileset firstgid="1" name="gameart2d-desert" tilewidth="128" tileheight="128" tilecount="40" columns="5"> |
4 | <image source="gameart2d-desert.png" width="640" height="1024"/> |
5 | <tile id="2"> |
6 | <properties> |
7 | <property name="type" type="int" value="1"/> |
8 | </properties> |
9 | </tile> |
10 | <tile id="7"> |
11 | <properties> |
12 | <property name="type" type="int" value="1"/> |
13 | </properties> |
14 | </tile> |
15 | </tileset> |
16 | <layer name="background" width="120" height="18"> |
17 | <data encoding="csv"> |
18 | 0,23,25,25,36,37,36,23,23,37,25,23,25,...... |
Where other men are limited by morality or law, remember, everything is permitted. We work in the dark to serve the light.Assassin's Creed series