Megpróbáltam ugyanazt a 2D-s játék prototípust elkészíteni a React, az Unity, a Godot, a Construct, a Game Maker és a Phaser alkalmazásokban. Itt találtam.

Asztali játékfejlesztő vagyok. Egy új kártyajáték tervezésénél úgy döntöttem, hogy elkészítek egy digitális prototípust, amely segít a szimulációk futtatásában, és könnyedén megoszthatja a koncepció igazolását az együttműködőkkel.

Van valamilyen hátterem a JavaScript-ben és a C # -ben, és kitűztem, mint sokan: azzal, hogy túl sok időt töltök a "milyen keretet használok" szálakkal és elolvasom a dokumentációt anélkül, hogy bármit is készítenék.

Sok hónapon keresztül halad előre, és most több időt töltöttem a React, az Unity, a Godot, a Construct 3, a Game Maker Studio 2 és a Phaser 3 munkájában (és azokkal vívódtam), hogy megértsem, mi készteti őket.

Igaz, azt hiszem, sokkal több időt töltöttem mindegyikben, mint amennyire szükségem volt a kis játékom elkészítéséhez, és valószínűleg csak ragaszkodhattam volna az elsőhöz, és belemerülhettem volna a prototípusba. Remélem, hogy az alábbi információk hasznosak lehetnek bárki más számára, aki motor vagy keretrendszer után vásárol.

Sok figyelmeztetés: Nem próbálok eladni egy motort vagy keretet a többinél, és nem is javaslom, hogy ezeknek a keretrendszereknek egyik vagy bármelyik jobban működne a játékodnál, mint egy másik. Nem hasonlítom össze az árképzést, a háttér funkcionalitást vagy a platform telepítését sem. Tehát az Ön igényeitől függően az alábbi információk eltérő értékűek lehetnek az Ön számára.

Ez a tapasztalat ráadásul egy 2D-s játék fejlesztésén alapul, ezért nem fogok 3D motorokról, fizikáról stb.

A TL; DR aljára is átugorhat.

A Prototípus

Az Entromancy: Hacker Battles játékom egy versenyképes cyberpunk kártyajáték TCG-könnyű mechanikával. Olvasson többet a weboldalunkon, vagy nézze meg, hogyan kell lejátszani ebben a videóban. De elég annyit mondani, hogy kártyajátékként potenciális digitális keretrendszerre van szükség az olyan alapvető dolgok támogatásához, mint az állami felügyelet, a kezelőfelület, a fogd és vidd UX és a hátul horgok a multiplayer megvalósításához.

Tekintettel ezekre a követelményekre, a következő keretrendszereket és motorokat vizsgáltam meg, hogy kiderüljön, melyik lenne a legalkalmasabb a játékom elkészítéséhez ... ahelyett, hogy ténylegesen elkészíteném a játékot (örömmel mondhatom, hogy most, amikor egy keretrendszerre telepedtem, Sokkal többet haladok).

Itt elérhető egy játszható verzió, és bár a játék tovább halad, mint az élő prototípus sugallja, ez a verzió elég stabil (legalábbis a Chrome-ban).

Reagál

Miután már készítettem egy karaktergenerátor prototípust a React-ben egy általam tervezett asztali RPG-hez, úgy gondoltam, hogy természetes lépés az, ha a keretet megpörgetjük a kártyajáték számára. Találtam állami vezetés a szél (ez az, amit reagálj csinál , elvégre), mivel a végrehajtási egyszerű drag-and-drop funkció kártyák bizonyult egy rémálom.

Vannak olyan könyvtárak, amelyek segíthetnek az egyszerű fogd-és-vidd funkcióval (pl. React DnD), de azt tapasztaltam, hogy egy kártyajátékkal elegánsabb megoldásra van szükségem a dropzone-okhoz, mivel a Hacker Battles nagyon pontosan meghatározza, hogy melyik kártyák használhatók. hol és mikor kell játszani.

Ez a tapasztalat arra késztetett, hogy megnézzem a boardgame.io fájlt, amely párhuzamosan működhet a React-lel. De ez végül megkövetelte, hogy egy meglévő keretrendszeren kívül megtanuljak egy másik keretrendszert, ami a céljaimhoz képest kevésbé volt ideális.

Egység

Általános érdekből sok időt töltöttem a Unity-ben oktatóanyagok készítésével és a szerkesztő használatának megtanulásával, mielőtt megkíséreltem volna vele elkészíteni a kártyajáték prototípusát. Az eszközbolt nagyszerű forrás, és annyi hivatalos, nem hivatalos dokumentáció van odakint, hogy biztos voltam benne, hogy választ találok minden kérdésre, amellyel találkozhatok.

