Kako vam Google analitika može pomoći da poboljšate svoju igru

Informacije koje dobijete od Google analitike će vam biti od koristi za poboljšanje određenih aspekata igre, uklanjanje grešaka, ali i za ispitivanje tržišta.

Nemanja Bondžulić - 8. Februar, 2016.

Za vreme rada na igri SuperVerse bio nam je potreban način da pratimo šta se događa u igri – da možemo da vidimo šta igrači rade, kako koriste određene svemirske brodove i oružja, koje opcije najčešće biraju, koji hardver koriste za igranje, na kojim rezolucijama ekrana, verzijama operativnog sistema i dr. Ovakve informacije će nam biti od koristi za poboljšanje određenih aspekata igre, uklanjanje grešaka, ali i za ispitivanje tržišta.

Naravno, trebalo nam je tehničko rešenje i izbor je pao na tri mogućnosti:

Prve dve opcije su se činile skuplje ili bi iziskivale više vremena. Umesto toga smo resili da probamo da iskoristimo Google Analytics i pomoću njega pratimo sve informacije iz igre koje nas zanimaju.

Screen Shot 2016-02-08 at 09.44.53

Google Analytics se danas upotrebljava na većini web sajtova i u mnogim mobilnim aplikacijama. Ipak to nije slučaj i kod PC (desktop) programa. Razlog je verovatno manjak jednostavnih rešenja u obliku SDK koji prosto integrišete u svoj projekat kao što je to slučaj kod iOS i Android aplikacija.

Osnovna podešavanja

Da biste počeli s praćenjem događaja iz vaše igre trebate da:

I to bi bilo to.

Ali, ako ovo nije dovoljno detaljno za vas, pročitajte korak po korak uputstvo kako da dodate Google Analytics praćenje u svoju PC, Mac ili Linux igru.

Komunikacija

Podatke možete poslati Google Analytics-u koristeći bilo GET ili POST HTTP zahtev. Google Analytics omogućava sigurno slanje podataka oslanjajući se na HTTPS protokol ali takođe i nesigurni HTTP se može upotrebiti. Zarad jednostavnosti ćemo koristiti HTTP POST zahtev u ovom tekstu. Za našu igru korisćena je libcurl biblioteka pošto pokriva HTTP komunikaciju, a planiramo da je koristimo i za druge zadatke u narednom periodu.
Otvaranje TCP socket-a na portu 80 i slanje HTTP POST zahteva će odraditi posao podjednako dobro.

Evo kako izgleda najjednostavnija funkcija za slanje podataka (pomoću libcurl):

void Send2GoogleAnalytics(char *postdata, char *useragent)
{
CURL *curl_handle = curl_easy_init();
if ( curl_handle ) {
curl_easy_setopt(curl_handle, CURLOPT_URL, “http://www.google-analytics.com/collect”);
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, useragent);
curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, postdata);
curl_easy_perform(curl_handle);
curl_easy_cleanup(curl_handle);
}
}

postdata

postdata promenljiva pokazuje na string koji sadrži sve parametre POST zahteva koji želite da pošaljete na Google Analytics.

Potrebne informacije za svaki Measurement Protocol zahtev su:

Screen Shot 2016-02-08 at 09.49.34

Dakle, primer postdata stringa može da izgleda ovako:

postdata =
“v=1&tid=UA-123456-1&cid=UUID&t=pageview&dp=%2FStart%20screen“;

Identifikacija igrača (UUID)

Da bi Google Analytics razumeo koji podaci dolaze od jednog igrača morate da pošaljete igračev (klijentov) identifikator parametar sa svakim HTTP zahtevom. Ovaj parametar mora da bude u universally unique identifier (uuid) formatu i možete ga generisati koristeći algoritam poput ovog. Jednom generisani proizvoljni uuid trebate da sačuvate i koristite ga sledeći put kad starujete igru. Na ovaj način će Google Analytics znati da je korisnik koji trenutno igra igru isti onaj koji je igrao i prošle nedelje, i dobićete informacije o tome koliko igrač često igra igru, u kom periodu dana i sl.

Verzija igre i operativni sistem

Google Analytics prati web pretraživače, njihove verzije kao i operativne sisteme na kojima pretraživači rade. Možemo da iskoristimo ovu funkcionalnost da bismo pratili verziju svoje igre kao i sistem na kome igra radi tako što te informacije pošaljemo Google Analytics-u u obliku  user-agent stringa, na primer:

“Superverse/0.3 (Windows NT 6.2)”

Verziju Microsoft Windows sistema možemo dobiti pozivom GetVersionEx() funkcije. “Windows NT 6.2” iz primera zapravo označava verziju operativnog sistema Windows 8.0.

Praćenje podataka

Kada ste podesili osnove, možete da počnete sa slanjem podataka koji vas zanimaju radi praćenja i merenja. Dva osnovna tipa interakcija su pageview (eng. prikaz stranice) i event (eng. događaj) ali takođe postoje i transaction, timing, social, exception i item. Svaki od ovih tipova interakcije je detaljno opisan u dokumentaciji Measurement Protocol-a.

Sesije

Da bismo videli kada je igrač započeo igru i koliko dugo je igrao treba da započnete sesiju i završite je pre nego što igrač napusti igru. Ovo se može postići dodavanjem sledećih komandi u postdata stringu, na početku i na kraju sesije:

sc=start

sc=end

Sesija se takođe može koristiti kako bi se naznačio početak i kraj igranja jednog meča ili nivoa u okviru igre.

Učestalost izveštavanja

Google je ustanovio ograničenja koliko često im podatak može biti poslat. Zato igra ne bi smela da šalje podatke češće od jednom u dve sekunde. Uz to, broj događaja koji se mogu poslati je ograničen na najviše 500 po jednoj sesiji. Ipak, ovo bi trebalo da bude više nego dovoljno za praćenje događanja u vašoj igri.

Sve u svemu…

Praćenje događaja treba da bude skladan i neprimetan zadatak koji nema nikakvog uticaja na druge važnije komponente jedne igre.

Evo i predloga kako da to postignete na jednostavan način: Napravite bafer u kome možete da smeštate HTTP zahteve do trenutka dok oni ne budu poslati. Punite bafer HTTP zahtevima kada god je to potrebno, na svaki događaj koji je zanimljiv za praćenje u igri. S druge strane u pozadini procesuirajte nagomilane zahteve i šaljite ih na Google Analytics, pritom pazeći da kvota slanja podataka ne prevazilazi ograničenja koje je Google postavio.