Jezne ptice ali angry birds so osvojile staro in mlado. So ena od prvih mobilnih aplikacij, ki je piscem, v tem primeru finskemu podjetju Rovio, prinesla bogastvo. Zanje so Finci že začeli govoriti, da so njihova nova Nokia. Prav cinično, saj je Nokia v težavah, ker ni dojela dometa in pomembnosti pametnih telefonov, Rovio pa bogat, ker je to dojel. V dveh letih so izdelali štiri aplikacije, posneli en film, napovedana je risana serija, na veliko pa prodajajo spominke s podobami jeznih ptic. Igre ves čas nadgrajujejo, tako da je vsakih nekaj mesecev na voljo skupek novih ravni, in čeprav gre za recikliranje dve leti stare zamisli, se ljudje ptic, kot kaže, ne naveličajo.

Zamisel igre je preprosta in edinstvena. Cilj je uničiti vse zelene pujse na določeni ravni, hkrati pa še čim več delov strukture iz lesa, stekla in kamna, v kateri se skrivajo. Ptice z unikatnimi sposobnostmi izstrelimo iz frače. Z napenjanjem frače damo ptici moč (hitrost leta), s spreminjanjem kota izstrelitve pa ji določimo krivuljo leta. Na vsaki ravni nam aplikacija dodeli število in vrsto ptic v določenem zaporedju. Cilj ni le uničiti pujse, ampak tudi čim več struktur okoli njih. Pri tem dobimo točke, ki se na koncu spremenijo v zvezdice. Ker vsak igralec želi na vsaki ravni doseči dovolj točk za tri zvezdice, ne neha igrati, dokler mu to ne uspe. A to ni razlog, da je igra tako zelo uspešna. Prej bi dejali, da je uspešna, ker se zdijo izstrelitve ptic, njihovi trki in podiranje struktur resnični. Kot mislimo, da bi se zgodilo, če bi v naravi vrgli kamen ali ga izstrelili iz frače v slabo stabilno strukturo, ki bi se po udarcu sesedla. Glede na to, da so pisci v igro vgradili osnove fizike (gibanje), to ne preseneča. Ptice ne letijo kar tja v tri dni, struktura se na trk odzove glede na hitrost in kot trka, vse pa ima podlago v Newtonovih zakonih.

Hitrost leta ptice

Piscem igre je uspelo vključiti realizem v igro z nekaj relativno preprostimi algoritmi. Igra je bila narejena za pametne mobilne telefone, ki nimajo procesorske moči, da bi sproti računali balistični let izstrelka v vsej njegovi večplastnosti in z upoštevanjem vseh spremenljivk (veter, temperatura, upor zraka). Namesto tega so vzeli osnovnošolske fizikalne formule gibanja, ki vsega tega ne upoštevajo, zato so izračuni poenostavljeni, vseeno pa je približek dovolj natančen.

Vzemimo najbolj osnovno rdečo majhno ptico, ki leti in na koncu trči v strukturo. Pri tem je podobna izstrelku, ki poleti iz topa, ali kamnu pri vodoravnem letu. Ko 'ptica' zapusti fračo, dobi hitrost in kot leta. Hitrost je sestavljena iz dveh komponent (nas so učili dveh vektorjev) – vertikalne in horizontalne hitrosti. Horizontalna hitrost je nespremenjena, saj nanjo med letom ne vpliva nobena sila. V naravi na horizontalno hitrost vpliva sila upora zraka, a to bi le zapletlo delovanje igre. Vertikalna hitrost pa je pod vplivom sile gravitacije, ki stalno vleče ptico proti tlom. Sila gravitacije je stalna, skoraj bi si upali trditi, da so programerji upoštevali vrednost deset metrov na kvadratno sekundo. Od tu naprej gre le še za računanje. Ne vemo, kolikšno hitrost so avtorji predvideli v trenutku, ko ptica zapusti fračo pri največji napetosti elastike. Vzemimo, da je njena vertikalna komponenta na začetku 'v' m/s in da nato v času pada. Po eni desetini sekunde (1/10 s) se zmanjša na (v-1) m/s, po dveh (v-2) m/s in tako naprej, dokler ne pade na nič. V tem trenutku je ptica na najvišji točki krivulje leta. Po tej točki vertikalna hitrost dobi negativen predznak, ptica pa začne padati proti tlom z vse večjo hitrostjo, saj nanjo deluje gravitacija (v=g*t).

Kako daleč bo letela?

