DIY igra. Kreiranje 3D game engine-a zasnovanog na GLScene

Pretplatite se
Pridružite se koon.ru zajednici!
U kontaktu sa:

Ovo je peti članak u nizu resursa za početnike u razvoju igara: Game engine - napišite ga sami ili pripremite?

Jedna od najčešćih grešaka programera početnika je želja da po svaku cijenu napišu vlastiti motor za igre i naprave igru ​​na njemu. Nije neuobičajeno kada se oba ova slučaja pokušavaju izvoditi paralelno, na kraju, naravno, uspješno oba slučaja.

Zašto ne biste trebali napisati svoj vlastiti motor za igre

Prije svega, morate sebi odgovoriti na jedno jednostavno pitanje - šta tačno želite da radite, igra ili motor? Ako je motor, onda zaboravite na igru ​​i bavite se samo njom. Ako je igra, uzmite gotov motor ili konstruktor i napravite igru ​​bez ometanja razvoja njenog softverskog dijela.

Stvaranje punopravnog motora igre zahtijeva posebna znanja, razumijevanje kako igre rade, ogromnu količinu slobodnog vremena i želju za pisanjem izvornog koda. I vjerujte mi - ovo nikako nije zabavna aktivnost, kako se možda čini. Čak iu besplatna gotova rješenja dostupna za korištenje, uložene su hiljade čovjek-sati programiranja, a da ne govorimo o komercijalnim motorima, u koje su, osim vremena, uložena i ozbiljna finansijska sredstva. Ponovno izmišljanje točka kada svaka druga osoba vozi auto je nezahvalan zadatak i potpuno nepotreban.

Osim besplatno Sistemi za razvoj igara, mnogi komercijalni motori za igre, potpuno spremni za trenutnu upotrebu u projektima igara, nude nekoliko veoma atraktivne šeme licenciranja: potpuno besplatno ( Unity 3D u bivšem Indie izdanju), mješovita shema naknada ( Unreal Development Kit)- $99 naknade za licencu i 25% isplata nakon prvih 5,000 dolara zarađenih, ili pristupačna cijena pune komercijalne licence (Unity Pro za 1,500 dolara).

Osim toga, niko ne može zabraniti korištenje besplatnog izdanja bilo kojeg motora do određene faze spremnosti igre, tako da kasnije, uz opipljiv i, što je najvažnije, vizualni rezultat svog rada, mogu početi tražiti treće strane. sredstva za prijenos projekta na komercijalnu licencu.

Za 95% igračkih projekata bilo kojeg žanra i orijentacije moguće je pronaći gotova rješenja koja zadovoljavaju njihove potrebe. Vremena kada su motori za igre bili kuriozitet za domaće tržište razvoja igara i cijena veliki novac, nestalo - i s njima su okončani argumenti u korist pisanja vlastitog game engine-a.

Štoviše, želja da sve napišete na svoju ruku, zajedno s iluzijom da će takvo rješenje biti bolji proizvod od postojećih analoga, može odigrati vrlo okrutnu šalu početnicima kada se vrlo ograničena sredstva ulože u potpuno nepotreban zadatak (lični iskustvo), što je na kraju dovelo do prerane smrti projekta.

Sažimanje: pisanje sopstvenog game engine-a mogu da urade oni koji jasno razumeju šta tačno i zašto im je potrebno, vide adekvatne prednosti takvog pristupa i umeju da svoj plan sprovedu u delo u razumnom vremenskom okviru. Svi ostali bi trebali potražiti gotova rješenja, pošto ih je u posljednje vrijeme bilo dovoljno - uzmite barem isti Unity 3D i UDK.

Želite li kreirati vlastitu 3D igru ​​otvorenog svijeta sa uvjerljivom pričom? po vijeku digitalne tehnologije sve je moguce! Posebni motori za igre omogućit će vam da ostvarite bilo koju fantaziju, čak i bez znanja programiranja.

Hvala za moderne tehnologije, danas gotovo svako može napraviti svoju vlastitu 3D igru. Sve što vam je potrebno za rad je kompjuter, poseban program i margina istrajnosti. Isprobajte se kao kreator virtuelnih svjetova. Usavršite svoje vještine u kreiranju 3D igara i možda će nas za nekoliko godina upravo vaša kompanija oduševiti prekrasnom digitalnom zabavom.

Probudite svoju želju za umjetnošću, a mi ćemo vam pomoći da odaberete zgodan alat za kreativnost.

Na kojem motoru graditi 3D igre?

Zbog sve veće popularnosti kompjuterskih igrica, sve je više programa za njihovo kreiranje. U takvoj raznolikosti ponuda lako se zbuniti i odabrati ne najprikladniji alat. Kako bismo bili sigurni da je vaš rad na pravom putu od samog početka, pomoći ćemo vam da odaberete savršeni motor za kreiranje 3D igara.

Za naše goste prikupili smo najbolji programi Na jednom mestu. Ovdje možete detaljno proučiti svojstva motora, pogledati snimke ekrana i video tutorijale. Pročitajte recenzije, uporedite ocjene i preuzmite odgovarajuće 3D mašine putem torrenta ili servisa za razmjenu datoteka (MEGA ili Yandex.Disk).

Ranije smo se dotakli teme besplatnih motora za igre - . Istina, naslov članka je dat jednostavniji kako bi privukao više ljudi koji žele napraviti svoju 2D/3D igru.

U ovoj recenziji odlučio sam da razmotrim ozbiljnije igrice CryENGINE 3, Unreal Engine. Pogledajte i novu verziju Unity3D.

CryENGINE 3 Besplatni SDK

CryENGINE 3 je besplatni motor za igre kreiran od strane Cryteka, koji je objavio prvu verziju motora 2002. godine. Treća verzija je objavljena 2009. Svjetska slava ovog motora opravdana je nevjerovatnim grafičkim performansama proizvedenih proizvoda, od kojih neki izgledaju nevjerovatno fotorealistično.