Eddig a Unity-vel kapcsolatos tapasztalataim vegyesek voltak. Nagyon szeretek dolgozni a C # kategóriában, és bármi, ami a kóddal kapcsolatos, viszonylag fájdalommentes élmény volt. Az Unity azonban nagyon specifikus a megvalósításával kapcsolatban, és időnként ellentmondásosnak érezheti magát.

A szerkesztő viszont medve dolgozik. Ahhoz, hogy kiaknázza a Unity teljes potenciálját, jó hosszú időt kell töltenie, miközben a felhasználói felületen birkózik, hogy megértse, hol van minden és hogyan kell használni. A 2D-s játékfejlesztéssel szintén kétségbeesetten lemarad az idők mögött, és egyértelműen megkísérli elsősorban az 3D-s motor 2D-s síkká lapítását, vegyes eredménnyel.

Hogy igazságos legyek, nagyon szeretek dolgozni a Unity szerkesztõjében, bármennyire is ügyetlen. De ha 2D-s játékmotort keres, akkor máshol sokkal magasabb lesz az életminősége (nézzen meg egy videót a Unity animációs rendszeréről, vagy érje el a pixel tökéletességet, és meglátja, mire gondolok).

Végső soron a Unity kezelése a 2D-s térrel kissé összetettebb, mint amire szükségem van a prototípusomhoz, de visszatérek hozzá más típusú játékokhoz.

Ezenkívül egy oldalsáv, amely egyesek számára hasznos lehet: Kezdetben rendkívül izgatott voltam az eszközbolt iránt, azzal a gondolattal, hogy megvásárolhatok egy kártyajáték-sablont, amely sokkal könnyebbé teszi számomra a fejlesztési folyamatot. Nem sikerült. Legtöbbjük MTG / Hearthstone / stb. klónok, amelyek épp annyi fejlesztési időt igényelnének a részemről, hogy átalakítsam őket a kártyajátékomhoz, mintha csak a semmiből kezdeném.

Godot

Az első gondolatom, amikor találkoztam Godot-tal, az volt: "nyílt forráskódú játékmotor, amely támogatja a C # -et? Jelentkezzen!" Aztán letöltöttem, átdolgoztam néhány alap oktatóanyagot, és összeomlás közben összeomlott. Hurm.

Számos Google-keresés, újratelepítés és később kihúzott szőr, rájöttem, hogy köze van a VS Build verziójához (gondolom?), Ami egy külön nyúllyukon vezetett le. Tapasztalatból tudtam, hogy más motorok - köztük a Unity főnöke - a saját kódodon kívül teljesen játékdöntő problémákat okozhatnak, de ez egy bosszantó akadály volt, amely valószínűleg kiszínezte a Godottal kapcsolatos további tapasztalataimat.

A szerkesztő szempontjából nagyon tetszett Godot csomópont-alapú megvalósítása, amelyre valójában ellentmondó intuitivitást találtam a Unity prefabusaiból, de végül felmelegedtem. Valójában odáig mennék, hogy azt mondanám, hogy a 2D-s funkcionalitása jobb, mint a Unityé, de hiányzik belőle a közösség, az eszköztár (lásd a fenti oldalsávot), és különösen a Unity birtokában lévő dokumentáció. Ha például C # -ben szeretne dolgozni Godot-tal, készen áll arra, hogy válaszokat keressen a motor egyéni GDScript-jében, majd lefordítsa őket C # -re.

Hallottam azonban olyan embereket, akik nagy sikereket értek el Godot-val a GDScript használata közben, így ha hajlandó befektetni az idejét, hogy megtanulja, élvezheti Godot által kínált lehetőségeket.

3. konstrukció

A fent felsorolt ​​figyelmeztetésekben megemlítettem, hogy az árképzést nem vonom be vitaként. Ennek ellenére úgy érzem, hogy fel kell vinnem a Construct 3-mal, mivel tapasztalataim szerint hatásosnak bizonyult.

Az itt felsorolt ​​többi játékmotortól eltérően, amelyek többnyire ingyenesen használhatók (a Game Maker Studio 2 30 napos ingyenes próbaverzióval rendelkezik), a Construct funkcionalitásának túlnyomó része fizetési fal mögött van, és előfizetési díja hogy. Ugh.

Nagyon- nagyon szeretem a Construct egyszerű 2D-s játékokhoz tartozó peremét. A szerkesztő kissé úgy érzi magát, mint az MS Paint frissítése, de nagyon jól kezeli a sprite és az objektumkezelést, és egyszerűen egyszerűen használható. Nem szeretem, hogy "vizuális szkriptelési" stílust használ, de nemrégiben hozzáadták azt a funkciót, hogy egyszerű régi JavaScriptet írnak, és úgy tűnik, hogy ez többé-kevésbé működik.

