Saf JavaScript ile yazılmış DOOM-vari 3D raycasting oyun motoru — duvarlar, dokular ve akıcı hareket.
| public | ||
| package.json | ||
| README.md | ||
| server.js | ||
raycaster-3d
Saf HTML5 2D Canvas (2d context) üzerine inşa edilmiş, 3D retro FPS raycasting motoru — Wolfenstein 3D (1992) klonu.
⛔ Three.js / Babylon.js / WebGL kullanılmadı. Tüm "3D" görüntü, ekranın her dikey piksel sütunu için fırlatılan ışınların (DDA) canvas
fillRectile boyamasından üretilir: gerçek 3D yok, perspektif illüzyonu var — tıpkı 1992'de olduğu gibi.
Harita Düzeni (16×16)
| Değer | Anlam |
|---|---|
0 |
Boş / geçilebilir zemin |
1 |
Neon mavi duvar |
2 |
Yeşil duvar |
3 |
Kırmızı tuğla duvar |
Teknik Özellikler
- Raycasting & matematik motoru: her dikey piksel sütunu için bir ışın; DDA (Digital Differential Analyzer) ışın yürütme.
- Fisheye düzeltmesi:
perpDist = dist * Math.cos(rayAngle - playerAngle)ile kavisli duvar görünümü engellenir. - Derinlik gölgelendirme: uzak dilimler koyu, yakınlar parlak.
- Tavan/zemin: gökyüzü kısmen koyu gri→siyah degrade, zemin koyu füme; dikey dilimler hâlinde boyanır.
- Kontroller:
W/Sileri-geri,A/Dveya←/→dönüş. - Çarpışma: oyuncu duvarlardan geçemez (DDA + grid bounding).
- HUD & Minimap: sağ üstte grid tabanlı canlı radar (duvarlar + oyuncu + ışın konisi), altta retro durum çubuğu — canlı FPS sayacı, oyuncu
x / y, retro hedef (crosshair).
Çalıştırma
npm install
npm start
# -> http://localhost:4173
veya başka port: PORT=5000 npm start
Dosyalar
public/
index.html — sayfa yapısı, canvas + HUD + minimap
style.css — retro arayüz
engine.js — raycasting/görüntüleme çekirdeği (saf 2D canvas)
app.js — oyun döngüsü, kontroller, fizik, HUD/minimap, minimap ışını
server.js — Express statik sunucu
Oda oklarıyla dön, W/S ile yürü. İyi avlar 👾