想做什么,决定了该选什么
按顺序问三个问题。玩家从哪里拿到它——一个链接、应用商店,还是桌面商店?是 2D 还是 3D?你现在已经能顺手写哪种语言?这三个答案通常只留下一个合理选项,剩下的就只是偏好之争了。
如果是第一个 MVP,网页赢的次数比人们以为的多。不用装东西,不用过审,一小时内就能把链接发给朋友。
网页
一个链接,是游戏和玩家之间最短的距离。不用安装、不用过审,有浏览器的设备都能跑。
Babylon.js 一个跑在浏览器里的完整 3D 引擎——物理、动画、光照、glTF 模型加载,全用 TypeScript。本站侧边栏那个拉里娅 3D 形象就是用它做的,所以这不是纸上谈兵的推荐。2D 支持也扎实,调试检查器对学习特别友好。
手机 App
换来商店分发、推送通知和内购,代价是排队过审和平台规则。
Unity 手游的默认之选,2D、3D 都行。资源商店和社区都极大,你能搜到的教程几乎都是照着它写的。做小东西时偏重,而且 C# 生态本身就是要另学的一整个世界。
Flutter Flame 架在 Flutter 之上的 2D 游戏引擎。如果你已经在写 Dart 和 Flutter,这是通往手游最短的一条路——同一种语言、同一套工具、游戏画布周围还是那些控件。这里说清楚:Flame 是 2D 的。Flutter 的 3D 还在实验阶段,不该拿来当游戏规划的依据。
桌面
更大的屏幕、真正的输入设备,以及 Steam。玩得久的游戏都住在这儿。
Unity 和手游同一个引擎,从一个工程导出到 Windows、macOS 和 Linux。学一次就几乎哪儿都能发,这也是它被教得这么广的主要原因。
Unreal Engine 当画面表现本身就是目的时选它——光照、材质、大型 3D 世界。用蓝图不写 C++ 也能搭逻辑,但引擎很大,对机器也有要求。做第一个小游戏是杀鸡用牛刀,做画面有野心的项目则正合适。
两个常见的误解
Flame 只做 2D 因为它和 Unity、Unreal 出现在同一句话里,容易被当成同一量级的通用引擎。并不是。如果你的游戏是 3D,Flame 就不在候选里——这件事要在写代码之前定,不是之后。
把一个引擎用到底,胜过三个都试一遍 每换一次引擎,进度就基本清零,因为你学到的大部分是工具,不是游戏。只选一次——哪怕选错了也行——然后把一个东西做完。
这些是供你学习的选项,不是我们的技术栈 Unity、Unreal、Flame 出现在这里,是因为值得了解,而不是 PES 采用了它们。唯一的例外是 Babylon.js——本站的 3D 形象确实在用它。