Tetris Sempurna Saya

Repositori GitHub Proyek



Apa Ini

Tetris adalah permainan legendaris dan salah satu yang sangat saya nikmati. Saya sangat menyukai permainan ini dan senang memainkannya. Ini adalah pelepas stres yang hebat. Untuk proyek akhir pekan yang menyenangkan, saya memutuskan untuk membuat permainan ini sebagai permainan/aplikasi browser yang dirancang untuk Desktop dan Mobile, menggunakan prinsip vibe coding. Sisi mobile dari versi ini terinspirasi oleh Play-Tetris, yang memiliki pengaturan mobile yang sangat bagus dengan kontrol berbasis geser. Coba dan mainkan implementasi Tetris saya di sini, ini adalah apa yang menurut saya versi Tetris yang paling “sempurna”.



gameplay versi Tetris saya, mainkan sendiri di sini

Lebih Dari Kode

Saya tidak memulai dengan tujuan membuat klon Tetris sebagai proyek portofolio atau untuk mempelajari sesuatu yang baru. Saya membuatnya karena saya benar-benar membutuhkannya. Saat saya stres, entah itu minggu yang berat di tempat kerja atau hanya kehidupan yang menumpuk, Tetris adalah salah satu dari sedikit hal sehat yang benar-benar membantu saya mengatur ulang. Ketika saya stres saya cenderung makan banyak, yang menumpuk dari waktu ke waktu, jadi memiliki sesuatu yang bekerja tanpa efek samping adalah hal besar bagi saya. Hanya 10 sampai 30 menit menjatuhkan blok membuat otak saya terasa sedikit dibersihkan. Ini bukan hanya pelepas santai biasa bagi saya, ini adalah cara untuk memiliki sesuatu yang sederhana dan fokus untuk menuangkan stres itu. Ada bahkan beberapa penelitian menarik yang menunjukkan Tetris dapat memengaruhi bagaimana otak menangani ingatan intrusif dan stres, misalnya dalam eksperimen film trauma, pada orang yang dirawat setelah kecelakaan nyata, dan sebagai suplemen terapi dengan perubahan otak yang terukur. Saya tidak mencoba mengubah permainan ini menjadi pengobatan medis, tetapi menyenangkan melihat bahwa mungkin ada ilmu nyata yang mendukung apa yang sudah saya rasakan, bahwa Tetris benar-benar bisa membantu orang mengatasi stres.

Jadi saya mencari versi Tetris yang bagus untuk dimainkan, dan masalahnya adalah tidak ada yang benar-benar cocok dengan cara saya ingin bermain. Aplikasi mobile di App Store iOS penuh iklan dan mikrotransaksi. Versi web lagih atau terasa buruk di ponsel. Versi NES klasik bagus tapi membutuhkan emulator dan perangkat keras tambahan. Saya bahkan membeli Miyoo Mini berpikir itu akan menyelesaikan masalah, dan yang saya lakukan hanyalah membawa perangkat kedua hanya untuk memainkan Tetris. Pada suatu titik saya menyadari saya menghabiskan lebih banyak waktu mencari versi yang tepat daripada yang diperlukan untuk membuat satu sendiri.

Dengan browser modern, alat LLM seperti Claude Code, dan alur kerja seperti vibe coding, akhirnya terasa seperti waktu yang tepat untuk membangun Tetris yang saya inginkan sendiri. Cepat, minimal, tanpa iklan, tanpa akun, tanpa toko aplikasi. Hanya permainan browser yang bekerja di ponsel dan laptop saya dan yang sepenuhnya saya kendalikan. Dalam sekitar satu hari saya sudah punya versi yang bekerja, dan setelah sekitar seminggu kerja bolak-balik untuk membuatnya tangguh dan mendapatkan rasa yang tepat di desktop dan mobile, saya puas dengan itu.

Saya membagikannya karena jika ini membantu bahkan satu orang lain mengurangi stres seperti yang membantu saya, itu akan membuat saya sangat bahagia. Ini hal kecil, tetapi terkadang hal kecil itulah yang Anda butuhkan.

Fitur

  • Papan Tetris klasik 10x20
  • Kontrol keyboard penuh di Desktop dan kontrol gestur sentuh di Mobile
  • Randomizer tujuh-bag standar untuk bidak
  • Menahan bidak dan pratinjau bidak berikutnya
  • Proyeksi bidak hantu yang menunjukkan di mana bidak akan mendarat
  • Kurva kecepatan berbasis level dengan lock delay dinamis
  • Pencatatan skor, garis, level, dan skor tertinggi yang disimpan ke local storage
  • Perhitungan skor untuk soft drop dan hard drop
  • Menu dalam game dengan lanjutkan, mulai ulang, keluar, bisukan musik/SFX, dan tautan kode sumber
  • Animasi kilatan saat membersihkan garis dengan efek suara
  • Dukungan area aman iOS (Dynamic Island, notch, indikator home)
  • Dukungan offline melalui Service Worker (berfungsi tanpa internet setelah kunjungan pertama)
  • Dapat diinstal sebagai PWA (tambahkan ke layar utama di iOS/Android untuk pengalaman seperti aplikasi)

