- NEW: Flat2DTerrainSystem.js (375 lines) - NEW: map2d_data.js procedural map (221 lines) - MODIFIED: GameScene async create, 2D terrain integration - MODIFIED: Player.js flat 2D positioning - MODIFIED: game.js disabled pixelArt for smooth rendering - FIXED: 15+ bugs (updateCulling, isometric conversions, grid lines) - ADDED: Phase 28 to TASKS.md - DOCS: DNEVNIK.md session summary Result: Working flat 2D game with Stardew Valley style! Time: 5.5 hours
2.3 KiB
2.3 KiB
🏔️ HEIGHT SYSTEM & 2.5D TERRAIN IMPLEMENTATION PLAN
📋 OVERVIEW
Transforming flat pixel-art terrain into 2.5D with procedural hills and elevation.
🎯 PHASE 1: HEIGHT GENERATION (IMPLEMENTING NOW)
Changes:
- Add height property to tiles (already exists in terrainTypes)
- Generate height using 2nd Perlin noise layer
- Visual height representation:
- Tint (darker = lower, lighter = higher)
- Scale (higher tiles = slightly bigger)
- Y-offset (elevation visual)
Code Changes:
TerrainSystem.js - generateChunk():
// NEW: Height noise (separate from terrain type noise)
const heightNoise = this.noise.noise(x * 0.05, y * 0.05);
const elevationHeight = Math.floor((heightNoise + 1) * 2.5); // 0-5 range
// Store height in tile
this.tiles[y][x] = {
type: tileType,
height: elevationHeight, // NEW!
solid: false
};
TerrainSystem.js - updateCulling() rendering:
// Apply visual height effects
const tile = this.tiles[y][x];
const height = tile.height || 0;
// 1. Tint (darker low, lighter high)
const tintValue = 0xffffff - (height * 0x111111);
sprite.setTint(tintValue);
// 2. Scale (subtle)
const scaleBonus = 1 + (height * 0.02);
sprite.setScale(scaleBonus);
// 3. Y-offset (elevation)
const yOffset = -(height * 4);
sprite.y += yOffset;
🎨 VISUAL RESULTS:
Before (Flat):
████████████
████████████
████████████
After (Hills):
▓▓▓▓ ← Height 4 (lighter, higher)
▒▒▒▒▒▒▒▒ ← Height 3
░░░░░░░░░░░░ ← Height 2
████████████ ← Height 0 (valleys, base)
🚀 NEXT STEPS (PHASE 2):
-
Walkability constraints
- Can't walk over height diff > 1
- Pathfinding with elevation
-
Smooth transitions
- Slope tiles between heights
- Gradient blending
-
Cliff edges
- Visual edge sprites
- Shadow effects
📊 CURRENT STATUS:
- ✅ TerrainTypes have height property
- ✅ Perlin noise available
- ⏳ Height generation (implementing)
- ⏳ Visual rendering (implementing)
- ❌ Walkability (Phase 2)
- ❌ Slope transitions (Phase 2)
Implementation Date: 2025-12-14
Status: In Progress
Files Modified: TerrainSystem.js