- Genre: Survival
- Resource scarcity, needs management, and progression through crafting define survival games.
- Available Scripts
- inventory_slot_resource.gd
- Expert inventory slot pattern using Resources for save compatibility.
- Core Loop
- Harvest
-
- Gather resources (Wood, Stone, Food)
- Craft
-
- Convert resources into tools/items
- Build
-
- Construct shelter/base
- Survive
-
- Manage needs (Hunger, Thirst, Environmental threats)
- Thrive
- Automation and tech to transcend early struggles NEVER Do in Survival Games NEVER make gathering tedious without scaling — 50 clicks for 1 wood = fun-killer. Tool tiers MUST multiply yield: Stone Axe = 3 wood, Steel = 10 wood. Respect player time. NEVER use instant death for starvation — 0% hunger → instant death = cheap. Use gradual HP drain (2 HP/sec). Player should see death coming and scramble for food. NEVER allow infinite inventory stacking — 999 stacks of everything removes resource management strategy. Use weight systems OR stack limits (64 per slot). NEVER make crafting recipes a guessing game — Trial-and-error crafting = 1990s design. Show discovered recipes. Discovery can exist, but once learned, must be persistent. NEVER let needs decay at constant rate regardless of activity — Hunger drains same speed while sleeping/running? Unrealistic. Sprint = 3x drain, idle = 0.5x drain. NEVER spawn enemies near player's bed/spawn point — Dying, respawning into 3 enemies = rage quit. Enforce safe zone radius (50m) around respawn. Phase Skills Purpose 1. Data resources , custom-resources Item data (weight, stack size), Recipes 2. UI grid-containers , drag-and-drop Inventory management, crafting menu 3. World tilemaps , noise-generation Procedural terrain, resource spawning 4. Logic state-machines , signals Player stats (Needs), Interaction system 5. Save file-system , json-serialization Saving world state, inventory, player stats Architecture Overview 1. Item Data (Resource-based) Everything in the inventory is an Item.
item_data.gd
extends Resource class_name ItemData @ export var id : String @ export var name : String @ export var icon : Texture2D @ export var max_stack : int = 64 @ export var weight : float = 1.0 @ export var consumables : Dictionary
{ "hunger": 10, "health": 5 }
- Inventory System A grid-based data structure.
inventory.gd
extends Node signal inventory_updated var slots : Array [ ItemSlot ] = [ ]
Array of Resources or Dictionaries
@ export var size : int = 20 func add_item ( item : ItemData , amount : int ) -> int :
1. Check for existing stacks
2. Add to empty slots
3. Return amount remaining (that couldn't fit)
pass 3. Interaction System A universal way to harvest, pickup, or open things.
interactable.gd
extends Area2D class_name Interactable @ export var prompt : String = "Interact" func interact ( player : Player ) -> void : _on_interact ( player ) func _on_interact ( player : Player ) -> void : pass
Override this
Key Mechanics Implementation Needs System Simple float values that deplete over time.
needs_manager.gd
- var
- hunger
- :
- float
- =
- 100.0
- var
- thirst
- :
- float
- =
- 100.0
- var
- decay_rate
- :
- float
- =
- 1.0
- func
- _process
- (
- delta
- :
- float
- )
- ->
- void
- :
- hunger
- -=
- decay_rate
- *
- delta
- thirst
- -=
- decay_rate
- *
- 1.5
- *
- delta
- if
- hunger
- <=
- 0
- :
- take_damage
- (
- delta
- )
- Crafting Logic
- Check if player has ingredients -> Remove ingredients -> Add result.
- func
- craft
- (
- recipe
- :
- Recipe
- )
- ->
- bool
- :
- if
- not
- has_ingredients
- (
- recipe
- .
- ingredients
- )
- :
- return
- false
- remove_ingredients
- (
- recipe
- .
- ingredients
- )
- inventory
- .
- add_item
- (
- recipe
- .
- result_item
- ,
- recipe
- .
- result_amount
- )
- return
- true
- Godot-Specific Tips
- TileMaps
-
- Use
- TileMap
- (Godot 3) or
- TileMapLayer
- (Godot 4) for the world.
- FastNoiseLite
-
- Built-in noise generator for procedural terrain (trees, rocks, biomes).
- ResourceSaver
-
- Save the
- Inventory
- resource directly to disk if it's set up correctly with
- export
- vars.
- Y-Sort
-
- Essential for top-down 2D games so player sorts behind/in-front of trees correctly.
- Common Pitfalls
- Tedium
-
- Harvesting takes too long.
- Fix
-
- Scale resource gathering with tool tier (Stone Axe = 1 wood, Steel Axe = 5 wood).
- Inventory Clutter
-
- Too many unique items that don't stack.
- Fix
-
- Be generous with stack sizes and storage options.
- No Goals
-
- Player survives but gets bored.
- Fix
- Add a tech tree or a "boss" to work towards. Reference Master Skill: godot-master