Опитах се да направя същия прототип на 2D игра в React, Unity, Godot, Construct, Game Maker и Phaser. Ето какво открих.

Аз съм разработчик на настолни игри. При проектирането на нова игра с карти, реших да създам цифров прототип, който да ми помогне да стартирам симулации и лесно да споделя доказателство за концепция със сътрудници.

Имам известен опит в JavaScript и C # и посочих, както и много други: като прекарвам прекомерно много време в нишките „каква рамка да използвам“ и чета документация, без да правя нищо.

Преминете напред много месеци и сега прекарах повече време в работа (и борба с) React, Unity, Godot, Construct 3, Game Maker Studio 2 и Phaser 3, в опит да разбера какво ги кара да отметнат.

Разбира се, мисля, че съм прекарал много повече време във всеки от тях, отколкото е необходимо, за да направя малката си игра, и вероятно бих могъл просто да остана с първата и да пропусна пътя си през прототипа. Надявам се информацията по-долу да бъде полезна за всеки друг, който пазарува за двигател или рамка.

Куп предупреждения: Не се опитвам да продам един двигател или рамка над останалите и не предполагам, че една или някоя от тези рамки ще работи за вашата игра по-добре от друга. Също така не сравнявам ценообразуването, задната функционалност или внедряването на платформата. Така че, в зависимост от вашите изисквания, информацията по-долу може да има различна стойност за вас.

Освен това този опит се основава на разработка за 2D игра с карти, така че няма да обсъждам 3D двигатели, физика и т.н.

Можете също да преминете към дъното за TL; DR.

Прототипът

Моята игра, Entromancy: Hacker Battles , е конкурентна игра на карти с кибер пънк с механика TCG-light. Можете да прочетете повече на нашия уебсайт или да гледате как е предназначено да се възпроизвежда в това видео. Но е достатъчно да се каже, че като игра на карти, тя изисква потенциална цифрова рамка за поддържане на основни неща като управление на държавата, потребителски интерфейс, плъзгане и пускане на UX и куки отзад за внедряване на мултиплейър.

Като се имат предвид тези изисквания, проучих следните рамки и двигатели, за да видя кой би бил най-подходящ за създаване на моята игра ... вместо всъщност да направя играта (щастлив съм да кажа, че сега, когато се спрях на рамка, Постигам много повече).

Тук можете да получите достъп до версия за възпроизвеждане и въпреки че играта е по-далеч, отколкото би предполагал прототипът на живо, тази версия е доста стабилна (поне в Chrome).

Реагирайте

След като вече създадох прототип на генератор на персонажи в React за настолна RPG, която проектирах, мислех, че естествена стъпка ще бъде да дадем на рамката завъртане за играта на карти. Открих, че управлението на държавата е бриз (в крайна сметка това е, което React прави ), докато прилагането на прости функции за плъзгане и пускане за карти се оказа кошмар.

Има някои библиотеки, които могат да помогнат с основното плъзгане и пускане (напр. React DnD), но установих, че с играта на карти имам нужда от по-елегантно решение за дропзони, тъй като Hacker Battles е много конкретно относно това кои карти могат да се играе къде и кога.

Този опит ме накара да разгледам boardgame.io, който може да работи в тандем с React. Но това в крайна сметка изискваше да науча друга рамка върху съществуваща рамка, която беше по-малко от идеална за моите цели.

Единство

От общ интерес бях прекарал много време в Unity, като правех уроци и се научих как да използвам редактора, преди да се опитам да преправя прототипа на играта на карти с него. Магазинът за активи е страхотен ресурс и има толкова много документация, официална и неофициална, че бях уверен, че мога да намеря отговор на всеки проблем, който мога да срещна.

Досега опитът ми с Unity е смесен. Наистина ми харесва да работя в C # и всичко, свързано с кода, е относително безболезнено изживяване. Unity обаче е много специфичен по отношение на изпълнението си и понякога може да се чувства контраинтуитивен.

Редакторът, от друга страна, е мечка, с която да работите. За да използвате пълния потенциал на Unity, трябва да прекарате дълго време, докато се борите с потребителския интерфейс, за да разберете къде е всичко и как да го използвате. Също така отчаяно изостава във времето с развитието на 2D играта, очевидно се опитва да изравнява предимно 3D двигателя в 2D равнина със смесени резултати.

За да бъда честен, доста ми харесва да работя в редактора на Unity, колкото и да е тромав. Но ако търсите двигател за 2D игри, качеството ви на живот ще бъде много по-високо другаде (гледайте видеоклип за анимационната система на Unity или постигане на съвършенство на пикселите и ще разберете какво имам предвид).

В крайна сметка манипулирането на Unity с 2D пространството е малко по-сложно, отколкото ми трябва за моя прототип, но ще се върна към него за други видове игри.

