Poskušal sem narediti isti prototip 2D igre v React, Unity, Godot, Construct, Game Maker in Phaser. Tukaj sem našel.

Sem razvijalec namiznih iger. Pri zasnovi nove igre s kartami sem se odločil za digitalni prototip, ki mi bo pomagal voditi simulacije in dokaze o konceptu enostavno deliti s sodelavci.

Imam nekaj ozadja v JavaScript in C #, in izpostavil sem, tako kot mnogi: tako, da porabim prekomerno veliko časa v temah, "kakšen okvir naj uporabljam", in berem dokumentacijo, ne da bi dejansko kaj naredil.

Veliko mesecev bliskajte naprej in zdaj sem več časa delal (in se boril z) React, Unity, Godot, Construct 3, Game Maker Studio 2 in Phaser 3, da bi razumel, zakaj jih tikajo.

Resda mislim, da sem v vsakem od njih porabil veliko več časa, kot je bilo potrebno za izdelavo moje majhne igre, in verjetno bi se lahko le zataknil prvega in se pregrešil skozi prototip. Upam, da bodo spodnje informacije koristne za vse, ki kupujejo motor ali ogrodje.

Kup opozoril: Ne poskušam prodati enega motorja ali ogrodja v primerjavi z ostalimi in tudi ne predlagam, da bo eden ali kateri koli od teh okvirov bolje deloval za vašo igro kot drugi. Prav tako ne primerjam cen, zaledne funkcionalnosti ali uvedbe platforme. Torej, odvisno od vaših zahtev, se lahko spodnje informacije za vas razlikujejo.

Poleg tega ta izkušnja temelji na razvoju igre z 2D kartami, zato ne bom razpravljal o 3D motorjih, fiziki itd.

Za TL lahko tudi preskočite na dno; DR.

Prototip

Moja igra Entromancy: Hacker Battles je konkurenčna igra s kartami s cyberpunkom z mehaniko TCG-light. Več si lahko preberete na naši spletni strani ali pa si ogledate, kako naj bi se predvajali v tem videoposnetku. Toda dovolj je reči, da kot igra s kartami zahteva potencialni digitalni okvir za podporo osnovnih stvari, kot so upravljanje države, uporabniški vmesnik, povleci in spusti UX in trnki za uporabo več igralcev.

Glede na te zahteve sem preučil naslednje okvire in motorje, da bi ugotovil, kateri bi bil najprimernejši za izdelavo moje igre ... namesto da bi dejansko naredil igro (z veseljem rečem, da sem se zdaj, ko sem se odločil za ogrodje, Veliko bolj napredujem).

Tu lahko dostopate do različice, ki jo je mogoče predvajati, in čeprav je igra dlje, kot bi predlagal prototip v živo, je ta različica precej stabilna (vsaj v Chromu).

Reagiraj

Ko sem v Reactu že izdelal prototip generatorja znakov za namizni RPG, ki sem ga zasnoval, sem mislil, da bi bil naravni korak, da se ogrodje zavrti za igro s kartami. Ugotovil sem, da je državno upravljanje prepih ( navsezadnje to počne React ), medtem ko se je izvajanje preprostih funkcij povleci in spusti za kartice izkazalo za nočno moro.

Obstaja nekaj knjižnic, ki lahko pomagajo pri osnovnem povleci in spusti (npr. React DnD), vendar sem ugotovil, da pri igranju s kartami potrebujem bolj elegantno rešitev za dropzone, saj je Hacker Battles zelo natančen glede tega, katere karte lahko se igrajo kje in kdaj.

Zaradi te izkušnje sem preveril boardgame.io, ki lahko deluje skupaj z Reactom. Toda to je nazadnje zahtevalo, da sem se naučil še enega okvira poleg obstoječega, ki je bil za moje namene manj kot idealen.

Enotnost

Zaradi splošnega zanimanja sem v Unityju veliko časa preživel z vajami in se naučil, kako uporabljati urejevalnik, preden sem poskusil z njim predelati prototip igre s kartami. Skladišče sredstev je odličen vir in tam je toliko uradne in neuradne dokumentacije, da sem bil prepričan, da lahko najdem odgovor na katero koli težavo, s katero se lahko srečam.

