SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
A developer's guide to the game
Miloš Krstić i Dušan Ilić
O nama
● Osnovana 2012.
● Preko 40 zaposlenih
● Raznolikost profila
● Preko 700 projekata za
mobilne uredjaje
● Od ideje do marketinga
● Publishing i prakse
Sadržaj
● Planiranje i arhitektura koda
● Efikasno programiranje
● Praćenje i ažuriranje projekta
Planiranje i arhitektura koda
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
Prvi korak - arhitektura koda
● Kod mora biti lako promenljiv!!!
● Modularno programiranje
● Menadžeri i kontroleri
● SOLID principles
Primeri:
● SoundManager
● RemoteConfigManager
● DialogsController
Komunikacija između modula
Loose references i modularno programiranje
Održiv i promenljiv sistem
Čvrste ispreplitane veze (“prevlačenja”)
Neodrživ i nepromenljiv sistem
Unity events communication
Shop module
● Podešavanje na “OnEnable” i
registracija na odgovarajuće ivente
● Okidanje ivenata
PlayerBalanceManager-a
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 */
}
}
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
Efikasno programiranje
Efikasnost
● Manje utrošenog vremena
● Manje ručnog rada
● Manji izvršni fajl (APK, IPA)
● Bolja podela posla
● Manji budžet
● Bolja preglednost projekta
Editorske
skripte
● Bolja preglednost
● Kreiranje alata (tools)
● Automatizacija
● Podela posla
Editorske skripte - Preglednost
Editorske skripte - Tools
Editorske skripte - Automatizacija
Scriptable Objects
● Čuvanje podataka
● Smanjenje duplikata
● Lako prebacivanje na objektu
● Eksterne izmene
● Lakše prebacivanje u drugi projekat
Podela posla
● Game designers
● Illustrators
● UI designers
● Testers
● Translators
● ...
Asset Bundles
● Manji APK(IPA)
● Laka promena aseta
● Nema potrebe za ažuriranjem igre
● Addressable assets
Pakovanje atlasa
● Unity sprite packer
● TexturePacker
Praćenje i ažuriranje projekta
Standard analytics
● Events
● Event parameters
● Number of new installs
● Number of active users
● Average session duration
● ...
Google BigQuery
● Online baza podataka
● Svaki red predstavlja jedan ivent
● Velika količina dodatnih podataka o
svakom iventu
● Vrednost parametara
● UNNEST parametara
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
Remote config
● Key-value parovi
● Default vrednosti
● Ažuriranje vrednosti bez ažuriranja
aplikacije
● Ciljanje određene grupe korisnika
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
Struktura koda kroz vreme
Code refactoring
● Održati “eksterno” ponašanje sistema
● Poboljšati unutrašnju strukturu koda
● Manja verovatnoća nastajanja bug-ova
● Lakše održavanje i nadogradnja koda
Korisni linkovi
Planiranje i arhitektura koda
“Dependency Injection in Unity3D” https://www.theseus.fi/bitstream/handle/10024/125683/Parviainen_Niko.pdf
“How to architect code as your project scales” https://unity3d.com/how-to/architect-code-as-your-project-scales
“UnityEvents” https://docs.unity3d.com/Manual/UnityEvents.html
Praćenje i ažuriranje projekta
“Firebase” https://firebase.google.com/docs/analytics
“Flurry” https://www.flurry.com/
“Learning BigQuery SQL” https://codingisforlosers.com/learn-bigquery-sql/
Efikasno programiranje
“Scriptable Objects” https://docs.unity3d.com/Manual/class-ScriptableObject.html
“Unity Sprite Packer” https://docs.unity3d.com/Manual/SpritePacker.html
“Texture Packer” https://www.codeandweb.com/texturepacker
http://bit.ly/peaksel-dev-guide
Pitanja

Mais conteúdo relacionado

Mais de Serbian Games Association

Zlo i naopako pre, tokom i nakon vaše prve Kickstarter kampanje
Zlo i naopako pre, tokom i nakon vaše prve Kickstarter kampanjeZlo i naopako pre, tokom i nakon vaše prve Kickstarter kampanje
Zlo i naopako pre, tokom i nakon vaše prve Kickstarter kampanjeSerbian Games Association
 
Itches and glitches: izazovi i mogućnosti Kickstartera u gejmingu
Itches and glitches: izazovi i mogućnosti Kickstartera u gejminguItches and glitches: izazovi i mogućnosti Kickstartera u gejmingu
Itches and glitches: izazovi i mogućnosti Kickstartera u gejminguSerbian Games Association
 
