To keep U.R.S.T. organized and prevent custom assets from interfering with core mechanics, the template relies on specific Godot Project Settings. If you are migrating this template into an existing project (which is not actually recommended because this Template focus on being standalone. But do whatever you want, I’m not your dad), you will need to ensure these settings match.
In Godot, Layers define what an object is, and Masks define what an object can interact with. The template uses a strictly organized collision matrix to manage Trigger zones, bullets, enemies, player and so on. You can check these collision layers and masks on whatever scene you want in the template to get idea of how it works (for example if you want to make a custom enemy, you need to see how RetroEnemy.tscn layers collision and masks). Here is the standard U.R.S.T collision matrix, which you can configure under Project > Project Settings > Layer Names > 3D Physics.
| Layer | Name | Description |
|---|---|---|
| Layer 1 | Environment |
Static geometry like floors, walls, and ceilings. |
| Layer 2 | Player |
Assigned exclusively to the Player character body. |
| Layer 3 | Enemies |
Assigned to all hostile NPCs and monster hitboxes. |
| Layer 4 | Projectiles |
Physical bullets, rockets, and throwables. |
| Layer 5 | Interactables |
Doors, Platforms, Switches, Pickups, and so on. |
| Layer 6 | Triggers |
Invisible zones like Checkpoints, Hazards, and Exits. |
The template relies on background scripts to handle global game states, saving, and UI overlays. You can view these under Project > Project Settings > Autoload.
RetroUiSounds: Automatically applies hover and click audio to all UI nodes.PauseMenu: Handles the pause state and cursor locking.SaveManager: Manages reading and writing player progress to the hard drive.OptionsMenu: The global CanvasLayer that draws the settings menu over the screen when called.DecalManager: Handles the pooling and spawning of bullet holes and blood splatters globally.
There is not much here, but here some information to know:
default_texture_filter=0), which gives all 2D sprites and 3D textures a crisp pixelated retro look.