49 lines
No EOL
2.9 KiB
Markdown
49 lines
No EOL
2.9 KiB
Markdown
# 📦 Resources Directory - Isla Apocalypse
|
|
|
|
## Overview
|
|
The `/Resources` directory acts as the game's central library for all static assets and Godot-specific data containers (primarily `.tres` files, 3D models, textures, and audio).
|
|
|
|
**Core Philosophy: "The Reusable Building Blocks."**
|
|
If the Server is the brain and the Client is the eyes, Resources are the memories. They define the *properties* of things in the world. If there are 50 zombies on screen, you don't want 50 copies of their texture and max health data in your RAM. Instead, all 50 zombies reference a single `ZombieBase.tres` resource.
|
|
|
|
---
|
|
|
|
## 🧩 Core Systems (Phase 2 & 3)
|
|
|
|
### 1. Voxel & Block Definitions
|
|
* **Format:** Custom `.tres` files based on a `BlockData` C# script (located in `/Core`).
|
|
* **Function:** Defines the properties of every voxel in the game.
|
|
* **Examples:** `Dirt.tres` (Texture: brown_dirt.png, Durability: 100, StepSound: dirt_crunch.ogg), `Asphalt.tres` (Texture: road.png, Durability: 500, StepSound: hard_step.ogg). Both the Client and Server read these to know how a block looks and behaves.
|
|
|
|
### 2. Item & Inventory Data
|
|
* **Format:** Custom `.tres` files for `ItemData`.
|
|
* **Function:** Defines every item a player can hold, craft, or drop.
|
|
* **Examples:** `StoneAxe.tres` (Icon: axe.png, Damage: 15, BlockDamage: 40, MaxStack: 1). The Server uses this to calculate damage; the Client uses this to draw the icon in your hotbar.
|
|
|
|
### 3. Audio & Visual Assets
|
|
* **Materials & Shaders:** The `.material` and `.gdshader` files used by the Client's chunk mesher (e.g., `TerrainMaterial.tres`).
|
|
* **3D Models:** The `.glb` or `.gltf` files for weapons, dropped items, and entities.
|
|
* **Audio Streams:** The `.wav` or `.ogg` files for ambient wind, UI clicks, and zombie attacks.
|
|
|
|
### 4. UI Themes & Fonts
|
|
* Godot `Theme` resources that dictate the colors, fonts, and border styles of the entire user interface, ensuring the inventory menus match the main menu.
|
|
|
|
---
|
|
|
|
## 🚀 Directory Organization Strategy
|
|
|
|
To prevent this folder from turning into a massive junk drawer, it must be strictly subdivided:
|
|
|
|
* `/Resources/Blocks/`
|
|
* `/Resources/Items/`
|
|
* `/Resources/Models/`
|
|
* `/Resources/Audio/`
|
|
* `/Resources/UI/`
|
|
|
|
---
|
|
|
|
## ⚠️ Directory Rules & Best Practices
|
|
|
|
1. **Text Over Binary:** Always save custom Godot resources as `.tres` (Text Resource) rather than `.res` (Binary Resource). Text resources can be read by version control (Git), allowing you to see exactly when someone changed the damage of a Stone Axe from 15 to 20.
|
|
2. **Stateless Data Only:** A Resource should never track live game state. For example, `Pistol.tres` holds the *Max Ammo* capacity (15), but it should NEVER hold the *Current Ammo* (7). Current ammo is a live state tracked by the Server.
|
|
3. **Shared Access:** Because Resources are just data, they are completely safe to be referenced by both the `/Server` and the `/Client`. |