A 3D isometric RPG game built with Three.js, featuring atmospheric effects and immersive visuals.
- Full 3D Isometric Rendering using Three.js
- Atmospheric Effects:
- Rain particle system
- Fog for depth and ambiance
- Smoke particles near ground
- Dynamic lighting with shadows
- 3D Tile-Based World:
- Grass, paths, trees, water, walls, treasure chests
- Proper isometric projection with depth sorting
- Animated Entities:
- Player character (capsule with smooth movement)
- Enemies with idle bounce animation
- 3D trees (trunk + foliage)
- Interactive chests with emissive glow
- Smooth Camera that follows the player
- Turn-Based Battle System with UI overlay
- No External Dependencies except Three.js (CDN)
- WASD / Arrow Keys: Move player
- Camera: Q/E to rotate (planned), Mouse drag to pan (planned)
- Battle: Click buttons (Attack, Magic, Item, Flee)
- Open
index.htmlin a modern browser - Click "Begin Journey"
- Explore the isometric 3D world
- Walk into enemies to trigger turn-based battles
- Defeat enemies to gain XP and gold
- Find treasure chests for potions
- Renderer: WebGL via Three.js r128
- Camera: Perspective camera with isometric angle (45°)
- Lighting: Ambient + Directional with shadow mapping
- Atmosphere: Fog, rain particles (2000 drops), smoke particles (300)
- Grid Size: 20x20 tiles
- Tile Size: 2 units
- Animation Loop: 60 FPS target
isocryn3d/
├── index.html # Main HTML with UI overlay
├── js/
│ ├── main.js # Entry point (ES6 modules)
│ └── modules/
│ ├── constants/ # Shared configuration (colors, tile settings)
│ │ └── index.js
│ ├── player/ # Player class and stats
│ │ └── Player3D.js
│ ├── battle/ # Battle system and event emitter
│ │ ├── EventEmitter.js
│ │ └── BattleSystem3D.js
│ ├── core/ # Main Game3D class (orchestrates all systems)
│ │ └── Game3D.js
│ ├── tiles/ # Tile sheet loading and properties
│ │ ├── TileSheet.js
│ │ └── TileProperties.js
│ ├── map/ # Map parsing and building
│ │ ├── MapParser.js
│ │ ├── MapLoader.js
│ │ ├── MapBuilder.js
│ │ └── LegacyLevelBuilder.js
│ ├── entities/ # 3D entity creation
│ │ ├── SpritePlayer.js
│ │ ├── Enemies.js
│ │ └── Decorations.js
│ ├── atmosphere/ # Particle effects
│ │ └── Effects.js
│ ├── lighting/ # Torches and glows
│ │ └── Lights.js
│ ├── ui/ # UI management
│ │ └── UIManager.js
│ └── interaction/ # Collision and encounters
│ ├── Collision.js
│ └── Encounter.js
├── assets/ # Textures and images
│ ├── sprites/
│ │ └── hero.png
│ └── forestcamptiles.bmp
├── maps/
│ └── jungle.txt
└── screenshot.gif
✅ 3D isometric world rendering
✅ Player movement with collision detection
✅ Enemy spawning with animations
✅ Atmospheric effects (rain, fog, smoke)
✅ Shadows and dynamic lighting
✅ Battle system UI (logic separate, needs integration)
✅ Smooth camera follow
- Replace placeholder graphics with actual Cryn sprites/models
- Add ground textures (tiling)
- Implement proper texture atlases for tiles and characters
- Add sound effects and background music
- More enemy types and AI behaviors
- Multiple levels with different themes
- Save/load game state
- Mobile touch controls
- Day/night cycle with dynamic lighting
Inspired by Cryn the Dark Reflection and the isometric 3D gist example.
Built with ❤️ using Three.js and vanilla JavaScript.