Също така, странична лента, която може да е полезна за някои: Първоначално бях изключително развълнувана от магазина за активи, с идеята, че мога да закупя шаблон за игра на карти, който би улеснил много процеса на разработка за мен. Не се получи. Повечето от тях бяха MTG / Hearthstone / и т.н. клонинги, които ще изискват точно толкова време за разработка от моя страна, за да ги преструктурират за играта ми с карти, колкото и просто да започнат от нулата.

Годо

Първата ми мисъл при срещата с Годо беше: „Двигател за игри с отворен код, който поддържа C #? Регистрирайте ме! След това го изтеглих, работих през няколко основни урока и го накара да се срине при изграждането. Хърм.

Няколко търсения, преинсталирания и косми, изтеглени по-късно от Google, разбрах, че има нещо общо с моята версия на VS Build (мисля?), Което ме отведе в отделна заешка дупка. От опит знаех, че други двигатели - Unity главен сред тях - могат да доведат до проблеми, свързани с играта, напълно извън вашия собствен код, но това беше досадно препятствие, което вероятно оцвети останалата част от опита ми с Godot.

От гледна точка на редактора, много ми хареса реализацията на Godot, базирана на възел, която всъщност намерих контраинтуитивна, идваща от сглобките на Unity, но в крайна сметка се затопли. Всъщност бих стигнал дотам да кажа, че неговата 2D функционалност е по - добра от тази на Unity, но липсва общността, хранилището на активи (вижте страничната лента по-горе) и особено документацията, която Unity има. Ако възнамерявате например да работите в C # с Godot, бъдете готови да търсите отговори в персонализирания GDScript на двигателя и след това да ги превеждате на C #.

Чувал съм обаче хора, които изпитват голям успех с Годо, докато използват GDScript, така че ако сте готови да отделите време, за да го научите, може да се насладите на това, което Годо може да предложи.

Постройте 3

В предупрежденията, които изброих по-горе, споменах, че не включвам ценообразуването като дискусионна точка. И все пак чувствам, че трябва да го повдигна с Construct 3, тъй като се оказа въздействащо в моя опит.

За разлика от другите игрални механизми, изброени тук, които в по-голямата си част са безплатни за използване (Game Maker Studio 2 има 30-дневна безплатна пробна версия), по-голямата част от функционалността на Construct е зад платена стена и абонаментна такса на че. Ъъъ.

Наистина, много харесвам среза на стрелата на Construct за прости 2D игри. Редакторът се чувства малко като надстройка от MS Paint, но се справя много добре с спрайта и управлението на обекти и е просто лесен за използване. Не ми харесва, че използва стил "визуални скриптове", но наскоро те добавиха функцията за писане на обикновен стар JavaScript и изглежда горе-долу работи.

Успях да създам много елементарна архитектура за прототипа за кратко време, преди да затворя демонстрацията на Construct 3 (която работи в браузър) ... и след това да пробвам всичко отново по-късно с нова демонстрация. Чувствам, че поне за тази игра с карти бих могъл да направя много с Construct 3, но просто не съм готов да плащам $ 99 / година (или повече, като бизнес) за прототип.

Game Maker Studio 2

YoYo Games очевидно е свършил много работа, за да направи Game Maker Studio 2 достъпен и лесен за навигация, и това показва. От всички двигатели, които съм използвал за този проект, най-много харесвам редактора на GMS. За малък проект е лесно да се ориентирате и да се занимавате с бизнеса си. Подозирам обаче, че по-голям проект може да излезе извън контрол доста бързо.

Това може да бъде повлияно от собствения език на Game Maker Studio, GML (въпреки че GMS 2 поддържа визуални скриптове, които не използвах). Работи, но ако стигате до него от друг OOP език (или, наистина, от който и да е друг широко използван език), може да си надраскате главата при внедряването или да разберете как да направите някои неща. Ако сте начинаещ или сте готови да отделите време, за да разберете как GMS иска да използвате GML, вероятно ще се оправите.

Изпитах известни странности с функцията за плъзгане и пускане на Game Maker Studio - а именно, откриването на показалеца на мишката при плъзгане е малко тромаво и изисква малко скеле, за да работи правилно.

Мисля, че - и това е напълно лично предпочитание и мързел от моя страна - че ако GMS предлагаше възможността да използва друг, непатентован език за програмиране, щях да отделя време, за да нанеса повече вреди тук. Аз съм всичко за изравняване на множество умения, докато работя, докато прекарването на времето, за да станете експерт в редактора на GMS и GML, без да можете лесно да приложите тези знания на друго място, не изглежда струващо.

И все пак това е доста работещ 2D редактор и въпреки че подкрепата на общността може да не е наравно с тази на Unity, тя все още е доста добра. Внимавайте също така, че след като изтече безплатната ви пробна версия, ще трябва да платите, за да продължите да използвате Game Maker Studio 2.

Фазер 3

Phaser е лека игрална платформа за JavaScript с отворен код. Наоколо има някои IDE на Phaser, но ако сте от вида, който иска да работи предимно в код, може да завършите тук, като използвате Atom, Sublime или любимия си редактор.