Moje izkušnje z Unity so bile do zdaj mešane. Resnično uživam v delu v jeziku C # in kar koli, kar je povezano s kodo, je bilo razmeroma brez bolečin. Vendar pa je Unity pri izvajanju zelo natančen in se včasih počuti kontraintuitivno.

Urednik pa je medved, s katerim je treba delati. Če želite izkoristiti ves potencial Unityja, se morate med rokovanjem z uporabniškim vmesnikom dobro boriti, da boste razumeli, kje je vse in kako to uporabiti. Tudi z razvojem 2D iger obupno zaostaja za časom in očitno poskuša predvsem 3D motor spraviti v 2D ravnino z mešanimi rezultati.

Po pravici povedano, zelo rad delam v urejevalniku Unity, pa tudi neroden. Če pa iščete motor za 2D igre, bo vaša kakovost življenja drugje precej višja (poglejte video o Unityjevem animacijskem sistemu ali dosežete popolnost slikovnih pik in boste videli, kaj mislim).

Konec koncev je ravnanje Unityja z 2D prostorom nekoliko bolj zapleteno, kot ga potrebujem za svoj prototip, vendar se bom nanj vrnil za druge vrste iger.

Tudi stranska vrstica, ki bi lahko bila koristna za nekatere: sprva sem bila zelo navdušena nad skladiščem sredstev z mislijo, da bi lahko kupila predlogo za igro s kartami, ki bi mi olajšala razvojni postopek. Ni se izšlo. Večina jih je bila MTG / Hearthstone / itd. kloni, ki bi od mene zahtevali prav toliko razvojnega časa, da bi jih prestrukturirali za svojo igro s kartami, kot če bi začeli od začetka.

Godot

Moja prva misel ob srečanju z Godotom je bila: "odprtokodni motor za igre, ki podpira C #? Prijavi me!" Nato sem jo prenesel, prebral nekaj osnovnih vadnic in se zrušil pri gradnji. Boli.

Kasneje sem izvedel več Googlovih iskanj, ponovnih namestitev in dlačic, zato sem ugotovil, da je to povezano z mojo različico VS Build (mislim?), Ki me je pripeljala v ločeno zajčjo luknjo. Iz izkušenj sem vedel, da lahko drugi motorji - med njimi tudi vodja Unity - povzročajo težave, ki lomijo igre, popolnoma zunaj vaše kode, toda to je bila moteča ovira, ki je verjetno obarvala preostanek moje izkušnje z Godotom.

Glede urejevalnika mi je bilo zelo všeč Godotova izvedba na vozliščih, za katero sem ugotovila, da je protitinuitivna iz prefabcev Unity, sčasoma pa ogreta. Pravzaprav bi šel tako daleč, da bi rekel, da je njegova 2D funkcionalnost boljša od funkcije Unity, vendar manjka skupnost, shramba sredstev (glej stransko vrstico zgoraj) in še posebej dokumentacija, ki jo ima Unity. Če nameravate na primer sodelovati v C # z Godotom, bodite pripravljeni poiskati odgovore v prilagojenem GDScript za motor in jih nato prevesti v C #.

Slišal pa sem, da so ljudje z Godotom doživeli velik uspeh med uporabo GDScript-a, tako da, če ste pripravljeni vložiti čas, da se ga naučite, boste morda uživali v tem, kar lahko ponudi Godot.

Zgradite 3

V opozorilih, ki sem jih navedel zgoraj, sem omenil, da ne vključujem cen kot točke razprave. Kljub temu se mi zdi, da moram to predstaviti s Construct 3, saj se je izkazalo za mojo izkušnjo.

Za razliko od ostalih tukaj naštetih igralnih mehanizmov, ki so večinoma brezplačni (Game Maker Studio 2 ima 30-dnevno brezplačno preskusno različico), je velika večina funkcionalnosti Constructa za plačilnim zidom in naročnina na to. Uf.

Resnično, zelo mi je všeč rez Constructove floke za preproste 2D igre. Urejevalnik je nekoliko podoben nadgradnji MS Painta, vendar zelo dobro obvladuje upravljanje s predmeti in predmeti ter je preprost za uporabo. Ni mi všeč, da uporablja slog "vizualnega skriptiranja", vendar so pred kratkim dodali funkcijo pisanja navadnega starega JavaScript-a in zdi se, da bolj ali manj deluje.

