Saya mencoba membuat prototipe game 2D yang sama di React, Unity, Godot, Construct, Game Maker, dan Phaser. Inilah yang saya temukan.

Saya adalah pengembang game meja. Dalam merancang permainan kartu baru, saya memutuskan untuk membuat prototipe digital untuk membantu saya menjalankan simulasi dan dengan mudah berbagi bukti konsep dengan kolaborator.

Saya memiliki beberapa latar belakang dalam JavaScript dan C #, dan saya menetapkan seperti yang dilakukan banyak orang: dengan menghabiskan banyak waktu dalam "kerangka kerja apa yang harus saya gunakan" dan membaca dokumentasi tanpa benar-benar membuat apa pun.

Flash maju berbulan-bulan, dan saya sekarang telah menghabiskan lebih banyak waktu untuk bekerja (dan bergulat dengan) React, Unity, Godot, Construct 3, Game Maker Studio 2, dan Phaser 3, dalam upaya untuk memahami apa yang membuat mereka tergerak.

Memang, saya pikir saya telah menghabiskan lebih banyak waktu di masing-masing dari yang diperlukan untuk membuat permainan kecil saya, dan saya mungkin bisa saja terjebak dengan yang pertama dan melakukan kesalahan dengan cara saya melalui prototipe. Saya berharap info di bawah ini akan bermanfaat bagi siapa pun yang berbelanja mesin atau kerangka kerja.

Banyak peringatan: Saya tidak mencoba menjual satu mesin atau kerangka kerja di atas yang lain, dan saya juga tidak menyarankan bahwa satu atau kerangka kerja ini akan bekerja untuk game Anda lebih baik daripada yang lain. Saya juga tidak membandingkan harga, fungsionalitas back end, atau penerapan platform. Jadi, bergantung pada kebutuhan Anda, informasi di bawah ini mungkin memiliki nilai yang berbeda bagi Anda.

Selain itu, pengalaman ini didasarkan pada pengembangan permainan kartu 2D, jadi saya tidak akan membahas mesin 3D, fisika, dll.

Anda juga dapat melompat ke bawah untuk TL; DR.

Prototipe

Game saya, Entromancy: Hacker Battles , adalah game kartu cyberpunk kompetitif dengan mekanisme TCG-light. Anda dapat membaca lebih lanjut di situs web kami atau menonton bagaimana itu dimaksudkan untuk diputar di video ini. Tapi cukuplah untuk mengatakan bahwa, sebagai permainan kartu, itu membutuhkan kerangka kerja digital potensial untuk mendukung hal-hal dasar seperti manajemen negara, UI, drag-and-drop UX, dan kait ujung belakang untuk mengimplementasikan multiplayer.

Dengan persyaratan ini, saya menjelajahi kerangka kerja dan mesin berikut untuk melihat mana yang paling cocok untuk membuat gim saya ... daripada benar-benar membuat gim (dengan senang hati saya katakan bahwa sekarang saya telah menetapkan kerangka kerja, Saya membuat lebih banyak kemajuan).

Anda dapat mengakses versi yang dapat dimainkan di sini, dan meskipun gim ini lebih jauh dari yang disarankan prototipe langsung, versi ini cukup stabil (setidaknya di Chrome).

Reaksi

Setelah membangun prototipe pembuat karakter di React untuk tabletop RPG yang saya rancang, saya pikir langkah alami adalah memberikan kerangka kerja untuk permainan kartu. Saya merasa manajemen negara sangat mudah ( lagipula itulah yang dilakukan React ), sedangkan menerapkan fungsi drag-and-drop sederhana untuk kartu terbukti menjadi mimpi buruk.

Ada beberapa perpustakaan di luar sana yang dapat membantu dengan dasar drag-and-drop (misalnya, React DnD), tetapi saya menemukan bahwa dengan permainan kartu, saya membutuhkan solusi yang lebih elegan untuk dropzone, karena Hacker Battles sangat spesifik tentang kartu mana yang dapat digunakan. dimainkan di mana, dan kapan.

Pengalaman ini membuat saya memeriksa boardgame.io, yang dapat bekerja bersama-sama dengan React. Tetapi ini pada akhirnya mengharuskan saya untuk mempelajari kerangka kerja lain di atas kerangka kerja yang ada, yang kurang ideal untuk tujuan saya.

Kesatuan

Karena minat umum, saya telah menghabiskan banyak waktu di Unity melakukan tutorial dan mempelajari cara menggunakan editor sebelum mencoba membuat ulang prototipe permainan kartu dengannya. Penyimpanan aset adalah sumber daya yang bagus, dan ada begitu banyak dokumentasi, resmi dan tidak resmi, di luar sana sehingga saya yakin saya dapat menemukan jawaban untuk masalah apa pun yang mungkin saya temui.