Rövid idő alatt felpörgethettem a prototípus nagyon kezdetleges architektúráját, mielőtt bezártam a Construct 3 bemutatót (amely böngészőben fut), majd később újra kipróbáltam egy új demóval. Úgy érzem, legalábbis ehhez a kártyajátékhoz sokat tehetnék a Construct 3-mal, de egyszerűen nem vagyok hajlandó fizetni évi 99 dollárt (vagy többet üzleti vállalkozásként) egy prototípusért.

Game Maker Studio 2

A YoYo Games egyértelműen rengeteg munkát végzett annak érdekében, hogy a Game Maker Studio 2 elérhető és könnyen navigálható legyen, és ez megmutatkozik. A projekthez használt motorok közül a GMS szerkesztő tetszik a legjobban. Egy kis projekt esetében könnyű eligazodni és vállalkozni. Gyanítom azonban, hogy egy nagyobb projekt elég hamar kiszabadulhat a kezéből.

Ezt befolyásolhatja a Game Maker Studio saját nyelve, a GML (bár a GMS 2 támogatja a vizuális szkripteket, amelyeket én nem használtam). Működik, de ha egy másik OOP nyelvről (vagy valóban bármely más, széles körben használt nyelvről) érkezik, előfordulhat, hogy megvakargatja a fejét a megvalósításkor, vagy kitalálja, hogyan kell néhány dolgot végrehajtani. Ha kezdő vagy hajlandó időt tölteni annak kiderítésével, hogy a GMS hogyan akarja használni a GML-t, akkor valószínűleg minden rendben lesz.

Némi furcsaságot tapasztaltam a Game Maker Studio fogd és vidd funkciójával - nevezetesen, az egérmutató felismerése húzáskor kissé nyers, és a megfelelő működéshez némi állványra van szükség.

Azt hiszem - és ez részemről teljesen személyes preferencia és lustaság -, hogy ha a GMS felajánlja egy másik, nem saját tulajdonú programozási nyelv használatának lehetőségét, akkor itt tölteném az időt, hogy több kárt okozzak. Mindannyian azért értek el, hogy munka közben több szintet emeljek, miközben úgy tűnik, hogy nem érdemes időt tölteni azzal, hogy szakértővé váljak a GMS szerkesztőjében és a GML-ben anélkül, hogy képes lennék ezeket az ismereteket másutt használni.

Ennek ellenére elég működőképes 2D-s szerkesztő, és bár a közösségi támogatás nem feltétlenül egyezik meg a Unityével, mégis elég jó. Vigyázzon arra is, hogy az ingyenes próbaidőszak lejárta után fizetnie kell a Game Maker Studio 2 használatának folytatásáért.

Phaser 3

A Phaser egy könnyű, nyílt forráskódú JavaScript játékkeret. Vannak Phaser IDE-k a környéken, de ha olyanok vagytok, amelyek elsősorban kódban szeretnének működni, itt feloszthatja az Atom, a Sublime vagy a kedvenc szerkesztőjét.

A Phaser 2-t széles körben használták és használják, és rengeteg oktatóanyaggal dokumentálják. A Phaser 3 ezzel ellentétes. Viszonylag magas tanulási görbével rendelkezik a kezdők számára, egy csomó példával, és nem sok körülöttük.

Sok oktatóanyag támogatja a Phaser 2-t, és bár a tanulás átvihető, a kód nem. Ezenkívül a fejlesztők nemrég bejelentették, hogy támogatást nyújtanak a Phaser 4-re (és a TypeScript helyett ES6-ra), ami nem túl jó, ha időt töltött a Phaser 3-ban.

Ha nem profi programozó (nem vagyok), és naprakész az ES6 osztályokkal és a JavaScript bevált gyakorlataival (én nem voltam), akkor hamar meg fog csalódni a Phaser kézifogásának hiánya és az, hogy be kell állítania a saját IDE és munkafolyamat (voltam).

Megállapítottam azonban, hogy ez egy erős, könnyű váz, amely sok mindent sokkal áramvonalasabban végez, mint más játékmotorok. A kártyajáték fogd és vidd funkciója viszonylagos szellő volt, és a kártyatípusok osztályokba történő szétválasztásának képessége (hasonlóan a Unity előtételeihez) szétválasztotta azt a kognitív terhelést, amelyet az ilyen játék megkövetel.

