Tek dosyalık bir HTML sayfası yaz, three.js ile, birinci şahıs 3D bir sohbet oyunu: "Akıllı Çay Bardağı — Kıraathane". Oyuncu geleneksel bir Türk kıraathanesine girer, tek boş sandalyeye oturur, çay içer ve karşısındaki konuşan çay bardağının sorularına cevap verir; bardak oyuncunun aklındaki eşyayı tahmin eder. Sorular, eşyalar ve tüm sesler SABİT ve hazır (aşağıda); yeni soru, eşya ya da replik uydurma. ════════════════════════════════════ 1. MEKÂN — geleneksel kıraathane (hepsi kodla: kutu, silindir, düzlem, lathe; doku dosyası, model dosyası, resim yok) ════════════════════════════════════ Geleneksel Türk MAHALLE kıraathanesi (2018 sonrası "millet kıraathanesi" değil). Ölçüler metre; orijin oda merkezi, +X sağ, +Y yukarı, −Z içeri (kapı +Z tarafında). Malzeme düz ve mat (MeshStandardMaterial, roughness 0.8, metalness 0; bakır/inox hariç). - KABUK: oda 10 m (X) × 7 m (Z), tavan 3,2 m. Zemin: iki tonlu dama karo #8A7B66 / #A89B85, kare 0,5 m. Duvarlar: yerden 1,1 m'ye kadar lambri #5E7A62, üstü krem #D9CDB4, tavan #E8E2D4; üst duvarlar ve tavan hafif sarıya kaymış (tütün patinası). - GİRİŞ (+Z, x=+3): 0,9 × 2,1 m camlı kapı; solunda 4 m genişliğinde vitrin camı (alt eşik 0,9 m, üst 2,6 m), camın alt yarısında tül perde; camda tersten okunan "KIRAATHANE" yazısı. Kapı üstünde çıngırak, yanında askılık ve paspas. - ÇAY OCAĞI (mutfak bölümü): girişin sağında, +X duvarı boyunca, x=+4,6, z=+1,0'dan z=−2,0'a: tezgâh 3,0 m uzun, 0,7 m derin, 1,0 m yüksek, gövde #3F3A34. Tezgâh üstünde bakır çay kazanı (silindir r=0,25 h=0,55, #B87333, musluklu) ve üstünde 3 inox demlik kulesi; bakır çay tepsileri, şeker kavanozu, kaşıklık. Arkasında duvara dayalı 2 raf: ters dizili en az 30 ince belli bardak ve bölmeli tabaklar. Yanında camlı buzdolabı (gazoz), lavabo. Tezgâh ile oturma alanı arasında alçak ahşap bölme ve açık geçiş. Tezgâhın arkasında ÇAYCI figürü (beyaz gömlek, yelek). - OTURMA ALANI: 9 kare masa 0,7 × 0,7 m, tabla y=0,75, formika #C9B48E, metal ayak; her masada 4 kayın sandalye #6B4A2F. Üç sıra: z=+1,5 / z=−0,5 / z=−2,5, x=−4'ten +2'ye 2,0 m aralıkla; masa araları 0,9 m yürüme koridoru. Bir masa OKEY MASASI: kadife üst #8C1F1F, 4 ıstaka ve renkli taşlar (küçük prizmalar). Diğer masalarda: açık tavla (iki kapaklı kutu, pullar, zar), iskambil desteleri, katlanmış gazete, dolu çay bardakları + tabaklar + küp şeker. MASADA KÜL TABLASI YOK (kapalı alanda sigara yasak). - DAYILAR: 6–8 yaşlı erkek low-poly figür (kutu gövde, küre baş, gri-kahverengi ceket ya da hırka, birkaçında kasket, bıyık çizgisi), masalarda oturuyor. Hafif idle animasyonlar: baş sallama, okey taşı atma (kol hareketi), çay yudumlama, gazete çevirme. Arada bir masa "Okey!" diye kıpırdanır (figürler hafif zıplar). Dayılar ara sıra konuşur: aşağıdaki dayı mp3'lerinden biri rastgele bir masadan (3D konumlu ses ya da hafif kısık) çalar, 40–90 saniyede bir. - ÇAYCI RUTİNİ: tezgâhtan tepsiyle çıkar, masalar arasında zikzak yürür, bir masaya bardak bırakır, boş bardak toplar, tezgâha döner; sürekli döngü. Oyuncu oturunca sıradaki turunda oyuncunun masasına gelir. - BOŞ SANDALYE (oyuncunun hedefi): arka duvar penceresi kenarı, x=−3,2, z=−2,6. Karşısında (x=−3,2, z=−3,3) masanın üstünde AKILLI ÇAY BARDAĞI karakteri: 1,1 m boyunda ince belli dönel yüzey (LatheGeometry), içinde çay #8E2B12, üstünde buhar (yükselen küçük saydam düzlemler), iki göz (bakışı oyuncuyu takip eder), ağız (konuşurken açılıp kapanır), iki ince kol. Masada oyuncunun çayı: ince belli bardak + tabak + kaşık + 2 küp şeker. - PENCERE: −Z duvarında 2,0 × 1,2 m, alt eşik 1,1 m; boş sandalyeye yandan gri gün ışığı. - TV KÖŞESİ: −X/−Z köşesi, x=−4,7, z=−3,0, duvar rafında y=2,1: tüplü TV kutusu 0,55 × 0,45 × 0,45, ekran hafif bombeli, ekranda yeşil saha ve hareket eden beyaz nokta (maç), mavi emissive titreme. - DUVAR EŞYALARI: Atatürk portresi (siyah çerçeveli dikdörtgen) ve Türk bayrağı tezgâh arkasında; yuvarlak duvar saati (akrep-yelkovan gerçek saati göstersin), yaprak takvim, "ÇAY 15 TL · OKEY SAATİ 40 TL" fiyat tabelası, takım flaması; duvara monte vantilatör (dönen pervane). Salon ortasında borulu sac soba #2E2A28, borusu tavana gider. - IŞIK: tavanda 4 floresan armatür (#FFEFC7, RectAreaLight ya da eşdeğeri), zayıf sıcak ambient, camdan yönlü gündüz ışığı; genel his loş ve sıcak. Tavandan sarkan iki sarı lamba. - SES ATMOSFERİ (dosya yok, WebAudio ile basit sentez): okey taşı şakırtısı (kısa tık salvoları, rastgele aralıklarla masalardan), çay kaşığı çınlaması (ara sıra), tavla zarı, düşük seviyeli uğultu (filtreli gürültü). Ses açma/kapama düğmesi hepsini susturur. - YAPMA: modern kafe, "millet kıraathanesi" görünümü, kitaplık duvarı, espresso makinesi, neon, düz panel TV, modern kafe sandalyesi, kadın müşteri, masada kül tablası. ════════════════════════════════════ 2. KONTROLLER ve AKIŞ ════════════════════════════════════ - Başlangıç ekranı (HTML katmanı): "Akıllı Çay Bardağı — Kıraathane" başlığı, kısa kontrol listesi, "Başla" düğmesi. Tıklama fare kilidini (PointerLock) açar ve sesleri etkinleştirir. - Yürüme: W/A/S/D, fareyle bakış; duvar ve masalarla çarpışma. Oyuncu göz yüksekliği 1,6 m, kapının önünde başlar. Girişte bardak "sahne-hosgeldin" der. - Boş sandalyeye 2 m yaklaşınca ekranda "E: Otur" ipucu. E → oturma: kamera sandalye hizasına (1,2 m) yumuşak geçişle iner, bardağa döner, yürüme kapanır; bardak "sahne-otur" der. - Oturunca çaycı masaya yürür (basit hareket), senin bardağın masada belirir (çay dolu), bardak "sahne-cay-geldi" der. - E: çay yudumla. Kamera hafif öne eğilir, senin bardağın yükselip iner, WebAudio ile kısa yudum sesi; bardaktaki çay seviyesi her yudumda azalır, 5 yudumda biter, çaycı gelip tazeler. Yudumlama her an serbesttir (soru sırasında da). - İlk yudumdan sonra bardak "sahne-yudum" der ("Hazırsan bir'e bas"). 1 → "sahne-tuslar" çalar, sorular başlar. - Sorular: ilgili mp3 çalar, bardağın ağzı ses süresince oynar, soru metni ekranın altında altyazı şeridinde yazar; sağ üstte sayaç "Soru 7 / 20". Cevap tuşları: 1 = Evet · 2 = Emin Değilim · 3 = Hayır. Ses bitmeden tuş kabul edilmez. Tuş ipucu ekranda hep görünür. - Ara replikler (sadece bir kez): 5. sorudan sonra "sahne-dayilar"; 12. sorudan sonra "sahne-bir-yudum-daha"; ilk tahmin yanlışsa ek sorulardan önce "sahne-neredeyse". - Oyun mantığı: · Bilgi tabanı: aşağıdaki 40 eşya × 25 soru için her hücrenin cevabını (evet / hayır / emin değilim) SEN doldur, kodda okunabilir bir yapıda dursun. · Soru seçimi akıllı olsun: sabit sıra ya da hazır karar ağacı yasak; her adımda kalan adayları en iyi ayıran soru seçilsin; aynı soru bir oyunda iki kez sorulmasın. · Her cevapta aday ağırlıkları güncellensin; yanlış cevap adayı tamamen elemesin, ağırlığını düşürsün. · Tam 20 soru; sonra "sistem-buldum" + ilk tahmin (ilgili tahmin mp3'ü + altyazı "Aklındaki şey … mı?"). 1 = Evet → "sistem-bildim". 3 = Hayır → "sistem-yanildim", aday elenir, en fazla 5 ek soru, ikinci tahmin. O da yanlışsa "sistem-pes". · Pes edince öğrenme modu (HTML formu): "Neydi?" eşya adı, sonra onu son yanlış tahminden ayıran yeni bir evet/hayır sorusu ve cevabı; bilgi tabanına eklenir, localStorage'a kaydedilir, "sistem-ogrendim". Sayfa yenilenince kalır; "Hafızayı sıfırla" düğmesi. Öğrenilen eşya/sorular için ses dosyası yoktur: altyazıyla yetin. - Bitiş: bildiyse kutlama (bardak zıplar, buhar artar, dayılar alkışlar; kısa konfeti yok, abartma). Ardından "sahne-bir-cay-daha" + ekranda iki seçenek: "Yeniden oyna" (bilgi tabanı ağırlıkları sıfırlanır, çay tazelenir, sorular baştan) ve "Kalk" ("sahne-gule-gule", ayağa kalkarsın, yürüyebilirsin, tekrar oturabilirsin). - Sağ üstte ses açma/kapama; sessizken oyun aynı şekilde oynanır. ════════════════════════════════════ 3. SABİT VERİ — sorular, eşyalar, sesler (sesler/ klasörü HTML'in yanında) ════════════════════════════════════ Sorular (id | metin | ses): 1 | Mutfakta bulunur mu? | sesler/soru-01.mp3 2 | Elektrikle çalışır mı? | sesler/soru-02.mp3 3 | Elinde tutabilecek kadar küçük mü? | sesler/soru-03.mp3 4 | Her gün kullanır mısın? | sesler/soru-04.mp3 5 | Üzerine giyilir ya da takılır mı? | sesler/soru-05.mp3 6 | Yemek yerken kullanılır mı? | sesler/soru-06.mp3 7 | Ekranı var mı? | sesler/soru-07.mp3 8 | Suyla teması olur mu? | sesler/soru-08.mp3 9 | Okulda ya da çantada taşınır mı? | sesler/soru-09.mp3 10 | Kesmeye ya da delmeye yarar mı? | sesler/soru-10.mp3 11 | Yumuşak mı? | sesler/soru-11.mp3 12 | Camdan yapılmış olabilir mi? | sesler/soru-12.mp3 13 | Metal parçası var mı? | sesler/soru-13.mp3 14 | Cebine sığar mı? | sesler/soru-14.mp3 15 | Genellikle yerde durur mu? | sesler/soru-15.mp3 16 | Banyoda bulunur mu? | sesler/soru-16.mp3 17 | Uyurken yanında olur mu? | sesler/soru-17.mp3 18 | Kırılgan mı? | sesler/soru-18.mp3 19 | Düğmesi ya da tuşu var mı? | sesler/soru-19.mp3 20 | Isıyla ilgisi var mı? Isıtır ya da sıcak olur mu? | sesler/soru-20.mp3 21 | Yazmaya ya da okumaya yarar mı? | sesler/soru-21.mp3 22 | Bir kilodan ağır mı? | sesler/soru-22.mp3 23 | Kişisel eşya mı? Yani genelde sadece sen mi kullanırsın? | sesler/soru-23.mp3 24 | Dışarı çıkarken yanına alır mısın? | sesler/soru-24.mp3 25 | Pille çalışabilir mi? | sesler/soru-25.mp3 Eşyalar (id | ad | tahmin sesi, cümle "Aklındaki şey … mı?"): 1 | çaydanlık | sesler/tahmin-01.mp3 2 | çay bardağı | sesler/tahmin-02.mp3 3 | kaşık | sesler/tahmin-03.mp3 4 | çatal | sesler/tahmin-04.mp3 5 | bıçak | sesler/tahmin-05.mp3 6 | tabak | sesler/tahmin-06.mp3 7 | tencere | sesler/tahmin-07.mp3 8 | buzdolabı | sesler/tahmin-08.mp3 9 | çamaşır makinesi | sesler/tahmin-09.mp3 10 | ütü | sesler/tahmin-10.mp3 11 | elektrikli süpürge | sesler/tahmin-11.mp3 12 | terlik | sesler/tahmin-12.mp3 13 | ayakkabı | sesler/tahmin-13.mp3 14 | çorap | sesler/tahmin-14.mp3 15 | gözlük | sesler/tahmin-15.mp3 16 | kol saati | sesler/tahmin-16.mp3 17 | telefon | sesler/tahmin-17.mp3 18 | bilgisayar | sesler/tahmin-18.mp3 19 | uzaktan kumanda | sesler/tahmin-19.mp3 20 | televizyon | sesler/tahmin-20.mp3 21 | kalem | sesler/tahmin-21.mp3 22 | defter | sesler/tahmin-22.mp3 23 | kitap | sesler/tahmin-23.mp3 24 | silgi | sesler/tahmin-24.mp3 25 | makas | sesler/tahmin-25.mp3 26 | zımba | sesler/tahmin-26.mp3 27 | anahtar | sesler/tahmin-27.mp3 28 | cüzdan | sesler/tahmin-28.mp3 29 | şemsiye | sesler/tahmin-29.mp3 30 | yastık | sesler/tahmin-30.mp3 31 | battaniye | sesler/tahmin-31.mp3 32 | ayna | sesler/tahmin-32.mp3 33 | lamba | sesler/tahmin-33.mp3 34 | halı | sesler/tahmin-34.mp3 35 | sandalye | sesler/tahmin-35.mp3 36 | masa | sesler/tahmin-36.mp3 37 | diş fırçası | sesler/tahmin-37.mp3 38 | havlu | sesler/tahmin-38.mp3 39 | sabun | sesler/tahmin-39.mp3 40 | kalemtıraş | sesler/tahmin-40.mp3 Sistem cümleleri (anahtar | metin | ses): giris | Merhaba! Ben Akıllı Çay Bardağı. Aklından bir eşya tut, ben bulacağım. | sesler/sistem-giris.mp3 basla | Hazırsan başlayalım! | sesler/sistem-basla.mp3 dusunuyor | Hmm, düşünüyorum... | sesler/sistem-dusunuyor.mp3 buldum | Buldum galiba! | sesler/sistem-buldum.mp3 bildim | Evet! Bildim! | sesler/sistem-bildim.mp3 yanildim | Hmm, yanılmışım. Birkaç soru daha soracağım. | sesler/sistem-yanildim.mp3 pes | Pes ediyorum. Neydi bu? | sesler/sistem-pes.mp3 ogrendim | Öğrendim, teşekkürler! Bir dahaki sefere bilirim. | sesler/sistem-ogrendim.mp3 tekrar | Tekrar oynayalım mı? | sesler/sistem-tekrar.mp3 Sahne replikleri (anahtar | metin | ses): hosgeldin | Hoş geldin! Boş sandalye şurada, tam karşımda. Gel, otur. | sesler/sahne-hosgeldin.mp3 otur | Otur bakalım. Çayın geliyor. | sesler/sahne-otur.mp3 cay-geldi | Al bakalım, tavşan kanı. Bir yudum al. | sesler/sahne-cay-geldi.mp3 yudum | Ha şöyle. Şimdi aklından bir eşya tut. Hazırsan bir'e bas. | sesler/sahne-yudum.mp3 tuslar | Evet için bir, emin değilsen iki, hayır için üç. | sesler/sahne-tuslar.mp3 dayilar | Dayılar bakıyor, acele etme. | sesler/sahne-dayilar.mp3 bir-yudum-daha | Bir yudum daha al, ben düşüneyim. | sesler/sahne-bir-yudum-daha.mp3 neredeyse | Yaklaştım galiba. Birkaç soru daha. | sesler/sahne-neredeyse.mp3 bir-cay-daha | Bir çay daha? Tekrar oynayalım mı? | sesler/sahne-bir-cay-daha.mp3 gule-gule | Güle güle, gene bekleriz. | sesler/sahne-gule-gule.mp3 Dayı replikleri (farklı ses; masalardan rastgele, ortam olarak): dayi-01 | Ocağa iki çay! Biri açık olsun. | sesler/dayi-01.mp3 dayi-02 | Çayın tavşan kanı olacak, açık verme bana. | sesler/dayi-02.mp3 dayi-03 | Gel bakalım, bir el atalım. | sesler/dayi-03.mp3 dayi-04 | Hoş geldin evlat, otur şöyle. | sesler/dayi-04.mp3 (oyuncu içeri girince bir dayı bunu söyler) dayi-05 | Maç kaç kaç? Bizimkiler yine yatıyor. | sesler/dayi-05.mp3 Ses kuralları: bir ses bitmeden yeni ses başlamasın; bardağın ağzı ses başlayınca oynar, bitince durur; altyazı ekranda sesin süresince kalır; dosya yolları göreli (sesler/…), sayfa çift tıklamayla (file://) açıldığında sesler çalmalı. ════════════════════════════════════ 4. TEKNİK KURALLAR ════════════════════════════════════ - Tek HTML dosyası (ses klasörü hariç). three.js ve eklentileri (PointerLockControls) CDN'den (jsdelivr ya da unpkg), sürüm numarası sabitlenmiş, importmap ile. Başka kütüphane yok. Doku, model, resim, font dosyası yok. - Dosya çift tıklamayla (file://) Chrome'da açıldığında konsolda hata olmadan çalışmalı. Hedef 60 fps; low-poly, gereksiz gölge yok (bir yönlü ışık gölgesi yeterli), tekrarlayan nesnelerde (bardaklar, sandalyeler, taşlar) InstancedMesh serbest. - Kod yorumları Türkçe. Bilgi tabanı ve sahne kurulumu okunabilir bölümler halinde. - Bana soru sorma; belirsiz gördüğün her şeyde kendin karar ver ve kararını JSON'daki "assumptions" alanına yaz. - Cevabın iki parçadan oluşsun: önce HTML dosyası (dosya olarak ya da tek kod bloğu), sonra en sonda YALNIZCA şu JSON. JSON'dan sonra hiçbir şey yazma; kod bloğu ile JSON dışında açıklama yazma: {"object_count": , "question_count": , "selection_strategy": "<1 cümle>", "unsure_handling": "<1 cümle>", "learning": , "scene": {"tables": , "figures": , "meshes_estimate": }, "controls": "<1 cümle>", "audio": "", "assumptions": ["..."], "confidence": <0-1>}