Goran Aleksić - HORA games - Development automatizacija
Goran Aleksić - HORA games - Development automatizacijaGoran Aleksić - HORA games - Development automatizacija
Goran Aleksić - HORA games - Development automatizacijaSerbian Games Association
 
Roaming Group; Šta invesitori traže u studijima za razvoj igara? Predavači: R...
Roaming Group; Šta invesitori traže u studijima za razvoj igara? Predavači: R...Roaming Group; Šta invesitori traže u studijima za razvoj igara? Predavači: R...
Roaming Group; Šta invesitori traže u studijima za razvoj igara? Predavači: R...Serbian Games Association
 
Yboga, Marko Gardijan; Kako je nastao Dream Hospital
Yboga, Marko Gardijan; Kako je nastao Dream HospitalYboga, Marko Gardijan; Kako je nastao Dream Hospital
Yboga, Marko Gardijan; Kako je nastao Dream HospitalSerbian Games Association
 
Branislav Pantić (Character supervisor /Creative director, Bunker VFX); Video...
Branislav Pantić (Character supervisor /Creative director, Bunker VFX); Video...Branislav Pantić (Character supervisor /Creative director, Bunker VFX); Video...
Branislav Pantić (Character supervisor /Creative director, Bunker VFX); Video...Serbian Games Association
 
Miracle Dojo, Stefan Đorđević i Nemanja Tanasković; How we made KarateDo
Miracle Dojo, Stefan Đorđević i Nemanja Tanasković; How we made KarateDoMiracle Dojo, Stefan Đorđević i Nemanja Tanasković; How we made KarateDo
Miracle Dojo, Stefan Đorđević i Nemanja Tanasković; How we made KarateDoSerbian Games Association
 
Ognjen Popović, Mad Head Games; Little tips and tricks for endurance in the g...
Ognjen Popović, Mad Head Games; Little tips and tricks for endurance in the g...Ognjen Popović, Mad Head Games; Little tips and tricks for endurance in the g...
Ognjen Popović, Mad Head Games; Little tips and tricks for endurance in the g...Serbian Games Association
 
Manja Ćirić, Two Desperados; How to 2D for Mobile
Manja Ćirić, Two Desperados; How to 2D for MobileManja Ćirić, Two Desperados; How to 2D for Mobile
Manja Ćirić, Two Desperados; How to 2D for MobileSerbian Games Association
 
Nikola Stepković, Demagog studio; Golf Club: Wasteland – izmišljanje postapok...
Nikola Stepković, Demagog studio; Golf Club: Wasteland – izmišljanje postapok...Nikola Stepković, Demagog studio; Golf Club: Wasteland – izmišljanje postapok...
Nikola Stepković, Demagog studio; Golf Club: Wasteland – izmišljanje postapok...Serbian Games Association
 

Mais de Serbian Games Association (16)

Game design at Playrix
Game design at PlayrixGame design at Playrix
Game design at Playrix
 
Zlo i naopako pre, tokom i nakon vaše prve Kickstarter kampanje
Zlo i naopako pre, tokom i nakon vaše prve Kickstarter kampanjeZlo i naopako pre, tokom i nakon vaše prve Kickstarter kampanje
Zlo i naopako pre, tokom i nakon vaše prve Kickstarter kampanje
 
Itches and glitches: izazovi i mogućnosti Kickstartera u gejmingu
Itches and glitches: izazovi i mogućnosti Kickstartera u gejminguItches and glitches: izazovi i mogućnosti Kickstartera u gejmingu
Itches and glitches: izazovi i mogućnosti Kickstartera u gejmingu
 
Optimizing your open world game
Optimizing your open world gameOptimizing your open world game
Optimizing your open world game
 
Making of Underrail (PC, RPG)
Making of Underrail (PC, RPG)Making of Underrail (PC, RPG)
Making of Underrail (PC, RPG)
 
Making of Armed Heist (mobile, shooter)
Making of Armed Heist (mobile, shooter)Making of Armed Heist (mobile, shooter)
Making of Armed Heist (mobile, shooter)
 
Goran Aleksić - HORA games - Development automatizacija
Goran Aleksić - HORA games - Development automatizacijaGoran Aleksić - HORA games - Development automatizacija
Goran Aleksić - HORA games - Development automatizacija
 
Roaming Group; Šta invesitori traže u studijima za razvoj igara? Predavači: R...
Roaming Group; Šta invesitori traže u studijima za razvoj igara? Predavači: R...Roaming Group; Šta invesitori traže u studijima za razvoj igara? Predavači: R...
Roaming Group; Šta invesitori traže u studijima za razvoj igara? Predavači: R...
 
