Pokušao sam napraviti isti prototip 2D igre u React, Unity, Godot, Construct, Game Maker i Phaser. Evo što sam pronašao.

Ja sam programer stolnih igara. U dizajniranju nove igre s kartama, odlučio sam izraditi digitalni prototip koji će mi pomoći da vodim simulacije i lako podijelim dokaz o konceptu sa suradnicima.

Imam malo pozadine u JavaScript-u i C # -u, a postavio sam kao i mnogi: trošeći neprimjereno puno vremena u nitima "koji okvir trebam koristiti" i čitajući dokumentaciju, a da zapravo ništa nisam napravio.

Bljesnite naprijed mnogo mjeseci, a sada sam proveo više vremena radeći u (i hrvajući se s njima) React, Unity, Godot, Construct 3, Game Maker Studio 2 i Phaser 3, pokušavajući shvatiti zbog čega ih krckaju.

Doduše, mislim da sam u svakom od njih proveo puno više vremena nego što je potrebno za stvaranje moje male igre, a vjerojatno bih mogao jednostavno ostati pri prvoj i promašiti se kroz prototip. Nadam se da će dolje navedene informacije biti korisne svima ostalima koji kupuju motor ili okvir.

Gomila upozorenja: Ne pokušavam prodati jedan motor ili okvir nad ostalima, a također ne pretpostavljam da će jedan ili bilo koji od ovih okvira raditi za vašu igru ​​bolje od drugog. Također ne uspoređujem cijene, pozadinsku funkcionalnost ili implementaciju platforme. Dakle, ovisno o vašim zahtjevima, dolje navedeni podaci mogu vam imati različitu vrijednost.

Uz to, ovo se iskustvo temelji na razvoju 2D kartaške igre, tako da neću raspravljati o 3D motorima, fizici itd.

Također možete preskočiti na dno za TL; DR.

Prototip

Moja igra, Entromancy: Hacker Battles , natjecateljska je igra sa kartama sa cyberpunkom s mehanikom TCG-light. Možete pročitati više na našoj web stranici ili gledati kako se to treba reproducirati u ovom videu. No dovoljno je reći da kao kartaška igra zahtijeva potencijalni digitalni okvir za podršku osnovnim stvarima poput upravljanja državom, korisničkog sučelja, povlačenja i ispuštanja UX-a i stražnjih krakova za implementaciju više igrača.

S obzirom na ove zahtjeve, istražio sam sljedeće okvire i motore kako bih vidio koji bi od njih bio najprikladniji za izradu moje igre ... umjesto da stvarno napravim igru (sretan sam što mogu reći da sam se sada, kad sam se odlučio za okvir, Puno više napredujem).

Ovdje možete pristupiti verziji koja se može igrati, i premda je igra dalje nego što bi sugerirao prototip uživo, ova je verzija prilično stabilna (barem u Chromeu).

Reagirati

Nakon što sam u Reactu već izgradio prototip generatora likova za stolni RPG koji sam dizajnirao, mislio sam da bi prirodni korak bio da se okvir okrene za igranje karata. Otkrio sam da je upravljanje državom povjetarac (to je ono što React ipak čini ), dok se provedba jednostavnih funkcija povlačenja i ispuštanja za kartice pokazala kao noćna mora.

Postoje neke knjižnice koje mogu pomoći u osnovnom povlačenju i ispuštanju (npr. React DnD), ali otkrio sam da mi je s igranjem karata potrebno elegantnije rješenje za dropzone, jer su Hacker Battles vrlo specifične o tome koje karte mogu svirati gdje i kada.

Ovo me iskustvo navelo da provjerim boardgame.io, koji može raditi zajedno s Reactom. No, ovo je na kraju zahtijevalo da naučim drugi okvir povrh postojećeg, koji je bio manje od idealnog za moje svrhe.

Jedinstvo

Iz općeg interesa, proveo sam puno vremena u Unityu radeći tutorijale i učeći kako koristiti editor prije nego što sam pokušao s njim preraditi prototip kartaške igre. Trgovina imovinom izvrstan je resurs, a toliko je službene i neslužbene dokumentacije da sam bio uvjeren da mogu pronaći odgovor na bilo koji problem s kojim bih se mogao susresti.

