242 lines
5.7 KiB
Markdown
242 lines
5.7 KiB
Markdown
# 🎮 GAMESCENE STATUS REPORT
|
|
**Analiza trenutnega stanja & rešitve**
|
|
|
|
---
|
|
|
|
## 📊 CURRENT STATUS
|
|
|
|
```
|
|
File: src/scenes/GameScene.js
|
|
Lines: 2,392 lines
|
|
Size: 97KB
|
|
Status: ✅ FUNCTIONAL but COMPLEX
|
|
```
|
|
|
|
---
|
|
|
|
## ⚠️ POTENTIAL ISSUES
|
|
|
|
### 1. **TOO MANY SYSTEMS** (30+ systems loaded!)
|
|
```javascript
|
|
- TerrainSystem (Flat2D)
|
|
- BiomeSystem (18 biomes)
|
|
- ChunkManager (500x500 world!)
|
|
- TransitionSystem
|
|
- RiverSystem
|
|
- LakeSystem
|
|
- StructureSystem
|
|
- NPCPopulationSystem
|
|
- BiomeEnemySystem
|
|
- QuestSystem
|
|
- MapRevealSystem
|
|
- FarmingSystem
|
|
- BuildSystem
|
|
- PathfindingSystem
|
|
- WeatherSystem
|
|
- LightingSystem
|
|
- ShadowSystem
|
|
- InventorySystem
|
|
- CraftingSystem
|
|
- StatsSystem
|
|
- TownRestorationSystem
|
|
- WorldEventSystem
|
|
- HybridSkillSystem
|
|
- OceanSystem
|
|
... and 10+ more!
|
|
```
|
|
|
|
**PROBLEM:** Too heavy for startup! 🐌
|
|
|
|
**SOLUTION:**
|
|
- Move to lazy loading (load only when needed)
|
|
- Split into separate scenes
|
|
- Use async initialization
|
|
|
|
---
|
|
|
|
### 2. **WORLD SIZE TOO BIG**
|
|
```javascript
|
|
// Line 76-77
|
|
this.worldWidth = 100;
|
|
this.worldHeight = 100;
|
|
|
|
// BUT THEN Line 711-713
|
|
const worldSize = 500 * 48; // 24000x24000 pixels!
|
|
this.cameras.main.setBounds(0, 0, worldSize, worldSize);
|
|
```
|
|
|
|
**PROBLEM:** Inconsistent world size! 100x100 terrain but 500x500 camera!
|
|
|
|
**SOLUTION:**
|
|
```javascript
|
|
// Option A: Small world (for performance)
|
|
this.worldWidth = 100;
|
|
this.worldHeight = 100;
|
|
const worldSize = 100 * 48; // 4800x4800 pixels
|
|
|
|
// Option B: Medium world (balanced)
|
|
this.worldWidth = 200;
|
|
this.worldHeight = 200;
|
|
const worldSize = 200 * 48; // 9600x9600 pixels
|
|
```
|
|
|
|
---
|
|
|
|
### 3. **TILED MAP LOADING CONFLICTS**
|
|
```javascript
|
|
// Line 168-248: Tiled map loader
|
|
// Line 250-258: Fallback procedural generation
|
|
|
|
// If Tiled map fails to load, game continues with procedural
|
|
// BUT camera bounds are set for 500x500 world!
|
|
```
|
|
|
|
**PROBLEM:** Tiled maps might be tiny (20x20) but camera expects huge world!
|
|
|
|
**SOLUTION:**
|
|
```javascript
|
|
// After Tiled map loads, update camera bounds to match:
|
|
if (this.tiledMapLoaded) {
|
|
const tiledWorldSize = map.width * map.tileWidth;
|
|
this.cameras.main.setBounds(0, 0, tiledWorldSize, tiledWorldSize);
|
|
this.physics.world.setBounds(0, 0, tiledWorldSize, tiledWorldSize);
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### 4. **PERFORMANCE: Too Many Decorations**
|
|
```javascript
|
|
// Orchards, fences, trees, flowers all created at startup
|
|
// DISABLED in code but still present
|
|
```
|
|
|
|
**SOLUTION:** Already disabled! Good! ✅
|
|
|
|
---
|
|
|
|
### 5. **UNLIMITED RESOURCES AUTO-GIVEN**
|
|
```javascript
|
|
// Line 776-780
|
|
this.inventorySystem.addItem('wood', 999999);
|
|
this.inventorySystem.addItem('stone', 999999);
|
|
this.inventorySystem.gold = 999999;
|
|
```
|
|
|
|
**SOLUTION:** Comment out for normal gameplay, or make it a cheat code!
|
|
|
|
---
|
|
|
|
## 🔧 QUICK FIXES
|
|
|
|
### FIX 1: Consistent World Size
|
|
```javascript
|
|
// At line 76-77, change to:
|
|
this.worldWidth = 100;
|
|
this.worldHeight = 100;
|
|
|
|
// At line 711-713, change to:
|
|
const worldSize = this.worldWidth * 48; // Dynamic!
|
|
this.cameras.main.setBounds(0, 0, worldSize, worldSize);
|
|
this.physics.world.setBounds(0, 0, worldSize, worldSize);
|
|
```
|
|
|
|
### FIX 2: Disable Auto Unlimited Resources
|
|
```javascript
|
|
// Line 776-780, comment out:
|
|
// console.log('💎 Dodajam neomejene vire...');
|
|
// this.inventorySystem.addItem('wood', 999999);
|
|
// this.inventorySystem.addItem('stone', 999999);
|
|
// this.inventorySystem.gold = 999999;
|
|
|
|
// OR make it a cheat code:
|
|
this.input.keyboard.on('keydown-SHIFT-G', () => {
|
|
this.inventorySystem.addItem('wood', 999999);
|
|
this.inventorySystem.addItem('stone', 999999);
|
|
this.inventorySystem.gold = 999999;
|
|
console.log('💎 CHEAT: Unlimited resources!');
|
|
});
|
|
```
|
|
|
|
### FIX 3: Better Tiled Integration
|
|
```javascript
|
|
// After line 188-203, add bounds update:
|
|
if (this.tiledMapLoaded) {
|
|
// Update camera/physics bounds to match Tiled map
|
|
const tiledPixelWidth = map.widthInPixels;
|
|
const tiledPixelHeight = map.heightInPixels;
|
|
|
|
this.cameras.main.setBounds(0, 0, tiledPixelWidth, tiledPixelHeight);
|
|
this.physics.world.setBounds(0, 0, tiledPixelWidth, tiledPixelHeight);
|
|
|
|
console.log(`📷 Camera bounds updated for Tiled map: ${tiledPixelWidth}x${tiledPixelHeight}`);
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## 🚀 RECOMMENDED IMPROVEMENTS
|
|
|
|
### 1. **Split Into Multiple Scenes**
|
|
```javascript
|
|
// Instead of one massive GameScene:
|
|
|
|
MainGameScene → Core gameplay (player, camera, basic systems)
|
|
↓
|
|
FarmingSubScene → Farming systems only (lazy loaded)
|
|
BuildingSubScene → Building systems only
|
|
CombatSubScene → Enemy/combat systems only
|
|
WorldSubScene → Biome/chunk/terrain generation
|
|
```
|
|
|
|
### 2. **Lazy System Loading**
|
|
```javascript
|
|
// Don't initialize ALL systems at startup
|
|
// Load only when needed:
|
|
|
|
async create() {
|
|
// CORE systems (always)
|
|
await this.initCore();
|
|
|
|
// OPTIONAL systems (lazy)
|
|
this.input.keyboard.on('keydown-C', async () => {
|
|
if (!this.craftingSystem) {
|
|
await this.initCrafting();
|
|
}
|
|
this.craftingUI.toggle();
|
|
});
|
|
}
|
|
```
|
|
|
|
### 3. **Performance Mode Toggle**
|
|
```javascript
|
|
// Let user choose performance vs features
|
|
const PERFORMANCE_MODE = {
|
|
POTATO: { biomes: 1, chunks: 10, systems: 5 },
|
|
LOW: { biomes: 5, chunks: 20, systems: 10 },
|
|
MEDIUM: { biomes: 12, chunks: 50, systems: 20 },
|
|
HIGH: { biomes: 18, chunks: 100, systems: 30 }
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## ✅ WHAT'S ALREADY GOOD
|
|
|
|
✅ Tiled map integration (lines 168-248)
|
|
✅ Player spawn point detection
|
|
✅ Proper error handling
|
|
✅ Fallback to procedural generation
|
|
✅ Unused code is commented (not deleted)
|
|
✅ Good console logging for debugging
|
|
|
|
---
|
|
|
|
## 🎯 PRIORITY FIXES (Do These First!)
|
|
|
|
1. **Fix World Size Mismatch** (Quick, 2 lines)
|
|
2. **Disable Auto Unlimited Resources** (Comment 4 lines)
|
|
3. **Update Tiled Camera Bounds** (Add 5 lines)
|
|
|
|
Want me to apply these fixes? 🔧
|