# Monster Hills Prototype 01

**The Cyclops Cave · v0.1.1 · 29 Ekim 2026**

Telefon tarayıcısı için tek mağaralı, dikey aksiyon-platform prototipi. Ana referans, verilen Monster Hills Game Bible v1.0 PDF’sidir; iki DOCX de okunmuştur. ROOK Character Bible görsel kimliğe rehberlik eder. Bu uygulama, belgelerde açık bırakılan konuların onayı veya yeni kanon değildir.

## v0.1.1 Bounce temas düzeltmesi

Oyuncu geri bildirimi: Sadece yukarı zıplamak yeterli hissediliyor; mekaniklerin amacı anlaşılmıyor. Ayrıca başarılı Bounce sonrası üstteki düşmana alttan temas anında can kaybettiriyordu.

Düzeltme: Bounce yükselişinde düşmana alttan girilen temas, ayrılana kadar hasarsız geçiş olarak ele alınır. Bu genel dokunulmazlık değildir: yandan temas, hatalı iniş ve boss ışını hasarı korunur. Düşmanın üstünden aşağı inildiğinde normal Bounce/Chain Bounce çalışır. Normal zıplama bu özel geçişi sağlamaz. Bu davranış v0.1.1 prototip hipotezidir; nihai oyun kuralı değildir.

Beş regresyon testi eklendi: üstteki düşmandan hasarsız geçiş ve zincir inişi; normal zıplamada temas; Bounce sırasında yan temas; hatalı düşüş; yeniden başlatmada durum temizliği. Toplam 20/20 otomatik test geçti. Yeni davranışın gerçek telefon hissi henüz oyuncu tarafından doğrulanmadı.

Açık tasarım sorunu: Düşmanlar hâlâ kendi platformlarında; birlikte baskı kuran grup karşılaşması bu düzeltmeyle eklenmedi. Öneri, önce bir minikle Bounce öğretmek, ardından aynı aileden iki minik ve bir muhafızla küçük bir karşılaşmada Echo/gölge/JetSpin tercihlerini sınamaktır. Grup büyüklüğü ve saldırı düzeni onaylanmış oyun kuralları değildir.

## Çalıştırma

Gerekli: Python 3. Testler için Node.js 20 veya üzeri. Paket kurulumu, API anahtarı veya derleme gerekmez.

```sh
python3 -m http.server 8080 --directory dist
```

Tarayıcıda http://localhost:8080 adresini açın. Windows’ta gerekirse `python3` yerine `py` kullanın. Telefon ve bilgisayar aynı ağdaysa telefon tarayıcısında bilgisayarın yerel IP’si ve 8080 portunu açın. Güvenlik duvarı erişimine izin verilmesi gerekebilir. ES modülleri nedeniyle index.html dosyasını doğrudan file:// ile açmayın.

```sh
npm test
```

Yayımlamak için `dist/` içeriğini herhangi bir statik HTTPS sunucusuna koyun. Sunucu tarafı, hesap veya veritabanı yoktur. Oyun dış kaynak/font/asset indirmez. Test verisi sunucuya gönderilmez; yalnızca kullanıcı isterse JSON olarak indirilir. Sayfa yenilenirse tur verisi silinir.

## Kontroller

| Eylem | Telefon | Klavye |
| --- | --- | --- |
| Yatay hareket | Sol alttaki yön tuşlarını basılı tut | A/D veya sol/sağ ok |
| Zıplama | Sağdaki büyük ZIPLA tuşuna dokun | Boşluk, W veya yukarı ok |
| Bounce | Düşerken Tepegöz’ün tepesine in; otomatik yaylanır | Aynı |
| Chain Bounce | Zemine değmeden sonraki Tepegöz’e in | Aynı |
| Echo Shot | ECHO tuşuna her atış için dokun | J |
| JetSpin | Enerji %100 olunca SPIN’e dokun | K |
| Duraklat | Üst sağdaki duraklatma düğmesi | Escape |
| Işık karşılaştırması | Duraklatma panelindeki Işık = Yem anahtarı | Sağ açıklama panelindeki anahtar |

Aynı anda yön ve zıplama/atış kullanılabilir. Pointer capture ve pointercancel desteği vardır. Zıplamayı basılı tutmak otomatik zıplatmaz. Atış da otomatik değildir. Sekme gizlenirse veya pencere odağı kaybolursa tur duraklar. Ses ilk kullanıcı etkileşiminde açılır ve üstteki nota düğmesiyle kapatılır.

## Oynanış

ROOK ile 31 platformlu mağarada yukarı ilerleyin. Minik Tepegözler sıçrar; Muhafızın önündeki taş kalkan Echo’yu durdurur, tepesi açıktır. Echo yakın hedefe yönelir ve kısa süre sersemletir; düşman öldürmez ve yükselme sağlamaz. Bounce ve Chain Bounce enerji üretir.

