Benim Mükemmel Tetris'im

Projenin GitHub Deposu



Bu Nedir

Tetris efsanevi bir oyun ve benim çok zevk aldığım bir oyun. Oyunu gerçekten seviyorum ve oynamaktan keyif alıyorum. Harika bir stres giderici. Eğlenceli bir hafta sonu projesi olarak, Desktop ve Mobil için tasarlanmış bir tarayıcı oyunu/uygulaması olarak oyunu vibe coding ilkelerini kullanarak oluşturmaya karar verdim. Bu sürümün mobil tarafı, kaydırma tabanlı kontrolleriyle gerçekten güzel bir mobil kurulum sunan Play-Tetris tarafından ilham aldı. Tetris uygulamamı burada inceleyip oynayabilirsiniz: buradan; bence bu, Tetris‘in en “kusursuz” versiyonu.



benim tetris sürümümün oynanışı, kendiniz oynamak için buradan oynayın

Kodun Ötesinde

Bu projeyi bir portföy projesi olarak veya yeni bir şey öğrenmek için yapmadım. Gerçekten ihtiyacım olduğu için yaptım. Stresliyken, ister işte zorlu bir hafta olsun ister yaşamın birikmesi olsun, Tetris benim sıfırlanmama gerçekten yardımcı olan birkaç sağlıklı şeyden biri. Stresliyken çok yemek yeme eğilimindeyim ve bu zamanla birikiyor, bu yüzden hiçbir olumsuz yanı olmadan işe yarayan bir şeyin olması benim için çok önemli. Sadece 10-30 dakika blok düşürmek beynimin biraz temizlenmiş gibi hissetmesini sağlıyor. Benim için sadece sıradan bir rahatlama değil, o stresi dökecek basit ve odaklanmış bir şey sahibi olma yolu. Hatta Tetris’in zihnin müdahaleci anıları ve stresi ele alış biçimini etkileyebileceğini gösteren ilginç araştırmalar var; örneğin travma film deneylerinde, gerçek kazalar sonrası tedavi edilen insanlarda ve terapiye ek olarak ölçülebilir beyin değişiklikleriyle birlikte. Bu oyunu tıbbi bir tedavi haline getirmeye çalışmıyorum, ama Tetris’in insanların stresle başa çıkmasına gerçekten yardımcı olabileceğini zaten hissettiğim şeyin arkasında bilim olabileceğini görmek güzel.

Bu yüzden iyi bir Tetris sürümü aramaya başladım ve sorun şu ki piyasadaki hiçbir şey gerçekten benim oynamak istediğim şekilde değildi. iOS App Store’daki mobil uygulamalar reklam ve mikro işlemlerle dolu. Web sürümleri telefonda gecikmeli ya da berbat hissettiriyordu. Klasik NES sürümü harika ama bir emülatör ve ekstra donanım gerektiriyor. Bir noktada Miyoo Mini aldım, bunun problemi çözeceğini düşündüm, ama sonuç olarak sadece Tetris oynamak için ikinci bir cihaz taşıyor oldum. Bir noktada doğru sürümü aramaya harcadığım zamanın, kendi sürümümü yapmaktan daha fazla olduğunu fark ettim.

Modern tarayıcılar, Claude Code gibi LLM araçları ve vibe coding gibi iş akışlarıyla, kendi istediğim Tetris’i inşa etmek için sonunda doğru zamanmış gibi hissettim. Hızlı, minimal, reklamsız, hesap yok, uygulama mağazası yok. Sadece telefonumda ve dizüstümde çalışan ve tamamen kontrol ettiğim bir tarayıcı oyunu. Yaklaşık bir günde çalışan bir sürüme sahibim ve masaüstü ile mobilde hissi doğru hale getirmek ve sağlamlaştırmak için yaklaşık bir haftalık aralıklı çalışmanın ardından memnun kaldım.

Bunu paylaşıyorum çünkü eğer bu oyun benim için olduğu gibi başka bir kişinin stresini azaltmasına bile yardımcı olursa, bu beni gerçekten mutlu eder. Küçük bir şey ama bazen küçük bir şey tam da ihtiyacınız olan şeydir.

Özellikler

  • Klasik 10x20 Tetris tahtası
  • Masaüstünde tam klavye kontrolleri ve Mobilde dokunma jesti kontrolleri
  • Standart yedi-çanta (seven-bag) parça rastgeleleştirici
  • Parçayı tutma (Hold) ve sonraki parça önizlemeleri
  • Parçaların nereye ineceğini gösteren hayalet parça projeksiyonu
  • Dinamik kilitleme gecikmeli seviye tabanlı hız eğrisi
  • Skor, satır sayısı, seviye ve en yüksek skor takibi yerel depolamaya kaydedilir
  • Yumuşak düşürme ve sert düşürme skorlama
  • Devam et, yeniden başlat, çık, müzik/SFX’i sessize al ve kaynak kodu bağlantısı içeren oyun içi menü
  • Satır temizleme flaş animasyonu ve ses efekti
  • iOS güvenli alan desteği (Dynamic Island, çentik, ana ekran göstergesi)
  • Service Worker aracılığıyla çevrimdışı destek (ilk ziyaret sonrası internet olmadan çalışır)
  • PWA olarak yüklenebilir (iOS/Android’te ana ekrana ekleyerek uygulama benzeri deneyim)

Kontroller

Masaüstü (Klavye)