Pengalaman saya dengan Unity sejauh ini adalah tas campuran. Saya sangat menikmati bekerja di C #, dan apa pun yang terkait dengan kode telah menjadi pengalaman yang relatif bebas rasa sakit. Namun, Unity sangat spesifik tentang implementasinya dan terkadang terasa kontra-intuitif.

Editor, di sisi lain, adalah beruang untuk diajak bekerja sama. Untuk memanfaatkan potensi penuh Unity, Anda perlu menghabiskan banyak waktu saat bergulat dengan UI untuk memahami di mana semuanya dan bagaimana menggunakannya. Ini juga sangat ketinggalan zaman dengan pengembangan game 2D, jelas berusaha untuk meratakan mesin 3D utama menjadi bidang 2D, dengan hasil yang beragam.

Agar adil, saya cukup menikmati bekerja di editor Unity, meskipun kikuk. Tetapi jika Anda mencari mesin game 2D, kualitas hidup Anda akan jauh lebih tinggi di tempat lain (tonton video di sistem animasi Unity atau mencapai kesempurnaan piksel dan Anda akan mengerti maksud saya).

Pada akhirnya, penanganan Unity atas ruang 2D sedikit lebih kompleks daripada yang saya butuhkan untuk prototipe saya, tetapi saya akan kembali ke sana untuk jenis permainan lain.

Juga, bilah sisi yang mungkin berguna bagi sebagian orang: Saya awalnya sangat senang dengan toko aset, dengan gagasan bahwa saya dapat membeli templat permainan kartu yang akan membuat proses pengembangan menjadi lebih mudah bagi saya. Itu tidak berhasil. Kebanyakan dari mereka adalah MTG / Hearthstone / etc. klon yang akan membutuhkan waktu pengembangan yang sama banyaknya di pihak saya untuk merestrukturisasi mereka untuk permainan kartu saya seperti yang akan dimulai dari awal.

Godot

Pikiran pertama saya saat bertemu Godot adalah: "mesin game open source yang mendukung C #? Daftarkan saya!" Kemudian saya mengunduhnya, mengerjakan beberapa tutorial dasar, dan membuatnya macet saat dibuat. Hurm.

Beberapa pencarian Google, penginstalan ulang, dan rambut ditarik kemudian, saya tahu itu ada hubungannya dengan versi VS Build saya (menurut saya?), Yang membawa saya ke lubang kelinci yang terpisah. Saya tahu dari pengalaman bahwa mesin lain - pemimpin Unity di antara mereka - dapat menyebabkan masalah pemecah game sepenuhnya di luar kode Anda sendiri, tetapi ini adalah rintangan menjengkelkan yang mungkin mewarnai sisa pengalaman saya dengan Godot.

Dalam hal editor, saya sangat menyukai implementasi berbasis node Godot, yang sebenarnya saya temukan kontra-intuitif yang berasal dari prefab Unity, tetapi akhirnya menjadi hangat. Sebenarnya saya akan mengatakan lebih jauh bahwa fungsionalitas 2D-nya lebih baik daripada Unity, tetapi tidak ada komunitas, penyimpanan aset (lihat bilah sisi di atas), dan terutama, dokumentasi yang dimiliki Unity. Jika Anda berniat bekerja di C # dengan Godot, misalnya, bersiaplah untuk mencari jawaban di GDScript khusus mesin dan kemudian menerjemahkannya ke C #.

Namun, saya telah mendengar tentang orang-orang yang mengalami kesuksesan besar dengan Godot saat menggunakan GDScript, jadi jika Anda bersedia meluangkan waktu untuk mempelajarinya, Anda dapat menikmati apa yang ditawarkan Godot.

Bangun 3

Dalam peringatan yang saya sebutkan di atas, saya menyebutkan bahwa saya tidak memasukkan harga sebagai bahan diskusi. Namun, saya merasa perlu mengungkitnya dengan Construct 3, karena ternyata hal itu berdampak pada pengalaman saya.

Tidak seperti mesin game lain yang tercantum di sini, yang, sebagian besar, gratis untuk digunakan (Game Maker Studio 2 memiliki uji coba gratis 30 hari), sebagian besar fungsionalitas Construct ada di balik dinding pembayaran, dan biaya berlangganan di bahwa. Ugh.

Saya sangat, sangat suka potongan dari Construct's jib untuk game 2D sederhana. Editor terasa seperti upgrade dari MS Paint, tetapi menangani sprite dan manajemen objek dengan sangat baik, dan mudah digunakan. Saya tidak suka bahwa itu menggunakan gaya "skrip visual", tetapi mereka baru-baru ini menambahkan fitur penulisan JavaScript lama yang biasa dan tampaknya kurang lebih berfungsi.

