独立游戏开发是独立开发中比较热门的一个赛道,今天给大家分享一篇海外独立游戏开发者Ruoyu Sun的文章,比较了Windows、MacOS、Web、IOS、Android和Linux这6个平台上独立开发邮箱的优点和缺点,给大家参考。
最近,Valve 宣布《反恐精英 2》将不再在 macOS 上提供支持。作为一位一直以来支持 macOS 平台的独立开发者,我对 Valve 的这一决定一开始感到惊讶。然而,回顾我支持六大平台的经历后,我逐渐理解了 Valve 的立场。
我认为分享一些我所得到的“经验教训”对其他独立开发者可能会有帮助,希望这些经验能够在选择要支持的平台时提供一些建议。值得一提的是,我的游戏《Industry Idle》主要是通过 Web 技术(WebGL + TypeScript)构建的。这意味着相对而言,支持不同平台相对容易 - 我无需处理特定于平台的图形 API(如 DirectX、OpenGL、Vulkan、Metal),而且我的游戏主要运行在浏览器沙箱中。就跨平台支持而言,这几乎是一个美好的时代。然而,我仍然经常对特定于平台的问题感到惊讶和困扰。
Web
优点:
如果我被要求选择《Industry Idle》的“一流”平台,那肯定是Web。在开发过程中,我在Web浏览器中运行游戏。因此,支持Web基本上是“自动”的。平台本身不需要太多麻烦:我可以轻松设置一个自动化构建流水线,部署到GitHub/CloudFlare页面,而且大多数是免费的。
缺点:
作为发布游戏的平台,Web平台非常饱和。还有一些门户网站,但它们主要面向非常休闲的观众,他们不太可能玩重度的工厂建造和经济模拟游戏。Web版本赚的钱非常有限。如果《Industry Idle》没有以Web为先的支持,我可能根本不会将游戏移植到Web上。
问题:
在Web上作弊非常容易 - 毕竟,我喜欢的好的开发和调试工具也使作弊变得非常容易。我必须实现一个登录系统(我实现了Steam OpenID登录),以便我可以封禁恶意行为者 - 游戏有一个多人玩家交易系统,作弊者很容易破坏每个人的游戏体验。此外,还有可能有人会“偷”游戏并将其托管在他们的网站上。对此我并不太担心,只要在这些网站上玩的人不作弊就行。
简而言之:支持起来不费太多功夫,但获得的玩家也不多。
Windows (Steam)
优点:
Steam是游戏发布的唯一平台。我也提交了到Epic Game Store,但从未得到任何回复 - 或许这是件好事,因为集成另一个SDK可能不值得。到2023年,Windows仍然是主导的游戏平台。大约99%的桌面玩家在Windows上玩。该平台具有相对稳定的API - Microsoft几乎从不破坏向后兼容性。设置自动化构建流水线相对容易 - 我在我的Linux服务器上构建Windows版本。
缺点:
游戏使用Electron作为运行时。但为了与Steam SDK集成(该SDK是用C++编写的),我尝试过一些解决方案:greenworks(不再维护),Node-API(通过node-addon-api,需要设置一个跨平台的C++工具链并手动编写绑定),Koffi(用于Node.JS的FFI模块,提供预编译二进制文件但需要手动编写绑定),最后是steamworks.js(通过Rust绑定调用Steamworks)。
问题:
与玩家数量相比,问题相对较少,但偶尔我必须处理一些非常难以理解的问题,比如安装了旧版本的Visual C++ Redistributable或者“削减”版本的Windows缺少一些DLL。许多Windows玩家不精通技术,这使得调试变得困难。但我不能真的抱怨 - 从遇到特定于平台问题的人数百分比来看,Windows可能是桌面平台中最低的。
简而言之:不支持Windows不是一个好选择,但幸运的是支持Windows相对容易。
MacOS (Steam)
优点:
当我写下《Industry Idle》的第一行代码时,我使用的是Mac。我一直是Mac用户,只有在进行更多游戏开发后才迁移到Windows。Mac仅占所有桌面玩家的不到1%,但通常人们会惊讶地发现游戏在Mac上运行,我收到了几封关于这一点的“感谢”邮件。关于这个平台的另一个好处是,x64版本在Apple Silicon Mac上或多或少地“只是运行” - 我没有Apple Silicon Mac,游戏只有一个x64版本,但我收到的几封“感谢”邮件来自Apple Silicon Mac的所有者 - 我猜他们应该真的感谢Rosetta。虽然在模拟模式下运行不是理想的,但游戏可以在一台非常普通的Mac上运行,因此即使在模拟开销下,强大的Apple Silicon也可以轻松处理。
缺点:
Mac是最问题多多的平台之一,即使在Electron处理了大部分特定于平台的问题后,仍然有很多需要注意的地方:
- 使用硬化运行时进行代码签名几乎是必需的。
- 但是,Steamworks SDK加载dylib,这需要一些授权例外。文档不是很好,所以祝你好运找出哪些例外是必需的。并且希望苹果不会有一天禁止这些例外。
- 在签署可执行文件后,我需要对其进行公证。旧的公证化API需要很长时间(对于一个200MB的可执行文件,需要30分钟到几个小时不等),而且随机失败,几乎从不提供有意义的错误消息。新的“notarytool”有了很大的改进,但仍会在构建流水线中增加10分钟。相比之下,没有签名和公证化的总体“Windows + Linux + macOS + 上传到Steam”的流水线大约需要2-3分钟。
- 当然,上述工作必须在Mac上完成(一些有限的试验性的非Mac支持开始变得可用),而Mac以构建自动化而闻名。我在构建脚本中有一堆像“security unlock-keychain”之类的黑科技,但它仍然偶尔会失败。
- 而且,请记住,这是晴天的情况:不需要进行特定于平台的API移植(比如从DirectX/Vulkan到Metal)。
问题:
作为独立开发者支持Mac的经济状况很不乐观。一个Mac几乎是必不可少的,而且它们不便宜。该平台的所有收入甚至还不足以支付最便宜的Mac Mini的10%。然后还有每年100美元的开发者会员费用,用于进行验证。幸运的是它也可以用于iOS。此外,Apple比Windows更愿意破坏向下兼容性。有时会有新的macOS/XCode版本要求,这意味着升级操作系统(需要1-2小时,有时可能失败)和XCode(需要2小时以上,我通常只是让它在夜间运行)。
简而言之:不值得花费时间和金钱。
IOS
优点: 《Industry Idle》的核心引擎实际上是一款移动引擎 - 在制作《Industry Idle》之前,我主要制作移动游戏。然而,《Industry Idle》是一款以桌面为先的游戏,这意味着要在移动平台进行移植需要进行相当多的UI调整。游戏在iOS上通过自定义的WkWebView运行,使用一些桥接代码来暴露本地API(如Game Center)。与Android相比,iOS的硬件和软件通常没有那么杂乱,这意味着在我的老旧iPhone 6上测试游戏后,我对游戏在大多数其他iOS设备上能够正常运行有很高的信心。
《Industry Idle》的基础游戏是免费玩的,有两个可供购买的扩展包(一次性购买,而非订阅) - 与Steam相同。游戏只有一个可选的“激励视频”广告,允许玩家通过观看广告将离线收入翻倍。游戏没有内购微交易 - 我不喜欢那些充满广告或者非常注重营销和付费的移动游戏。
iOS通常是与Android相比更“高端”的移动平台,这意味着相比Android,更多的玩家付费。尽管iOS仅占所有移动玩家的约30%,但它带来了约50%的所有移动收入。此外,Apple封闭的生态系统的一个好处是iOS作弊的比例最低。
我知道关于iOS上的App 审核一直有很多投诉。我觉得情况已经得到了很大的改善。审核时间相对较短(1-2天),如果审查员以毫无道理的理由拒绝了更新,快速回复通常可以解决问题。例如,有一次更新因缺少“恢复购买”按钮而被拒绝。我回复并告诉审查员在哪里找到按钮,并且温和地指出该按钮自首次发布以来已经存在了50多个版本。更新在第二天获得批准。在初始发布期间,游戏因“复制现有游戏”而被拒绝。原来AppStore的审查员认为我在“盗版”Steam版本的《Industry Idle》。我最终在官方网站上放了一个页面,告诉审查员我确实是Steam版本背后的开发者。发布及时获得批准。
AppStore有人工审核是一把双刃剑。一方面,人们会犯错误,这导致了不必要的困扰。另一方面,与Google Play相比,后者是非常依赖机器自动审核的,很难找到人工解决方案。
缺点:
WkWebView是iOS上唯一允许的Web视图,其更新与iOS更新挂钩。苹果一段时间以前停止支持iPhone 6,这意味着它被困在iOS 12和一个相对古老的WkWebView上。幸运的是,大多数玩家使用更新得多的iPhone,这有助于解决这个问题。
与开发macOS一样,要为iOS开发几乎就需要Mac,并且有每年100美元的开发者会员费。我认为iOS和macOS的总收入(其中95%来自iOS)勉强足以支付会员费和最便宜的Mac Mini的成本。而且预计测试还需要iPhone,这意味着游戏将亏损运行。幸运的是,我有我的旧Macbook和iPhone,所以我不必花那笔钱。
与macOS一样,iOS也不是真的为构建自动化而设计的。部分原因是我必须在Mac上运行它,部分原因是自动化流水线不稳定。Fastlane是一个巨大的时间节省器,但构建偶尔会失败(需要2FA或者Apple服务器宕机)并需要手动干预。因此,我不生成iOS或macOS的测试版构建。
问题:
移动平台通常与桌面平台非常不同。尽管它有很大的受众群体,但要触达目标受众通常需要付费用户获取(即花钱购买广告)。我没有营销预算:很多玩家是在其他平台上了解到游戏的;很多玩家通过朋友介绍(口碑传播)加入;还有一次下载量激增,我只能想象是来自AppStore编辑或算法的。由于我从未收到关于此事的任何信息,我无法确认。
没有讨厌的广告和推销内购为移动平台提供了良好的游戏体验。然而,这意味着移动平台的收入非常糟糕:尽管玩家数量要多得多,但收入仍然是桌面版本的一小部分。
简而言之:需要支持移动端那么至少50%是在iOS
Android
优点:
Android版本使用内置的WebView,而Google一直在不断更新它,做得相当不错。由于它不受操作系统更新的限制,Android上的玩家中有较大比例的人使用相对较新的版本。然而,对于操作系统本身和硬件来说并非如此,稍后我会提到。Android的自动构建流水线(由Fastlane提供支持)速度更快、更稳定 - 它可以在Windows、Mac和Linux上运行,而且命令行具有一流的支持。Android设备通常更便宜 - 我把Android作为我的日常手机,所以对我来说是额外的节省!如前所述,Google Play审核多基于机器的检查,这意味着如果一切顺利,更新审查通常更快(几小时)。
缺点:
Android操作系统和硬件一团糟!有许多不同的硬件,每个都可以运行不同的操作系统版本,并且可能具有来自制造商的奇怪定制。总体而言,WebView还好,但本机API非常混乱 - 同一个API在不同设备上的行为可能截然不同(例如,当刚引入显示切割API时,采纳情况很差,每个制造商都有自己修改)。我的策略很简单:我在自己的手机上测试,然后不管了,希望它在其他设备上也能正常工作。
此外,Android有一种相对激进的API弃用策略。Google Play要求使用相对较新的targetSdkVersion,并且如果其中一个第三方SDK被弃用,则会拒绝应用程序更新。这意味着我必须不断启动Android Studio并更新Android和SDK版本(有时还包括Kotlin和Gradle版本)。项目通常无法编译通过,这意味着几个小时的修复和测试。这并不是每天都发生,但发生的频率足够让人讨厌。相比之下,自首次发布以来,我只不过需要打开XCode并更新本机Swift代码大约两次。
问题:
Android占所有移动玩家的70%,但收入与iOS差不多。付费的人更少,大多数收入实际上来自唯一可选的“激励视频”广告。实际上,Android上的广告实现可能存在错误,因为它在后台游戏后往往不会显示,直到强制重新启动 - 我收到过用户关于此问题的投诉!然而,我从未能找出原因 - 部分原因是因为我在我的手机上无法复制这个问题,部分原因是因为我宁愿把时间花在开发游戏上,而不是调试一些有问题的广告SDK。
简而言之:移动端另外50%就是Android
Linux (Steam Deck)
优点:
Linux对硬件要求不严格 - 它可以运行在各种设备上,而且成本为零。我在开发机上运行Arch Linux虚拟机来测试游戏。我还在我的构建机上运行Ubuntu以生成可执行文件。服务器运行在一个运行Debian的VPS上。Linux非常容易自动化。
缺点:
Linux非常杂乱,操作系统有不同的形式和版本。最初,我在使游戏运行上遇到了一些困难。实际上,即使是一个空的Electron应用(来自官方示例),也不能运行。在经过几个小时的谷歌搜索后,添加--no-sandbox参数对一些用户有效,但并非对所有用户都有效。这是可以预期的,因为不可能知道操作系统上安装了哪些库以及其版本。我希望Steam能允许我说“Linux支持是尽力而为的”,但这不是一个选项 - 我必须选中复选框以提供Linux版本,这有时会导致错误的期望。
在Steam Deck发布后,Steam Deck将在其上运行的情况下使用Linux版本。我遇到的问题是,由于缺少库,Steam Deck无法运行本机Linux版本,因此选择了Windows版本。感谢读者的评论指出这一点。我处理这些问题已经有一段时间了,一些细节已经从我的记忆中消失。
问题:
Linux仅占总玩家人数的不到1%,因此从商业角度来看,不值得。而且该平台的玩家中遇到特定于平台的问题的比例最高 - 用于客户支持的时间只会让经济状况变得更糟。此外,我没有Steam Deck,因此添加支持并不总是容易:Valve没有提供SteamOS映像来进行测试。因此,Steam Deck特定的代码(如控制器支持、在全屏模式下启动游戏、使UI变大等)没有进行端到端测试。我曾经使用过HoloISO,但效果有限。
简而言之:甚至比Mac的经济状况更糟,不建议支持。
我感谢你仔细阅读了我关于独立开发者在支持不同平台上的长篇抱怨,希望这对你的决策有所帮助 - 我知道我肯定会在下一款游戏中做出更明智的选择。在谈论游戏开发时,很少提及上面那些乏味的细节,然而它们在实际上发布一款游戏中至关重要,并且可能需要大量的努力。事实上,除了进行平台支持工作外,我大部分时间都花在客户支持、社区管理、审核和封禁作弊者以及服务器维护上。以至于我的新游戏工作严重受到延迟。我还没有找到一个好的平衡,但我正在尽力而为。
Kodepay专注于帮助国内独立开发者出海,获取全球用户和收益。