Ang Aking Perpektong Tetris

GitHub Repo ng Proyekto



Ano Ito

Tetris ay isang maalamat na laro at isa na sobrang kinagigiliwan ko. Talagang mahal ko ang larong ito at nasisiyahan akong maglaro nito. Isa itong mahusay na paraan para magtanggal ng stress. Bilang isang masayang proyekto sa katapusan ng linggo, nagpasya akong buuin ang laro bilang isang browser game/app na idinisenyo para sa Parehong Desktop at Mobile, gamit ang mga prinsipyo ng vibe coding. Ang mobile na bahagi ng bersyong ito ay inspirado ng Play-Tetris, na may napakagandang mobile setup at mga swipe-based na kontrol. Tingnan at laruin ang aking implementasyon ng Tetris dito, ito ang sa tingin ko ang pinakap­erpektong bersyon ng Tetris.



paglalaro ng aking bersyon ng tetris, laruin ito mismo dito

Higit Pa sa Code

Hindi ako nagsimula para gumawa ng kopya ng Tetris bilang proyekto sa portfolio o para matuto ng isang bagay lang. Ginawa ko ito dahil talagang kailangan ko nito. Kapag ako ay naiinip o stressed, maging sanhi man ito ng magulong linggo sa trabaho o mga nagkakaipon na buhay, ang Tetris ay isa sa mga malulusog na bagay na tumutulong talaga sa akin na mag-reset. Kapag ako ay stressed madalas akong kumakain nang sobra, na dumadagdag sa pagdaan ng panahon, kaya ang pagkakaroon ng isang bagay na gumagana nang walang anumang masamang epekto ay malaking bagay para sa akin. Sampu hanggang tatlumpung minuto lang ng pagbagsak ng mga bloke at pakiramdam ko parang nalinis ng kaunti ang utak ko. Hindi lang ito basta casual na pagre-relax para sa akin, ito ay paraan para magkaroon ng isang simple at nakatuon na bagay na masasandalan para ibuhos ang stress. Mayroon pang magagandang pag-aaral na nagpapakita na ang Tetris ay maaaring makaapekto sa kung paano hinahandle ng utak ang mga intrusive memories at stress, halimbawa sa trauma film experiments, sa mga taong ginamot pagkatapos ng totoong aksidente, at bilang supplement sa therapy na may nasusukat na pagbabago sa utak. Hindi ko sinasabing gawing medikal na paggamot ang larong ito, pero nakakatuwang makita na may tunay na agham na sumusuporta sa nararamdaman ko na ang Tetris ay talagang makatutulong sa mga tao na humandle ng stress.

Kaya naghanap ako ng magandang bersyon ng Tetris na paglalaruan, at ang problema ay wala sa mga available ang akma sa kung paano ako gustong maglaro. Ang mga mobile app sa iOS App Store ay puno ng mga ad at microtransactions. Ang mga web version ay laggy o nakakabagot sa phone. Maganda ang klasikong NES version pero kailangan ng emulator at dagdag na hardware. Bumili pa nga ako ng Miyoo Mini iniisip na malulutas nito ang problema, at ang katapusan ay nagdadala lang ako ng pangalawang device para maglaro ng Tetris. Sa isang punto napagtanto ko na mas maraming oras akong ginugugol sa paghahanap ng tamang bersyon kaysa sa oras na gugugulin ko para lang gumawa ng sarili kong bersyon.

Sa modernong mga browser, mga tool ng LLM tulad ng Claude Code, at workflows tulad ng vibe coding, pakiramdam ko dumating na ang tamang panahon para buuin ang Tetris na gusto ko. Mabilis, minimal, walang ads, walang accounts, walang app store. Isang browser game na gumagana sa aking telepono at laptop at na buong kontrol ko. Sa humigit-kumulang isang araw may gumaganang bersyon na ako, at pagkatapos ng halos isang linggo ng paunti-unting pag-aayos para gawing matatag at ayusin ang pakiramdam sa parehong desktop at mobile, nasiyahan na ako.

Ibinabahagi ko ito dahil kung makatutulong man ito kahit sa isang tao na maibsan ang stress tulad ng pagtulong nito sa akin, magiging napakasaya sa akin iyon. Maliit lang ito, pero kung minsan ang isang maliit na bagay ang eksaktong kailangan mo.

Mga Tampok

  • Klasikong 10x20 na board ng Tetris
  • Buong keyboard na kontrol sa Desktop at touch gesture na kontrol sa Mobile
  • Standard seven-bag na randomizer ng piraso
  • Hold na piraso at preview ng susunod na piraso
  • Ghost piece projection na nagpapakita kung saan tatapakan ang mga piraso
  • Level-based na speed curve na may dynamic na lock delay
  • Score, lines, level, at high score na sinusubaybayan at iniimbak sa local storage
  • Soft drop at hard drop na pag-scoran
  • In-game na menu na may resume, restart, quit, mute music/SFX, at link sa source code
  • Line clear na flash animation na may sound effect
  • Suporta sa iOS safe area (Dynamic Island, notch, home indicator)
  • Offline na suporta via Service Worker (gumagana nang walang internet pagkatapos ng unang bisita)
  • Maaaring i-install bilang PWA (idagdag sa home screen sa iOS/Android para sa app-like na karanasan)

Mga Kontrol

Desktop (Paggamit ng Keyboard)