Moje dosadašnje iskustvo s Unityom bilo je miješano. Stvarno uživam raditi u C #, a sve što je povezano s kodom relativno je bezbolno iskustvo. Međutim, Unity je vrlo specifičan u svojoj provedbi i ponekad se može osjećati kontraintuitivno.

S druge strane, urednik je medvjed s kojim treba raditi. Da biste iskoristili puni potencijal Unityja, trebate provesti dugo vremena dok se hrvate s korisničkim sučeljem kako biste razumjeli gdje se sve nalazi i kako ga koristiti. Također je očajno u zaostatku s razvojem 2D igara, očito pokušavajući izravnati primarno 3D motor u 2D ravninu, s mješovitim rezultatima.

Da budem iskren, uživam raditi u uređivaču Unity, onako nezgrapan. Ali ako tražite motor za 2D igre, kvaliteta života bit će vam drugdje puno bolja (pogledajte video o Unityjevom animacijskom sustavu ili postizanju savršenstva u pikselima i vidjet ćete na što mislim).

U konačnici, Unity je s 2D prostorom nešto složenije nego što mi treba za moj prototip, ali vratit ću se na njega za druge vrste igara.

Također, bočna traka koja bi nekima mogla biti korisna: U početku sam bio izuzetno uzbuđen zbog trgovine imovinom, s idejom da mogu kupiti predložak za igranje karata koji će mi puno olakšati proces razvoja. Nije uspjelo. Većina njih bili su MTG / Hearthstone / itd. klonovi kojima bi bilo potrebno isto toliko vremena za razvoj kako bih ih restrukturirao za svoju igra s kartama, koliko i za početak od nule.

Godot

Moja prva misao nakon susreta s Godotom bila je: "mehanizam za igre otvorenog koda koji podržava C #? Prijavi me!" Tada sam ga preuzeo, radio kroz nekoliko osnovnih tutorijala i dao mi se srušiti prilikom gradnje. Boli.

Nekoliko Googleovih pretraživanja, ponovnih instalacija i dlačica povučenih kasnije, shvatio sam da to ima neke veze s mojom verzijom VS Build-a (mislim?), Što me odvelo u zasebnu zečju rupu. Iz iskustva sam znao da drugi motori - među njima glavni Unity - mogu izazvati probleme koji prekidaju igru ​​potpuno izvan vašeg vlastitog koda, ali ovo je bila dosadna prepreka koja je vjerojatno obojila ostatak mog iskustva s Godotom.

Što se tiče uređivača, prilično mi se svidjela Godotova implementacija zasnovana na čvorovima, za koju sam zapravo smatrala da je kontraintuitivna iz Unity-ovih prefabova, ali na kraju zagrijana. Zapravo bih otišao toliko daleko da kažem da je njegova 2D funkcionalnost bolja od Unity-jeve, ali nedostaju joj zajednica, spremište imovine (vidi bočnu traku gore), a posebno dokumentacija koju Unity ima. Ako, na primjer, namjeravate raditi na C # s Godotom, budite spremni potražiti odgovore u prilagođenom GDScriptu motora, a zatim ih prevesti na C #.

Međutim, čuo sam za ljude koji su doživjeli velik uspjeh s Godotom dok su koristili GDScript, pa ako ste voljni uložiti vrijeme da ga naučite, mogli biste uživati ​​u onome što Godot nudi.

Konstruiraj 3

U napomenama koje sam gore naveo spomenuo sam da ne uključujem cijene kao točku rasprave. Ipak, osjećam da moram to iznijeti s Constructom 3, jer se to pokazalo utjecajnim u mom iskustvu.

Za razliku od ostalih ovdje navedenih mehanizama za igre koji su, uglavnom, besplatni (Game Maker Studio 2 ima 30-dnevno besplatno probno razdoblje), velika većina funkcionalnosti Constructa stoji iza zida, a pretplata na da. Uf.

Zaista mi se jako sviđa rez Constructove floke za jednostavne 2D igre. Uređivač je pomalo nalik na nadogradnju MS Painta, ali jako dobro upravlja spriteom i objektima te je jednostavno jednostavan za upotrebu. Ne sviđa mi se što koristi stil "vizualnog skriptiranja", ali nedavno su dodali značajku pisanja običnog starog JavaScript-a i čini se da to više ili manje djeluje.

