# 3 Unreal Engine ## 3.1 Što je Unreal Engine Unreal Engine (UE) jedan je od najjačih softvera za razvoj igara na svijetu. Razvio ga je Epic Games 1988. godine. Smatra se najjačim zbog širokog raspona alata, uređivača i značajki koje pruža, pa razvoj igara omogućuje svima. U početku je stvoren za pucačine na osobnom računalu, ali se od tada razvio u alat koji se koristi za različite žanrove trodimenzionalnih (3D) igara. (https://www.educba.com/what-is-unreal-engine/) S obzirom na to kako je s vremenom napredovao, druge industrije su uključile UE u svoj program rada, poput filmske i televizijske industrije. Napisan je na C ++ programskom jeziku, pa zbog toga podržava mnoge platforme, poput osobnih računala (PC), virtualne stvarnosti (VR), konzola i mobilnih platformi. ## 3.2 Usporedba s drugim alatima Kada plan za stvaranje igre nastane, prva od stvari koju programer mora odlučiti je koji alat će koristiti za svoj projekt. Ova odluka može biti problematična s obzirom na količinu alata za razvijanje igara na tržištu. Za usporedbu možemo iskoristiti tri najpopularnija alata za razvijanje igara u 2021. godini; UE, Unity i Godot. ### 3.2.1 Prednosti i mane Unreal Engine-a Najpopularniji od trojke je UE. Široko je poznat po svojoj mogućnosti za stvaranje igara visoko kvalitetne grafike. Iako se za programiranje igre koristi jezik C++, nudi alternativnu opciju naziva *Blueprints*. To je visualni sistem programiranja, omogućavajući programiranje korisnicima koji ne znaju programski jezik. Ovaj način programiranja može biti ponešto stresan za nove korisnike, pogotovo za korisnike koji nisu upoznati sa logikom programiranja. UE najčešće koriste kompanije s velikim budžetima, težeći stvaranju svjetski poznatih igara kao što su npr. *Bioshock, Dishonored* itd. Prednost kod ovog alata je još i njihovo vlastito tržište materijalima, mapama i objektima za igru. Često se na njihovoj stranici prodaju objekti za potpuno besplatno, te su ostali popusti sveprisutni. Korištenje tih materijala i objekata garantira njihovu kvalitetu i optimiziranost u odnosu na sam UE, s obzirom da su sve te komponente napravljene izričito za UE. Neke od značajki s kojima se UE ističe su uređivači s dinamičkom fizikom i efektima, fotorealističnim iscrtavanjem, realističnim animacijama i još mnogo toga. Ima integriranu medijsku podršku koja donosi veću kontrolu nad video manipulacijama, uređivanjem zvuka i medijskim okvirom. Također, nudi besplatan sadržaj s kojim svatko može stvoriti realne i visokokvalitetne razine i likove sa svojim Megascanima, bibliotekom skeniranja u stvarnom svijetu s tisućama 3D materijala i Metahumanima, aplikacijom za stvaranje fotorealističnih digitalnih ljudi s kosom i odjeća. https://www.unrealengine.com/en-US/features , https://www.unrealengine.com/en-US/metahuman-creator Kao bitna stavka za naglasiti je to da je UE besplatan za koristiti, te nudi punu dokumentaciju za korištenje. Dozvoljeno je objaviti svoju završenu igru na bilo koju platformu, te staviti ju na tržište. Međutim, u pravilima stoji da u slučaju da igra zaradi preko $1,000,000 dolara, potrebno je platiti UE kompaniji 5% svoje zarade. (neke slikice ubaciti obavezno) ### 3.2.2 Prednosti i mane Unity-a Unity alat slovi kao najbiraniji alat za samostalne programere koji žele napraviti svoj vlastiti projekt. Razvio ga je Unity Technologies 2005. godine. Radi svoje jednostavnosti, učenje ovog alata ide poprilično brzo. Grafički se poboljšava svakom godinom, međutim i dalje nije na razini grafike koju UE može pružiti. Također, najčešće se koristi u izradi igara za mobitele. Za programiranje igre koristi jezik C#. Ovaj jezik je mnogo jednostavniji za naučiti, s obzirom da su naredbe mnogo jasnije za shvatiti. Unity ima detaljno razrađenu dokumentaciju, kao i vodiče kroz programiranje. Međutim, ako programiranje predstavlja problem, također postoji vizualni sistem programiranja kao i UE. Radi toga što ovaj alat ima manje mogućnosti i pomoćnih alata za manipulaciju igrom, najčešće se koristi za izradu kraćih igara manje zahtjevnosti. Primjer nekih igara napravljenih u ovom alatu su *Hollow Knight* i *Inside*. Također, Unity ima sam svoje tržište, ali ne nudi visokokvalitetne i realistične objekte besplatno kao što ih nudi UE, upravo zato jer se najčešće koristi za igre manjih razmjera. Postoje besplatni paketi koje korisnik može preuzeti, no to su najčešće početnički paketi i manji alati za započeti igru. Jedna od lošijih strana ovog alata je što, za razliku od UE granica zarade od igre je niža. Drugim riječima, ako igra napravljena u besplatnom Unity alatu pod Personal licencom zaradi više od $100,000 dolara u godinu dana, alat više nije moguć za korištenje dok god korisnik ne kupi Professional licencu kojoj cijena varira između $200-$400 dolara. Kada se to dogodi, nadogradnje i popravljanje svoje igre nije moguće bez licence. ### 3.2.3 Prednosti i mane Godot-a Godot je besplatni open-source softver razvijen 2014. godine, čineći ga najmlađim alatom od troje. Vrlo dobra karakteristika ovog alata je upravo to što je open-source, što znači da se korisnik ne mora brinuti oko licence ili plaćanja nakon određene zarade. Uz to što je besplatan, vrlo je jasan i povoljan za početnike u stvaranju igara. Jezik kojim se programira u ovom alatu zove se GDScript, jezik napravljen konkretno za ovaj alat. Jezik je sličan Pythonu, pa bi nekim korisnicima bilo lakše programirati u tom jeziku više nego u C++ ili C#. Na drugu stranu, ovaj alat nema mogućnosti za pružiti visoku kvalitetu grafike kao UE ili Unity. Ima svoje tržište, ali u odnosu na ostala dva alata, vrlo je maleno i prazno. Iz tog razloga je najbolji za početnike koji ne žele veliki pothvat iz svoje igre, već žele početi učiti od malih koraka. Nema konkretnih primjera uspješnih igara za ovaj alat, s obzirom da su to najčešće male igre napravljene s ciljom vježbe, učenja ili kao prezentacija za neku konferenciju. ## Kao zaključak usporedbe, sva tri alata su besplatna, imaju svoje tržište, no za stvaranje najkvalitetnijih i grafički najrazvijenijih igara UE se pokazao najpovoljnijim za te svrhe. ## 3.3 Osnove sučelja Za bolje shvaćanje toga što je UE alat, pogledajmo njegovo sučelje. U Unreal Editoru scene u kojima se stvara doživljaj igre općenito se nazivaju razinama (eng. *levels*). Razina je 3D okruženje u koju se postavlja niz objekata i geometrija kako bi se definirao svijet koji će igrači doživjeti. Svaki predmet koji se stavi u svijet, bilo da je to svjetlo, mreža ili lik, smatra se Glumcem. Tehnički gledano, Glumac je klasa programiranja koja se koristi u okviru Unreal Engine-a za definiranje objekta koji ima 3D podatke o položaju, rotaciji i mjerilu. Stvaranje razina počinje postavljanjem objekata na mapu unutar UE-a. Ti predmeti mogu biti svjetska geometrija, svjetla, početne točke igrača, oružja ili vozila. Budući da je sučelje za Unreal Editor vrlo prilagodljivo, moguće je da se ono može promijeniti od jednog pokretanja programa do drugog. U nastavku možete vidjeti zadani izgled sučelja. Kada korisnik otvori UE, prvi prozor koji se otvori je biranje projekta. Ako korisnik želi napraviti novi projekt, mora izabrati tip projekta. **SLIKA - Osnove1** Nakon što korisnik otvori novi ili prijašnji projekt, zadano sučelje koje vidi izgleda ovako. **SLIKA - Osnove2** Vidimo brojem označene prozore: 1. Menu Bar (Izbornička traka) 2. Toolbar (Alatna traka) 3. Place Actor / Modes (Postavite glumca / Načini) 4. Viewports (Okviri za pregled) 5. Content Browser (Preglednik sadržaja) 6. World Outliner (Objekti u svijetu) 7. Details (Detalji) Izbornička traka u uređivaču trebala bi biti poznata svima koji su već koristili Windows aplikacije. Omogućuje pristup općim alatima i naredbama koje se koriste pri radu s razinama u uređivaču. Alatna traka prikazuje grupu naredbi koje omogućuju brz pristup uobičajenim alatima i operacijama. Uređivač razine može se staviti u različite načine uređivanja kako bi se omogućilo specijalizirano sučelje za uređivanje i tijekove rada za uređivanje određenih vrsta glumaca ili geometrije. Okvir za pregled je prozor u svjetove koje korisnik stvara u Unreal Engine-u. Ova ploča sadrži skup okvira za pregled, od kojih se svaki može povećati tako da ispuni cijeli prozor i nudi mogućnost prikaza svijeta s jednog od tri ortografska prikaza (odozgo, sa strane, sprijeda) ili perspektivnog prikaza koji daje potpunu kontrolu nad onim što se vidi i kako se vidi. Preglednik sadržaja služi za uvid u učitane objekte u projektu, kako bi korisnik što lakše nalazio potrebne objekte za scenu ili razinu. Objekti u svijetu se lako mogu vidjeti na ovom popisu, te olakšava posao za korisnika koji koristi veliki broj objekata u sceni. Također, omogućuje korisniku da vidi kako bi scena izgledala bez tog objekta bez da ga mora brisati, i to postiže s opcijom *Hide In World*. Prozor s pojedinostima sadrži informacije, pomoćne programe i funkcije za trenutni odabir u okviru za prikaz. Sadrži okvire za uređivanje transformacija za premještanje, rotiranje i skaliranje glumaca, prikazuje sva svojstva koja se mogu uređivati za odabrane glumce i omogućuje brz pristup dodatnim funkcijama uređivanja ovisno o vrsti glumaca odabranoj u prikazu. (https://docs.unrealengine.com/4.27/en-US/BuildingWorlds/LevelEditor/) ## 3.4 Programi za sjenčanje u Unreal Engine alatu Kao što smo spomenuli ranije u ovom radu, programi za sjenčanje najčešće se upotrijebljuju za stvaranje zasjenjenih i osvijetljenih područja pri prikazivanju 3D modela. Međutim, model na kojem program za sjenčanje vrši radnju uvijek sadrži neki materijal i teksture koje naknadno korisnik može načiniti svijetlijima, tamnijima, mutnijima itd. uporabom programa za sjenčanje. Teksture su slike koje se koriste u materijalima, te se spajaju na površine na koje se materijal nanosi. Ovisno o potrebi, teksture se mogu izravno primjenjivati, na primjer, za teksture osnovne boje, ili se vrijednosti piksela teksture koriste unutar materijala kao maske. Uglavnom se teksture stvaraju izvan UE alata u aplikaciji za uređivanje slika, poput Photoshopa, a zatim se uvoze u UE alat putem preglednika sadržaja (eng. *Content Browser*). Jedan materijal može upotrijebiti nekoliko tekstura koje su uzorkovane i primijenjene u različite svrhe. Na primjer, jednostavan materijal može imati teksturu osnovne boje, teksturu refleksije i normalnu mapu. Osim toga, mogu postojati mape emisivnosti i gruboće pohranjene u alfa kanalima jedne ili više ovih tekstura. https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/Textures/ ### 3.4.1 PBR teksture No, uporaba tekstura postala je veoma napredna kroz zadnjih par godina, te cilja što većem realizmu. Jednostavna osnovna boja više nije jedina mapa teksture koja se koristi, već postoji deset različitih mogućih mapa tekstura koje nadodaju efektu PBR materijala. PBR stoji za *Physical Based Rendering*, odnosno renderiranje na fizičkoj osnovi. Koristi se od 1980-ih i razvijeno je za ispisivanje veoma fotorealističnih tekstura. PBR koristi točne modele rasvjete za postizanje ovog cilja i polako postaje standard za sve materijale. PBR mape tekstura primjenjuju se na površine 3D modela za stvaranje ponavljajućih uzoraka ili posebnih vizualnih efekata. Oni se mogu koristiti za definiranje specifičnih detalja poput kože, kose, odjeće ili bilo čega drugog. Deset različitih vrsta mapa teksture su: 1. Osnovna boja (eng. *Albedo*) 2. Normalna mapa (eng. *Normal Map*) 3. Gruboća (eng. *Roughness*) 4. Metalnost (eng. *Metalness*) 5. Refleksija (eng. *Specular*) 6. Mapa visine (eng. *Height Map*) 7. Prozirnost (eng. *Opacity*) 8. Ambijentalna okluzija (eng. *Ambient Occlusion*) 9. Prijelom (eng. *Refraction*) 10. Auto-osvijetljenje ili Mapa Emisivnosti (eng. *Self-Illumination* ili *Emissive color*) Mapa Osnovne boje služi kao baza cijelog materijala. One su ili jednobojne ili ravne svjetlosne slike uzorka s kojim korisnik radi (na primjer cigle). Koriste cijeli RGB (*Red, Green, Blue*) spektar. Pri uporabi ove mape teksture, važno je da je osvjetljenje ravno. Nije poželjno da se prikazuju sjene jer se osvjetljenje u sceni može razlikovati od izvorne fotografije. To će uzrokovati nedosljednost u osvjetljenju teksture i učiniti je nerealnom. Glavna točka ove mape teksture je definiranje boje teksture, no ima i neke sekundarne namjene kao definiranje boje refleksije materijala na metalnim teksturama. Normalne karte važne su za dubinu tekstura. Ova mapa teksture koristi složene izračune za lažiranje načina na koji svjetlo stupa u interakciju s površinom materijala za lažiranje manjih izbočina i udubljenja. Važno je napomenuti da normalna karta neće promijeniti osnovnu geometriju modela na koji se postavlja, već "glumi" da udubljenja postoje. Osnovna boja normalne karte je svijetloljubičasta koja predstavlja površinu poligonalne mreže. Odatle se RGB vrijednosti koriste za stvaranje pukotina, izbočina ili pora u modelu. Vrijednosti R, G i B jednake su koordinatama X, Y i Z na osnovnoj mreži. Gruboća (ponekada nazvana eng. *Glossiness*, odnosno Sjaj) definira kako se svjetlost raspršuje po površini modela. Ova mapa teksture počinje s vrijednošću nula pri čemu model uopće neće raspršiti svjetlost, čineći refleksije i osvjetljenje znatno oštrijima i svjetlijima na materijalu. S druge strane, ako se gruboća pojača do kraja, svjetlost će se više raspršiti po materijalu. Zbog toga se osvjetljenje i refleksije šire dalje po modelu, ali izgledaju znatno tamnije. Ove su postavke vrlo važne jer različiti materijali u stvarnom životu imaju vrlo različite hrapavosti. Ove karte su sive boje, s time da je bijela boja maksimalne hrapavosti, a crna glatka i sjajna površina. Metalnost se koristi za definiranje je li materijal (ili njegov dio) goli metal. Metalne mape su također u sivim tonovima, no crno na mapi metalnosti znači da će dio karte koristiti mapu osnovne boje kao difuznu boju (boja koju tekstura pokazuje kada se pogodi svjetlošću). Bijela će umjesto toga koristiti mapu osnovne boje za definiranje boje i svjetline vaših refleksija i postaviti difuznu boju materijala na crnu. U ovom slučaju difuzna boja više nije potrebna jer će sva boja i detalji tog dijela materijala sada potjecati od refleksija, pa će tako postati crna. Prednost mapa metalnosti je njihova jednostavnost korištenja za simulaciju materijala iz stvarnog svijeta. Refleksija se ponekada može koristiti umjesto mape metalnosti. Mape refleksije u PBR-u mogu koristiti punu RGB boju i utjecati na to kako je mapa osnovne boje dizajnirana (ili kako se ona ispisuje iz željenog paketa tekstura). Prednost ove mape je što se ona može koristiti kako bi korisnik utjecao na način na koji se refleksije obrađuju na nemetalnim materijalima, dopuštajući veću fleksibilnost i kontrolu. Nedostatak toga je dodatni sloj složenosti koji ta fleksibilnost dodaje. Može biti teže precizno birati željeni rezultat. Mape metalnosti obično izgledaju jednako dobro, ponekad i bolje u određenim uvjetima. Mape visine slične su normalnim mapama jer se koriste za dodavanje manjih detalja u osnovnu mrežu. Velika razlika između ove dvije mape je u tome što će, umjesto da pretvara neravnine i padove poput normalne karte, mapa visine isjeckati mrežu i zapravo dodati podatke u 3D mrežu. Mape visina su još jedne od mapa u sivim tonovima s crnom bojom koja predstavlja dno mreže, a čista bijela najviše vrhove, s nijansama sive koje predstavljaju sve između. Prednost visinskih mapa je velik detalj koji dodaju i koji izgleda ispravno pod svim kutovima i uvjetima osvjetljenja. No, one mogu uzrokovati usporavanje igara ili vrijeme iscrtavanja, te se iz tog razloga preferiraju normalne karte. Prozirnost je važna vrsta mape jer omogućuje da dijelove materijala učini transparentnim. Ovo je važno ako se izrađuje staklo ili efekt dima. Mape prozirnosti su sive boje. Bijela je potpuno neprozirna, a crna je prozirna. Nijanse sive različite su razine prozirnosti među njima. Ako je materijal samo čisto staklo ili drugi potpuno proziran materijal, tada bi trebalo umjesto ove mape koristiti samo konstantnu vrijednost. 0.0 je neprozirna, a 1.0 transparentna. Ambijentalna okluzija je karta koju PBR alat kombinira s mapom osnovne boje u vrijeme iscrtavanja kako bi definirao kako reagira na svjetlost. To je karta u sivim tonovima s bijelom bojom koja će pokupiti najviše svjetla, a tamnija područja su više u sjeni i manje reagiraju na svjetlo. Prijelom je proces savijanja svjetlosti pri prolasku kroz krutu tvar, tekućinu ili plin, što narušava način na koji stvari izgledaju kada ih gledamo kroz prozirni objekt. To je efekt koji omogućuje rad povećala i čini da stvari izgledaju drugačije kad se gledaju pod vodom. Ova mapa je važan dio tijeka rada s materijalima jer svi prozirni materijali u stvarnom životu uzrokuju lom svijetla, pa ga je potrebno replicirati kako bi u grafici radio što realnije. Mape prijeloma obično su samo konstantne vrijednosti. Auto-osvjeljivanje (ponekad se nazivaju i mapa emisivnosti) se koristi za to da neki dijelovi materijala naizgled emitiraju vlastitu svjetlost pa su i dalje vidljivi u tamnim područjima. Auto-osvjeljivanje je korisno za uključivanje malih LED dioda ili za neke zanimljive svjetlosne efekte, ali ako se koristi previše, dovodi do potpunog ispiranja detalja i uklanja realističnost iz scene. Ove mape koriste RGB spektar. Iako je moguće osvijetliti cijelu scenu pomoću mape za auto-osvjeljivanje, to je loša praksa i puno je teže od dodavanja konvencionalne rasvjete. UBACI SLIKE ----> https://conceptartempire.com/texture-maps/ https://help.poliigon.com/en/articles/1712652-what-are-the-different-texture-maps-for https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/Rendering/ShaderDevelopment/ ### 3.4.2 Ne-PBR teskture Radnje u radnim tijekovima s ne-PBR teksturama nisu standardizirane u 3D programima. Postoji par radnji koje se pojavljuju često, te se ovi primjeri pojavljuju se u Autodesku 3ds Max, ali se odnose i na neke druge 3D softvere. Difuzne mape (eng. *Diffuse*) su ne-PBR ekvivalent mape osnovnih boja. One definiraju boju materijala kako svjetlost pada na njega. Glavna razlika je u tome što se difuzne mape obično ne izrađuju s ravnim svjetlosnim profilom. Njen rezultat se može objasniti kao mapa osnovne boje i mapa ambijentalne okluzije spojena u jednu sliku, jer su informacije o sjeni dio difuzne karte. Mape Neravnosti (eng. *Bump Map*) su temeljniji oblik normalne mape. Dok normalna mapa koristi puni RGB spektar za približavanje sve 3 dimenzije prostora, mape neravnosti su u sivim tonovima koje rade samo u smjeru gore ili dolje. Kako se karta obavija oko osnovne mreže, može učiniti da se neravnine pojavljuju u svim smjerovima mreže. Rezultati nisu točni kao kod normalne mape, pa se stoga mape neravnosti prestaju koristiti u industriji. Zbog nedostatka postavki metalnosti, u ne-PBR radnim tijekovima koriste se mape Odraza. Obično su to konstantne vrijednosti slične mapama prijeloma u PBR-u, a njihovu boju i intenzitet kontrolira mapa refleksije. UBACI SLIKE ----> https://conceptartempire.com/texture-maps/ https://help.poliigon.com/en/articles/1712652-what-are-the-different-texture-maps-for https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/Rendering/ShaderDevelopment/