Tetris Yangu Kamili
Hii Ni Nini
Tetris ni mchezo wa hadithi na mmoja ninaoufurahia sana. Ninapenda mchezo huo sana na kuufurahia kuucheza. Ni njia nzuri ya kupunguza msongo wa mawazo. Kwa mradi wa wikendi wa kufurahisha, niliamua kujenga mchezo kama mchezo/appen ya kivinjari iliyoundwa kwa ajili ya Kompyuta na Simu, nikitumia kanuni za vibe coding. Sehemu ya simu ya toleo hili ilitolewa msukumo kutoka kwa Play-Tetris, ambayo ina mpangilio mzuri wa simu na udhibiti unaotegemea swipe. Angalia na ucheze utekelezaji wangu wa Tetris hapa, ni kile ninachodhani ni toleo “kamili” la Tetris.
Zaidi ya Msimbo
Sikuanzishi kujenga nakala ya Tetris kama mradi wa cheti au kujifunza kitu kipya. Niliijenga kwa sababu nilihitaji kweli. Ninapokuwa na msongo wa mawazo, iwe ni wiki ngumu kazini au maisha yanapojizidisha, Tetris ni mojawapo ya vitu vichache vya kiafya vinavyonisaidia kunirekebisha. Ninapokuwa na msongo kawaida hulia kula sana, ambacho huongeza kwa muda, kwa hivyo kuwa na kitu kinachofanya kazi bila madhara ni jambo kubwa kwangu. Dakika 10 hadi 30 tu za kuangusha vitufe na ubongo wangu unahisi kama umeoshwa kidogo. Si tu kutulia kwa kawaida kwangu, ni njia ya kuwa na kitu rahisi na chenye lengo cha kumwaga msongo huo ndani yake. Kuna hata utafiti wa kuvutia unaonyesha Tetris inaweza kuathiri jinsi ubongo unavyoshughulikia kumbukumbu zinazoingilia na msongo, kwa mfano katika majaribio ya filamu za jeraha, kwa watu waliotibiwa baada ya ajali halisi, na kama nyongeza kwa tiba yenye mabadiliko yanayopimika ya ubongo. Siendi kugeuza mchezo huu kuwa matibabu ya kitabibu, lakini ni baridi kuona kwamba kuna sayansi halisi inayoweza kuunga mkono kile nilichojisikia tayari, kwamba Tetris inaweza kwa kweli kumsaidia mtu kushughulikia msongo.
Hivyo nilitafuta toleo nzuri la Tetris la kucheza, na tatizo lilikuwa hakuna kitu kilichokaa sawa na jinsi nilivyotaka kuicheza. Programu za simu kwenye duka la iOS zinajunkwa kwa matangazo na ununuzi mdogo. Matoleo ya wavuti yalikuwa yenye kuchelewa au yalihisi mabaya kwenye simu. Toleo la NES la jadi ni zuri lakini linahitaji emulator na vifaa vya ziada. Hata nilinunua Miyoo Mini nikidhani lingetatua tatizo, na yote niliyofanya ni kubeba kifaa cha pili tu kucheza Tetris. Kwa wakati fulani nilitambua nilikuwa nakunywa muda zaidi kutafuta toleo sahihi kuliko ungetumia kujenga moja.
Kwa vivinjari vya kisasa, zana za LLM kama Claude Code, na mitiririko kama vibe coding, hatimaye ilihisi kama wakati mzuri kujenga Tetris niliyotaka mwenyewe. Haraka, minimal, bila matangazo, bila akaunti, hakuna duka la programu. Mchezo wa kivinjari tu unaofanya kazi kwenye simu yangu na kompyuta yangu na ninaudhibiti kabisa. Katika takriban siku mmoja nilikuwa na toleo linalofanya kazi, na baada ya takriban wiki moja ya kazi mara kwa mara ili kulifanya imara na kupata hisia sahihi kwenye pande zote za kompyuta na simu, nilifurahi nacho.
Ninashiriki kwa sababu kama itasaidia hata mtu mmoja tu kupunguza msongo kwa njia inayonisaidia mimi, hiyo itanifanya nifurahi sana. Ni jambo dogo, lakini wakati mwingine jambo dogo ndilo hasa unalohitaji.
Vipengele
- Bodi ya Tetris ya jadi 10x20
- Udhibiti kamili wa kinanda kwenye Kompyuta na udhibiti wa mguso kwa Simu
- Randomizer ya vipande ya mkoba wa saba wa kawaida
- Kushikilia kipande na onyesho la kipande kinachofuata
- Uonyesho wa kipande cha roho unaoonyesha wapi vipande vitakuwekwa
- Mchoro wa kasi kwa ngazi na ucheleweshaji wa kufunga unaobadilika
- Ufuatiliaji wa alama, mistari, ngazi, na alama ya juu ulihifadhiwa katika hifadhi ya ndani
- Alama za kuangusha laini (soft drop) na kuangusha kali (hard drop) na kukadiria alama
- Menyu ndani ya mchezo yenye endelea, anza upya, toka, kimya muziki/SFX, na kiungo cha msimbo wa chanzo
- Uhamasishaji wa mwanga wa kufuta laini na athari ya sauti
- Msaada wa eneo salama la iOS (Dynamic Island, notchi, kiashirio cha nyumbani)
- Msaada wa kazi bila mtandao kupitia Service Worker (inafanya kazi bila intaneti baada ya ziara ya kwanza)
- Inaweza kusanikishwa kama PWA (ongeza kwenye skrini ya nyumbani kwenye iOS/Android kwa uzoefu wa aina ya app)
Udhibiti
Kompyuta (Kinanda)
| Kitendo | Funguo |
|---|---|
| Sogeza | ← → or A D |
| Kuangusha Polepole | ↓ or S |
| Kuangusha Kali | Space |
| Zungusha (kwa mwelekeo wa saa) | ↑ W X |
| Zungusha (kinyume cha saa) | Z |
| Shikilia | C or LShift |
| Menyu | Esc or M |
| Chanzo la Msimbo | G (skrini ya kichwa) |
Simu (Gusa)
| Kitendo | Ishara |
|---|---|
| Sogeza | Vuta kushoto / kulia |
| Kuangusha Polepole | Shikilia na vuta chini |
| Kuangusha Kali | Piga kwa haraka chini |
| Zungusha kwa saa | Gusa |
| Shikilia | Piga kwa haraka juu |
Mwinuko wa Ugumu
Mchoro wa kasi na ucheleweshaji wa kufunga katika toleo hili ulikuwa umetengenezwa kwa kutumia utafiti jinsi michezo ya Tetris ya jadi na ya kisasa zinavyoshughulikia maendeleo ya ugumu. Katika Tetris ya NES ya awali, mvuto unafikia safu moja kwa fremu kwenye ngazi ya 29, ambayo ikawa inajulikana kama “skrini ya kuua” ambapo mchezo unakuwa karibu hauchezeki kwa watu wengi. Hiyo haikuwa kweli tamati iliyopangwa, ilikuwa athari ya pili ya vifaa na jinsi DAS (Delayed Auto Shift) ilivyokuwa polepole mno kushindana na kasi ya kuangusha. Willis Gibson alithibitisha hili mwaka 2024 alipopita hilo na kuliangusha mchezo kwenye ngazi ya 157 (https://apnews.com/article/tetris-win-kill-screen-blue-scuti-willis-gibson-df9325c62d42292e854cadb54d8f4cb3).
Michezo ya kisasa kama TGM (Tetris: The Grand Master) ilitatua hili kwa njia tofauti. Badala ya kufanya vipande vianguke tu kwa haraka hadi mchezo uvunjike, TGM inazuia mvuto kwa 20G (kuanguka mara moja) na kisha inafanya mabadiliko kwenye dirisha zingine za muda kama ucheleweshaji wa kufunga na DAS ili kuongeza ugumu. Kiwango cha Tetris Guideline kinatumia ucheleweshaji wa kufunga wa 500ms na hadi urejesho wa harakati 15, ambacho toleo hili linafuata. Utafiti wa TGM2 Death mode na TGM3 Shirase ulionyesha kuwa sakafu ya vitendo kwa mchezo wa ushindani ni takriban 250ms ya ucheleweshaji wa kufunga kwa DAS ya haraka, wakati chochote chini ya 133ms ni kwa maalumu.
Kulingana na haya yote, mchoro wa kasi hapa unaweka ukomo wa mvuto kwa 33ms kwa kila safu (sawa na ngazi za NES 19 hadi 28) badala ya kwenda kwa kuanguka mara moja, na DAS inapunguzwa kutoka 170ms hadi 100ms kwenye ngazi za juu ili uweze kusafiri bodini wakati wa ucheleweshaji wa kufunga. Lengo lilikuwa kufanya ngazi za juu ziwe za haraka kwa ukatili lakini bado zisiwe za hatia, karibu na jinsi Tetris 99 na TGM zinavyoshughulikia ugumu wa mwisho wa mchezo badala ya mbinu ya NES ya awali ya kuruhusu kasi ghafi kushinda utoaji wako.
Ndani ya Mifumo
- Muundo unaozibadilika ulioboreshwa kwa Kompyuta na Simu (mhusika wima)
- Sprites za vitufe zilizochorwa mapema na nyuma ya gridi kwa utendaji
- Inatumia Super Rotation System (SRS) mtindo wa “wall kicks” kwa kuzungusha vipande
- Ugunduzi wa ishara za mguso unaotegemea kasi kwa utofautishaji wa kusukuma haraka dhidi ya kuvuta
- Mfumo wa muda unaotegemea ngazi kwa kasi ya mvuto na ucheleweshaji wa kufunga
- Alama za juu na mipangilio ya sauti zimehifadhiwa na
localStorage - Chanzo cha muziki wa nyuma NmCCQxVBfyM
- Chanzo cha athari ya sauti ya kufuta laini UMViM2tHrOk
- Mradi ni wa chanzo wazi kabisa chini ya Leseni ya MIT
- Umejengwa kwa kutumia zana za AI zifuatazo:
- Claude Code CLI - kuandika msimbo / maendeleo
- Gemini CLI - kuandika msimbo / maendeleo
- Cha CLI - kuandika msimbo na uandishi
- xAI Grok - nembo na ikoni
- Perplexity - kutafuta bug
- Google Search - kutafuta SVGs na mali nyingine
- YouTube + yt-dlp - kupata klipu za sauti
- FFmpeg - kuhariri faili za sauti
Mawazo ya Mwisho
Huu alikuwa mmoja wa miradi ile ambapo motisha haukuwa kiufundi, bali ulikuwa wa kibinafsi. Nilitaka tu toleo la Tetris lililofanya kazi kwa jinsi nilivyotaka, bila matangazo, bila vifaa vya ziada, na bila kutegemea programu ya mtu mwingine ambayo inaweza kutoweka au kubadilika wakati wowote. Ukweli kwamba niliweza kutoka kwa wazo hadi mchezo uliokamilika kwa takriban wiki moja ya kazi ya mara kwa mara nikitumia zana za kisasa za akili bandia na kodishaji kwa mtazamo unasema mengi kuhusu tulipo kwa sasa katika maendeleo ya programu.
Nimekuwa nikitumia toleo hili karibu kila siku tangu niliiunda, na bado linafanya hasa kile ninachohitaji. Linasaidia nikomeke mbali na kile kinachoniletea msongo, nikilenga kitu rahisi kwa dakika chache, na kurudi nikiwa na akili iliyo wazi zaidi. Ukijaribu na ikakufanyia vivyo hivyo, hilo ndilo matokeo bora ningeweza kuomba. Na ukitaka kuunda tawi yake, kurekebisha mchororo wa kasi, kubadilisha udhibiti, au kujenga juu yake, endelea. Ikiwa utakuta hitilafu au una pendekezo, jisikie huru kufungua tatizo kwenye hifadhi ya GitHub. Hilo ndilo lengo kuu la kuifanya chanzo wazi.