Yboga, Marko Gardijan; Kako je nastao Dream Hospital
Yboga, Marko Gardijan; Kako je nastao Dream HospitalYboga, Marko Gardijan; Kako je nastao Dream Hospital
Yboga, Marko Gardijan; Kako je nastao Dream Hospital
 
Branislav Pantić (Character supervisor /Creative director, Bunker VFX); Video...
Branislav Pantić (Character supervisor /Creative director, Bunker VFX); Video...Branislav Pantić (Character supervisor /Creative director, Bunker VFX); Video...
Branislav Pantić (Character supervisor /Creative director, Bunker VFX); Video...
 
Miracle Dojo, Stefan Đorđević i Nemanja Tanasković; How we made KarateDo
Miracle Dojo, Stefan Đorđević i Nemanja Tanasković; How we made KarateDoMiracle Dojo, Stefan Đorđević i Nemanja Tanasković; How we made KarateDo
Miracle Dojo, Stefan Đorđević i Nemanja Tanasković; How we made KarateDo
 
PwC; Merging and acquisition
PwC; Merging and acquisitionPwC; Merging and acquisition
PwC; Merging and acquisition
 
PwC; Šta investitor traži u pitchu?
PwC; Šta investitor traži u pitchu?PwC; Šta investitor traži u pitchu?
PwC; Šta investitor traži u pitchu?
 
Ognjen Popović, Mad Head Games; Little tips and tricks for endurance in the g...
Ognjen Popović, Mad Head Games; Little tips and tricks for endurance in the g...Ognjen Popović, Mad Head Games; Little tips and tricks for endurance in the g...
Ognjen Popović, Mad Head Games; Little tips and tricks for endurance in the g...
 
Manja Ćirić, Two Desperados; How to 2D for Mobile
Manja Ćirić, Two Desperados; How to 2D for MobileManja Ćirić, Two Desperados; How to 2D for Mobile
Manja Ćirić, Two Desperados; How to 2D for Mobile
 
Nikola Stepković, Demagog studio; Golf Club: Wasteland – izmišljanje postapok...
Nikola Stepković, Demagog studio; Golf Club: Wasteland – izmišljanje postapok...Nikola Stepković, Demagog studio; Golf Club: Wasteland – izmišljanje postapok...
Nikola Stepković, Demagog studio; Golf Club: Wasteland – izmišljanje postapok...
 

The developer's guide to the game

  • 1. A developer's guide to the game Miloš Krstić i Dušan Ilić
  • 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
  • 13. Editorske skripte ● Bolja preglednost ● Kreiranje alata (tools) ● Automatizacija ● Podela posla
  • 14. Editorske skripte - Preglednost
  • 16. Editorske skripte - Automatizacija
  • 17. Scriptable Objects ● Čuvanje podataka ● Smanjenje duplikata ● Lako prebacivanje na objektu ● Eksterne izmene ● Lakše prebacivanje u drugi projekat
  • 18. Podela posla ● Game designers ● Illustrators ● UI designers ● Testers ● Translators ● ...
  • 19. Asset Bundles ● Manji APK(IPA) ● Laka promena aseta ● Nema potrebe za ažuriranjem igre ● Addressable assets
  • 20. Pakovanje atlasa ● Unity sprite packer ● TexturePacker
  • 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
  • 28. Code refactoring ● Održati “eksterno” ponašanje sistema ● Poboljšati unutrašnju strukturu koda ● Manja verovatnoća nastajanja bug-ova ● Lakše održavanje i nadogradnja koda
  • 29. Korisni linkovi Planiranje i arhitektura koda “Dependency Injection in Unity3D” https://www.theseus.fi/bitstream/handle/10024/125683/Parviainen_Niko.pdf “How to architect code as your project scales” https://unity3d.com/how-to/architect-code-as-your-project-scales “UnityEvents” https://docs.unity3d.com/Manual/UnityEvents.html Praćenje i ažuriranje projekta “Firebase” https://firebase.google.com/docs/analytics “Flurry” https://www.flurry.com/ “Learning BigQuery SQL” https://codingisforlosers.com/learn-bigquery-sql/ Efikasno programiranje “Scriptable Objects” https://docs.unity3d.com/Manual/class-ScriptableObject.html “Unity Sprite Packer” https://docs.unity3d.com/Manual/SpritePacker.html “Texture Packer” https://www.codeandweb.com/texturepacker