Saya dapat memutar arsitektur yang sangat sederhana untuk prototipe dalam waktu singkat sebelum menutup demo Construct 3 (yang berjalan di browser) ... dan kemudian mencoba semuanya lagi nanti dengan demo baru. Saya merasa, setidaknya untuk permainan kartu ini, saya dapat melakukan banyak hal dengan Construct 3, tetapi saya tidak bersedia membayar $ 99 / tahun (atau lebih, sebagai bisnis) untuk sebuah prototipe.

Game Maker Studio 2

YoYo Games jelas telah melakukan banyak pekerjaan untuk membuat Game Maker Studio 2 dapat diakses dan mudah dinavigasi, dan itu terlihat. Dari semua mesin yang saya gunakan untuk proyek ini, saya paling menyukai editor GMS. Untuk proyek kecil, mudah untuk menemukan jalan Anda dan menjalankan bisnis Anda. Saya menduga, bagaimanapun, bahwa proyek yang lebih besar mungkin akan lepas kendali dengan cukup cepat.

Ini mungkin dipengaruhi oleh bahasa kepemilikan Game Maker Studio, GML (meskipun GMS 2 mendukung skrip visual, yang tidak saya gunakan). Ini berfungsi, tetapi jika Anda datang dari bahasa OOP lain (atau, benar-benar, bahasa lain yang banyak digunakan), Anda mungkin menggaruk-garuk kepala saat menerapkan atau mencari tahu bagaimana melakukan beberapa hal. Jika Anda seorang pemula atau ingin meluangkan waktu untuk mencari tahu bagaimana GMS ingin Anda menggunakan GML, Anda mungkin akan baik-baik saja.

Saya mengalami beberapa keanehan dengan fungsionalitas drag-and-drop Game Maker Studio - yaitu, deteksi penunjuk mouse saat menyeret agak miring dan membutuhkan beberapa perancah agar berfungsi dengan benar.

Saya pikir - dan ini benar-benar preferensi pribadi dan kemalasan di pihak saya - bahwa jika GMS menawarkan kemampuan untuk menggunakan bahasa pemrograman lain yang tidak memiliki hak milik, saya akan menghabiskan waktu untuk melakukan lebih banyak kerusakan di sini. Saya semua ingin meningkatkan berbagai keterampilan saat bekerja, sedangkan menghabiskan waktu untuk menjadi ahli dalam editor GMS dan GML tanpa dapat dengan mudah menerapkan pengetahuan itu di tempat lain tampaknya tidak bermanfaat.

Tetap saja, ini adalah editor 2D yang cukup bisa diterapkan, dan meskipun dukungan komunitas mungkin tidak setara dengan Unity, itu masih cukup bagus. Waspadalah, juga, bahwa setelah uji coba gratis Anda berakhir, Anda harus membayar untuk terus menggunakan Game Maker Studio 2.

Phaser 3

Phaser adalah framework game JavaScript open-source yang ringan. Ada beberapa IDE Phaser, tetapi jika Anda adalah tipe yang ingin bekerja terutama dalam kode, Anda mungkin berakhir di sini, menggunakan Atom, Sublime, atau editor favorit Anda.

Phaser 2 dulu dan banyak digunakan dan didokumentasikan dengan baik dengan banyak tutorial untuk digunakan. Phaser 3 adalah kebalikannya. Ini memiliki kurva belajar yang relatif tinggi untuk pemula, dengan banyak contoh dan tidak banyak konteks di sekitarnya.

Banyak tutorial di luar sana mendukung Phaser 2, dan sementara pembelajaran dapat ditransfer, kodenya tidak. Selain itu, pengembang baru-baru ini mengumumkan bahwa mereka akan memindahkan dukungan ke Phaser 4 (dan TypeScript daripada ES6), yang tidak bagus jika Anda telah menghabiskan waktu bekerja di Phaser 3.

Jika Anda bukan seorang programmer profesional (saya bukan) dan mengikuti kelas ES6 dan praktik terbaik JavaScript (saya bukan), Anda mungkin akan cepat frustrasi dengan kurangnya pegangan tangan Phaser dan harus menyiapkan memiliki IDE dan alur kerja (saya dulu).

Namun, menurut saya ini adalah kerangka kerja yang kuat dan ringan yang melakukan banyak hal dengan cara yang jauh lebih ramping daripada mesin permainan lainnya. Fungsionalitas drag-and-drop untuk permainan kartu relatif mudah, dan kemampuan untuk memisahkan jenis kartu ke dalam kelas (seperti prefab Unity) telah membagi beberapa beban kognitif yang dibutuhkan oleh jenis permainan ini.