JetSpin yaklaşık beş saniye boyunca yakındaki düşmanları iter ve sersemletir. Bu deneyde temas/ışın hasarından da korur; kalıcı karar değildir. Gölgeli platformlarda parıltı daha hızlı söner. Ortadaki sığınak takip baskısını keser ve bir kez canı tamamlar. Tepeye ulaşıldığında Dev Tepegöz üç kez hedef alır, hedefini kilitler ve tek gözünden ışın çıkarır. Üç ışın döngüsünün ardından karşılaşma tamamlanır. Bu bir kısa saldırı gösterimidir; tam boss dövüşü değildir.

Tur en fazla 90 saniye sürer. Üç can tükenince daha erken bitebilir; çok iyi oynayan biri 60 saniyeden önce tamamlayabilir. 60–90 saniyelik tipik deneyim hedefi kullanıcı araştırmasıyla henüz doğrulanmadı. Tur sonu yükseliş, Bounce, zincir, Echo ve JetSpin ölçümleri gösterilir. JSON ek olarak ilk hareket zamanı, gölgede geçirilen süre, hasarlar, ışık anahtarı değişiklikleri ve zaman damgalı olayları içerir.

## Deney ayarları — kalıcı oyun kuralı değildir

Sayısal ayarlar `dist/src/config.js` içinde; bölüm düzeni `level.js` içinde tutulur.

- Yerçekimi: 1450 birim/s²; yatay hız: 235 birim/s; zıplama hızı: 710 birim/s.
- Bounce: 770 birim/s; zincir başına +28 (en çok üç ek artış). Zincir penceresi 2,1 saniye ve zemine değmeme koşulu.
- Kenardan ayrıldıktan sonra zıplama toleransı: 110 ms. İnişten önce basılan zıplamayı saklama: 140 ms.
- Echo: 1,1 saniye atış aralığı, 270 birim hedef arama menzili, 1,25 saniye sersemletme; enerji maliyeti yok.
- JetSpin: 100 enerji ile başlar, 5 saniye sürer. Başlangıç enerjisi 28; pasif dolum 1,1/s; Bounce +24, zincir ek kazancı +5 × önceki zincir adımı.
- Üç can; hasar sonrasında 1,5 saniye koruma; tek kullanımlık sığınak iyileştirmesi.
- Işık açıkken algı mesafesi sakin hâlde 88, tam parıltıda 363 birimdir. Gölgede 48, sığınakta 0. Karşılaştırma kapalıyken sabit 160; sığınak yine güvenlidir.
- Düşman sayısı tur başında sabittir; ışık veya güç kullanımı yeni düşman üretmez. Düşmanlar kendi platformlarında hareket eder; platformlar arası takip yoktur.

ROOK’un tek yana uzanan kapüşonu, fildişi maskesi, amber gözleri, petrol/lacivert gövdesi ve kiremit atkısı korunmuştur. Karakter çizimleri kodla üretilmiş geçici 2D geometridir; premium 3D varlık veya nihai rig değildir. Maskenin çatlak biçimi ve görünen enerji eli yalnızca bu çizimin geçici seçimidir. Tepegözlerin hepsi tek gözlüdür. Verilen belgelerde ayrıntılı Tepegöz renk/boynuz eşlemesi bulunmadığından minik için soluk yeşil ve tek çıkıntı, muhafız için gri/iki çıkıntı/kalkan, dev için iri kahverengi silüet kullanılmıştır. Bunlar onaylı canavar tasarımı sayılmaz; mevcut aile kataloğu geldiğinde değiştirilmelidir.

## Modüller

| Dosya | Sorumluluk |
| --- | --- |
| config.js | Fizik ve deney sabitleri |
| physics.js | Hareket, tek yönlü platform çarpışması, Bounce |
| enemies.js | Algı, takip, sıçrama, boss uyarı/ışın evreleri |
| camera.js | Dikey takip, ekran yüksekliği, sınırlı sarsıntı |
| input.js | Çoklu pointer, tuşlar ve tek basış olayları |
| level.js | Tek mağara, platformlar, gölgeler, başlangıç yerleşimi |
| game.js | Simülasyon, enerji, atış, hasar, tur ve olay ölçümleri |
| render.js | Canvas 2D karakter, sahne, efekt çizimi |
| audio.js | Web Audio ile kısa eylem sesleri |
| main.js | 120 Hz sabit fizik adımı, arayüz, duraklatma, veri indirme |

Teknoloji tercihi: Bağımlılıksız modern JavaScript ES modülleri + Canvas 2D. Briefteki TypeScript/HTML5 çatı önerisi zorunlu olmadığından ilk oynanabilir teslimatı hafif tutmak için derlemesiz yapı seçildi. Kaynak modülerdir ve Git ile sürümlenir. Bu seçim nihai üretim motorunu belirlemez.

## Yapılan doğrulamalar

29 Ekim 2026: **İlk sürümde 15/15 Node testi geçti; v0.1.1 ile toplam 20/20.** Test dosyası `tests/game.test.js`.

