Ang Aking Perpektong Tetris

GitHub Repo ng Proyekto



Ano Ito

Tetris ay isang maalamat na laro at isa na labis kong kinagigiliwan. Gustong-gusto ko talaga ang laro at nasisiyahan akong maglaro nito. Ito ay isang mahusay na pampawala 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 bersyon na ito ay hinango mula sa inspirasyon ng Play-Tetris, na may talagang maganda at madaling setup sa mobile gamit ang mga swipe-based na kontrol. Tingnan at laruin ang aking implementasyon ng Tetris dito, ito ang sa tingin ko ang pinaka-“perpektong” bersyon ng Tetris.



paglalaro ng aking bersyon ng tetris, laruin ito para sa iyo mismo DITO

Higit Pa sa Code

Hindi ako nagsimulang bumuo ng kopya ng Tetris bilang isang proyekto para sa portfolio o para matuto ng isang bagong bagay. Binuo ko ito dahil kailangan ko talaga nito. Kapag ako ay stressed, maging ito man ay dahil sa magulong linggo sa trabaho o dahil lang nag-iipon ang mga problema sa buhay, ang Tetris ay isa sa mga ilang malulusog na bagay na talaga namang nakatutulong sa akin na mag-reset. Kapag ako ay stressed madalas akong kumakain nang marami, na nagdaragdag sa paglipas ng panahon, kaya ang pagkakaroon ng isang bagay na gumagana nang walang anumang masamang epekto ay malaking bagay para sa akin. Sampung hanggang tatlumpung minuto lang ng pagbagsak ng mga bloke at pakiramdam ko ay parang nalilinis ng kaunti ang utak ko. Hindi lang ito basta kaswal na pagpapahinga para sa akin, ito ay isang paraan upang magkaroon ng isang bagay na simple at tutok kung saan mailalagay ko ang stress na iyon. May ilang magagandang pag-aaral na nagpapakita na ang Tetris ay maaaring makaapekto sa kung paano hinahandle ng utak ang mga intrusive na alaala at stress, halimbawa sa trauma film experiments, sa mga taong ginamot pagkatapos ng totoong aksidente, at bilang karagdagan sa therapy na may nasusukat na pagbabago sa utak. Hindi ko sinusubukan gawing medikal na paggamot ang larong ito, pero nakagagaan makita na maaaring may totoong siyensiya na sumusuporta sa nararamdaman ko na ang Tetris ay tunay na nakakatulong sa mga tao na harapin ang stress.

Kaya naghanap ako ng magandang bersyon ng Tetris na malalaro, at ang problema ay wala talagang tumutugma sa kung paano ko gustong maglaro. Puno ng mga ad at microtransactions ang mga mobile app sa iOS App Store. Ang mga web na bersyon naman ay laggy o hindi maganda ang pakiramdam sa telepono. Ang klasikong NES na bersyon ay maganda pero kailangan ng emulator at karagdagang hardware. Bumili pa nga ako ng Miyoo Mini na inakala kong sosolusyunan nito ang problema, at ang resulta ay nagtatagal lang ako ng pangalawang device para maglaro ng Tetris. Sa isang punto napagtanto ko na mas marami pa ang oras na ginugugol ko sa paghahanap ng tamang bersyon kaysa sa oras na gugugulin ko para lang gumawa ng isa.

Sa mga modernong browser, mga tool ng LLM tulad ng Claude Code, at mga workflow tulad ng vibe coding, sa wakas ay naramdaman kong tamang oras na para buuin ang Tetris na gusto ko. Mabilis, minimal, walang ad, walang account, walang app store. Isang browser game na gumagana sa telepono ko at laptop at ganap kong kontrolado. Sa halos isang araw mayroon na akong gumaganang bersyon, at pagkatapos ng halos isang linggo ng paunti-unting paggawa para gawing matibay at mahanap ang tamang pakiramdam sa parehong desktop at mobile, naging kontento ako rito.

Ibinabahagi ko ito dahil kung makakatulong ito kahit sa isang tao lamang na mabawasan ang stress gaya ng pagtulong nito sa akin, ikalulugod ko iyon. Maliit na bagay ito, pero kung minsan ang maliit na bagay ang eksaktong kailangan mo.

Mga Tampok

  • Klasikong 10x20 na board ng Tetris
  • Kumpletong kontrol sa keyboard sa Desktop at touch gesture na kontrol sa Mobile
  • Standard na seven-bag na randomizer ng piraso
  • Hold na piraso at preview ng susunod na piraso
  • Ghost piece projection na nagpapakita kung saan babagsak ang mga piraso
  • Level-based na speed curve na may dynamic na lock delay
  • Pagsubaybay ng score, lines, level, at high score na naitatago sa local storage
  • Soft drop at hard drop na pag-score
  • Pause menu na may resume, restart, at quit na mga opsyon
  • Line clear flash animation
  • Background music na may mute toggle (naiingatan ang estado)
  • Suporta sa iOS safe area (Dynamic Island, notch, home indicator)
  • Offline support via Service Worker (gumagana nang walang internet pagkatapos ng unang pagbisita)
  • Maaaring i-install bilang PWA (idagdag sa home screen sa iOS/Android para sa karanasang katulad-app)