Ha Ön front-end fejlesztő, akkor tetszhet vagy kényelmesen megismerheti mindenhez a pixelkoordináták kódolását, de ez a fárasztó munka. Ezen túlmenően, ha nem jár naprakészen a JavaScript minden dolgában, akkor valószínűleg nem Phaser körökben keres választ, majd alkalmazza őket a projektjében, aminek feltételezem, saját előnye is van.

Egy másik megjegyzés esetén ez nem egyértelmű: Phaser 3 nem elég egy kicsit a hivatalos dokumentumok és példák, de nem rendelkezik a közösség vagy Veremtúlcsordulás válaszolja, hogy sok más játék motorok élvezni. Ha problémába ütközik, vagy nem tud kitalálni valamit, akkor ki kell találnia saját megoldását, vagy fel kell tennie kérdését a Phaser Discord szerverre, ami tapasztalatom szerint hasznos volt.

Következtetés

A fentiek figyelembevételével a prototípus, amelyen ragaszkodtam és folytatom az ismétlést, az, amelyet a Phaser 3-mal készítettem. Tudomásul veszem, hogy ez antiklimatikus lehet, mivel a Phaser eredendően nem "jobb", mint a egyéb keretek és motorok a 2D-s játék fejlesztésénél (kivéve talán a React-et, amely nem próbál versenyző lenni a digitális játéktérben).

Úgy tűnik azonban, hogy a Phaser gördülékenyebben kezeli a Hacker Battles drag-and-drop és game loop kezelését , és az én céljaim szempontjából ez fontos. Azt is élvezem, hogy a Phaser használata megköveteli, hogy nagyobb összegeket fektessek be a JavaScript ökoszisztémáiba (ökoszisztémáiba) és közösségeibe, de mindenesetre érdekel, így bónusznak érzem magam.

Ha inkább a "mit használhatok fel gyors felépítéshez, és nem érdekel a motor helyzete" típus, akkor YMMV.

TL; DR

React: nagyszerű a front end fejlesztéséhez. Nem használná játékokhoz, különösen a fogd és vidd-re.

Unity: Bármilyen típusú 2D-s játék készíthető, ha hajlandó birkózni a szerkesztővel és a mögöttes 3D-s sajátosságokkal. Nagy közösségi támogatás, és a C # fantasztikus. Eszközraktár létezik, de lehet, hogy nem lesz hasznos az Ön céljaira.

Godot: nyílt forráskódú, és támogatja a GDScript, C #, még a C ++ és a Python programokat is, ha hajlandó sokat megtenni a nehéz feladatok elvégzésében. Jó 2D következmények, de közel sem akkora közösségi támogatás, mint valami Unity. Ezenkívül a tapasztalataim hibásak.

Construct 3: nagyon könnyen használható, magas a belépési korlát az előfizetéses paywall miatt. A vizuális szkriptelés ideges lehet, ha kódot akar használni vagy megtanulni, bár ma már van némi JavaScript-támogatás.

Game Maker Studio 2: felhasználóbarát szerkesztő, jó közösségi támogatással. Lehet, hogy a GML vagy a vizuális szkriptelés nem a teád, ha más népszerűbb programozási nyelvből származik, de hé, ha Rómában tartózkodik. Emellett fizetést igényel egy 30 napos ingyenes próbaidőszak után.

Phaser 3: várjon mindent kódolva, és nagyon keresgéljen, hogy kitalálja, hogyan lehet a dolgokat működtetni. Nekem ez a játék és prototípus működik, de a Phaser 4 úton van, szóval van ilyen.

Remélem, hogy ez a bejegyzés hasznos lesz a saját keresési és észlelési folyamatában. Szívesen hallanék a saját tapasztalatairól (tapasztalatairól), ezek bármelyik vázával / motorjával vagy másokkal!

Ha tetszett ez a cikk, kérjük, fontolja meg a játékaim és könyveim megtekintését, a YouTube-csatornámra való feliratkozást vagy a csatlakozást az Entromancy Discord-hoz.

Farzan MS, Ph.D. írt és dolgozott olyan nagy horderejű videojáték-társaságoknál és szerkesztőségi weboldalakon, mint az Electronic Arts, a Perfect World Entertainment, a Modus Games és az MMORPG.com, valamint közösségi vezetőként dolgozott olyan játékoknál, mint a Dungeons & Dragons Neverwinter és a Mass Effect: Andromeda . Az Entromancy: A Cyberpunk Fantasy RPG kreatív igazgatója és vezető játéktervezője, valamint a The Nightpath Trilogy szerzője . Keresse meg MS Farzant a Twitteren @sominator.