Mogućnosti:

  • Gotove igre smatram najboljom demonstracijom mogućnosti, a ovdje se CryENGINE 3 ima čime pohvaliti. Sve vrijeme ovaj motor su koristili programeri igara kao što su Far Cry, Crysis i AION. Naravno, lista kreiranih igrica je mnogo duža, ali sam naveo najpoznatije igre.
  • CryEngine 3 je višeplatformski motor i podržava PC, PlayStation ® 3 i Xbox 360 ™.
  • Možete uvesti teksture iz 3ds max, maya i također iz prethodnih verzija motora.
  • Citiraću riječi osnivača kompanije Tsevat Yerlija: „Motor je bio spreman za narednu generaciju prije 3 godine. Već duže vreme imamo napredni sistem čestica, GPU renderovanje, odloženo senčenje, teselaciju, podršku za DX11 itd. stvarni primjeri kreirali igre, govore mnogo.

Primjeri igara: službena web stranica predstavlja najpopularnije igre na CryENGINE http://mycryengine.com/index.php?conid=68

Gdje početi?

SDK se preuzima kao arhiva, bez instalatera. Arhiva sadrži nekoliko fascikli, od kojih svaka ima svoju svrhu. Na primjer, da pokrenete uređivač, koristite fascikle bin32 ili bin64 (u zavisnosti od bitnosti vašeg sistema). Editor File editor.exe, ali da vidite rezultat - launcher.ex e.

Zapravo, ovo je malo objašnjenje, za ono što preuzmete, sve ostalo će vam reći brojni video tutorijali. Na sreću, ovaj motor se pokazao vrlo popularnim i za njega postoji cijela zajednica na ruskom jeziku (link ispod), ovdje ćete pronaći materijale za obuku i možete postaviti pitanje. Ovo, naravno, ide u prilog motoru za programere koji govore ruski, jer proces razvoja igre nije tako jednostavan i nije potpun bez upoznavanja sa tehničkom dokumentacijom.

Ograničenje besplatna verzija je da nećete moći dobiti licencu i distribuirati (prodati) igru ​​koju ste razvili.

Jezik interfejsa: engleski

Unreal Development Kit (UDK)

Unreal - ovo je riječ koju su programeri Unreal Engine-a odlučili koristiti ne samo u nazivu motora, već iu nazivu nekih igara - "Unreal", Unreal Tournament, Unreal Championship. Među puštenim proizvodima ima i masovni efekat, XCOM, Borderlands 2 i preko stotinu drugih neobične igre koje su dobile svjetsko priznanje.


Mogućnosti:

  • Unreal Engine je višeplatformski motor i podržava IBM PC kompatibilne računare, Xbox 360, PlayStation 3, Wii, Android. Da budemo precizniji, možete razviti igru ​​na Windows-u i pokrenuti rezultirajući proizvod na gore opisanim igraćim konzolama i, naravno, na samom Windows-u.
  • U početku je motor prilagođen za kreiranje pucačina, ali je pogodan i za druge žanrove, kao što su MMO igre.
  • Grafika na veoma visokom nivou. Sjene i svjetla s visokim detaljima. Postoji sistem za izračunavanje rasvjete Unreal Lightmass.
  • Ugrađeni uređivač ima ogroman skup ugrađenih alata, uključujući FaceFX Studio (animacija lica), mesh editor, Unreal Facade (razvoj arhitekture i zgrada), Unreal PhAT (rad sa fizikom) kao i editore za animaciju, teksture, zvukovi, nivoi, pejzaž i drugo.
  • Skriptiranje se izvodi u Unreal Script jeziku, koji uključuje mnoge funkcije koje pojednostavljuju razvoj 3D igara. Unatoč nekim poteškoćama, poput nasljeđivanja klasa, izgled koda Unreal Script sličan je istom C / C ++.

Primjeri igara: evo plusa za ovo što sam gore napisao - http://www.unrealengine.com/en/showcase/

Jezik interfejsa: engleski

Unity3D

Motor koji brzo dobija na popularnosti među početnicima. Razlog za to je sasvim prirodan - lakoća i intuitivnost kako interfejsa tako i sistema konstrukcije igre u celini. Mnogo video tutorijala i visokokvalitetne dokumentacije daju dodatnu prednost ovom motoru. U radu, Unity3D je prilično produktivan i stabilan.



