Quake game profile for godot-mapper plugin

Collision layers driven Quake entities with generic methods.
Refer to the entity implementation table for the list of methods.
Change layers.gd file to integrate entities into an existing project.
- Door linking is implemented.
- Platforms and doors can crush characters.
- Liquid areas use high precision camera detection.
- Animation states are stored inside a map.
- Most spawnflags are supported.
Requires compiling Godot editor with
XA_MULTITHREADED 0for lightmapping.
Maps in the repository are not constructed, so a fresh project can open.
The main scene is a basic game launcher that will construct playable maps at runtime.
As the maps are constructed, you will see mapdata directory getting filled with placeholder files.
Lightmap and navigation region resources must be baked inside the editor to appear in the game.
Import map resources as scenes inside the editor and bake the necessary data.
The most efficient way to develop new maps is to insert them into scenes.
External animation players will then be able to retain node paths upon reimport.
Create a dedicatedscenesdirectory near themapsdirectory and overlay changes.
| State | Classname | Commentary |
|---|---|---|
| 🟨 | worldspawn | CD tracks 2-11 are not included for the sounds property.World environment (sunlight and fog) needs more work. _quake_submerge(area: Area3D, liquid: int) |
| ✅ | info_* | |
| ❌ | info_notnull | Does not implement progs.dat hacks. |
| ✅ | item_* | Keys are ignored when opening doors. Some items are loaded as sub-maps. |
| ✅ | weapon_* | |
| ✅ | light_* | Light flickering is visible in Forward+ renderer. |
| ✅ | monster_* | Enemy AI is beyond the scope of this project. |
| ✅ | ambient_* | |
| ✅ | func_door | Might have quake_health: int property._quake_crush(body: Node3D, damage: int) |
| ✅ | func_door_secret | Has quake_health: int property._quake_crush(body: Node3D, damage: int) |
| ✅ | func_wall | Implements extended alternative texture system. |
| ✅ | func_button | Might have quake_health: int property. |
| ✅ | func_train | Uses simpler, incorrect path_corner offset._quake_crush(body: Node3D, damage: int) |
| ✅ | func_plat | _quake_crush(body: Node3D, damage: int) |
| ✅ | func_illusionary | |
| 🟨 | func_episodegate | Unnecessary story entity. |
| 🟨 | func_bossgate | Unnecessary story entity. |
| ✅ | trigger_changelevel | Requires game specific logic to change map. |
| ✅ | trigger_once | Might have quake_health: int property. |
| ✅ | trigger_multiple | Might have quake_health: int property. |
| ✅ | trigger_onlyregistered | Requires map game_registered option. |
| ✅ | trigger_secret | Does not award a secret credit. |
| ✅ | trigger_teleport | _quake_push(velocity: Vector3) |
| ✅ | trigger_setskill | Does not set skill, use map game_mode option instead. |
| ✅ | trigger_relay | |
| ✅ | trigger_monsterjump | _quake_monsterjump(velocity: Vector3, height: float) |
| ✅ | trigger_counter | |
| ✅ | trigger_push | _quake_push(velocity: Vector3) |
| ✅ | trigger_hurt | _quake_hurt(damage: int) |
| 🟨 | air_bubbles | Uses placeholder particle system. |
| 🟨 | event_lightning | Uses placeholder particle system. |
| ✅ | misc_explobox* | Has quake_health: int property._quake_explode(damage: int) |
| ✅ | misc_fireball | Does not use the exact speed and gravity._quake_hurt(damage: int) |
| ✅ | misc_noisemaker | |
| ✅ | misc_teleporttrain | |
| ✅ | path_corner | |
| ✅ | testplayerstart | |
| ✅ | trap_shooter | _quake_hurt(damage: int) |
| ✅ | trap_spikeshooter | _quake_hurt(damage: int) |
| ✅ | viewthing |