Kontrol

Desktop (Keyboard)

Aksyon Mga Key
Ilipat o A D
Soft Drop o S
Hard Drop Space
I-ikot pakanan (CW) W X
I-ikot pakaliwa (CCW) Z
I-hold C o LShift
Patayin ang tunog (Mute) M
Pause Esc o P

Mobile (Touch)

Aksyon Galaw
Ilipat Swipe pakaliwa / pakanan
Soft Drop Hawakan at i-drag pababa
Hard Drop Mabilis na flick pababa
I-ikot pakanan (CW) Tap
I-hold Mabilis na flick pataas

Kurba ng Kahirapan

Ang speed curve at lock delay sa bersyon na ito ay na-tune gamit ang pananaliksik tungkol 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 kada frame sa level 29, na naging sikat na “kill screen” kung saan ang laro ay nagiging halos hindi na mapaglalaro para sa karamihan ng tao. Hindi ito talaga dinisenyo bilang wakas, mas naging side effect ito ng hardware at kung paano ang DAS (Delayed Auto Shift) ay masyadong mabagal para makasabay sa bilis ng pagbagsak. Pinatunayan ito ni Willis Gibson noong 2024 nang kanyang napagtagumpayan 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 nagsolusyon nito nang iba. Sa halip na basta padalasin ang pagbagsak ng mga piraso hanggang sa masira ang laro, nililimitahan ng TGM ang gravity sa 20G (instant drop) at pagkatapos ay pinapaliit ang mga timing window tulad ng lock delay at DAS para tumaas ang kahirapan. Ang Tetris Guideline na pamantayan ay gumagamit ng 500ms lock delay na may hanggang 15 move resets, na sinusunod ng bersyon na ito. Ang pananaliksik tungkol sa TGM2 Death mode at TGM3 Shirase ay nagpakita na ang praktikal na minimum para sa kompetitibong paglalaro ay nasa paligid ng 250ms na lock delay na may mabilis na DAS, habang ang anumang mas mababa sa 133ms ay para sa mga espesyalista.

Batay sa lahat ng ito, nililimitahan ng speed curve dito ang gravity sa 33ms kada row (kahawig ng NES levels 19 hanggang 28) sa halip na maging instant drop, at ang DAS ay nag-scale mula 170ms pababa hanggang 100ms sa mas mataas na mga level upang makagalaw ka sa board habang nasa lock delay. Ang layunin ay gawing napakabilis at brutal ang pakiramdam ng mataas na mga level ngunit patas pa rin, mas malapit sa kung paano hinahandle ng Tetris 99 at TGM ang endgame difficulty kaysa sa orihinal na paraan ng NES na hayaan lang na mangibabaw ang raw speed kaysa sa iyong input.

Sa Loob ng Sistema

  • Responsive na disenyo na na-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 pagkakaiba ng flick vs drag
  • Level-based na timing system para sa gravity speed at lock delay
  • High scores at mute state na naitatago gamit ang localStorage
  • Pinagmulan ng background music NmCCQxVBfyM
  • Ang proyekto ay ganap na open-source sa ilalim ng MIT License
  • Binuo gamit ang mga sumusunod na AI na kagamitan:

Pangwakas na Kaisipan

Isa ito sa mga proyektong ang motibasyon ay hindi teknikal, ito ay personal. Gusto ko lang talaga ng isang bersyon ng Tetris na gumagana kung paano ko gusto, walang ad, walang dagdag na hardware, at hindi nakadepende sa app ng iba na maaaring mawala o magbago anumang oras. Ang katotohanan na nakapunta ako mula sa ideya hanggang sa isang pulidong laro sa halos isang linggo ng paunti-unting paggawa gamit ang mga modernong AI tool at vibe coding ay nagsasabi nang marami tungkol sa kung nasaan na tayo ngayon sa pag-develop ng software.

Ginagamit ko ang bersyong ito halos araw-araw mula nang ginawa ko ito, at ginagawa pa rin nito eksakto ang kailangan kong gawin. Tinutulungan akong lumayo mula sa anumang nagpapabigat sa akin, magpokus sa isang simpleng bagay nang ilang minuto, at bumalik na mas malinaw ang isip. Kung susubukan mo ito at gagawin din nito iyon para sa iyo, iyon ang pinakamahusay na resulta na maaari kong hilingin. At kung gusto mong kopyahin at gumawa ng sarili mong bersyon, pinuhin ang kurba ng bilis, palitan ang mga kontrol, o magtayo ng karagdagan batay dito, sige lang. Kung makakita ka ng depekto o may mungkahi, malayang magbukas ng isyu sa repositorio. Iyon ang buong layunin ng paggawa nitong bukas na pinagkukunan.