Uspio sam osmisliti vrlo rudimentarnu arhitekturu za prototip u kratkom vremenu prije zatvaranja demonstracije Construct 3 (koja se pokreće u pregledniku) ... a zatim sve to pokušati kasnije s novim demo. Osjećam da bih, barem za ovu igru ​​s kartama, mogao puno učiniti s Constructom 3, ali jednostavno nisam spreman platiti 99 dolara godišnje (ili više, kao posao) za prototip.

Game Maker Studio 2

YoYo Games je očito napravio puno posla kako bi Game Maker Studio 2 učinio pristupačnim i lakim za navigaciju, a to i pokazuje. Od svih motora koje sam koristio za ovaj projekt, najviše mi se sviđa GMS editor. Za mali projekt lako se snaći i baviti se svojim poslom. Sumnjam, međutim, da bi veći projekt mogao prilično brzo izmaknuti kontroli.

Na to bi mogao utjecati vlastiti jezik Game Maker Studio, GML (iako GMS 2 podržava vizualno skriptiranje, koje nisam koristio). Djeluje, ali ako mu pristupite iz drugog OOP jezika (ili, uistinu, iz bilo kojeg drugog široko korištenog jezika), možda ćete se ogrebati po implementaciji ili smisliti kako neke stvari učiniti. Ako ste početnik ili ste spremni provesti vrijeme smišljajući kako GMS želi da koristite GML, vjerojatno ćete biti dobro.

Iskusio sam neke neobičnosti u funkciji povlačenja i ispuštanja Game Maker Studija - naime, otkrivanje pokazivača miša pri povlačenju pomalo je nesigurno i zahtijeva određenu skelu da bi ispravno radio.

Mislim - a to je s moje strane potpuno osobna sklonost i lijenost - da bih, ako GMS ponudi mogućnost korištenja drugog, neovlaštenog programskog jezika, ovdje potrošio vrijeme da napravim veću štetu. Svim sam za poravnavanje višestrukih vještina tijekom rada, dok se trošenje vremena da biste postali stručnjak za GMS editor i GML bez mogućnosti da to znanje primijenite drugdje ne čini vrijednim.

Ipak je riječ o prilično izvedljivom 2D uređivaču, i iako podrška zajednice možda nije na razini Unityjeve, ipak je prilično dobra. Imajte na umu i da ćete nakon isteka besplatnog probnog razdoblja morati platiti da biste nastavili koristiti Game Maker Studio 2.

Phaser 3

Phaser je lagan JavaScript igrani okvir otvorenog koda. Postoji nekoliko ID-ova Phaser-a, ali ako ste od one koja želi raditi prvenstveno u kodu, možda ćete ovdje završiti koristeći Atom, Sublime ili svoj omiljeni uređivač.

Phaser 2 je bio i široko je korišten i dobro dokumentiran s hrpom tutorijala na koje se treba oslanjati. Phaser 3 je suprotno. Ima relativno visoku krivulju učenja za početnike, s gomilom primjera i nema puno konteksta oko njih.

Mnogi tutoriali podržavaju Phaser 2, a iako je učenje prenosljivo, kôd nije. Uz to, razvojni programeri nedavno su najavili da će premjestiti podršku na Phaser 4 (i TypeScript, a ne ES6), što nije sjajno ako ste vrijeme proveli radeći u Phaseru 3.

Ako niste profesionalni programer (nisam) i najnoviji ste s ES6 tečajevima i najboljim praksama JavaScript-a (nisam), mogli biste brzo postati frustrirani Phaserovim nedostatkom držanja u ruci i zbog čega morate postaviti vlastiti IDE i tijek rada (bio sam).

Međutim, otkrio sam da je to moćan, lagan okvir koji puno stvari radi na mnogo jednostavniji način od ostalih igara. Funkcija povlačenja i ispuštanja za kartašku igru ​​bila je relativan povjetarac, a sposobnost razdvajanja vrsta karata u razrede (nekako poput preradnih dijelova Unityja) podijelila je dio kognitivnog opterećenja koje ova vrsta igre zahtijeva.