Mogućnosti:

  • Multiplatformske igre i sam motor. Podržani su Android, iOS, Blackberry, Windows XP/Vista/7, OSX, Wii, Playstation 3, Xbox, Flash, Web Player. Posebno bih istakao web dodatak, jer sada kreirane 3D igrice možete igrati direktno u pretraživaču, ispod sam dao link sa primjerima igrica.
  • Obrađeni skoro svi žanrovi moderne igre, zaista je impresivno (http://unity3d.com/gallery/made-with-unity/profiles/)!
  • Pojednostavljeni uvoz tekstura, zvukova, fontova. Za uvoz, samo prevucite elemente u fasciklu tekstura na ploči motora. Podržani formati: JPEG, PNG, GIF, BMP, TGA, IFF, PICT, PSD, TIFF (slike); FBX, COLLADA, 3DS, DXF (3D modeli); MP3, OGG, AIFF, WAV, MOD, IT, S3M, XM (audio).
  • Skriptiranje. Skripte se mogu pisati u JavaScript-u, C#-u i dijalektu Pythona koji se zove Boo. Najčešće je kod napisan u JavaScript-u, osim toga, gotovo sva pomoć za Unity sadrži primjere u JavaScript-u. Možete provjeriti rad skripte direktno u igri bez napuštanja prozora Unity.
  • Grafički sistem je dobro optimizovan i radi na DirectX (uključuje podršku za DirectX 11) i OpenGL. Postoji podrška za odloženo sjenčanje i sjene u realnom vremenu. Tu je i ugrađeni generator terena i ugrađeni uređivač shadera.
  • Ako želite da razvijate igru ​​u timu, motor nudi sistem za kolaborativni razvoj za vas - Asset Server.

Primjeri igara: Bad Piggies, Wasteland 2. Neke igre se mogu igrati direktno na Web stranica Unity(zahteva instalaciju posebnog dodatka UnityWebPlayer)

Jezik interfejsa: engleski

Gdje početi?

Na našem forumu postoji tema posvećena ovom motoru (link ispod). Ovdje ćete pronaći video tutorijale i drugi materijal za učenje Unity3D-a.

Hajde da sumiramo. Šta odabrati?

Naravno, da biste odabrali motor, morate jasno znati za koju platformu ćete razvijati igru. Za mobilne platforme birajte između Unity3D i Unreal Development Kit (UDK). Unity3D ima najbogatiji izbor platformi: Android, iOS, Blackberry, Windows XP/Vista/7, OSX, Wii, Playstation 3, Xbox, Flash, Web Player (većina platformi je isključena u besplatnoj verziji).

Žanr igre:

Sa ova tri motora možete napraviti igru ​​bilo kojeg žanra, ali CryENGINE 3 i UDK će biti više fokusirani na FPS (pucače). Trkaći simovi su UDK jer je bolji sa fizikom, ali i Unity je u redu.

Obuka/Interfejs:

Skriptiranje je sastavni dio razvoja igara i Unity je ovdje u svom najboljem izdanju. Neki početnici mogu shvatiti kako napisati jednostavne skripte čak i bez dokumentacije. Što se tiče materijala za obuku, u RuNetu ga ima dovoljno za sve gore opisane motore, ali Unity3D je i ovdje u prednosti.

Grafika:

Pregled daje primjere gotovih proizvoda, već su dovoljni za izvođenje zaključaka. CryENGINE 3 nadmašuje konkurenciju, ali nije jasna superiornost. Unity u besplatnoj verziji je izgubio mnoge tehnologije, puna lista pogledajte ovdje - https://store.unity3d.com/ (dugme "pročitaj više" > "Poređenje licenci")

Odaberite motor na osnovu vaših potreba i znanja. Ipak vrijedi isprobati svaki i odabrati ono što vam je bliže i lakše.

Prije nekog vremena dotakli smo se teme kreiranja kompjuterskih igrica i pričali o jedinstvenom besplatnom 3D motoru napisanom u Delphi - GLScene(uzmi motor sa našeg CD/DVD-a ). Tema kreiranja punopravnih 3D kompjuterskih igrica bila vam je veoma interesantna, o čemu se moglo suditi po broju pisama koje ste dobili. Međutim, tada smo zaključili da je previše teško govoriti o programiranju motora. Od tada, vaš nivo se značajno povećao (o tome se može suditi i po pismima i aktivnostima na forumu časopisa), postali ste pametniji u programskim pitanjima. Pogotovo nakon objavljivanja ciklusa “ Programerska ostava”.
Od ovog broja počinjemo objavljivanje serije članaka u kojima ćemo detaljno razmotriti razne faze kreiranje 3D igre. Poboljšat ćete svoje programerske vještine i, kako kažu, gledati iza vela tajne koji razdvaja ozbiljne programere igara od običnih smrtnika.
Motor bilo koje igre sastoji se od mnogih i često nezavisnih građevnih blokova: kontrola sudara, fizički model, interfejs igre, glavni meni, učitavanje nivoa i još mnogo toga. Postoje specifične cigle
koje su potrebne samo za jedan žanr. Na primjer, vremenski modul je važan i potreban u simulatoru avijacije ili marine, dok je u strategiji u realnom vremenu sekundaran ili uopće nije potreban, au fudbalskom simulatoru modul šuteva je beskoristan. Ali nekoliko desetina kockica je prisutno u bilo kojoj igri. U nizu članaka govorit ćemo o svakoj od ovih cigli, pokazati kako se implementira i kako je povezati s ostalima. Do kraja ciklusa moći ćete sastaviti vlastitu kompjutersku igricu prilično visokog nivoa od ovih kockica.

Sta radis ovdje?
Za one koji su propustili neke od mojih prethodnih članaka (ili čak sve), odgovorit ću na vaša pitanja. Tako reći, mali tehnički uvod.
Zašto Delphi? Ovo razvojno okruženje i programski jezik Object Pascal dovoljno fleksibilan da stvori potpunu 3D igru ​​gotovo svakog žanra sa vrhunskom grafikom. Mnogi će tvrditi da je de facto standard za razvoj igara MSVC++ ili druga okruženja zasnovana na C++. Ali takvi standardi, kao što se često dešava, nastaju spontano. Nemojmo brkati dva pojma - jezik i razvojno okruženje.
C++ je definitivno moćniji od Object Pascala. Ali to je i manje visokog nivoa, odnosno višestruko teže. C++ nije pogodan za početnike. Object Pascal nije samo jednostavan, već je i dovoljno fleksibilan da na njemu može razviti punopravnu modernu kompjutersku igru. Sada za okolinu. Ovdje se ne može tako kategorično reći. Razvojno okruženje- stvar ukusa i navike svakog pojedinog programera. Dozvolite mi da podijelim svoje mišljenje o ovome. MSVC++ generiše nešto brži kod od Delphija. Zapravo, tu prestaju prednosti (ponavljam, po mom subjektivnom i neobavezujućem stavu). Trumps of Delphi - velika brzina kompilacije (desetine pa čak i stotine puta brža od MSVC ++), visoka kvaliteta alati za otklanjanje grešaka (u većini slučajeva Delphi označava tačno liniju koda koja sadrži grešku, dok MSVC ++ može ukazivati ​​na red nekoliko stranica od one koju tražite) i zgodan interfejs.
Zašto GLScene? Video sam i isprobao mnogo besplatnih 3D motora, ali sam se odlučio na ovaj. Njegova najvažnija prednost je što se GLScene stalno poboljšava. Programeri tome nisu stavili tačku i, najvjerovatnije, to nikada neće učiniti. Motor se stalno razvija i upija sav najnoviji tehnički napredak. Ovo je jedini besplatni motor za koji znam da se nikada neće zvati "zastarjelim". Nekoliko stotina entuzijasta koji stalno rade na "motoru" to neće dozvoliti. Kao primjer: u motoru se nekoliko mjeseci kasnije pojavila podrška za prve shadere NVIDIA izdao relevantan alata.
Još jedna prednost: GLScene dolazi sa punim izvornim kodom. Za početnike ova činjenica vjerovatno neće biti korisna. Iako upoznavanje izvornog koda koji je napisao profesionalac mnogo vrijedi. Ali iskusni programeri osjećaju glavno značenje ovih riječi: na kraju krajeva, moći će preoblikovati motor kako žele.
volim to. Jedini uslov prema MPL licenci je da sve promjene izvora moraju biti dostupne koordinatoru projekta (sada je koordinator Eric Grange). Odjednom je tvoj kod još nekome koristan?!
Iako će svi primjeri koda koji će biti navedeni u ovoj seriji članaka biti napisani u Delphiju koristeći GLScene, oni će također biti korisni onima koji programiraju na drugim jezicima i sa drugim grafičkim bibliotekama. Uostalom, opći principi stvaranja grafičkog motora ne ovise ni o jednom ni o drugom. Pa... počinjemo.

Zašto vam je potreban 3D motor?
Kolege novajlije, fokusirajte se! Možda ono što ću sada reći neće biti jasno prvi put. Obavezno ponovo pročitajte i shvatite: ovo je jedan od osnovnih principa programiranja općenito i razvoja složenih sistema (a igra je složen sistem) posebno. Zamislite neku jednostavnu igru. Ping pong, na primjer. Programer je to napisao u čistom OpenGL, izvorni kodovi staju u 200 redaka reklama.Koji će tamo biti engine, a koji glavni kod igre? Ne možete to odmah reći... A ako bolje razmislite, takva podjela na motor i glavni kod uopće nije potrebna.
Sada zamislite da želimo da napravimo više ili manje ozbiljnu 3D akciju (desetine hiljada linija koda). I programiraćemo na isti način kao da radimo isti ping-pong. I uskoro ćemo biti zbunjeni! Da, ovaj kod hoćebrzo, neće biti ništa suvišno, ali... neće svaki programer moći da ga završi do kraja. I greške u tako gustom kodupotraga je pravi pakao. Tako da to treba nekako riješiti. Najlakši način da to uradite je sa isticanje nivoa apstrakcije.
Nivo apstrakcije je jedan od najvažnijih koncepata u modularnom programiranju. Zamislite da ste graditelj i da trebate izgraditi kuću. Radiš sa ciglama: uzmeš ciglu, staviš je na zid u izgradnji, namažeš malterom, uzmeš sledeću ciglu... Cigle su tvoj nivo apstrakcije. Sada zamislite da ste programer. I morate izgraditi susjedstvo. Vi kažete graditelju gdje da gradi kuće, koje kuće da sruši. Dom je vaš nivo apstrakcije. Bilo bi čudno da kažete graditelju koju ciglu gdje staviti. Rekli ste: ovdje će biti kuća. Sve ostale brige preuzima graditelj. E, sad zamislite da ste gradonačelnik grada. I morate dati zadatak gomili developera do te i takve godine da grad dobije toliko novih stanova. Malo je vjerovatno da ćete lično planirati gdje koja kuća treba da stoji. Ovo je posao graditelja. Gradonačelnikova apstrakcija je količina stambenog fonda koji se može povećati ili smanjiti, ali kako će se to učiniti je deseta stvar. Uglavnom, na ovom nivou apstrakcije, nije važno od čega se grade kuće: čak i od cigle, čak i od kljova mamuta. A gradonačelnik jednostavno ne može imati “ stavi ciglu“, iako će svaka njegova naredba kroz nekoliko nivoa apstrakcije dovesti do ovoga.
Manje ili više složeno kompjuterski program ili igra - isto. Svaki nivo apstrakcije je odgovoran za svoj dio posla, oslanjajući se na mogućnosti više nizak nivo. Svaki nivo apstrakcije pružavišeg nivoa user-friendly interfejs za rad sa objektima. U kompjuterskoj igrici je najniži nivo apstrakcije programski jezik (iako, u stvari, možete kopati još dublje - peglati). Slijede naredbe OpenGL API(ako programiramo s njim). Na ovom nivou, možemo izdati naredbu poput " nacrtati poligon" i " zamijenite vidljivi i sjenčani dio video bafera". Zatim komande GLScene. Na ovom nivou možemo izdati komande poput " izgraditi kocku”, “preuzmite 3ds model" i " nanesite malo teksture na model". A tu je i motor igre. I na kraju, kod igre, koji može dati komande motoru igre poput " nivo opterećenja”, “pucati u tog i tog lika sa takvim i takvim oružjem" i " prikaži uvodni video". U idealnom slučaju, svaki nivo apstrakcije koristi samo naredbe prethodnog nivoa. Nije uvijek moguće. Ali tome treba težiti, jer će u ovom slučaju kod biti brz, zgodan i lak za čitanje.

Kreiranje dinamičkog objekta
Razmatrali smo vertikalnu organizaciju kompjuterske igre. Ali svaki nivo apstrakcije može se podijeliti na semantičke blokove - module. Podjela je opciona i uvijek će biti čisto uslovna, samo je lakše programirati. Danas ćemo analizirati mali, ali vrlo važan modul-ciglu - dinamičko stvaranje objekata, koji je prisutan u svim igrama bez izuzetka.
Recimo da pravite modul oružja i želite da programirate red odmitraljez. Sve bi bilo u redu, ali kako znate koliko metaka igrač može ispaliti u cijeloj igri? Preko uređivača objekata u GLScene IDE-u možete kreirati bilo koje objekte, ali samo ako jasno znate koliko i koji objekti su vam potrebni. U većini slučajeva to nije prihvatljivo. Na primjer, imate 20 nivoa u igri, svaki nivo ima svoj set objekata. I šta, prije početka igre, kreirati sve objekte svih nivoa? Ovo je dugo i zauzima puno memorije. Jedini izlaz- kreirajte objekte direktno tokom igre, dinamički. U GLSceneu, dinamičko kreiranje bilo kojeg objekta sastoji se od dvije faze - kreiranja instance klase ovog objekta i dodjeljivanja potrebnih svojstava. Uzmimo već spomenuti primjer sa rafalima na mitraljezu i dinamički kreiramo metak. Pretpostavimo da će naš metak biti industrijska sfera. Klasa je odgovorna za sfere u GLScene TGLSphere. Čini se da možete napisati ovako:
Sphere:=TGLSphere.Create
Međutim, naredba neće raditi jer svaki objekt u GLScene treba biti registriran u redu za objekte. Osim toga, objekat se ne može kreirati u „praznini“, već mora biti prikačen nekom objektu višeg nivoa. Osnovni objekat najvišeg nivoa je glscene1.Objects (ako imate TGLScene komponentni objekat koji se zove glscene1). Ispravna opcija:
Sfera:=TGLSphere(glscene1.Objects.AddNewChild(TGLSphere))
Hajde da razdvojimo ovu liniju. U korijenskom objektu glscene1.objects nazivamo metodom AddNewChild, koji dodaje objekt klase specificiran u parametru u korijen (u ovom slučaju, to je sfera -
TGLSphere). Ovo je također moguće: ne objekti, već cijele klase, mogu se proslijediti procedurama kao parametri. Zašto vam je potrebna konverzija tipa prije dodjele? TGLSphere? Poenta je da metoda AddNewChild, šta god da mu prosledite kao parametar, vraća objekat klase TGLBaseSceneObject. Ovo nam ne odgovara, pa ćemo tip konvertovati u TGLSphere. Rezultirajući objekt je dodijeljen varijabli Sphere. Sada, koristeći ovu varijablu, možemo postaviti različite parametre za naš bazen, na primjer, poziciju u prostoru:
Sphere.Position.X:=
Sphere.Position.Y:=
Sphere.Position.Z:=
Ili boja:
Sphere.Material.FrontProperties.Diffuse=
Razgovarali smo o dinamičkom stvaranju modela, a sada razgovarajmo o njihovom dinamičkom uništavanju. Zapravo, metak će jednog dana pogoditi zid, osobu ili odletjeti u plavu daljinu. Od sada više nije potreban. Ako ga tako ostavimo, on će zauzeti dio memorije. Uzimajući u obzir koliko hitaca prosječan kamper ispali prije nego što se otkrije njegovo zalihe, nećemo imati dovoljno kompjuterske memorije da pohranimo toliko metaka. Stoga se svi objekti igre koji su postali nepotrebni moraju odmah uništiti. Jedini Pravi put uradi to - pozovi metodu Besplatno, na primjer:
Sphere Free
Često je potrebno provjeriti postoji li objekt ili je već uništen. Da bismo to učinili, upoređujemo objekt s univerzalnom konstantom nula - nula, na primjer:
Ako sfera<>nula onda
Počni
(sfera još nije uništena,
pa radimo nešto korisno ovdje)
Kraj
Ili zovemo funkciju Dodijeljeno, koji radi isto. I ovdje vas čeka jedna ogromna zamka na koju su prije ili kasnije svi programeri naišli. Ako ste oslobodili objekt pomoću metode Besplatno, ovo ne garantuje da je varijabla objekta postala jednaka nula! Odnosno, pod određenim skupom okolnosti u gornjem primjeru, čak i ako je sfera uništena, uvjet će biti ispunjen. Ako se pozabavite ovim područjem nakon verifikacije (a to se gotovo uvijek događa), pojavit će se kritična greška, koja je prepuna pada igre u plave prozore. Da biste osigurali da oslobođeni objekt postane nula, koristite posebnu proceduru FreeAndNil, na primjer:
FreeAndNil(Sphere)
Sada možete biti sigurni da se nikada nećete pozivati ​​na objekat koji više ne postoji. Opisani postupak za kreiranje i uništavanje objekata može se primijeniti na bilo koji GLScene objekt.

Zašto je igrama potrebna baterija?
Razmotrimo gornji primjer sa mitraljezom. Obično u igrama meci nisu samo sfere, već složeni objekti, koji također imaju teksturu. Svaki put kada kreirate metak, dio memorije se oslobađa, svojstva ovog metka, učitava se model metka, učitava se tekstura (sa tvrdog diska!). Sve ovo traje neko vrijeme. Ako je broj metaka koje mitraljez ispljune u sekundi veoma velik, mogu početi divlje kočnice, posebno na slabim kompjuterima. Sa uništavanjem metaka isti problem:potrebno je istovariti predmet, osloboditi memoriju... Isto se odnosi ne samo na metke, nego i na sve predmete koji se često pojavljuju i nestaju, na primjer kapi kiše, iskre iz električnih instalacija... Ovakva rasipnost sistemski resursi in kompjuterske igrice neprihvatljivo. Ne želite da vaša igra radi samo na super cool grafičkoj stanici, zar ne?
Izlaz je jednostavan. Procjenjujemo koliko objekata ove vrste, u prosjeku, može postojati istovremeno. Recimo, mitraljez može izbaciti nekoliko stotina metaka za deset sekundi, a za istih deset sekundi meci će sigurno doći do cilja. Prije početka igre kreiramo svih sto metaka. Ovo je najbolje uraditi dok se nivo učitava. Niko neće primetiti malo kašnjenje. Zatim se metke postavljaju u listu ili niz, koji mi zovemo akumulator. Metke činimo nevidljivim ili ih vadimo negdje izvan prostora za igru. Kada je mitraljez počeo da puca, umjesto stvaranja metaka, prelazimo na Pravo mjesto već stvorene metke iz baterije i učiniti ih vidljivim. Čim metak stigne do cilja, ne uništavamo ga, već ga ponovo činimo nevidljivim i stavljamo u bateriju. Kao rezultat, za svaki metak štedimo vrijeme stvaranja i uništavanja. A ovo je jako, jako puno! Ali šta ako smo malo pogriješili u našim procjenama, meci u bateriji su se istrošili, ali mitraljez nastavi pucati? Ne možete ništa učiniti u vezi s tim - morat ćete dinamički kreirati nove metke dok se stari ne vrate u bateriju. A nećemo uništavati ni nove metke, već ćemo ih pohraniti u bateriju - odjednom nam treba više ...

napad klonova
Pretpostavimo da imamo veliku šumu u kojoj ima mnogo, mnogo identičnih stabala ili, recimo, mnogo stabala nekoliko različitih vrsta. Primjer je sličan prethodnom, samo što ovdje ništa dinamički ne stvaramo i ne uništavamo - uvijek ima drveća na ovom nivou. Problem će biti prilikom učitavanja nivoa. Stvaranje tolikog broja stabala će potrajati mnogo vremena. Ali svi su isti! Odnosno, učitavamo sa tvrdog diska iznova i iznova i stvaramo kopije iste stvari u memoriji. Preuzeto. Igramo. Prije izrade svakog od stabala izvode se pripremni postupci. Za svako drvo će biti isti, ali ćemo ih ponovo zvati veliki broj puta, prema broju stabala! Ispada rasipno. I memorija za svako stablo mora biti rezervisana, a obrada svakog od njih zahtijeva vrijeme.
Bilo bi lijepo učitati jedno stablo, a kada će biti potrebno prikazati ostala stabla, samo pokažite grafičkoj biblioteci odakle da dobijete potrebne podatke. Pa, kakva će ušteda resursa ispasti, kakav rast FPS-a! Takva "lažna" stabla (a ne samo stabla - bilo šta), o kojima se u memoriji pohranjuju samo privatne informacije (položaj u prostoru, uglovi rotacije), a iste informacije pohranjuju samo jednom, nazivaju se proxy objekti.
U GLScene postoji posebna klasa za kreiranje proxy objekata - TGLProxyObject. Vrlo je jednostavan za korištenje. Prvo, kreiramo izvorni objekat, odnosno jedno stablo, ovako:
Stablo:=TGLFreeFrom(glscene1.objects.AddNewChild(TGLFreeFrom));
//Load
njen model:
Tree.LoadFromFile('Tree.3ds');
//Učitaj njegovu teksturu:
Tree.Material.Texture.Disabled:=false;
Tree.Material.Texture.Image,LoadFromFile('tree.jpg');
//Sada kreirajmo deset kloniranih stabala na nasumično odabranim mjestima:
za i:=1 do 10 počnite
//Kreiraj drugi proxy objekat
proxy:=TGLProxyObject(glscene1.objects.AddNewChild(TGLProxyObject));
sa proxyjem početi
//Pišemo naše stablo uzorka u svojstvo MasterObject
MasterObject:=Stablo;
//Pokazujemo da samo strukturu objekta treba naslijediti
Proxy opcije:=;
//Orijentacija stabla u prostoru mora ostati nepromijenjena
Direction:= Tree.Direction;
Gore:= Drvo.Gore;
//Ali pozicija je nasumično postavljena
Position.X:=Random(100);
Position.Y:=Random(100);
// I rotirajte stablo pod nasumičnim uglom kako bi izgledalo bolje
RollAngle:=Random(360);
kraj;
kraj;
Sada imamo desetak stabala po cijeni jednog. Imajte na umu da ako nekako promijenimo originalni objekt, ova promjena će se odmah odraziti na sve klonirane objekte.

* * *
Razgovarali smo o prvoj cigli. U sljedećim člancima dat ćemo vam cijeli kamion ovih kockica s kojima možete napraviti motor za 3D igre svojih snova. Pa, da bismo vam olakšali, stavili smo najnoviju testiranu verziju na kompakt GLScene.

Sa nedavnim izdanjem besplatne verzije Unreal Engine-a i najavom besplatnog Source 2, imate još više opcija za pravljenje vlastitih igara. Ali odabrati motor koji odgovara vašim potrebama i vještinama nije najlakša stvar. Hajde da prođemo najbolji uzorci besplatni (pa, skoro, ono što je ispod) softver za početnike i profesionalce.

Osim motora u ovoj kolekciji, ima i dosta ne baš poznatih, ali, blago rečeno, vrlo cool motora drugog reda. U pravilu, na web stranici programera spominje se mogućnost licenciranja, ali u vrlo sirovom obliku, ovdje morate direktno kontaktirati. Svi motori imaju svoje prednosti i mane. Na primjer, Techlandov nedavni Dying Light motor je pogodan za igre otvorenog svijeta, ali ima problema s distancom izvlačenja.

Da biste zaista duboko ušli u većinu ovih softverskih alata, trebat će vam barem osnovne vještine programiranja. Ali u nekim slučajevima možete čak i bez njih i odmah se baciti na posao.

Na čelu tehnologije - CryENGINE

CryENGINE je izuzetno moćan game engine koji je kreirao Crytek i prvi put predstavljen u Far Cryju. Namijenjen je za razvoj na PC-u i konzolama, uključujući PlayStation 4 i Xbox One. Njegove grafičke mogućnosti su superiorne u odnosu na Unity i UDK, a ponekad su i korak ispred Unreal Engine 4: vrhunsko osvjetljenje, realistična fizika, napredni sistemi animacije i još mnogo toga. Poslednja utakmica na CryENGINE-u je bio Ryse: Son of Rome. Slično UDK i UE4, CryENGINE ima moćne i intuitivne karakteristike za rad sa dizajnom nivoa.

Produktivno korištenje CryENGINE-a će potrajati neko vrijeme za učenje, a možda će vam biti teško ako nemate iskustva s drugim motorima. Ako vam nije potrebna grafika poput Crysis 3 ili Ryse: Son of Rome, trebali biste potražiti nešto jednostavnije za korisnika.

CryENGINE model cijena je nešto drugačiji od konkurencije. Za korištenje motora. Nije potpuno besplatan kao UE4 ili Unity 5, ali ne zahtijeva plaćanje tantijema, tako da je 9,90 dolara sve što morate platiti Cryteku. Ovisno o veličini vašeg studija i tima, besplatno korištenje može biti velika prednost.

Početnici - Stencyl ili GameMaker

Ako tek počinjete da pravite igre i nemate iskustva u programiranju, bolje je da počnete s najjednostavnijim alatima. Od njih su najpopularniji i opštepriznati Stencyl i GameMaker. Oba su laka za učenje za početnike, a na osnovu njih je već kreirano nekoliko kvalitetnih igara.

Stencyl vam omogućava da pravite igrice bez programiranja. Interfejs je u potpunosti baziran na prevlačenje i ispuštanje, igre se mogu izdati na Windows, Mac, Linux, iOS, Android i Flash. Ako ste se ikada bavili nečim poput Scratch-a, odmah ćete prepoznati LEGO pristup građenju koda kroz postavljanje blokova. Stencyl je dizajniran za jednostavna kreacija sprite igre, te stoga često služi kao osnova za slagalice i side-scrollers. Sve što je teško učiniti bit će problematično, pa ako odlučite raditi na RPG-u ili strategiji, pogledajte drugi softver. Uz pomoć Stencyla, rođeno je nekoliko popularnih igara, uključujući Impossible Pixel i Zuki's Quest. Također ima ugrađeni vodič koji će vam reći sve što trebate znati.

GameMaker je još jedan besplatni uslužni program za početnike koji prave igre za Windows, Mac, iOS i Android. Kao i Stencyl, skoro sve je drag and drop, ali tu su i kuke za igre za više igrača, linkovi na eksterne SDK-ove, mogućnost kopanja u kodu i još mnogo toga. Besplatna verzija označava vodeni žig za izvoz, ali GameMaker je odličan za prvi tajmer i dolazi sa ugrađenim tutorijalima o osnovama. Ne postoji ograničenje žanra kao u Stencylu, a možete pronaći posebne vodiče za različite vrste igara. GameMaker je napravio originalnu verziju Spelunky i Hotline Miami.

Naravno, nije sve ograničeno na ove dvije opcije. Buildbox je relativno nov uslužni program dostupan tokom probnog perioda i nudi program obuke da naučite kako radi, dok je GameSalad već dugo poznata popularna platforma, iako se na nju žale zbog grešaka i nestabilan rad. Konstrukciju vrijedi razmotriti ako želite da pravite igre u HTML5. U svakom slučaju glavni problem da morate obuzdati svoje dizajnerske ideje. Ovo je softver za početnike, a vi ćete ga jednostavno pokvariti u pokušaju da uradite nešto teško. Odnosno, igre će postati grešne i neće raditi ako pokušate ići dalje od predviđenog sistema. A ipak, ovo odlično mjesto za početak i odgovarajuća opcija bez iskustva u programiranju.

Srednji programeri koji ciljaju na 2D igre - Cocos2D

Cocos2D je program otvorenog koda za kreiranje 2D igara. Igre se mogu izdati na Windows, Mac, Android, iOS, Windows Phone ili web platformi.

Većina onoga što ćete raditi u Cocos2D radi sa C++ (postoji i podrška za Lua i JavaScript), tako da ćete morati da budete upoznati sa ovim programskim jezikom pre nego što uopšte pokrenete Cocos2D. Međutim, uz poznavanje navedenih jezika, program postaje prilično jednostavan za korištenje. Ima potpuni IDE i potpuno je besplatan bez dodatnih obaveza. Kao što naziv govori, uslužni program je dizajniran za kreiranje dvodimenzionalnih igara, tako da bolje radi sa jednostavnim sprite igrama, gdje je 3D beskorisno. 2D igre se također mogu napraviti u Unity-u (što ćemo pogledati malo kasnije), ali Cocos2D je lakše ući ako tek počinjete (i naravno, znate C++).

Cocos2D je proizveo mnoge uspješne igre u različitim žanrovima, uključujući i nagrađivani Badland.

Programeri koji ciljaju mobilne platforme - Unreal Engine ili Unity

Ako ste zainteresovani za složene, 3D igre, dva najpopularnija alata za njihovo kreiranje su Unreal Engine i Unity. I jedno i drugo ima svoje prednosti i slabe strane i razne tačke u ugovorima o licenci koje biste trebali pročitati prije donošenja konačne odluke.

Unity vam omogućava da napravite 3D i 2D igre za gotovo sve platforme uključujući Windows, Mac, Xbox, Playstation, Android, iOS i još mnogo toga. Podržava sredstva igre kreirana u 3ds Max, Maya, Softimage, Cinema 4D, Blender i još mnogo toga. Unity koristi C#, zajedno sa sopstvenim programskim jezikom, tako da ne škodi da ih prvo dobro naučite. Ako uporedimo Unity i Unreal, prvi je možda lakše naučiti. Ima bogat skup unaprijed izgrađenih ponašanja i ugrađenu biblioteku resursa igara koja ih čini prilično lakim za praćenje. Dok sam radio na ovom tekstu, razgovarao sam sa nekoliko programera, i oni misle da je Unity - najbolji motor za rane projekte jer je lakše razumjeti i naučiti nego Unreal. Ako ste već napravili igru, recimo, na GameMakeru, onda ćete odmah shvatiti šta je šta u Unity-u. Unity također podržava alternativne modele plaćanja direktno u motoru, uključujući nekoliko besplatnih modela monetizacije.

Funkcionalnost besplatne lične verzije je već dovoljno bogata za vaš prvi projekat. Kreiranjem igre na besplatnoj verziji, ne morate plaćati nikakve autorske naknade ili tantijeme, ali postoje neka upozorenja, naime da nećete moći dobiti više od 100.000 dolara u sponzorstvu/profitu. Napisano je mnogo članaka tutoriala koji pomažu početnicima u Unity programerima. Popularne igre na ovom motoru uključuju Alto's Adventure, Gone Home i u fazi razvoja.

Unreal Engine 4 koristi C ++, tako da uz odgovarajuće poznavanje ovog jezika, možete ga odabrati, međutim, igre se mogu kreirati bez udubljivanja u sam jezik. Igre napravljene pomoću Unreal Engine-a mogu biti objavljene na PC-u, Mac-u, iOS-u, Androidu, Xbox One i Playstation 4. Unreal ima gotovo sve što vam je potrebno ugrađeno u motor, uključujući 3D modeliranje i teren. Zbog svog bogatog sadržaja, Unreal Engine 4 je teže savladati od drugih razvojnih alata, a čak i uz dobro poznavanje C++, trebali biste biti spremni naučiti mnogo novih stvari. Ali možete kreirati zaista impresivne igre. Više o zamršenosti uređaja Unreal možete saznati uz pomoć obrnutog inženjeringa, ali ipak, bez prethodnog iskustva, neće biti lako shvatiti. Unreal Engine 4 je relativno nov motor, ali igre kao što su Daylight i Tekken 7 su već objavljene na njemu.

Da biste koristili Unreal Engine 4, morate pristati na plaćanje tantijema ako se vaša igra želi prodati. Nakon što igra ili aplikacija počne da se prodaje, plaćate po kvartalu. Možda se čini kao veliki novac, ali s obzirom na profit koji će igra donijeti, nije toliki.

Također je vrijedno detaljnije pogledati Valveov Source 2 motor, koji bi također trebao postati besplatan ove godine.

Ažurirano 01.10.15: U avgustu na GDC-u. Stingray radi na tehnološkoj jezgri Bitsquid i baziran je na 64-bitnoj arhitekturi. Stingray je dizajniran da bude vrlo fleksibilan i radi sa svim popularnim platformama, od mobilnih do virtualne stvarnosti. Modularnost i tehnologije upravljanih podataka znače da je programerima mnogo lakše napraviti promjene i vidjeti rezultate na više povezanih uređaja odjednom, bez ponovnog kompajliranja. Osim toga, možete brzo prenositi objekte između Autodesk proizvoda. Proboj sa razvojnom automatizacijom još se nije dogodio. Ako već koristite Unity ili Unreal, onda ne biste trebali prelaziti, dobitak još nije jako primjetan. Reći ćemo vam više kasnije.

Kralj razvoja - Izvor 2

Na GDC 2015, Valve je dao neke velike najave, a možda najvažnija za gejmersku zajednicu bila je najava Source 2. Ovo je nasljednik Source motora koji se koristi u Counter-Strike: Source, Half-Life 2 i mnogim drugim igrice. Programeri su već nekoliko godina nestrpljivo čekali sljedeću generaciju motora u arsenalu Valvea. Na konferenciji za novinare, Valveov Jay Stelly je rekao: „Za programere sadržaja. Uz najave Epic i Unity, ovo će pomoći da PC ostane dominantna platforma za kreiranje sadržaja.” Valve je očigledno odlučio da se pridruži trci motora zajedno sa Epic i Unity, dajući programerima više opcija za izbor. Međutim, još uvijek nije sasvim jasno što znači “besplatno za programere sadržaja”: govorimo li o nekim etabliranim programerima ili je to neka posebna kategorija?

Nema konkretnih informacija o datumu izlaska, poznato je samo da će Source 2 biti objavljen u bliskoj budućnosti. Jay Stelly je također izjavio: „Fokusirani smo na poboljšanje produktivnosti kreatora sadržaja. S obzirom na to koliko postaje važan sadržaj koji kreiraju korisnici, Source 2 nije samo za profesionalce, već i samim igračima omogućava da se uključe u razvoj svojih omiljenih igara." Ove riječi sugeriraju da će Source 2 biti dostupan ne samo profesionalnim studijima, već i hobistima i moderima, što je mnoge od Valveovih igara učinilo tako popularnim.

Obratili smo se Valveu za Dodatne informacije, a ovaj članak će biti ažuriran kada se sazna više o novom motoru. Ali sada sa sigurnošću možemo reći da će Source 2 postati ozbiljan konkurent teškašima u lice Unity i Unreal Engine 4, jer će, prema Gellijevim riječima, biti i besplatan.

Pisci - Twine/RPG Maker/AXMA

Nismo svi stručnjaci za programiranje, pa čak i Stencyl mnogima može izgledati komplikovano. Ako sebe više vidite kao pripovjedača, imate dvije odlične opcije za odabir: Twine i RPG Maker.

Za stvaranje interaktivnih nelinearnih priča. Jednostavno rečeno, možete napraviti igru ​​u žanru "izaberi svoju avanturu". Uslužni program je nevjerovatno jednostavan za korištenje. Povezujete segmente priče s različitim prijelazima, slično kao u mapama uma. Svaki izbor dostupan igraču vodi do novog teksta. Kada završite, možete odmah objaviti rezultat na stranici. Sve je sasvim jasno, ali ako negdje zapnete ili želite nešto drugo dodati, vodič za početnike će vam pomoći. Popularne igre napravljene sa Twineom uključuju A Kiss i Cry$tal Warrior Ke$ha.

Ako vam se Twine čini previše staromodan, isprobajte RPG Maker. Besplatna verzija ima manje funkcija od plaćenih alternativa, ali i dalje može učiniti mnogo. Sistem je jednostavan za učenje: grafike se prevlače, dijalozi se dodaju jednim klikom. Da biste išta učinili zanimljivijim od običnog RPG-a, morate razmišljati izvan okvira, ali primjeri koji su toplo primljeni od strane javnosti To the Moon i LISA jasno pokazuju da je to moguće. Možete uživati ​​u besplatnoj muzici i slikama, tako da ne morate čak ni znati crtati. Ugrađeno učenje, opet, pomoći će vam u kreiranju vaše prve igre. Popularne igre na RPGMakeru su Clock of Atonement i One Night. Kanap ima domaći analog AXMA Story Maker-a, koji također vrijedi pobliže pogledati.

Besplatni softver za resurse za igre

Naravno, igra nije samo motor. Trebat će vam sve vrste resursa za igru, uključujući slike i zvukove. Nekoliko indie programera koje sam intervjuirao podijelilo je korisne linkove:

Tiled je jednostavan uređivač mapa za Cocos2D, Unity i druge alate.

OpenGamesArt - besplatne slike i grafički čuvari mjesta.

Besplatna muzička arhiva - besplatna muzika sa Creative Commons licencama.

FreeSound je kolekcija besplatnih zvučnih efekata.

Sve ovo će vam pomoći da pravite igre bez njih posebne troškove. Naravno, u njih ćete morati uložiti svoje vrijeme, krv, znoj i suze, ali barem vaš novčanik neće biti pogođen.

Povratak

×
Pridružite se koon.ru zajednici!
U kontaktu sa:
Već sam pretplaćen na koon.ru zajednicu