Eylem Tuşlar
Hareket veya A D
Yumuşak Düşürme veya S
Sert Düşürme Space
Saat Yönünde Döndür W X
Saat Yönünün Tersine Döndür Z
Parça Tutma C veya LShift
Menü Esc veya M
Kaynak Kod G (başlangıç ekranı)

Mobil (Dokunma)

Eylem Jest
Hareket Sol / sağ kaydırma
Yumuşak Düşürme Basılı tutup aşağı sürükle
Sert Düşürme Hızlı aşağı fırlatma
Saat Yönünde Döndür Dokunma
Parçayı Tutma Hızlı yukarı fırlatma

Zorluk Eğrisi

Bu sürümdeki hız eğrisi ve kilitleme gecikmesi, klasik ve modern Tetris oyunlarının zorluk ilerleyişini nasıl ele aldıklarına dair araştırmalar kullanılarak ayarlandı. Orijinal NES Tetris’te, yerçekimi 29. seviyede kare başına bir satıra ulaşır; bu da oyunun çoğu insan için fiilen oynanamaz hale geldiği meşhur “öldüren ekran” haline geldi. Bu gerçekten tasarlanmış bir son değildi, daha çok donanımın bir yan etkisiydi ve DAS (Gecikmeli Otomatik Kaydırma) düşme hızına yetişecek kadar hızlı değildi. Willis Gibson bunu 2024’te aşıp oyunu 157. seviyede çökerttiğinde bunu kanıtladı.



klasik 1989 NES Tetris oynanışı (orijinal kaynak)

TGM (Tetris: The Grand Master) gibi modern oyunlar bunu farklı şekilde çözdü. Parçaları oyunun kırılmasına kadar daha hızlı düşürmek yerine, TGM yerçekimini 20G’de (anında düşüş) sınırlar ve sonra kilitleme gecikmesi ve DAS gibi diğer zaman pencerelerini sıkılaştırarak zorluğu artırır. Tetris Guideline standardı 500ms kilitleme gecikmesi ile 15’e kadar hareket sıfırlamasını kullanır; bu sürüm de bunu takip eder. TGM2 Death modu ve TGM3 Shirase ile ilgili araştırmalar, rekabetçi oyun için pratik tabanın hızlı DAS ile yaklaşık 250ms kilitleme gecikmesi civarında olduğunu, 133ms’in altının ise uzmanlık alanı olduğunu gösterdi.

Tüm bunlara dayanarak, buradaki hız eğrisi yerçekimini anında düşüşe gitmek yerine satır başına 33ms ile sınırlar (bu, NES seviyeleri 19 ile 28’e benzer) ve DAS, kilit gecikmesi sırasında tahtada hareket edebilmeniz için yüksek seviyelerde 170ms’den 100ms’e ölçeklenir. Amaç, yüksek seviyelerin acımasızca hızlı hissetmesini sağlarken yine de adil olmasıydı; bu, ham hızın girdilerinizi sollamasına izin veren orijinal NES yaklaşımından ziyade Tetris 99 ve TGM’nin son oyun zorluğunu ele alışına daha yakın bir histi.

Teknik Detaylar

  • Hem Masaüstü hem Mobil (dikey) için optimize edilmiş duyarlı tasarım
  • Performans için önceden render edilmiş blok sprite’ları ve ızgara arka planı
  • Parça döndürme için Super Rotation System (SRS) tarzı duvar kick’leri kullanır
  • Güvenilir fırlatma vs sürükleme ayrımı için hız tabanlı dokunma jesti algılama
  • Yerçekimi hızı ve kilitleme gecikmesi için seviye tabanlı zamanlama sistemi
  • Yüksek skorlar ve ses ayarları localStorage ile kalıcılaştırılır
  • Arka plan müziği kaynağı NmCCQxVBfyM
  • Satır temizleme ses efekti kaynağı UMViM2tHrOk
  • Proje MIT Lisansı altında tamamen açık kaynaklıdır
  • Aşağıdaki AI araçları ile inşa edilmiştir:

Son Düşünceler

Bu, motivasyonun teknik değil, kişisel olduğu projelerden biriydi. Reklamsız, ekstra donanım olmadan ve herhangi bir zamanda ortadan kaybolabilecek veya değişebilecek başkasının bir uygulamasına güvenmeden, benim istediğim şekilde çalışan bir Tetris sürümü istedim. Modern yapay zeka araçları ve vibe kodlama kullanarak yaklaşık bir haftalık aralıklı çalışmalarla fikirden cilalı bir oyuna geçebilmiş olmam, şu anda yazılım geliştirme açısından nerede olduğumuz hakkında çok şey söylüyor.

Bunu oluşturduğumdan beri neredeyse her gün bu sürümü kullanıyorum ve hâlâ benim ihtiyaç duyduğum şeyi tam olarak yapıyor.

Bana, beni strese sokan her şeyden uzaklaşmama, birkaç dakika için basit bir şeye odaklanmama ve daha berrak bir zihinle geri dönmeme yardımcı oluyor.

Eğer denerseniz ve sizin için de aynı şeyi yapıyorsa, isteyebileceğim en iyi sonuç bu olur. Ve projeyi çatallamak, hız eğrisini ayarlamak, kontrolleri değiştirmek veya bunun üzerine bir şeyler inşa etmek isterseniz, çekinmeyin. Bir hata bulursanız veya bir öneriniz varsa, GitHub deposunda bir sorun açmaktan çekinmeyin.

Onu açık kaynak yapmanın asıl amacı bu.