Ako ste razvojni programer, možda bi vam se svidjele tvrde kodirajuće koordinate piksela za sve, ali ovo je mukotrpan posao. Uz to, ako niste najbrži u vezi sa svim JavaScriptom, najvjerojatnije ćete odgovore tražiti u krugovima koji nisu Phaser, a zatim ih primijeniti na svoj projekt, koji pretpostavlja pretpostavku.

Jedna druga napomena u slučaju da nije jasno: Phaser 3 čini se dosta službene dokumentacije i primjera, ali to ne imati zajednicu ili Stack Overflow odgovara da je puno drugih igra motora uživati. Ako naiđete na problem ili ne možete nešto otkriti, morat ćete otkriti svoje rješenje ili postaviti svoje pitanje na poslužitelj Phaser Discord, što je bilo korisno u mom iskustvu.

Zaključak

S obzirom na sve gore navedeno, prototip s kojim sam se zadržao i na kojem nastavljam ponavljati je onaj koji sam izgradio s Phaserom 3. Shvaćam da je ovo možda antiklimaktično, jer Phaser u osnovi nije "bolji" od drugi okviri i motori u razvoju 2D igara (osim, možda, React-a, koji ne pokušava biti konkurent u prostoru digitalnih igara).

Čini se da Phaser ipak glatko upravlja povlačenjem i ispuštanjem i upravljanjem petljama igre za Hacker Battles , a za moje svrhe to je važno. Također uživam što upotreba Phasera zahtijeva od mene veća ulaganja u JavaScript ekosustave i zajednice, ali svejedno me to zanima, tako da se čini kao bonus.

Ako više volite tip "što mogu koristiti za brzo izradu i ne zanima me kontekst u kojem se nalazi motor", YMMV.

TL; DR

Reagirajte: izvrsno za front end razvoj. Ne bi ga koristio za igre, posebno povucite i ispustite.

Jedinstvo: možete napraviti bilo koju vrstu 2D igre ako ste voljni hrvati se s uređivačem i temeljnim 3D idiosinkrazijama. Velika podrška zajednice, a C # je sjajan. Trgovina imovinom postoji, ali možda neće biti korisna za vaše svrhe.

Godot: otvoreni izvor i podržava GDScript, C #, čak i C ++ i Python ako ste spremni napraviti puno dizanja teške ruke. Dobre 2D implikacije, ali ni približno toliko podrška zajednice koliko nešto poput Unity. Također, moje iskustvo je bilo buggy.

Konstrukcija 3: stvarno jednostavan za upotrebu, velika prepreka ulasku zbog pretplate na pretplatu. Vizualno skriptiranje može vam ići na živce ako želite koristiti ili naučiti kôd, iako sada postoji neka podrška za JavaScript.

Game Maker Studio 2: user-friendly uređivač s dobrom podrškom zajednice. GML ili vizualno skriptiranje možda neće biti vaša šalica čaja ako dolazite iz drugog popularnijeg programskog jezika, ali hej, kad ste u Rimu. Također, zahtijeva plaćanje nakon 30-dnevnog besplatnog probnog razdoblja.

Phaser 3: očekujte da ćete sve kodirati i puno istražite kako biste shvatili kako stvari funkcioniraju. Meni odgovara za ovu određenu igru ​​i prototip, ali Phaser 4 je na putu, pa postoji i to.

Nadam se da je ovaj post koristan u vašem procesu pretraživanja i razlučivanja. Volio bih čuti i o vašem vlastitom iskustvu sa bilo kojim od ovih okvira / motora ili drugima!

Ako vam se svidio ovaj članak, razmislite o provjeri mojih igara i knjiga, pretplati se na moj YouTube kanal ili se pridružite Entromancy Discord .

MS Farzan, dr. Sc. napisao je i radio za istaknute tvrtke za video igre i uredničke web stranice kao što su Electronic Arts, Perfect World Entertainment, Modus Games i MMORPG.com, a služio je i kao upravitelj zajednice za igre poput Dungeons & Dragons Neverwinter i Mass Effect: Andromeda . Kreativni je direktor i vodeći dizajner igara Entromancy: Cyberpunk Fantasy RPG i autor knjige The Nightpath Trilogy . Pronađite MS Farzan na Twitteru @sominator.