作者:M. S. Farzan
编译:Indietavern.com
我是一个桌面游戏开发者。 在做一个新的卡牌游戏,我决定做个游戏原型来帮助我运行模拟,这样可以便于和我的合作者们分享概念。
注意事项: 我并不为其中任何一款引擎站台,也不会下结论说哪一款最好,也没有进行价格、后台功能和平台部署方面的比较。 因此,下面的信息对你有多大价值我不能做保证。
此外,这是一个2D 卡牌游戏的开发经验,所以不涉及3D 引擎、物理等。
* 预警:文章机翻感浓郁
* 太长不看:拉到结尾有小结
React
我用React 做过一个TRPG角色生成器的原型,我觉得卡牌游戏需要加一个spin。我发现状态管理轻而易举(毕竟 React 就是用来做这个的) ,而简单的卡牌拖放功能却难得要命。
有一些库可以实现基本的拖放操作(例如 React DnD),但还不够,我想要像 Hacker Battles 那样做到非常明确哪些卡可以用。
然后我发现了boardgame.io,可以和 React 协同使用。 但这要求我在现有框架的基础上学习另一个框架,这对我的目的来说并不理想。
Unity
我花了很多时间用 Unity 做教程和学习如何使用编辑器,然后试图用它重新制作纸牌游戏原型。资产商店有很好的资源,有很多官方和非官方的文档,我觉得任何遇到的问题都能找到答案。
到目前为止,我的Unity 体验不好不坏。 我真的很喜欢用 c # ,用代码完成的部分很轻松。 然而,Unity 的执行过程很特殊,有时会让人觉得不合常理。
另一方面,编辑器很难用。 为了充分利用 Unity,需要花很长时间与UI进行磨合,以了解功能在哪以及如何使用。 用于2D游戏开发,Unity是落后于时代的,很明显,用3D引擎做2D游戏,结果好坏参半。
但公平地说,我非常喜欢用 Unity 编辑器,虽然它很不顺手。但是,如果你正在寻找一个2D 游戏引擎,在其他方面它还是好用的(用Unity动画系统看视频,或实现完美像素,你会明白我的意思)。
最后,Unity 对2D 空间的处理比我的原型所需要的要复杂一些,如果我做其他类型游戏还是会考虑Unity的。
另外,一个可能对某些人有用的备注: 我一开始对资产商店非常兴奋,因为可能可以买到模板,这样开发起来会容易许多。 但是没有找到。 其中大部分资产是 mtg / hearthstone 等,在资产基础上修改和重新做差不多。
Godot
我看到 Godot 的第一个想法是: “支持 c # 的开源游戏引擎? 我要加入! ”我下载了,看了几个基本的教程,然后使用时崩溃了。
经过谷歌搜索、重装和掉了几把头发后,我发现这与 VS Build 版本有关(我猜?) 这让我掉进了另一个兔子洞。 我从经验中知道,其他引擎——Unity最明显 ——可能会有非游戏代码引起的崩溃问题,但一点很烦人,可能会影响我使用 Godot 的体验。
在编辑器方面,我非常喜欢 Godot 的基于节点的实现(反观 Unity的预设是有些反人类的)。 甚至可以说它的整个2D 功能比 Unity 要好,但是缺少社区、资产商店,还有指导文档。 例如,如果您打算使用 c # ,需要在引擎的自定义 GDScript 中寻找答案,然后自行翻译为 c # 。
不过,我听说有人直接用GDScript,所以如果你愿意花时间去学习,你可能会喜欢 Godot 的功能。
Construct 3
在我上面列出的注意事项中,我提到我并没有把定价作为讨论的重点。 尽管如此,我还是觉得我需要把它和 Construct 3一起提出来,因为实在印象深刻。
不像这里列出的其他游戏引擎,大部分都是免费使用的(Game Maker Studio 2有30天的免费试用期) ,Construct 的绝大多数功能都需要付费,并且是订阅制。
我真的,真的很喜欢 Construct 对简单的2D 游戏的剪辑。 这个编辑器感觉有点像 MS Paint 的升级版,但是它很好地处理了 sprite 和对象管理,并且非常简单易用。 我不喜欢使用“可视化脚本”,但是他们最近增加了编写JavaScript 的特性,这看起来或多或少有些用处。
在关闭 Construct 3演示版(在浏览器中运行)之前,我可以在很短的时间内为原型建立一个非常基本的架构... ... 然后在之后的新演示版中再次尝试。 我觉得,至少对于这个卡牌游戏,我可以用 Construct 3实现很多功能,但是我不愿意为一个原型每年支付99美元(企业版更贵哦)。
Game Maker Studio 2
Game Maker Studio 2在可访问性和便于掌握方面下了很多功夫。 在我用于这个项目的所有引擎中,我最喜欢 GMS 编辑器。 对于一个小项目,很快就能理清头绪,上手制作。 然而,我怀疑如果是大一些的项目会容易失控。
我这么说是因为Game Maker Studio 的专有语言 GML (尽管 GMS 2支持可视化脚本,但我没有使用)。 它是可行的,但是如果你使用的是另一种 OOP 语言(或者任何其他广泛使用的语言) ,那么你可能会对实现感到头疼。 如果你是一个初学者,或者愿意花时间弄清 GMS 的专用语言 GML,那么你可能会做得很好。
拖放卡牌的功能实现起来有些坎坷。我认为——这完全是我个人的偏好和懒惰的问题——如果 GMS 允许使用另一种非专有编程语言,我会花更多时间“搞破坏”。 而花时间成为GML 语言专家似乎是不值得的。
尽管如此,它仍然是一个很不错的2D编辑器,尽管社区支持可能不及 Unity,但它仍然相当不错。 同时要注意的是,一旦你的免费试用期结束,就要购买使用了。
Phaser 3
Phaser 是一个轻量级的开源 JavaScript 游戏框架。有一些 Phaser IDE可以用,但是如果你是那种主要写代码的,可能会直接用 Atom,Sublime,或者其他你喜欢的编辑器。
Phaser 2使用很广,并且有大量的教程可以利用。Phaser3却相反。 对于初学者来说,上手困难,只有大量的实例,没有对应说明。
Phaser 2有很多教程,学起来可能差不多,但是代码不能混用。 此外,开发者最近宣布马上会有 Phaser 4(以及TypeScript而不是ES6) ,如果你在用 Phaser 3,这可真是个坏消息。
如果你不是一个专业的程序员(我不是) ,并且熟悉 ES6类和 JavaScript 最佳实践(我不熟悉) ,你可能很快就会因为 Phaser 缺乏手把手和必须建立自己的 IDE 和工作流而感到沮丧(和我一样)。
然而,我发现它是一个强大的、轻量级的框架,以比其他游戏引擎更加流畅。 对于卡牌游戏来说,拖放功能是一个相对简单的功能,而且将卡牌类型划分为不同类别的能力(有点像 Unity 的预制件)已经划分了这类游戏所需要的一些区分点。
如果您是一名前端开发人员,可能喜欢或适应了所有代码都有坐标,但是这是一项艰苦的工作。 此外,如果你对JavaScript 的了解不够全面,你很可能需要在Phaser的圈子外寻找答案,然后把它们应用到你的项目中,不过我想这也有它自己的好处。
还有一点我们不太清楚: Phaser 3确实有挺多的官方文档和实例,但是它不像其他游戏引擎有社区或者 Stack Overflow 问答。 如果你遇到一个问题或者不能解决一些问题,你必须找出你自己的解决方案或者把你的问题发布在 Phaser Discord 服务器上,这是我的个人经验。
总结:
React: 很好的前端开发工具。不合适做游戏,特别是拖放游戏。
Unity: 你可以制作任何类型的2D游戏,只要你愿意与编辑器和底层的3D特性搏斗的话。 很棒的社区支持,c # 也很棒。 有资产商店,虽然可能买不到要的东西。
Godot: 开源并支持 GDScript,c # ,甚至 c + + 和 Python,如果你愿意做很多繁重的工作的话。 很适合2D游戏,但是没有像 Unity那么多社区支持。 而且,我的个人体验也很糟糕。
Construct 3: 真正易于使用,但付费订阅的代价很高。 如果你想使用或者学习代码,注意这是个可视化工具,尽管现在有一些 JavaScript 的支持。
Game Maker Studio 2: 用户友好的编辑器与良好的社区支持。 如果你习惯用更通行的编程语言,GML 或者可视化脚本可能不是你的菜。 此外,免费试用30天。
Phaser 3: 做好准备自己写所有代码,并且做大量的搜索来弄清如何实现功能。 我的卡牌游戏的原型做出来了,但是 Phaser 4马上要出了。
欢迎独立开发者抱团取暖:
Powered by HexGameStudio
喜欢C#推荐MonoGame哈哈