V spodnjem levem kotu je ptica na frači. Njena hitrost je razdeljena na dve komponenti, večji delež ima vertikalna hitrost, manjši pa horizontalna. Mrežne črte predstavljajo eno desetino sekunde, rumene pike pa položaj ptice po vsakem koraku. Oblika krivulje leta je simetrična, leva stran je zrcalna desni, vidi pa se, da se vertikalna razdalja v času manjša, dokler ptica ne doseže najvišje višine, nato pa počasi spet narašča. Dodali smo še nekaj zaslonskih slik iz igre, na katerih se lepo vidijo krivulje leta.

Pot, ki jo ptica opravi, je odvisna od hitrosti in kota, pod katerim je poletela. Tudi v tem primeru imamo dve komponenti poti. Horizontalno razdaljo je preprosto izračunati, saj je zmnožek horizontalne hitrosti in časa leta. Težje je simulirati vertikalno razdaljo. To lahko naredimo z uporabo fizikalne formule ali pa tako, da algoritem 'riše' točke na grafikonu. V vsakem trenutku lahko z upoštevanjem poti, ki jo je ptica naredila v vertikalni in horizontalni smeri, izračunamo točko na grafikonu in dobimo krivuljo leta ptice. Ker gre pri igri za simulacijo realnosti na majhnem zaslonu, je to dovolj realistično, podatke grafikona pa lahko uporabi aplikacija za animacijo leta ptice. V prvem trenutku ptico pokaže na eni točki, v naslednjem pa že na naslednji.

Spet upoštevamo, da so koraki (točke) med seboj oddaljeni eno desetino sekunde (1/10 s). Da je račun preprostejši, upoštevajmo, da je hitrost ves korak (čas desetinke sekunde) enaka, čeprav se dejansko ves čas spreminja. Pot navzgor je tako v prvi desetinki sekunde v*1/10, v drugi (v-1)*1/10, v tretji (v-2)*1/10 in tako naprej, dokler vertikalna hitrost ne pade na ničlo in dobi negativen predznak. Hkrati izračunamo še razdaljo, ki jo je v teh korakih ptica naredila v horizontalni smeri, točke vnesemo na grafikon. Dovolj je, da izračunamo polovico krivulje leta, saj je druga polovica njena zrcalna podoba. Tako je, če upoštevate le osnovne zakonitosti vodoravnega leta.

Zanimivo bi bilo videti, kako so programerji porazdelili vertikalno in horizontalno komponento hitrosti oziroma ali so tudi tu upoštevali fiziko. Porazdelitev je odvisna od kota izstrelitve in vektorjev. Če je let strm, to pomeni, da večji delež hitrosti pripada vertikalni hitrosti in obratno, ko je let položnejši. Pa tudi da v prvem primeru ptica poleti višje in ne tako daleč, v drugem pa dlje in ne tako visoko. Dobimo tudi občutek, da so programerji algoritmu zapovedali, da ptica leti najdlje, če je kot izstrelitve okoli petinštirideset stopinj.

Moč izstrelitve

Bolj ko je elastika frače napeta, z večjo silo bo ta delovala na ptico, ko elastiko spustimo (elastika, s tem pa tudi ptica bosta poleteli z večjim pospeškom). S pomočjo fizikalnih formul in poznavanjem lastnosti snovi, iz katere je elastika, lahko silo zelo natančno izračunamo. Moč, ki jo elastika zagotovi, je sorazmerna z dolžino, do katere jo raztegnemo (Hookov zakon). Newton nam je dal formulo F=m*a, ki pravi, da je sila izstrelka enaka zmnožku teže izstrelka in pospeška, ki mu ga je v tem primeru 'dala' elastika. Povedano drugače, energija elastike je neposredno povezana s hitrostjo ptice. Faza izstrelitve je v igri hitra, tako da je nemogoče oceniti, ali algoritem upošteva omenjeni formuli. Ker je zaslon majhen, prst pa velik, ptico zelo redko izstrelimo z manj napeto elastiko, večinoma streljamo s polno močjo. Morda so na nekaj sto ravneh, ki jih je avtor teh vrstic preigral v zadnjih letih, tri ali štiri izstrelitve, kjer streljanje s polno močjo ne pride v poštev. Pa še to le takrat, ko iščete skrita jajca. Verjetno so programerji zato napisali preprostejši algoritem, ki ptici določi začetno hitrost glede na zmnožek razdalje premika elastike in neke konstante.

Moj mikro, maj 2012 | Jan Kosmač