Projekt
see more works
Pogledajte osnovni primjer!
Jednostavna igra u Unityu
Projekt
Projekt
see more works
Pogledajte osnovni primjer!
Jednostavna igra u Unityu
Unity game engine je engine za igre i racunalnu grafiku opcenito koji je razvijen od strane Unity Tachnologies. Primarna karakteristika engine-a je da ga je moguce izvoditi na svim platformama koje danas vladaju racunalnim trzistem. Upravo zbog toga je moguce koristiti Unity na: Osobnim racunalima (Win / Linux) kao i u Browserima kao web pluginove, konzolama i mobilnim uredajima. Upravo je to osiguralo popularnost ovog engine-a na trzistu. Sam enigne je u cijelosti napisan u C/C++ programskim jezicima. Kako bi se olaksao razvoj korisnicima , odnosno developerima igara, na jezgri sustava sagraden je wrapper (omotac) koji postavljaj sloj za pristup iz .NET jezika. Tako se olaksava skriptiranje i koristenje grafickog sucelja koje Unity pruza. Takoder, kako bi se dodatno prosirila raznovrsnost same platforme, osiguran je API za razvoj u Javascriptu, C# i Boo-u. Unity Technologies, poduzece koje je stvorilo Unity Game Enigne osnovano je 2004 godine od strane Davida Helgason-a (koji je ujedno danas i izvrsni direktor poduzeca) te Nicholas Francis-a i Joachim Ante-a. Poduzece je osnovano u Kopenhagenu, Danska. Primarni razlog za osnivanje poduzeca je bio relativan neuspjeh igre koju je izradila navedena trojka, GooBall, a zatim i zelja da se stvori engine koji ce biti relativno dostupan svima. Projekt je odmah dozivio uspjeh kod ulagaca te je privukao mnogo venture kapitala. Medutim, mnogo vaznije od toga je bilo privlacenje pozornosti programerske zajednice, odnosno krajnjih korisnika softwarea. Na srecu, to im je i uspjelo, buduci da su u pravilu alternative skupe ili razvoj vlastitog ne dolazi u obzir. Ipak, ono sto je najvise pomoglo razvoju je bio svkako iPhone. Unity je bio prva platforma koja je u cijelosti podrzavala sve mogucnosti uredaja i OS-a. Tako je danas vise od 50% igara na iOS i Android uredajima napravljeno upravo u Unity-u.
Unity Game engine podrzava integraciju sa mnogo alata za 3d modeliranje i uredivanje slika i slicno. Neki od tih alata su: 1. 3D studio MAX 2. MAYA 3. BLENDER 4. AdobePS, Fireworks 5. Cheetah3D 6. SoftImage i slicno Podrska za navedene alate se uglavnom ogleda u trenutnom osvjezavanju datoteka koje su stvorene u ostalim aplikacijima te propagiranje novina kroz cijeli projekt. Takoder, omoguceno je unosenje nativnih formata tih navedenih aplikacija. Time je omoguceno direktno integiranje vektorske grafike iz npr. Photoshopa te koristenje 3D modela iz specijaliziranih alata kao sto je Maya. To je takoder jedna od velikih prednosti same platforme. Osim toga, vazno je primjetiti povijesni razvoj Unity-a kroz platforme. Spomenuli smo igru GooBall, koja je bila ontoloski zacetak razvoja ovog engine-a. Ona je bila izradena za MAC racunala. Tako je prvi Unity bpodrzavao samo Apple OS. Kroz godine i verzije Enigne-a se razvija i podrska za razlicite platforme. Tako posljednja verzija – Unity 4 podrzava sve navedeno u prijasnjem tekstu. Graficki engine unitya mora biti raznovrsan, buduci da radi na mnogo platformi. Tako se na Windowsu koristi Direct3D, OpenGL za Mac, Windows i Linux te raznovrsni API-ji za ostale uredaje.
Kao sto je vec napomenuto, kako bi se omogucio efektivan skripting za projekte u unity-u razvijeni su wrapperi ra jezgru engine-a. Tako je scripting uglavnom temeljen na Mono-u. Mono je Open-Source projekt koji je osnovand od Xamarin-a. To je .NET Framework kompatibilni set alata koji omogucuje kompiliranje C# koda i izvodenje CLR-a. To znaci da je moguce koristiti DLL datoteke drugih .NET projekata. Stoga je primarna primjena Mono-a zapravo cross-platform izvodenje aplikacija, koje su sada prisutne i na Linuxu, Androidu, BSD-u, iOS-u i slicno. Programerima je tako omoguceno da koriste UnityScript (koji je custom implementacija ECMAScripta), C# i Boo. Skriptiranje u Unity-u se svodi na dodavanje custom skriptnih objekata koja zovemo ponasanja na objekte u igri. Razlicite funkcionalnosti u skripti se dogadaju na razlicite dogadaje koji se odvijaju oko tih objekata. Postoje tri primarna dogadaja u unity skriptiranju 1. Update - funkcija koja se odvija prije renderiranja svake slicice. Ta funkcija ce prirodno sadrzavati vecinu koda igre. Naravno, kod za fiziku se ne odvija u ovoj funkciji 2. FixedUpdate - sadrzi kod za fiziku te se odvija svaki fizikalni vremenski korak. 3. Kod izvan funkcija - Ucitava se kada je objekt ucitan. Primarno sluzi inicijalizaciji.
Premda mnogo developera govori o UnityScriptu kao o JavaScriptu (cak i poistovjecuje), oni su dva vrlo razlicita jezika. Iako je sintaksa slicna, njihova semantika se razlikuje. Tako vecina skripti koja je napisana u JS-u nece raditi u US-u bez vecih alternacija. Zapravo je najbliza implementacija Microsoftov JScript .NET. Neke od primarnih razlika koje primjecujemo je da je JavaScript class-free jezik za razliku od UnityScripta. Tako ce objekt kojemu je definirana klasa u JavaScriptu biti dinamican tijekom cijelog izvodenja, a UnityScript zadrzava StronglyTyped pristup. Sljedeca, manje bitna, ali svakako primjetna razlika, koja cesto upada u oci je da u JavaScriptu mozemo dodijeliti vise varijabli unutar jedne linije. Na primjer: Var x = 'a', y='b', z='c' S druge strane, UnityScript to ne podrzava. Takoder, ne postoje globalne varijable, privatnost objekata i varijabli je bolje definirana, ne mozemo koristi WITH, te nema REGEXA. Kako bi docarali neka osnovna svojstva prikazimo neki osnovni kod: HelloWorld skripta Helloworld skripta je prilicno standardna, bez velikih iznenadenja: function Update () { print("Hello World"); } Ipak, primjetimo da se ova skripta ne odnosi na objekt nego se izvodi neovisno. Zapravo gotovo kao kod izvan svake funkcije koji smo opisali gore. Manipuliranje objektima u igri Neke od osnovnih manipulacije objektima su naravno pomicanje, rotacija, skaliranje i slicno. Jednostvan primjer rotacije vidimo u sljedecem kodu: function Update () { transform.Rotate(0, 5*Time.deltaTime, 0); }
Boo skriptni jezik je tesko usporedivati sa onim sto poznajemo danas, buduci da je dosta razlicit od Jave, C# i Javascripta. Najbolje ga je zapravo staviti rame uz rame s Pythonom, buduci da dijeli mnoga svojstva upravo s tim jezikom. Kao i kod Pythona, Boo hvale da ga je lako citati, pisati i odrzavati. HelloWorld skripta HelloWorld skripa je opet prilicno jednostavna: def Start (): Debug.Log("Hello World") Start skirpta import UnityEngine import System.Collections class example(MonoBehaviour): private target as GameObject def Start(): target = GameObject.FindWithTag('Player')