Jika Anda seorang pengembang front end, Anda mungkin menyukai atau merasa nyaman dengan koordinat piksel pengkodean keras untuk semuanya, tapi sungguh, ini pekerjaan yang melelahkan. Selain itu, jika Anda tidak memahami semua JavaScript, kemungkinan besar Anda akan mencari jawaban di lingkaran non-Phaser dan kemudian menerapkannya ke proyek Anda, yang memiliki keuntungannya sendiri, saya kira.

Satu catatan lain jika tidak jelas: Phaser 3 memang memiliki cukup banyak dokumentasi dan contoh resmi, tetapi tidak memiliki komunitas atau jawaban Stack Overflow yang dinikmati banyak mesin game lain. Jika Anda mengalami masalah atau tidak dapat menemukan sesuatu, Anda harus mencari solusi Anda sendiri atau memposting pertanyaan Anda di server Phaser Discord, yang telah membantu dalam pengalaman saya.

Kesimpulan

Mengingat semua hal di atas, prototipe yang saya tempati dan terus saya lakukan adalah yang telah saya buat dengan Phaser 3. Saya menyadari bahwa ini mungkin anti-klimaks, karena Phaser pada dasarnya tidak "lebih baik" daripada kerangka kerja dan mesin lain di pengembangan game 2D (kecuali, mungkin, React, yang tidak mencoba menjadi pesaing di ruang game digital).

Namun, Phaser tampaknya menangani drag-and-drop dan manajemen loop game untuk Hacker Battles dengan lebih lancar, dan untuk tujuan saya, itu penting. Saya juga menikmati bahwa menggunakan Phaser mengharuskan saya untuk berinvestasi lebih banyak dalam ekosistem dan komunitas JavaScript, tetapi saya tetap tertarik untuk melakukannya sehingga rasanya seperti bonus.

Jika Anda lebih dari "apa yang dapat saya gunakan untuk membangun sesuatu dengan cepat dan tidak peduli dengan konteks di mana mesin berada" jenis, YMMV.

TL; DR

React: bagus untuk pengembangan front end. Tidak akan menggunakannya untuk game, terutama drag-and-drop.

Unity: Anda dapat membuat semua jenis game 2D jika Anda ingin bergulat dengan editor dan keistimewaan 3D yang mendasarinya. Dukungan komunitas yang hebat, dan C # itu luar biasa. Penyimpanan aset ada, tetapi mungkin tidak berguna untuk tujuan Anda.

Godot: open source dan mendukung GDScript, C #, bahkan C ++ dan Python jika Anda bersedia melakukan banyak pekerjaan berat. Implikasi 2D yang bagus tetapi tidak sebanyak dukungan komunitas seperti Unity. Juga, pengalaman saya buggy.

Konstruksi 3: sangat mudah digunakan, penghalang untuk masuk yang tinggi karena berlangganan paywall. Skrip visual mungkin membuat Anda kesal jika Anda ingin menggunakan atau mempelajari kode, meskipun sekarang ada beberapa dukungan JavaScript.

Game Maker Studio 2: editor yang ramah pengguna dengan dukungan komunitas yang baik. GML atau skrip visual mungkin bukan pilihan Anda jika Anda berasal dari bahasa pemrograman lain yang lebih populer, tapi hei, ketika berada di Roma. Selain itu, memerlukan pembayaran setelah uji coba gratis 30 hari.

Phaser 3: berharap untuk membuat kode semuanya, dan melakukan banyak pencarian untuk mencari tahu bagaimana membuat semuanya bekerja. Ini berfungsi untuk saya untuk game dan prototipe khusus ini, tetapi Phaser 4 sedang dalam perjalanan, jadi begitulah.

Saya harap posting ini bermanfaat dalam proses pencarian dan pemahaman Anda sendiri. Saya juga ingin mendengar tentang pengalaman Anda sendiri, dengan kerangka kerja / mesin ini atau yang lainnya!

Jika Anda menikmati artikel ini, pertimbangkan untuk melihat game dan buku saya, berlangganan saluran YouTube saya, atau bergabung dengan Entromancy Discord.

MS Farzan, Ph.D. telah menulis dan bekerja untuk perusahaan video game terkenal dan situs editorial seperti Electronic Arts, Perfect World Entertainment, Modus Games, dan MMORPG.com, dan telah menjabat sebagai Community Manager untuk game seperti Dungeons & Dragons Neverwinter dan Mass Effect: Andromeda . Dia adalah Direktur Kreatif dan Desainer Game Utama Entromancy: RPG Fantasi Cyberpunk dan penulis The Nightpath Trilogy . Temukan MS Farzan di Twitter @sominator.