Phaser 2 беше и е широко използван и добре документиран с множество уроци, върху които да се позовем. Phaser 3 е обратното. Той има сравнително висока крива на обучение за начинаещи, с куп примери и не много контекст около тях.

Много от уроците там поддържат Phaser 2 и докато обучението е преносимо, кодът не е. Освен това разработчиците наскоро обявиха, че ще преместят поддръжка към Phaser 4 (и TypeScript, а не ES6), което не е чудесно, ако сте прекарали време в работа във Phaser 3.

Ако не сте професионален програмист (аз не съм) и сте в крак с класовете ES6 и най-добрите практики за JavaScript (не бях), може бързо да се разочаровате от липсата на хватка на Phaser и да се наложи да настроите вашия собствена IDE и работен поток (бях).

Открих обаче, че това е мощна, лека рамка, която прави много неща по много по-рационализиран начин от другите игрални двигатели. Функцията „плъзгане и пускане“ за играта на карти е относителна бриз и възможността за разделяне на типовете карти в класове (нещо като сглобяемите елементи на Unity) обособява част от когнитивното натоварване, което изисква този вид игра.

Ако сте разработчик на преден край, може да ви хареса или да ви е удобно с твърдо кодиране на пикселни координати за всичко, но sheesh, това е старателната работа. Освен това, ако не сте в крак с всичко JavaScript, най-вероятно ще търсите отговори в не-Phaser кръгове и след това ще ги прилагате към вашия проект, който има своя собствена полза, предполагам.

Една друга бележка, в случай, че не е ясно: Phaser 3 прави имат доста официални документи и примери, но това не трябва общността или Stack Overflow отговори, че много други игрови двигатели ползват. Ако срещнете проблем или не можете да разберете нещо, ще трябва да измислите собственото си решение или да публикувате въпроса си на сървъра Phaser Discord, което беше полезно в моя опит.

Заключение

Предвид всичко изброено по-горе, прототипът, с който се придържам и продължавам да повторям, е този, който съм изградил с Phaser 3. Осъзнавам, че това може да е антиклиматично, тъй като Phaser по своята същност не е „по-добър“ от други рамки и двигатели при разработването на 2D игри (с изключение, може би, на React, който не се опитва да бъде конкурент в дигиталното игрово пространство).

Изглежда обаче, че Phaser се справя по-плавно с плъзгане и пускане и управление на контура на играта за Hacker Battles и за моите цели това е важно. Също така се радвам, че използването на Phaser изисква от мен да инвестирам по-сериозно в екосистемата (ите) и общностите на JavaScript, но все пак ми е интересно да го направя, за да се почувствам като бонус.

Ако сте по-скоро от типа „какво мога да използвам, за да изградя бързо нещо и да не ми пука за контекста, в който се намира двигателят“, YMMV.

TL; DR

React: чудесно за разработка отпред. Не би го използвал за игри, особено плъзгане и пускане.

Единство: можете да направите всякакъв вид 2D игра, ако искате да се борите с редактора и основните 3D идиосинкразии. Страхотна подкрепа от общността и C # е страхотен. Магазинът за активи съществува, но може да не е полезен за вашите цели.

Годо: с отворен код и поддържа GDScript, C #, дори C ++ и Python, ако сте готови да направите голяма част от тежката работа. Добри 2D последици, но не толкова голяма подкрепа от общността, колкото нещо като Unity. Освен това опитът ми беше бъги.

Конструкция 3: наистина лесен за използване, висока бариера за влизане поради абонаментната платена стена. Визуалните скриптове могат да ви изнервят, ако искате да използвате или научите код, въпреки че вече има известна поддръжка на JavaScript.

Game Maker Studio 2: лесен за ползване редактор с добра поддръжка от общността. GML или визуалните скриптове може да не са вашата чаша чай, ако идвате от друг по-популярен език за програмиране, но хей, когато сте в Рим. Освен това изисква плащане след 30-дневен безплатен пробен период.

Phaser 3: очаквайте да кодирате всичко и да търсите много, за да разберете как да накарате нещата да работят. Работи за мен за тази конкретна игра и прототип, но Phaser 4 е на път, така че има и това.

Надявам се тази публикация да е полезна във вашия собствен процес на търсене и разпознаване. Ще се радвам да чуя и за вашия собствен опит (и) с някоя от тези рамки / двигатели или други!

Ако харесате тази статия, моля, помислете за разглеждане на игрите и книгите ми, абониране за моя канал в YouTube или присъединяване към Entromancy Discord.

MS Farzan, Ph.D. е писал и работил за известни компании за видеоигри и редакционни уебсайтове като Electronic Arts, Perfect World Entertainment, Modus Games и MMORPG.com и е служил като мениджър на общността за игри като Dungeons & Dragons Neverwinter и Mass Effect: Andromeda . Той е креативен директор и водещ дизайнер на игри на Entromancy: A Cyberpunk Fantasy RPG и автор на The Nightpath Trilogy . Намерете MS Farzan в Twitter @sominator.