180 likes | 390 Views
Razvoj igrica. Danijel Pobi, dipl. Ing. Računarstva. Platforme i razvoj. Kompatibilnost Recikliranje koda Fragmentacija Platforma Hardware Software (operativni sustavi i programski jezici) Kratki pregled OS-ova Popularni i rašireni programski jezici Cross-platform razvoj
E N D
Razvoj igrica Danijel Pobi, dipl. Ing. Računarstva
Platforme i razvoj • Kompatibilnost • Recikliranje koda • Fragmentacija • Platforma • Hardware • Software (operativni sustavi i programski jezici) • Kratki pregled OS-ova • Popularni i rašireni programski jezici • Cross-platform razvoj • Upravljanje projektima
Kompatibilnost • Kompatibilnost u ovom smisliu je mogućnost programa i/ili sklopovlja da funkcioniraju zajedno • Za program ili sklop koji nefunkcionira u inače funkcionalnom sustavu kažemo da je nekompatibilan • Backward compatibility – kompatibilnost s urešajima prijašnjih generacija • Compatibility card – emulacija drugog uređaja (VM, odnosno Virtual machine) • Compatibility layer - ne nativna podrška za hardware • Compatibility mode – mehanizam gdje program emulira stariju verziju programa • Computer compatibility – kompatibilnost stroja (IBM compatible) • Foward compatibility – stariji urešaji razumiju podatke koje generira noviji uređaj • License compatibility – licenciranje novog programa starijom licencom • Pin compatibility – spajanje novih uređaja direktno na pinove starijeg uređaja (ISA, PCI, AGP, PCI-E)
Recikliranje koda • Pomoću postojećeg programa ili koda stvaramo novi program • Eng. Code Reuse or code recycling • Ideja je u tome da se program jednom napisan koristi u drugom programu u cilju uštede vremena i energije da se smanji redundancija pisanja jedne te iste stvari • Koriste se dijelovi koda (sections or snippets), templateovi, funkcije, procedure, klase, sučelja, prototipa, itd... • Biblioteka nije ništa drugo nego idealni primjer ovog koncepta • OOP je nastalo na ovom konceptu
Recikliranje koda - primjeri • Programske biblioteke (library) • najrašireniji oblik ponovnog korištenja koda • nema potrebe za izmišljanjem „tople vode” • dobro podešene i optimizirane • nema promjena ako vam neki dijelovi nisu dovoljno brzi • Design patterns (hrv ?) • rijšenje koje se može iznova koristiti za neki uobičajni problem • Nije riješenje, nego uputa ili mapa kako riješiti problem koji se može koristiti u mnogim situacijama • 3 vrste: creational (stvaralački), structural (strukturni), behavioral (ponašajni) • Creational: Abstract factory, Builder, Prototype, Singleton,... • Structural: Adapter, Bridge, Module, Proxy,... • Behaviora: Command, Iterpreter, Iterator, Mediator, Specification, State, Strategy,... • Frameworks (hrv ?) • Abstrakcija u kojoj generička funkcionalnost programa dodaje korisničkim dodavanjem koda • sastoji se od dopunskih programi, kompajlera, kodnih biblioteka, alati, API koji zajendno omogućuju razvoj projekta, tj. programa
Fragmentacija • Pojam u programiranju koji se koristi za probleme s određenim ekosustavom • Problem s spremanjem podataka na disk • Problem s formatom/formatima podataka • Priprema podataka u mrežnim protokolima
Platforme • Hardware i software framework kombinacija na kojoj se izvršavaju programi • Sastavni dijelovi: • Sklopovska arhitektura • Operativni sustav • Runtime biblioteke • Jako važna stvar prilikom razvoja programa je znati ciljanu platformu ili platforme
Hardware platforme • Uglavnom se definiraju oko CPU-a, tj. oko instrukcijskog seta procesora i samog pomoćnog sklopovlja proizvođača procesora • x86-64 • ARM • x86 • PowerPC • Itanium • Sparc, MC68K, MMIX, MIPS, VAX, eSi-RISC, PA-RISC, SuperH,...
Operativni sustavi • Operativni sustav je kolekcija programa koji upravljaju sklopovskim resursima i pružaju servise ostalim programima • Upravljanje procesima • Upravljanje iznimkama i prekidima • Upravljanje memorijom • File system • Driveri • Sigurnost • I/O • ....
Operativni sustavi • Desktop • Windows, Linux, Mac OS • OS/2, Solaris, VM, NetBSD, OpenBSD • Mobilni • Windows Phone, Android, iOS • Windows Mobile (CE), Blackberry, Embedded Linux, Symbian, WebOS, Palm OS • Tablet • Miješavina desktop i mobilnih • Konzole • Xbox, Playstation, Nitendo Wii • Serveri • Windows Server, Linux, Unix, Solaris, • Radne stanice • mješavina desktop i server operativnih sustava
Framework • .NET Framework (C#, VB, C++, F#, JS) • Java platform • Micro edition • Standard edition • enterprise edition • Mobile • JavaFX • Microsoft XNA (C#, VB, F#) • Silverlight (C#, VB) • Mono • Oracle Database • Adobe AIR • SAP NetWeaver
Cross-platform razvoj • Cross-platform ili multi-platform se odnosi na metode, koncepte i implementacije programa koje će se izvoditi na više platformi • Podjela na dvije kategorije • izvršava se na ciljanoj platformi bez buildanja (Java) • izvršava se na ciljanoj platformi sa buildanjem • da bi bio neki program cross-polatform, mora se “vrtiti” bar na dvije kompjuterske arhitekture ili dva operativna sustava
Cross-platform razvoj • C++ iako služi za razvoj za sve platforme, mora se kompajlirati za svaku platformu posebno • Skriptni jezici i interpreterski jezici mogu se bez kompajliranja i u znikakve ili minimalne izmjene pokretati na različitim platformama • python, PHP, bash, Ruby • Java se izvršava bez dodatnog kompajliranja, jer se prvobitno kompajlira u Java Byte Code koji se izvršava na Java VM-u instaliranom za ciljanoj platformi • Igrice koje uglavnom moraju kompajlirati za zadanu platformu radi optimiziranosti, brzine i specifičnosti ciljane platforme
Cross-platform razvoj • Testiranje je izazov, jer svaka platforma ima drukčije ponašanje i to može izazvati bugove na određenoj platformi koji se neće pojaviti na drugoj • Najčešće se koriste samo mogućnosti raspoložive na ciljanim platformama, prilagodbe specifične platforme ovise o tipu projekta • Različito sučelje ovisno o ciljanoj platformi • Skriptni jezici i VM-ovi se moraju prevesti na ciljanu platformu, što može negativno utjecati na performanse • Svaka platforma ima svoj način “pakiranja”, tj. format • Problem sigurnosti
Upravljanje projektima • Planiranje, organizacija, motiviranje i kontroliranje resursima da bi se dostigao određeni cilj. • Mjeri dvaput, reži jednom = planiraj dvaput, kodiraj jednom • Mora se znati tko je glavni! Demokracija u ovom slučaju samo usporava stvari. • Programi: • Project management: Microsoft Project, Excel,... • Content Control: Team Fundation server, SVN, Hg,... • Tradicionalni pristup: • inicijacija, planiranje i dizajn, izvedba, testiranje, kraj • Prince2, PRiSM, kritični lanac, metodologija lančanog niza, procesno upravljanje, Agile, Lean, Extreme, Korisno-realizacijsko upravljanje
Upravljanje projektima, razvoj igrice • Planiranje: • odabir platforme i alata • žanr • glavni likovi • radnja • svijet • interakcije likova, objekata,... • Dizajn • skice likova, svijeta, radnje • alati za izradu
Upravljanje projektima, razvoj igrice • Podjela posla • podjela u neovisne cijeline • dizajn, kodiranje, animiranje, dijalozi, zvuk,... • Posao • optimiziranje poslova, tako da se stvari koje se mogu paralelno raditi, rade • izvršavanje dodjeljenih poslova • Testiranje • u ovom slučaju igranje i bilježenje grešaka • Ispravljanje grešaka (bugovi) • vraćanje na kodiranje i dizajniranje, tj. sam posao • Gotovo • Igrajmo se koliko možemo
Kraj predavanja PITANJA? danijel@dmt-softver.hr zadaće nema