Miloš Krstić i Dušan Ilić // Lead Developers // Peaksel // Niš
Game dev vodič za pravljenje igre
Miloš i Dušan rade u Peakselu, niškoj kompaniji koja se proslavila radeći na kvalitetnim mobile naslovima. Oni će nam iz jedinstvenog ugla programera ispričati kako izgleda proces rada na jednoj igri, od samog planiranja, poreko izrade pa sve do praćenja procesa.
2. O nama
● Osnovana 2012.
● Preko 40 zaposlenih
● Raznolikost profila
● Preko 700 projekata za
mobilne uredjaje
● Od ideje do marketinga
● Publishing i prakse
3. Sadržaj
● Planiranje i arhitektura koda
● Efikasno programiranje
● Praćenje i ažuriranje projekta
5. Rana faza i uloga developera
● Zahtev klijenta
● Viđenje game dizajnera
● Uloga i odgovornost developera
● Predočavanje rizika
● Odabir tehnologije
● Davanje inicijalnog roka - procene
● Nakon izrade finalnog GDD, čitanje
istog i eventualne revizije
6. Prvi korak - arhitektura koda
● Kod mora biti lako promenljiv!!!
● Modularno programiranje
● Menadžeri i kontroleri
● SOLID principles
Primeri:
● SoundManager
● RemoteConfigManager
● DialogsController
7. Komunikacija između modula
Loose references i modularno programiranje
Održiv i promenljiv sistem
Čvrste ispreplitane veze (“prevlačenja”)
Neodrživ i nepromenljiv sistem
8. Unity events communication
Shop module
● Podešavanje na “OnEnable” i
registracija na odgovarajuće ivente
● Okidanje ivenata
PlayerBalanceManager-a
9. Code injection
Primer:
public interface IServer
{
Data GetData();
}
public class FakeServer : IServer
{
public Data GetData()
{
return new Data();
}
}
public class Client
{
private IServer server;
public Client(IServer server)
{
this.server = server;
}
public int DoAction()
{
var data = server.GetData();
/* Do something with the data */
}
}
10. Nasleđivanje i interfejsi
● Nikako ne pisati dupli kod!!!
● Brzo i lako promenljiv kod
● Definisanje osobina i metoda preko
interfejsa
Prevozno sredstvo - drumsko vozilo → kamion
Prevozno sredstvo - letelica → avion
Avion implements enemy interface
Kamion implements friend interface
12. Efikasnost
● Manje utrošenog vremena
● Manje ručnog rada
● Manji izvršni fajl (APK, IPA)
● Bolja podela posla
● Manji budžet
● Bolja preglednost projekta
22. Standard analytics
● Events
● Event parameters
● Number of new installs
● Number of active users
● Average session duration
● ...
23. Google BigQuery
● Online baza podataka
● Svaki red predstavlja jedan ivent
● Velika količina dodatnih podataka o
svakom iventu
● Vrednost parametara
● UNNEST parametara
24. Firebase Crashlytics
● Vaš prijatelj
● Detaljan log o crash-u
● Niz ivenata od početka sesije do crash-a
● Automatizovani alarmi u slučaju
određenog crash-a kod velikog broja
korisnika
25. Remote config
● Key-value parovi
● Default vrednosti
● Ažuriranje vrednosti bez ažuriranja
aplikacije
● Ciljanje određene grupe korisnika
26. A/B testing
● Kontrolna grupa
● Test grupa 1, test grupa 2, …
● Veliki spektar postavljanja uslova
● Veliki izbor za cilj testa
● Ceo proces je automatizovan
● Mogućnost rollout-a