Saf JavaScript ile yazılmış DOOM-vari 3D raycasting oyun motoru — duvarlar, dokular ve akıcı hareket.
Go to file
2026-09-09 22:39:34 +00:00
public Numex yayın: public/style.css 2026-09-09 22:39:31 +00:00
package.json Numex yayın: package.json 2026-09-09 22:39:27 +00:00
README.md Numex yayın: README.md 2026-09-09 22:39:32 +00:00
server.js Numex yayın: server.js 2026-09-09 22:39:34 +00:00

raycaster-3d

Saf HTML5 2D Canvas (2d context) üzerine inşa edilmiş, 3D retro FPS raycasting motoruWolfenstein 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 fillRect ile 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/S ileri-geri, A/D veya ←/→ 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 👾