Professional Documents
Culture Documents
Primer Maturskog PDF
Primer Maturskog PDF
Profesor: Učenik:
Bojan Aleksić, prof. Milan Ernjaković, IV-1
2
Назив матурског рада Име и презиме ученика, IV-1
1. OSNOVE PROGRAMIRANJA
Programiranje video igara , samo podskup ukupnog procesa dobijanja video igre , to jest
razvoja video igara , je razvoj softverskog dela video igre. Programiranje igara zahteva
značajno poznavanje softverskog inženjeringa , kao i stručno poznavanje jedne ili više od
sledećih oblasti :
1. Simulacija
2.Kompijuterska grafika
3.Veštačka inteligencija
4. Fizika
5.Audio programiranje
6.Unos podataka
Za mmo igre (masively multiplayer online games) koristi se još i mrežno programiranje i
programiranje baza podataka.Iako ozbiljne igre programiraju profesionalni programeri neki
početnici takođe mogu da iz hobija programiraju jednostavnije video igre.
3
Назив матурског рада Име и презиме ученика, IV-1
Pravljenje prototipa
Programeri često moraju da naprave prototip ideje i karakteristika video igre. Veliki deo
pravljenja protipa se odvijau preprodukciji , pre nego što se napravi dizajn igre , i može da
pomogne u određivanju koje će karakteristike dizajn da opisuje . Prototip se razvija veoma
brzo sa vrlo malo vremena za razvoj dizajna i uglavnom služi kao dokaz koncepta ili za
testiranje ideja . Od prototipova se ne očekuje da rade besprekorno već su razvijeni da se na
njima isprobaju nove , ponekad egzotične ideje.
4
Назив матурског рада Име и презиме ученика, IV-1
Produkcija
Tokom proizvodnje programeri mogu stvoriti veliki deo izvornog ( source ) koda opisanog u
dokumentu sa dizajnom određene igre. Usput dokument sa dizajnom je modifikovan da kako
bi zadovočljio ograničenja postavljena od strane programeta ili prođiren kako bi se iskoristile
nove funkcije koje nde dizajneri. Dokument sa dizajnom je ono što nazivamo
“živi dokument“ čiji se život prvenstveno zasniva na rasporedu , talentu i snalažljivosti
programera. Iako mnogi programeri imaju određenu reč u donošenju odluke o sadržaju igre ,
većina proizvođača traži informacije o statusu razvoja igre od glavnog programera.. Glavni
programer je odgovoran za poznavanje svih aspekata razvoja igre i za isticanje ograničenja.
Vodeći programer mora takođe da prenese predloge u vezi mogućih karakteristika koje bi
želeli da implementiraju od običnih programera do tima zaduženog za dizajn. Sa današnjim
vizuelno bogatim sadršažajem programer mora da ima konstantan kontakt sa umetničkim
timom. Na primer , programer zadužen za 3D grafiku mora da radi zajedno sa umetnicima
zaduženim za izradnju 3D objekata za video igru , dok AI (artficial inteligence) programer ne
mora da interaguje konstantno . Da bi pomagali umetnicima i dizajnerima nivoa , programeri
mogu da volontiraju ili da budu prozvani da alate. Mnogi od tih alata su raazvijeni sa svrhom i
često su puni bagova zbog vremenskog ograničenja ( vreme za pravljenje ovih alata nije
predviđeno kad se pravi plan za razvoj igre) , kao i zbog toga što su oni samo za trenutnu
upotrebu za tu igru. Mnoge alatke su napravljene u RAD jezicima , namenjene su za brzu
upotrebu i vrlo brzo se odbacuju nakon završavanja igre.
5
Назив матурског рада Име и презиме ученика, IV-1
Testiranje
Testiranje je formalni postupak ispitivanja kvaliteta , koji sprovode profesionalni testeri igara,
i počinje duboko u razvoju. Visoko budžetne igre započinju testiranje sa alfa verzijom koja je
dostupna široj javnosti , dok nisko budžetne igre mogu da ne počnu sa fazom testiranja dok
igrica ne bude objavljena. Zadatak programera je da poprave greške i bagove koji su
pronađeni od strane
QA timova.
6
Назив матурског рада Име и презиме ученика, IV-1
Završni radovi
Finalni uključuju “poliranje“ igre , kao što je popravljanje povremenih bagova i grešaka , od
malih do katastrofalnih , koji se mogu javiti u poslednjoj fazi testiranja. Developeri mogu da
puste igru u beta testing obliku , ali izgled ovog vida igre zavisi od developera do developera .
Često beta sadrđi sve karakteristike igre , ali ima znatno više bagova ili nezavršenog
sadržaja.Neke igre se puđtaju u beta test da bi se proverila izdržljivost servera. Kad se igra
proglasi završenom kaže se da se pozlatila i šalje se izdavaču. U zavisnosti od okolnosti
izdavač može da podvrgne igru svojim testovima ili da je pusti u prodaju takvu kakvu je
dobio.
Održavanje
Kad igra bude poslata kupcu , faza održavalja otpočinje. Programeri čekaju određeni period
kako bi dobili što više informacija od korisnika o funkcionalnosti igre. Kad programeri
procene da su sakupili dovoljno povratnih informacija , počinju da rade na “patch“-u (zakrpi).
Za izradu patch-a može da bude potrebno nekoliko nedelja čak i mesec dana ali ima važnu
ulogu da popravi sve bagove i greške u igri. Ponekad patch može da uključuje i dodatan
sadržaj ili čak da izmeni izgled igre u potpunosti.
Tok radova
Većina modernih igara zahteva jednu do tri godine da se završi. Dužina trajanja
razvoja video igre zavisi od mnogo faktora ali je programiranje zahtevano u
sklopu svih faza razvijanja igre , osim možda za rane faze dizajniranja.
7
Назив матурског рада Име и презиме ученика, IV-1
2. Bug databases
Sistem praćenaja bagova iliti sistem praćenja devekata je softverska aplikacija koja
prati prijavljene softverske greške u projektima softverskog razvoja. Može se smatrati
sistemom prćenja problema. Mnogi sistemi za praćenje grešaka , kao oni koje koristi
većina open source aplikacija , omogućavaju krajnjim korisnicima da direktno unose
izveštaj o greškama.
Ostali sistemi se koriste samo interno u kompanijama ili organizacijama koje rade na
razvoju softvera. Tipični sistemi za praćenje grešaka su integrisani sa drugim
aplikacijama za upravljanje softverom. Sistem praćenja grešaka je neophodna
komponenta dobre infrastructure za razvoj softvera, a konstanta upotreba sistema za
praćenje greške se smatra jednim od obeležja dobrog softverskog tima.
3. Build tools
8
Назив матурског рада Име и презиме ученика, IV-1
U računarstvu, linker ili link editor je računarski program koji uzima jednu ili više
objekatnih datoteka koje generiše kompajler i kombinuje ih u jednu izvršnu
datoteku, datoteku biblioteke ili drugu datoteku objekta.Jednostavnija verzija koja
piše svoj izlaz direktno u memoriju naziva se loader, mada se obično smatra
posebnim procesom.
9
Назив матурског рада Име и презиме ученика, IV-1
5. Debuggers
Debager ili alatka za debagovanje je računarski program koji se koristi za testiranje i
debagovanje drugih programa ("ciljanih" programa). Kod koji se može ispitivati
alternativno se može pokrenuti na simulatoru seta instrukcija (ISS), tehniku koja
omogućava veliku snagu u svojoj sposobnosti da se zaustavi kada se sretne sa
određenim uslovima, ali koji će obično biti nešto sporiji od izvršenja koda direktno na
odgovarajućem (ili istom) procesoru. Neki debugeri nude dva načina rada, potpunu ili
parcijalnu simulaciju, da bi se ograničio ovaj uticaj.
"Zamka" se javlja kada se program ne može normalno nastaviti zbog programerske
greške ili nevažećih podataka. Na primer, program je možda pokušao da koristi
instrukciju koja nije dostupna na trenutnoj verziji CPU-a ili je pokušalo pristupiti
nedostupnoj ili zaštićenoj memoriji. Kada program "zaustavi" ili dostigne unapred
podešeno stanje, debager obično prikazuje lokaciju u source kodu ako je source-level
debager ili simbolički debuger, koji se obično sada vidi u integrisanim razvojnim
okruženjima(IDE). Ako je to debager na niskom nivou ili debuger na mašinskom
jeziku, on prikazuje liniju u demontaži (osim ako ima i online pristup originalnom
source kodu i može prikazati odgovarajući odeljak koda iz skupa ili kompilacije)
6. Formal methods
10
Назив матурског рада Име и презиме ученика, IV-1
Grafički konstruktor korisničkog interfejsa (ili GUI builder), takođe poznat kao GUI
dizajner, predstavlja alat za razvoj softvera koji pojednostavljuje kreiranje GUI-a tako
što dozvoljava dizajneru da organizuje grafičke elemente kontrole (često se zovu
vidžeti) korišćenjem WISIWIG urednik. Bez GUI buildera, GUI mora biti izgrađen
ručnim navođenjem parametara svakog vidžeta u izvornom kodu, bez vizuelne
povratne sprege sve dok se program ne pokrene.Korisnički interfejsi se najčešće
programiraju koristeći arhitekturu zasnovanu na događajima, tako da GUI graditelji
takođe pojednostavljuju kreiranje događaja pokretanog koda. Ovaj podržani kod
povezuje vidžete sa odlaznim i dolaznim događajima koji pokreću funkcije koje
pružaju logiku aplikacije.Neki grafički korisnici interfejsa, kao npr. Glade Interface
Designer, automatski generiše sve izvorne kod za grafički element kontrole. Drugi,
kao što je Interface Builder, generišu instance serijale objekata koji zatim učitavaju
aplikacija.
11
Назив матурског рада Име и презиме ученика, IV-1
9. Memory debuggers
12
Назив матурског рада Име и презиме ученика, IV-1
Skriptni jezik ili skriptni jezik je programski jezik koji podržava skripte: programe
napisane za posebnu run-time okruženje koje automatizuje izvršavanje zadataka koji
bi se alternativno mogli izvršiti jedan po jedan od strane čovjeka operatera. Skriptni
jezici se često tumače (umjesto kompilirane). Primitivi su obično osnovni zadaci ili
API pozivi, a jezik dozvoljava njihovu kombinaciju u složenije programe. Okruženja
koja se mogu automatizovati putem skriptiranja uključuju softverske aplikacije, veb
stranice u okviru veb pretraživača, korišćenje školjki operativnih sistema (OS),
ugrađeni sistemi, kao i brojne igre. Skriptni jezik se može posmatrati kao specifični
jezik za određeno okruženje; u slučaju skriptiranja aplikacije, ona je poznata i kao
jezik proširenja. Skriptni jezici se ponekad nazivaju i programski jezici visokog nivoa,
jer rade na visokom nivou apstrakcije ili kao upravljački jezici, posebno za jezike za
upravljanje poslovima na glavnim računarima.
Termin "skriptni jezik" se takođe koristi labavo da se odnosi na dinamičke jezike
opšteg značaja visokog nivoa, kao što su Perl, PoverShell, Pithon i Tcl sa izrazom
"skripta" koji se često koristi za male programe ( do nekoliko hiljada linija koda) na
takvim jezicima, ili na domenima specifičnim jezicima kao što su jezici za obradu
teksta sed i AVK. Neki od ovih jezika su prvobitno bili razvijeni za upotrebu u
određenom okruženju, a kasnije su se razvili u prenosne domene ili jezike opšte
namene. Nasuprot tome, mnogi jezici opšte namjene imaju dijalekte koji se koriste kao
skriptni jezici. Ovaj članak govori jezike pisanja u uskom smislu jezika za određeno
okruženje.
13
Назив матурског рада Име и презиме ученика, IV-1
Source kod
U računarstvu, izvorni kod je svaka kolekcija računarskih instrukcija, moguće sa
komentarima, napisanim pomoću čitljivog programskog jezika, obično kao običan tekst.
Izvorni kod programa je specijalno dizajniran da olakša rad računarskih programera, koji
određuju radnje koje će računar izvršiti uglavnom pišući izvorni kod. Izvorni kod se često
transformiše od strane asemblera ili kompajlera u binarni računarski kod koji razume računar.
Kod mašine se možda kasnije čuva za izvršenje. Alternativno, izvorni kod se može tumačiti i
na taj način odmah izvršiti.
Većina aplikativnog softvera distribuira se u obliku koji uključuje samo izvršne datoteke. Ako
je izvorni kod uključen, bilo bi korisno korisniku, programeru ili administratoru sistema, od
kojih bi svi mogli da proučavaju ili modifikuju program.
Source kod se prvenstveno koristi za unos podataka za proces koji proizvodi upotrebljivi
program. Takođe se koristi za komunikaciju algoritama između osoba. Kao osnova svakog
funkcionalnog programa , ne samo igre, ovaj kod igra najvažniju ulogu u stvaranju video
igara i od njega se počinje u razvoju video igre. Programeri imaju jako značajan zadatak kad
je u pitanju kreiranje source koda jer on mora da bude apsolutno nepogrešiv , tačan i precizan
kako bi uz sve ostale nadogradnje moglo da se dođe do funkcionalne igre.
14
Назив матурског рада Име и презиме ученика, IV-1
4. PROGRAMSKI JEZICI
Kada se dogovori početni dizajn igre, mora se odlučiti jezik za razvoj. Izbor zavisi od mnogo
faktora, kao što su poznavanje jezika programskog osoblja, ciljne platforme, zahteva za brzinu
izvršavanja i jezik nekog game engine-a , API-a ili biblioteka koja se koristi.
Za lične računare, izabrani jezik može biti malo više od preference. Veze za jezike za
popularne biblioteke kao što su SDL i Allegro su široko rasprostranjene, i razlika u
performansama između njih i idiomatskog koda napisanog u modernim jezicima je
zanemarljiva. Najpopularniji jezici obično su proceduralni / objektno orijentisani i primenjuju
se pomoću kompajlera; na primer, C, C ++, i Java. Međutim, programeri mogu uzeti u obzir
specifične karakteristike domena, kao što su povezivanje sa operativnim sistemom i otpornost
na obrnuto inženjerstvo za online video igre. Mnoge igre nisu isključivo napisane na jednom
jeziku i mogu kombinovati dva ili više jezika; Na primer, Unity, popularni game engine, ima
razlicite komade napisane u C, C ++ i C #. Za konzole, podrška ciljne platforme je najčešće
najvažniji faktor. U prošlosti su video igrice za konzole bile gotovo isključivo u assembly-ju
zbog ograničenih resursa u smislu brzine skladištenja i obrade. Međutim, pošto tehnologija
napreduje, postoje i opcije za razvoj igara na konzolama. Nintendo, Microsoft i Soni imaju
različite SDK-ove za njihove Wii U, Nintendo Switch, Xbox One i PlayStation 4 konzole.
Jezički za skriptovanje na visokom nivou se sve više koriste kao ugrađene nadogradnje na
osnovnu igricu napisanu na kompiliranom programskom jeziku, kako bi mogao da modifikuje
i izvorni programer i svako ko bi želeo da modifikuje igru. Lua je veoma popularan izbor, jer
je njegov API napisan u ANSI C, a jezik je dizajniran da bude ugrađen u druge aplikacije.
Mnogi programeri stvorili su prilagođene jezike za svoje igre, kao što su id Software’s QakeC
i Epic Games’ UnrealScript.
JEZIK KARAKTERISTIKE
Assembly Potencijalno najmanja upotreba CPU-a
C Široko poznat , brojni API-evi ,
kompajluje se na mašinski
Objektno orijentisan , široko poznat ,
C++ mnogobrojni API-evi, kompajluje se na
mašinski
Objektno orijentisan , poseduje skupljač
Java đubreta ,prenosiv pomoću virtualne
mašine
Objektno orijentisan , poseduje skupljač
C# , Visual Basic .NET đubreta , radi sa Microsoft-ovim
proizvodima
Objektno orijentisan , radi sa Apple-ovim
Objesctive-C , Swift
proizvodima
Poznata sintaksa , lako se prenosi na
Lua , Phyton , JavaScript , Tcl složenije jezike , često se koristi za
skriptovanje
Dodatni jezici za igre , često se vezuju za
Lisp , Pascal , Perl , Smalltalk
popularne biblioteke
15
Назив матурског рада Име и презиме ученика, IV-1
Programski jezik : C
/* int */ calling_function()
{
long test1;
register /* int */ test2;
test1 = some_function();
if
(test1 > 0) test2 = 0;
else
test2 = other_function();
return test2;
}
16
Назив матурског рада Име и презиме ученика, IV-1
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!";
return 0;
}
Programski jezik : C#
17
Назив матурског рада Име и презиме ученика, IV-1
Java je kompjuterski programski jezik opšte namene koji je istovremeni, zasnovan na klasi,
objektno orijentisan, i posebno dizajniran da ima što manje mogučnosti za implementaciju.
Namera je da programerima aplikacija "pišu jednom, pokrenu bilo gde" (VORA) što znači da
kompilirani Java kod može da radi na svim platformama koje podržavaju Java bez potrebe za
rekompilacijom. Java aplikacije obično se sakupljaju na bajtode koji se mogu pokrenuti na
bilo kojoj Java virtuelnoj mašini (JVM) bez obzira na arhitekturu računara. Od 2016. godine
Java je jedan od najpopularnijih programskih jezika koji se koriste, posebno za veb aplikacije
klijent-servera, sa prijavljenim 9 miliona programera. Java je originalno razvio James Gosling
u kompaniji Sun Microsistems (koji je otkupio Oracle Corporation) i objavljen 1995. godine
kao ključna komponenta Sun Microsistems 'Java platforme. Jezik dobiva veliku sintaksu iz C
i C ++, ali ima manje objekata na nižim nivoima od bilo kog od njih. Originalne i referentne
implementacione Java kompilacije, virtuelne mašine i biblioteke klasa prvobitno su Sun
objavili pod vlasničkim licencama. Od maja 2007. godine, u skladu sa specifikacijama Java
Communiti Procesa, Sun je oslanjao većinu svojih Java tehnologija pod GNU General Public
License. Drugi su također razvili alternativne implementacije ovih Sun tehnologija, kao što su
GNU Compiler za Java (bitecode compiler), GNU Classpath (standardne biblioteke) i
IcedTea-Veb (dodatak za pretraživače za aplete). Najnovija verzija je Java 10, objavljena 20.
marta 2018. godine, koja sledi Java 9 nakon samo šest meseci u skladu sa novim rasporedom
izdanja. Java 8 je i dalje podržan ali neće biti više bezbednosnih ispravki za Java 9. Verzije
ranije od Java 8 podržavaju kompanije na komercijalnoj osnovi; na primer. od Oraclea nazad
na Java 6 od oktobra 2017. godine (dok oni još uvek "visoko preporučuju da deinstalirate"
pre-Java 8 sa barem Vindovs računara).
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); // Prints the string to the
console.
}
}
18
Назив матурског рада Име и презиме ученика, IV-1
5. ЗАКЉУЧАК
Programiranje video igara je vrlo složen , zahtevan i dugotrajan proces. Od početne ideje i
prvog primerka source koda do završnih stadijuma pred izdavanje igre pa i konstantnog
održavanja video igre kroz period održavanja , programeru moraju da održe isti nivo rada i
napora koji ulažu kako bi do korisnika uvek stizala najbolja moguća verzija video igre. Dakle
programiranje je proces stvaranja i konstantne izmene stvorenog , naročito kod video igara
gde sam izgled video igre ne zavisi isključivo od programera već i od mnogo drugih timova
koji su zaduženi za dizajn karaktera , dizajn nivoa , smišljanje priče , pisanje scenaria ,
pravljenja CGI-a , tako da programeri kod izrade video igara imaju naročito težak posao jer
moraju svoj kod , koji predstavlja strukturu igre , da menjaju konstantno i prilagodjavaju
dizajnu i scenariju koji su ostali članovi tima napravili , a svi znamo da je neverovatno težak
posao menjati osnovu u skladu sa onim što se dalje gradi , što nam govori koliko programeri
imaju važnu ulogu u stvaranju ne samo video igara nego i svih programa neophodnih za
funkcionisanje računara. Naravno nisu samo programeri zaslužni za krajnji izgled video igre ,
deo zasluge ide svim ostalim članovima izdavačke kuće od umetnika i scenarista koji
neposredno utiču na dobijanje igre preko vođa i direktora koji organizuju ceo proces razvoja
igre do izdavači i komercijalista koji su zaduženi za što bolje plasiranje video igre na marketu.
Pored svega toga i dalje su programeri najvažniji u celoj priči i upravo zbog toga se ovaj rad i
tema fokusiraju upravo na programiranje video igara.
19
Назив матурског рада Име и презиме ученика, IV-1
ЛИТЕРАТУРА
1.
20
Назив матурског рада Име и презиме ученика, IV-1
Комисија:
Председник _______________
Испитивач _______________
Члан _______________
Коментар:
21