Clasa a IX-a a
fost pentru mine o experienţă cu adevărat nouă. Nu numai că am cunoscut un alt
colectiv, dar şi sarcinile de lucru pe care a trebuit să le fac au fost
diferite faţă de cele din gimnaziu. Dintre toate, cel mai mult mi-a plăcut proiectul
Game Creator de la disciplina Informatică.
Ce a trebuit
să facem?
Un joc
folosindu-ne de cunoştiinţele noastre de programare dobândite pe parcursul
clasei a IX-a. Nu am fost limitaţi doar la acestea, ci am putut folosi şi
librăriile grafice graphics.h sau SDL. Cea mai importantă condiţie a fost ca
jocul nostru să fie făcut în CodeBlocks, în limbajul C++.
Care a fost
reacţia mea?
Eu am fost
foarte vesel la auzul acestui proiect. Sunt gamer de când mă ştiu şi totdeauna
mi-am dorit să fac un joc. Am făcut unul în gimnaziu în limbajul Pascal care
genera un număr random şi tu trebuia să îl ghiceşti. Am fost foarte mândru de
acel joc, dar îmi doream să fac unul mai mare, cu grafică, meniu şi gameplay
mai complex.
Ce echipă am
avut?
În echipă am
fost trei oameni. Eu, Sergiu Iacob si Şerban Cobzac. Ne-am unit sub numele de
TriPix.
Ce joc am
făcut?
Iniţial nu am
avut nici o idee de joc. Eu mă gândisem la un RPG text-based care să aducă un
tribut primului meu joc. Dacă ar fi luat viaţă, în acel joc trebuia să fii un
agent care avea o anumită clasă şi un device care permitea reducerea
evenimentelor reale la ghicirea de numere. De exemplu puteai descuia o uşă
încuiată prin ghicirea unui număr sau te puteai feri de un glonţ ghicind un
număr care modifica traiectoria, etc… Deşi sună spectaculos, să nu vă gândiţi
că ar fi avut o grafică prea spectaculoasă. Totul ar fi fost în mod text, iar
progresul în joc s-ar fi bazat prin alegerea unei anumite decizii dintr-un grup
de posibilităţi (adică: Pe ecran se afişa: “Eşti în faţa unei uşi. 1- deschide
uşa 2- întoarce-te” şi jucătorul tasta 1 sau 2 în funcţie de decizie). Accentul
s-ar fi pus pe atmosferă (deja mă pregătisem cu un playlist), poveste şi pe
minigame-ul de ghicit (numărul suferea modificări pe parcurs, iar jucătorul
trebuia să cumpere date despre număr sau să îşi folosească abilităţile
specifice clasei pentru a-l ghici), însă genul acesta de joc nu prinde la
publicul de rând. Deşi iniţial am vrut să facem asta, ulterior ne-am răzgândit
şi am hotărât să facem alt joc. Intr-o zi ieşeam de la şcoală şi ne gândeam cu
toţii de zor ce joc să facem, asta până când Sergiu ne-a arătat un joc de pe
telefonul lui numit Mole! Mole! Mole!. Tot ce trebuia să faci în acel joc era
să loveşti cârtiţe în cap atunci când acestea apar pe ecran. Jocul ne-a picat
cu tronc şi am hotărât să facem un joc asemănător. Aşa a luat fiinţă în mintea
noastră SmashTheMole.
Care e
povestea jocului SmashTheMole?
În SmashTheMole, eşti un fermier a cărui grădină a
fost atacată de o invazie de cârtiţe. Acestea au creat în grădina ta o reţea de
4x5 găuri din care îşi scot capul ocazional ca să îţi facă în ciudă. Enervat la
culme, tu trebuie să salvezi cât mai multe legume lovind cârtiţele în cap de
fiecare dată când ele îndrăznesc să iasă.
Ce trebuie
să faci în SmashTheMole?
În SmashTheMole controlezi un ciocan cu care poţi lovi
lucrurile de pe ecran, căci, pe lângă cârtiţe, mai apar şi diferite
power-up-uri de timp sau de puncte. Scopul tău este salvezi cât mai multe
legume (adică să faci puncte), într-un interval de timp care iniţial este de 35
de secunde, dar care creşte în funcţie de cât de bine te descurci. De asemea,
ciţibuşare cum le ştim, cârtiţele vor profita de frenezia ta de a apăsa tot ce
apare pe ecran şi, ocazional, vor mai ieşi din gropi şi cu câte o bombă ataşată
de ele (hmm…suicide moles?). Nu îţi doresc să le arăţi partea cea mai ascuţită
a ciocanului tău pentru că şi ele îţi vor arăta o penalizare de timp şi de
legume. În plus, cârtiţele nu sunt singurele ce vor să fure legume din grădina
ta! Până şi Chuck Norris vrea asta! De aceea, el va apărea ocazional pe ecran,
iar dacă îl loveşti vei primi mult timp şi puncte bonus. Datorită faptului că
el stă puţin pe ecran, a fost gândit să îţi strice combo-ul în cazul în care
eşti foarte bun şi dai click pe el fix în momentul în care dispare. Că tot veni
vorba, pe parcursul jocului, dacă loveşti mai multe cârtiţe consecutiv, vei
începe să construieşti un combo care te va răsplăti cu puncte bonus în funcţie
de lungimea lui (de la Combo x 2 poţi ajunge, dacă eşti bun, la Combo-ul maxim
de x30).
Ce sarcini a
avut fiecare?
Eu m-am ocupat de poveste, game design, conceperea
unui algoritm iniţial de funcţionare, finisări de gamplay şi organizare (eu am
fost şeful). Am făcut liste cu ce am făcut/ce mai trebuie făcut, precum şi
prioritizare de sarcini. Sergiu a implementat grafica şi a mai “şlefuit”
algoritmul meu. Şerban a făcut partea audio-grafică. Deşi el nu a implementat, a făcut o
treabă excelentă cu grafica jocului şi nu de puţine ori a trebuit să refacă
anumite elemente grafice la dorinţa mea sau a lui Sergiu :D .
Când/cum am
lucrat?
Ne-am apucat târziu de joc (cam cu 10 zile înainte de
deadline). Eram cu toţii puţin demoralizaţi să auzim că alţii aproape şi-au
terminat jocul şi noi nici nu ne-am apucat, dar eu încercam să ridic moralul cu
o glumiţă pe care o ziceam de fiecare când auzeam întrebarea:
-“Va-ti apucat de joc? Cum staţi?”
-“Aaaa…păi noi l-am terminat de mult. L-am facut şi în
DirectX…”, le răspundeam eu surâzător.
În cele două week-end-uri pe care le-am avut la
dispoziţie ne-am întâlnit la mine acasă şi am lucrat intens, Şerban în
Photoshop la partea grafică şi eu cu Sergiu la programare. În restul săptămânii
fiecare îşi
făcea treaba lui, iar în ultimul week-end am reunit funcţionalitatea cu
grafica. Duminică am făcut partea audio, iar jocul l-am terminat triumfători
luni seara, terminaţi de oboseală.
Ce probleme
am întâmpinat?
Pe lângă criza de timp, am întâmpinat şi alte probleme
pe parcursul programării. Cele mai notabile a fost afişarea pe ecran (funcţia
de afişare nu putea afişa date int, aşa că a trebuit să le convertim manual în
şiruri de caractere), dispariţia cârtiţelor de pe ecran (iniţial, dificultatea
jocului creştea pe măsură ce trecea timpul şi aceasta era definită prin numărul
de cârtiţe ce apar, intervalul de apariţie şi intervalul în care stăteau pe
ecran, valori ce se modificau pe parcursul trecerii timpului şi variau destul
de mult. Asta determina la un moment dat o dispariţie instantanee a cârtiţelor
pe la finalul jocului, ceea ce ne-a scos peri albi. Până la urmă am dat valori
mai apropiate acelor timpi si am rezolvat problema), precum şi un bug in-game (care
făcea ca jucătorul să îşi ia crash în runda a III-a de joc, asta dacă juca
bine. Într-un final, am mai renunţat la o parte din sunetele pentru Chuck şi am
făcut o serie de reiniţializări care ne-au scăpat de acest bug, sper).
Cum a fost
munca în echipă?
Munca în echipă a mers bine. Fiecare şi-a făcut treaba
într-un mod corezpunzător, fără întârzieri. Mi-a făcut o plăcere deosebită să
lucrez în echipă cu Sergiu şi cu Şerban. Toţi trei fire perfecţioniste, asta
ne-a determinat ca într-un scurt timp să realizăm un joc care, în opinia
noastră, este foarte bun. Au mai fost şi idei în contradictoriu, mai ales între
mine şi Sergiu. Cea mai mare a fost aceea de a folosi folosi o rezoluţie
stabilă ( părerea mea) VS una variabilă în funcţie de rezoluţia ecranului (
părerea lui Sergiu). Până la urmă am făcut cu o rezoluţie stabilă, asta în
momentul în care Sergiu a înţeles, din explicaţiile mele, că nu poţi să
deformezi şi imaginile în funcţie rezoluţie, ceea ce ar fi putut determina o
deformare a graficii.
Cum a fost
la prezentare?
Prezentarea a fost în regulă. Aceasta s-a împărţit pe
două părţi: prezentarea jocului şi prezentarea codului. La prezentarea jocului
este evident ce am făcut, iar la partea de cod am prezentat cele mai importante
funcţii din program: main(), meniu(), intro(), joc(), dategen(), punecursor(),
gen() şi elim(). Nemulţumirea audienţei noastre a fost doar aceea că am preluat
anumite elemente grafice sau audio din alte părţi ( ca de exemplu: sunetele
care se aud atunci când Chuck este lovit sunt preluate de la un anouncer de
Heroes of Newerth făcut cu sprijinul inegalabilului actor vocal John Saint John,
care face vocea lui Duke Nukem în jocurile Duke Nukem sau vocea lui Axe, Kunka
si Faceless Void din Dota 2). Acum, dacă suntem cârcotaşi, şi alţii au preluat
elemente grafice din alte părţi, dar domnul profesor avea dreptate: e păcat să
ne distrugem munca cu elemente audio&grafice care nu sunt ale noastre şi
puse în joc fără nici o legătură…
Ce impact a
avut acest proiect asupa dezvoltării mele personale?
Pe lângă
faptul că am reuşit să mă împrietenesc mai bine cu membrii echipei mele, s-a
trezit în mine o dorinţă arzătoare de a mai face şi alte jocuri. Am în minte
câteva idei, deşi jocurile sunt simple în aparenţă, dar sunt un bun exerciţiu
de a mai exersa lucrul cu librăria SDL. De asemenea, am realizat că mai am
anumite probleme la capitolul “ascultare de opinii”.
Ce impact a
avut acest proiect asupa dezvoltării mele profesionale?
Acest proiect mi-a îndeplinit un vis din
copilărie! A fost o ocazie excelentă în care am putut să îmi testez
capacităţile de game design şi mă gândesc serios să urmez o cale în acest
domeniu.
Awesome! Dar
întrebarea cea mai importantă rămâne: cum mă pot juca şi eu jocul vostru?
Îl poţi
descărca de aici: http://www1.datafilehost.com/d/a3d408a8
, peste care aplici patch-ul următor: http://www1.datafilehost.com/d/557a0225
. Ai grijă să debifezi opţiunea de sub download atunci când descarci şi spor la
salvat de legume!