V kratkem času sem uspel zasnovati zelo osnovno arhitekturo prototipa, preden sem zaprl predstavitev Construct 3 (ki se izvaja v brskalniku) ... in nato vse skupaj znova poskusil pozneje z novo predstavitvijo. Zdi se mi, da bi vsaj za to igro s kartami lahko veliko naredil z Construct 3, vendar preprosto nisem pripravljen plačati 99 USD na leto (ali več kot podjetje) za prototip.

Game Maker Studio 2

YoYo Games je očitno naredil veliko dela, da je Game Maker Studio 2 postal dostopen in lahek za krmarjenje, kar tudi kaže. Od vseh motorjev, ki sem jih uporabil za ta projekt, mi je najbolj všeč urejevalnik GMS. Za majhen projekt se lahko enostavno znajdete in poslujete. Sumim pa, da bi lahko večji projekt dokaj hitro ušel izpod nadzora.

Na to lahko vpliva lastniški jezik Game Maker Studio, GML (čeprav GMS 2 podpira vizualno skriptiranje, ki ga nisem uporabljal). Deluje, toda če prihajate k njemu iz drugega jezika OOP (ali resnično katerega koli drugega široko uporabljenega jezika), se boste morda ob praskanju opraskali po glavi ali ugotovili, kako to storiti. Če ste začetnik ali ste pripravljeni porabiti čas za ugotavljanje, kako GMS želi , da uporabljate GML, boste verjetno v redu.

Nekaj ​​čudnosti sem doživel s funkcijo povleci in spusti Game Maker Studio - zaznavanje kazalca miške pri vlečenju je namreč nekoliko zapleteno in za pravilno delovanje zahteva nekaj delovnih odrov.

Mislim - in to je z moje strani povsem osebna naklonjenost in lenoba -, če bi GMS ponudil možnost uporabe drugega, nelastniškega programskega jezika, bi tukaj porabil čas, da naredim več škode. Zavzemam se za to, da med delom izenačim več veščin, medtem ko se poraba časa, da bi postali strokovnjak v urejevalniku GMS in GML, ne da bi to znanje zlahka uporabili drugje, ne zdi vredna.

Kljub temu je to dokaj delujoč 2D urejevalnik, in čeprav podpora skupnosti morda ni enakovredna Unityjevi, je vseeno precej dobra. Pazite tudi, da boste morali po končani brezplačni preizkusni različici še naprej uporabljati Game Maker Studio 2.

Phaser 3

Phaser je lahek odprtokodni ogrodje za igre JavaScript. Naokrog je nekaj ID-jev Phaserja, toda če ste takšni, ki želijo delovati predvsem v kodi, lahko tukaj zavijete z uporabo Atoma, Sublime ali vašega najljubšega urejevalnika.

Phaser 2 je bil in se pogosto uporablja in je dobro dokumentiran s številnimi vajami, na katere se je treba sklicevati. Phaser 3 je nasprotno. Ima razmeroma visoko učno krivuljo za začetnike, s kopico primerov in brez veliko konteksta.

Veliko vadnic podpira Phaser 2 in čeprav je učenje prenosljivo, koda ni. Poleg tega so razvijalci nedavno napovedali, da bodo podporo prenesli na Phaser 4 (in TypeScript namesto na ES6), kar ni super, če ste čas delali v Phaser 3.

Če niste poklicni programer (nisem) in ste na tekočem z razredi ES6 in najboljšimi praksami JavaScript (nisem bil), boste morda hitro razočarani zaradi pomanjkanja roke Phaserja in potrebe po nastavitvi lasten IDE in potek dela (bil sem).

Vendar sem ugotovil, da gre za zmogljiv, lahek okvir, ki veliko stvari naredi veliko bolj poenostavljeno kot drugi igralni mehanizmi. Funkcija povleci in spusti za igro s kartami je sorazmerno močna in zmožnost ločevanja vrst kart v razrede (nekako kot montažni elementi Unity) je razdelila nekatere kognitivne obremenitve, ki jih zahteva tovrstna igra.