Kontrol

Desktop (Keyboard)

Aksi Tombol
Pindah atau A D
Turunan Lembut atau S
Turunan Keras Space
Putar searah jarum jam W X
Putar berlawanan jarum jam Z
Tahan C atau LShift
Menu Esc atau M
Kode Sumber G (layar judul)

Mobile (Sentuh)

Aksi Gestur
Pindah Usap kiri / kanan
Turunan Lembut Tahan dan seret ke bawah
Turunan Keras Jentikan cepat ke bawah
Putar searah jarum jam Ketuk
Tahan Jentikan cepat ke atas

Kurva Kesulitan

Kurva kecepatan dan lock delay di versi ini disesuaikan menggunakan penelitian tentang bagaimana permainan Tetris klasik dan modern menangani progresi kesulitan. Pada Tetris NES asli, gravitasi mencapai satu baris per frame pada level 29, yang menjadi terkenal sebagai “kill screen” di mana permainan menjadi pada dasarnya tidak dapat dimainkan oleh kebanyakan manusia. Itu sebenarnya bukan akhir yang dirancang, itu lebih merupakan efek samping dari perangkat keras dan bagaimana DAS (Delayed Auto Shift) terlalu lambat untuk mengikuti kecepatan jatuh. Willis Gibson membuktikan ini pada 2024 ketika dia melewatinya dan membuat permainan crash di level 157.



gameplay Tetris NES klasik 1989 (sumber asli)

Permainan modern seperti TGM (Tetris: The Grand Master) menyelesaikannya dengan cara berbeda. Alih-alih membuat bidak jatuh lebih cepat sampai permainan rusak, TGM membatasi gravitasi pada 20G (jatuh instan) dan kemudian memperketat jendela waktu lain seperti lock delay dan DAS untuk meningkatkan kesulitan. Standar Tetris Guideline menggunakan lock delay 500ms dengan hingga 15 reset gerakan, yang diikuti oleh versi ini. Penelitian tentang TGM2 Death mode dan TGM3 Shirase menunjukkan bahwa lantai praktis untuk permainan kompetitif adalah sekitar 250ms lock delay dengan DAS cepat, sementara apa pun di bawah 133ms adalah wilayah spesialis.

Berdasarkan semua itu, kurva kecepatan di sini membatasi gravitasi pada 33ms per baris (mirip dengan NES level 19 hingga 28) alih-alih menjadi jatuh instan, dan DAS berskala dari 170ms turun ke 100ms pada level yang lebih tinggi sehingga Anda dapat menavigasi papan selama lock delay. Tujuannya adalah membuat level tinggi terasa sangat cepat tetapi tetap adil, lebih mendekati bagaimana Tetris 99 dan TGM menangani kesulitan akhir permainan daripada pendekatan NES asli yang hanya membiarkan kecepatan mentah melampaui input Anda.

Di Balik Layar

  • Desain responsif dioptimalkan untuk Desktop dan Mobile (potret)
  • Sprite blok dan latar grid yang pra-render untuk performa
  • Menggunakan gaya Super Rotation System (SRS) untuk wall kicks saat rotasi bidak
  • Deteksi gestur sentuh berbasis kecepatan untuk pembedaan andal antara kibasan dan seret
  • Sistem waktu berbasis level untuk kecepatan gravitasi dan lock delay
  • Skor tertinggi dan pengaturan audio disimpan dengan localStorage
  • Sumber musik latar NmCCQxVBfyM
  • Sumber efek suara saat membersihkan garis UMViM2tHrOk
  • Proyek sepenuhnya open-source di bawah MIT License
  • Dibangun dengan alat AI berikut:

Pemikiran Akhir

Ini adalah salah satu proyek di mana motivasinya bukan teknis, melainkan pribadi. Saya hanya menginginkan versi Tetris yang bekerja sesuai dengan yang saya inginkan, tanpa iklan, tanpa perangkat keras tambahan, dan tanpa bergantung pada aplikasi orang lain yang bisa menghilang atau berubah kapan saja. Fakta bahwa saya bisa beralih dari ide menjadi permainan yang dipoles dalam sekitar satu minggu kerja bolak-balik menggunakan alat AI modern dan pengkodean suasana mengatakan banyak tentang posisi kita saat ini dalam pengembangan perangkat lunak.

Saya telah menggunakan versi ini hampir setiap hari sejak saya membuatnya, dan itu masih melakukan persis apa yang saya butuhkan. Ini membantu saya menjauh dari apa pun yang membuat saya stres, fokus pada sesuatu yang sederhana selama beberapa menit, dan kembali dengan kepala yang lebih jernih. Jika Anda mencobanya dan itu melakukan hal yang sama untuk Anda, itu adalah hasil terbaik yang bisa saya minta. Dan jika Anda ingin mem-fork-nya, mengubah kurva kecepatan, mengubah kontrol, atau membangun di atasnya, silakan. Jika Anda menemukan bug atau memiliki saran, silakan buka sebuah issue di Repositori GitHub. Itulah seluruh tujuan membuatnya bersifat sumber terbuka.