Я спробував зробити той самий прототип 2D гри в React, Unity, Godot, Construct, Game Maker та Phaser. Ось що я знайшов.

Я розробник настільних ігор. Розробляючи нову карткову гру, я вирішив створити цифровий прототип, який допоможе мені запускати симуляції та легко ділитися з колегами доказом концепції.

У мене є трохи досвіду роботи з JavaScript та C #, і я виклав це, як і багато інших: витрачаючи непомірну кількість часу на теми "який фреймворк я повинен використовувати" та читаючи документацію, не роблячи нічого.

Минуло вперед багато місяців, і тепер я витратив більше часу на роботу (і боротьбу з) React, Unity, Godot, Construct 3, Game Maker Studio 2 і Phaser 3, намагаючись зрозуміти, що змушує їх ставити галочку.

Зізнаюся, я думаю, що я витратив у кожному з них більше часу, ніж потрібно для створення моєї маленької гри, і, напевно, міг би просто затриматися з першим і помилитися у своєму шляху через прототип. Я сподіваюся, що наведена нижче інформація буде корисною для тих, хто ще купує двигун чи конструкцію.

Багато застережень: я не намагаюся продати один двигун або фреймворк над іншими, і я також не припускаю, що один або будь-який з цих фреймворків буде працювати для вашої гри краще, ніж інший. Я також не порівнюю ціни, внутрішню функціональність або розгортання платформи. Отже, залежно від ваших вимог, наведена нижче інформація може мати для вас різну цінність.

Крім того, цей досвід заснований на розробці 2D-карткової гри, тому я не буду обговорювати тривимірні двигуни, фізику тощо.

Ви також можете перейти до нижньої частини для 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, як би він невмілий. Але якщо ви шукаєте двовимірний ігровий движок, ваша якість життя в інших місцях буде набагато вищою (перегляньте відео про систему анімації Unity або досягнення піксельної досконалості, і ви зрозумієте, що я маю на увазі).

Зрештою, обробка Unity з двовимірним простором дещо складніша, ніж мені потрібно для мого прототипу, але я повернусь до нього для інших типів ігор.

Крім того, бічна панель, яка може бути корисною для когось: спочатку я був надзвичайно схвильований магазином активів, думаючи, що я можу придбати шаблон карткової гри, який значно полегшить для мене процес розробки. Не вийшло. Більшість із них були MTG / Hearthstone / тощо. клони, які вимагали б з мого боку стільки ж часу на розробку, щоб переструктурувати їх для моєї карткової гри, як це було б просто для початку з нуля.

Годо

Моя перша думка при зустрічі з Годо була такою: "Ігровий движок з відкритим кодом, що підтримує C #? Зареєструйся!" Потім я завантажив його, пропрацював кілька основних навчальних посібників, і він зірвався під час збірки. Боляче.

Кілька пошукових запитів, перевстановлення та витягнутих волосся в Google пізніше, я зрозумів, що це пов’язано з моєю версією VS Build (я думаю?), Яка привела мене до окремої кролячої нори. З досвіду я знав, що інші двигуни - серед них головний Unity - можуть спричинити важкі проблеми зовсім поза вашим власним кодом, але це була надокучлива перешкода, яка, ймовірно, забарвила решту мого досвіду з Годо.

З точки зору редактора, мені дуже сподобалась реалізація на основі вузла Годо, яка, насправді, мені здалася контр-інтуїтивною, що надходить із префабів Unity, але з часом зігрілася. Я б насправді зайшов так далеко, сказавши, що його 2D-функціональність краща за функцію Unity, але в ній немає спільноти, сховища активів (див. Бічну панель вище), а особливо документації, яку має Unity. Наприклад, якщо ви збираєтеся працювати в C # з Годо, будьте готові шукати відповіді в користувацькому 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 підтримує візуальні сценарії, якими я не користувався). Це працює, але якщо ви переходите до нього з іншої мови ООП (або, справді, з будь-якої іншої широко використовуваної мови), ви можете почухати собі голову при впровадженні або з’ясувати, як це зробити. Якщо ви новачок або хочете витратити час на те, щоб зрозуміти, як GMS хоче, щоб ви користувались GML, напевно, у вас все буде добре.

Я відчув деяку химерність з функцією перетягування Game Maker Studio - а саме, виявлення вказівника миші при перетягуванні трохи хитке і вимагає певних риштувань для коректної роботи.

Я думаю - і це абсолютно особисті переваги та лінощі з мого боку - що якби GMS запропонував можливість використовувати іншу, не запатентовану мову програмування, я витратив би час, щоб нанести тут більше шкоди. Я все за те, щоб під час роботи вирівняти кілька навичок, тоді як витрачати час на те, щоб стати експертом у редакторі GMS та GML, не маючи змоги легко застосувати ці знання в інших місцях, здається не варто.

Тим не менш, це досить працездатний 2D-редактор, і хоча підтримка спільноти може бути не на рівні з Unity, вона все ще досить гарна. Пам'ятайте також, що після закінчення безкоштовної пробної версії вам доведеться заплатити, щоб продовжувати користуватися Game Maker Studio 2.

Фазер 3

