From 07d51f1f222c715aab2c9a45a708efa1f2704b94 Mon Sep 17 00:00:00 2001 From: numex-admin Date: Wed, 9 Sep 2026 22:39:32 +0000 Subject: [PATCH] =?UTF-8?q?Numex=20yay=C4=B1n:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0f7467c..525adc5 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,42 @@ -# raycaster-3d - -Saf JavaScript ile yazılmış DOOM-vari 3D raycasting oyun motoru — duvarlar, dokular ve akıcı hareket. \ No newline at end of file +# 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 `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 +```bash +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 👾