Aksyon Mga Key
Ilipat o A D
Dahanang Pagbagsak o S
Mabilis na Pagbagsak Space
Iikot Pakanan W X
Iikot Pakaliwa Z
Hold C o LShift
Menu Esc o M
Source Code G (title screen)

Mobile (Paghipo)

Aksyon Galaw / Gesture
Ilipat Swipe kaliwa / kanan
Dahanang Pagbagsak Hawakan at i-drag pababa
Mabilis na Pagbagsak Mabilis na flick pababa
Iikot Pakanan Tap
Hold Mabilis na flick pataas

Kurba ng Kahirapan

Ang speed curve at lock delay sa bersyong ito ay na-tune gamit ang mga pananaliksik sa kung paano hinahandle ng klasik at modernong mga laro ng Tetris ang pag-unlad ng kahirapan. Sa orihinal na NES Tetris, umaabot ang gravity sa isang row bawat frame sa level 29, na naging tanyag na “kill screen” kung saan nagiging halos hindi na malalaro ang laro para sa karamihan ng mga tao. Hindi iyon talagang sadyang disenyo ng pagtatapos; isa lang itong side effect ng hardware at kung paano masyadong mabagal ang DAS (Delayed Auto Shift) para makasabay sa bilis ng pagbaba. Napagtunayan ito ni Willis Gibson noong 2024 nang mapagtagumpayan niya ito at napabagsak ang laro sa level 157.



paglalaro ng klasikong 1989 nes tetris (orihinal na pinagmulan)

Ang mga modernong laro tulad ng TGM (Tetris: The Grand Master) ay nag-ayos nito ng iba. Sa halip na pabayaan na lang tumulung-tulugan ang bilis ng pagbaba hanggang masira ang laro, nililimitahan ng TGM ang gravity sa 20G (instant drop) at pagkatapos pinapaliit ang iba pang timing windows tulad ng lock delay at DAS para tumaas ang kahirapan. Ang Tetris Guideline standard ay gumagamit ng 500ms na lock delay na may hanggang 15 move resets, na sinusundan ng bersyong ito. Ang pagsasaliksik sa TGM2 Death mode at TGM3 Shirase ay nagpakita na ang praktikal na pinakamababa para sa competitive play ay nasa paligid ng 250ms ng lock delay na may mabilis na DAS, habang ang anumang mas mababa sa 133ms ay para na sa mga espesyalista.

Batay sa lahat ng ito, nililimitahan ng speed curve dito ang gravity sa 33ms bawat row (kahalintulad ng NES levels 19 hanggang 28) sa halip na mag-instant drop, at ang DAS ay nagsusukat mula 170ms pababa sa 100ms sa mas mataas na mga level para makapaglibot ka sa board habang nasa lock delay. Ang layunin ay gawing napakabilis ngunit patas ang pakiramdam ng mga mataas na level, mas malapit sa kung paano hinahandle ng Tetris 99 at TGM ang endgame difficulty kaysa sa orihinal na NES na pamamaraan ng basta hayaan ang raw speed na malampasan ang iyong mga input.

Sa Likod ng Sistema

  • Responsive na disenyo na in-optimize para sa parehong Desktop at Mobile (portrait)
  • Pre-rendered na block sprites at grid background para sa performance
  • Gumagamit ng Super Rotation System (SRS) style wall kicks para sa pag-ikot ng piraso
  • Velocity-based na touch gesture detection para sa maaasahang pagkilala ng flick laban sa drag
  • Level-based na timing system para sa gravity speed at lock delay
  • High scores at mga audio setting na iniimbak gamit ang localStorage
  • Pinagmulan ng background music NmCCQxVBfyM
  • Pinagmulan ng line clear sound effect UMViM2tHrOk
  • Buong proyekto ay open-source sa ilalim ng MIT License
  • Binuo gamit ang mga sumusunod na AI tools:

Pangwakas na Mga Kaisipan

Isa ito sa mga proyekto kung saan ang motibasyon ay hindi teknikal, kundi personal. Gusto ko lang ng bersyon ng Tetris na gumagana ayon sa gusto ko, walang mga patalastas, walang dagdag na hardware, at hindi umaasa sa app ng iba na maaaring mawala o magbago anumang oras. Ang katotohanan na nagawa kong magmula sa ideya hanggang sa isang pinakinis na laro sa mga humigit-kumulang isang linggo ng paminsan-minsang paggawa gamit ang mga modernong tool ng AI at pagkodigo batay sa vibe ay nagsasabi ng marami tungkol sa kinalalagyan natin ngayon sa pag-unlad ng software.

Halos araw-araw ko nang ginagamit ang bersyong ito mula nang gawin ko ito, at ginagawa pa rin nito nang eksakto ang kailangan kong gawin. Tinutulungan akong lumayo mula sa anumang nagpapabahala sa akin, magtuon sa isang simpleng bagay nang ilang minuto, at bumalik na may mas malinaw na isip. Kung susubukan mo ito at gagawin din nito iyon para sa iyo, iyon ang pinakamagandang kinalabasan na maaari kong hilingin. At kung gusto mong kunin ang sarili mong kopya (fork) nito, baguhin ang curve ng bilis, palitan ang mga kontrol, o magtayo sa ibabaw nito, gawin mo lang. Kung makakita ka ng bug o may mungkahi, malayang magbukas ng isyu sa repositoryo ng GitHub. Iyon ang buong punto ng paggawa nitong bukás na pinagmulan.