Phaser - це легкий ігровий фреймворк з відкритим кодом JavaScript. Навколо є кілька IDE Phaser, але якщо ви подібні до того, хто хоче працювати переважно в коді, ви можете завітати сюди, використовуючи Atom, Sublime або ваш улюблений редактор.

Phaser 2 широко використовувався і добре задокументований, маючи безліч навчальних посібників, якими можна користуватися. Фазер 3 - навпаки. У нього є порівняно висока крива навчання для початківців, з безліччю прикладів і не так багато контексту навколо них.

Багато навчальних посібників там підтримують Phaser 2, і хоча навчання можна передати, код - ні. Крім того, розробники нещодавно оголосили, що вони перенесуть підтримку на Phaser 4 (і TypeScript, а не ES6), що не чудово, якщо ви витратили час на роботу у Phaser 3.

Якщо ви не професійний програміст (я не є) і не в курсі класів ES6 та найкращих практик JavaScript (я не був), ви можете швидко розчаруватися через відсутність у Phaser браку рук і необхідності налаштовувати ваш власна IDE та робочий процес (я був).

Однак я виявив, що це потужний, легкий фреймворк, який робить багато речей набагато впорядкованіше, ніж інші ігрові двигуни. Функція перетягування для карткової гри мала відносний вітер, і можливість розділяти типи карт на класи (на зразок збірних панелей Unity) розділила деякі когнітивні навантаження, необхідні для цього виду гри.

Якщо ви розробник інтерфейсів, вам може сподобатися або вам сподобатися жорстке кодування піксельних координат для всього, але, мабуть, це копітка робота. Крім того, якщо ви не в курсі всього JavaScript, ви, швидше за все, будете шукати відповіді у колах, що не є Phaser, а потім застосовувати їх до свого проекту, який, мабуть, має свою користь.

Ще одне зауваження в разі , якщо це не ясно: Phaser 3 робить зовсім небагато офіційної документації та прикладів, але це НЕ має спільноти або переповнення стека відповідає , що багато інших ігрових движків насолоджуватися. Якщо ви зіткнулися з проблемою або не можете щось розібратися, вам доведеться розгадати своє рішення або розмістити своє запитання на сервері Phaser Discord, що було корисно з мого досвіду.

Висновок

Враховуючи все вищесказане, прототип, з яким я дотримувався і продовжую повторювати, - це той, який я побудував з Phaser 3. Я усвідомлюю, що це може бути антиклімактичним, оскільки Phaser за своєю суттю не є "кращим", ніж інші фреймворки та двигуни при розробці 2D ігор (за винятком, можливо, React, який не намагається бути конкурентом у цифровому ігровому просторі).

Однак, схоже, Phaser справляється з перетягуванням та управлінням ігровим циклом для Hacker Battles більш плавно, і для моїх цілей це важливо. Мені також подобається, що використання Phaser вимагає від мене більших вкладень в екосистему (и) та спільноти JavaScript, але мені все одно цікаво це зробити, тому це відчувається як бонус.

Якщо ви більше відповідаєте типу "що я можу використати, щоб швидко щось побудувати і не піклуватися про контекст, в якому знаходиться двигун", YMMV.

TL; DR

Реагуйте: чудово підходить для розвитку інтерфейсу. Не використовував би його для ігор, особливо перетягування.

Єдність: ви можете зробити будь-який тип 2D-гри, якщо хочете боротися з редактором та основними 3D-ідіосинкразіями. Велика підтримка спільноти, і C # - це чудово. Магазин активів існує, але може не бути корисним для ваших цілей.

Годо: з відкритим кодом і підтримує GDScript, C #, навіть C ++ і Python, якщо ви готові зробити багато важкої атлетики. Хороші 2D-наслідки, але не настільки велика підтримка громади, як щось на зразок Unity. Крім того, мій досвід був глючним.

Конструкт 3: дуже простий у використанні, високий бар’єр для входу через плату за передплату. Візуальні сценарії можуть нервувати вам, якщо ви хочете використовувати або вивчити код, хоча зараз існує певна підтримка JavaScript.

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

Phaser 3: розраховуйте на все кодування та багато шукайте, щоб зрозуміти, як зробити так, щоб все працювало. Це працює для мене саме для цієї конкретної гри та прототипу, але Phaser 4 вже на шляху, отже, це є.

Сподіваюсь, ця публікація буде корисною у вашому власному процесі пошуку та розпізнавання. Я також хотів би почути про ваш власний досвід (і) з будь-яким із цих фреймворків / двигунів чи іншими!

Якщо вам сподобалася ця стаття, будь ласка , розглянути можливість перевірити мої ігри і книги, підписавшись на мій канал YouTube, або приєднатися до Entromancy розбрату.

М.С. Фарзан, к.е.н. писав і працював у гучних компаніях з відеоігор та редакційних веб-сайтах, таких як Electronic Arts, Perfect World Entertainment, Modus Games та MMORPG.com, а також працював менеджером спільноти для таких ігор, як Dungeons & Dragons Neverwinter та Mass Effect: Andromeda . Він є креативним директором та провідним дизайнером ігор Entromancy: A Cyberpunk Fantasy RPG та автором трилогії The Nightpath . Знайдіть MS Farzan у Twitter @sominator.