Če ste razvijalec na čelni strani, vam bodo morda všeč koordinate pikslov s trdim kodiranjem za vse, vendar je to mukotrpno delo. Poleg tega, če niste na tekočem z vsem JavaScriptom, boste najverjetneje odgovore iskali v krogih, ki niso Phaser, in jih nato uporabili za svoj projekt, ki ima svojo korist, mislim.

Še ena opomba, v primeru, da ni jasno: Phaser 3 pa imajo kar nekaj uradnih dokumentov in primerov, vendar pa ni imela skupnosti ali Stack Overflow odgovarja, da je veliko drugih iger motorjev uživajo. Če naletite na težavo ali ne najdete nečesa, boste morali najti svojo rešitev ali objaviti svoje vprašanje na strežniku Phaser Discord, kar je bilo po mojih izkušnjah koristno.

Zaključek

Glede na vse zgoraj navedeno je prototip, ki sem se ga držal in v katerem še naprej ponavljam, tisti, ki sem ga zgradil s Phaserjem 3. Zavedam se, da je to lahko protiklimaktično, saj Phaser sam po sebi ni "boljši" od drugi okviri in motorji pri razvoju 2D iger (razen morda React, ki ne poskuša biti konkurenca v prostoru digitalnih iger).

Vendar se zdi, da Phaser bolj gladko obvladuje povleci in spusti in upravljanje z zanko za Hacker Battles , kar je za moje namene pomembno. Uživam tudi v tem, da uporaba Phaserja zahteva, da vlagam več v ekosistem (e) in skupnosti JavaScript, vendar me to vseeno zanima, zato se mi zdi bonus.

Če ste bolj tisti tip "kaj lahko uporabim za hitro izdelavo in me ne zanima kontekst, v katerem je motor", YMMV.

TL; DR

React: odličen za prednji razvoj. Ne bi ga uporabljal za igre, zlasti povleci in spusti.

Unity: lahko naredite katero koli vrsto 2D igre, če ste se pripravljeni boriti z urejevalnikom in osnovnimi 3D-idiosinkrazijami. Odlična podpora skupnosti in C # je super. Trgovina s sredstvi obstaja, vendar morda ni koristna za vaše namene.

Godot: odprtokodni in podpira GDScript, C #, celo C ++ in Python, če ste pripravljeni narediti veliko težkega dela. Dobre 2D posledice, a niti približno toliko podpore skupnosti kot nekaj podobnega Unity. Tudi moja izkušnja je bila napačna.

Konstrukt 3: resnično enostaven za uporabo, velika ovira za vstop zaradi plačilnega zidu za naročnino. Vizualno skriptiranje vam bo morda šlo na živce, če želite uporabiti ali se naučiti kode, čeprav je zdaj na voljo nekaj podpore za JavaScript.

Game Maker Studio 2: uporabniku prijazen urejevalnik z dobro podporo skupnosti. GML ali vizualno skriptiranje morda ne bo vaša skodelica čaja, če prihajate iz drugega bolj priljubljenega programskega jezika, ampak hej, ko ste v Rimu. Zahteva tudi plačilo po 30-dnevnem brezplačnem preskusu.

Phaser 3: pričakujte, da boste vse kodirali, in veliko poiščite, da ugotovite, kako lahko stvari delujejo. Zame dela za to določeno igro in prototip, toda Phaser 4 je na poti, zato je to.

Upam, da je ta objava koristna v vašem procesu iskanja in razločevanja. Tudi jaz bi rad slišal o vaših izkušnjah s katerim koli od teh okvirov / motorjev ali drugimi!

Če vam je bil ta članek všeč, si oglejte moje igre in knjige, se naročite na moj YouTube kanal ali se pridružite sporazumu Entromancy .

MS Farzan, dr. je pisal in delal za odmevna podjetja za video igre in uredniška spletna mesta, kot so Electronic Arts, Perfect World Entertainment, Modus Games in MMORPG.com, in je služil kot upravitelj skupnosti za igre, kot sta Dungeons & Dragons Neverwinter in Mass Effect: Andromeda . Je kreativni direktor in vodilni oblikovalec iger Entromancy: Cyberpunk Fantasy RPG in avtor filma The Nightpath Trilogy . Poiščite MS Farzan na Twitterju @sominator.