1. Her ardışık platforma fizik simülasyonuyla ulaşım.
2. Yüksek düşüş hızında platformun içinden geçmeme.
3. Kenar toleransı ve zıplama tamponu.
4. Bounce ve zincirin hız/enerji artışı; yükselirken stomp olmaması.
5. Işık/gölge algı yarıçapları ve sabit düşman sayısı.
6. Echo bekleme süresi ve düşman sayısının korunması.
7. JetSpin enerji tüketimi ve beş saniyelik süre.
8. Duraklamada zaman ve fiziğin durması.
9. Boss hedef kilidi ve üç ışın döngüsü.
10. 90 saniye sınırı ve yeniden başlamada durum temizliği.
11. Düşüş sonrası güvenli platforma dönüş ve tekrar hasar koruması.
12. Gerçek düşey çarpışmadan Bounce ve ikinci hedefte Chain Bounce.
13. Muhafızın önden atışı engellemesi ve arkadan sersemlemesi.
14. Gölgede uyarılmış düşmanın dikkatinin azalması.
15. Boss sonrasında tamamlanma olayının tek kez çalışması. Bu son testte hasar koruması kontrollü olarak verilmiştir; insan oyuncunun boss’u geçtiği iddiası değildir.

Tarayıcıda masaüstü açılışı, klavye zıplaması, 390×844 ve 320×568 iframe telefon görünümü, dokunmatik düğmelerin pointer tıklamaları, Echo ve duraklatma kontrol edildi. Her iki telefon görünümünde de belge ölçüleri ekran ölçüleriyle eşit: yatay veya dikey sayfa taşması yok. Kısa ekranda karakteri sıkıştıran ölçekleme düzeltildi; çizim oranı korunarak görülen dünya yüksekliği değişiyor.

**Doğrulama sınırları:** Gerçek iPhone/Safari veya Android cihazında çoklu dokunma, ses gecikmesi, ekran çentiği ve düşük donanım FPS testi yapılmadı. Tarayıcıdaki pointer tıklaması fiziksel iki başparmak testinin yerine geçmez. İleri seviye oyuncu/ilk oyuncu bitirme süresi ve eğlence değerlendirmesi yapılmadı. Kullanıcı araştırması sonuçları uydurulmadı.

## Sorunlar ve ikinci prototip önerileri

1. **Kontrol yükü:** Beş dokunmatik düğme küçük ekranda öğrenme gerektiriyor. Önce 5–8 katılımcıyla iki başparmak testinde ilk hareket ve ilk Bounce zamanını ölçün. Ardından yön için sürükleme + zıplama düğmesi varyantını aynı bölümde karşılaştırın; tek elle kontrol kararı açık kalsın.
2. **Chain erişimi:** Ardışık düşman rafları eklendi. Hareketli miniklerin zıplaması iniş zamanını zorlaştırıyor; hedef katılımcıların en az bir kez iki farklı hedefte zincir kurup kuramadığını gözlemleyin. Aynı hedefi tekrar kullanmanın enerji üretimi de denge riski.
3. **Echo–Bounce dengesi:** Echo öldürmüyor, ancak uzun sersemletme güvenli sıçrama noktası yaratıyor. 1,1 s ve 1,6 s atış aralığını; atış/Bounce oranını ve oyuncunun tercihini karşılaştırın. Düşman öldürme eklemek ayrı karar olmalı.
4. **JetSpin etkisi:** Beş saniyelik enerji fırtınası ve koruma uygulanıyor; heyecan henüz ölçülmedi. Kullanım anını, elde bekletme davranışını ve boss ışınını yok sayma eğilimini gözlemleyin. İkinci denemede korumayı ayrıca aç/kapat deneyin.
5. **Işık = Yem:** Algı ve takip etkisi teknik olarak var. Platforma bağlı düşmanlar nedeniyle ışığın stratejik etkisi sınırlı kalabilir. Aynı kişiye açık/kapalı koşulları farklı sırayla verin; gölgeye isteyerek dönme, hasar ve atış zamanlarını karşılaştırın. Yeni düşman doğurma eklemeyin.
6. **Okunabilirlik:** Küçük ekranda sahne geometriyle sade tutuldu. Gerçek cihazda ROOK maskesi, tek gözler ve ışının hedef kilidi ayrı ayrı test edilmeli. Kesinleşmiş Tepegöz aile kataloğuyla geçici silüetler değiştirilmeli.
7. **Süre:** Üst sınır 90 saniye; erken yenilgi ve hızlı bitiş mümkün. Gerçek tur dağılımına göre platform aralıkları, ilk temas zorluğu ve can sayısını ayarlayın. Hedef süreye ulaşmak için yapay bekleme eklemeyin.

İlk altı araştırma sorusunun yanıtlanma durumu: teknik mekanikler mevcut; öğrenme kolaylığı, Bounce tatmini, Echo’nun baskınlığı, JetSpin heyecanı, ışığın karar değiştirmesi ve fiziksel telefonda okunabilirlik için katılımcı testi bekleniyor. JSON kayıtları davranışı ölçmeye yardımcı olur; keyif veya niyet tek başına olay kaydından çıkarılamaz.

## Kapsam

Tek mağara, ROOK, üç Tepegöz tipi, gölge, sığınak ve kısa dev karşılaşması. Hesap, reklam, mağaza, XP, günlük görev, çoklu bölüm, kalıcı ilerleme veya geniş hikâye sistemi yok. Verilen tasarım belgeleri değiştirilmedi.
