这是什么?

  • 我的第一款游戏即将发布。和大多数走过这条路的人一样,我身后也有一个由其他游戏、原型和迭代组成的“墓地”,甚至我现在要发布的这款游戏,这些年来也先后用5种不同的引擎构建过(纯Lua,然后是GameMaker、Construct、Unity、Love2D和Haxe)。我积累了大量与我过去所说的“游戏开发”无关的最佳实践。
  • 现在,有一部分最佳实践(及其可复用的代码)基本上构成了我项目模板的基础。下面只是这些实践的高层总结。
  • 我不是天才,很多地方我可能都是错的(除了关于可重新映射的控制这一点)。
  • 但是,有这样一份清单,在我项目逐渐成熟的过程中会是一个方便检查的列表,所以我把它贴在这里,希望能帮助到其他人。

清单

选项入口

  • 只要可能,就在游戏内暴露所有选项设置。玩家必须跳出游戏并重新加载才能启用/禁用或切换基本功能,这非常麻烦。如果有可能,就把它放在暂停菜单里。

视频选项

  • 你需要支持全屏、无边框窗口模式和窗口模式,除非你的设计或目标平台明确排除了这些。如果你的目标平台包括PC,请支持所有这些模式。
  • 分辨率更改
    • 你需要支持尽可能广泛且实用的分辨率和宽高比,包括超宽屏支持。最终你必须决定什么是“可能且实用的”。
  • 伽马值支持——你需要一种让玩家调整整体亮度的方法。显示器和设置差异巨大,几乎不可能创建一个不会让任何人不满意的默认值。所以让它可调节。
  • 性能和特效——即使你的游戏在旧硬件上也能轻松达到250帧,玩家仍然可能有理由想要或需要禁用某些特定功能。
    • 对于每个主要的图形特效系列,都要使其可禁用。AA、HDR、泛光、动态模糊、各向异性等等……都应该能够切换开关。要明白这些是辅助功能,而不仅仅是性能功能。
    • 垂直同步需要有自己的开关。有些人喜欢它,有些人讨厌它,而且这两类人都不会改变自己的习惯。
    • 如果这些特效的组合能带来显著的性能变化,就创建性能基准测试模式。对于许多人来说,高画质和低画质模式就足够了。
    • 给玩家提供游戏内测试这些的方法。一个FPS显示、一个基准测试工具之类的东西。鲁棒性应根据你作品的复杂性而变化。
    • “特效移除”——是的,我们都看过关于屏幕震动、命中反馈、游戏手感与反馈的同一类视频,这些通常都很棒。但对于一些玩家来说,这些都是辅助功能上的障碍。
    • 如果它是游戏中的视觉效果,并且不是游戏玩法所绝对必需的,就做一个开关来禁用它。

音频选项

  • 将每个主要通道分离到不同的音量滑块中
    • 总音量
    • 音乐
    • 音效——考虑是否需要进一步细分。对于我的传统Roguelike游戏,我为脚步声单独设置了一个音量滑块。
    • 环境音
    • UI音效
  • 如果你有能力,支持不同的输出方式——环绕声、耳机等……
  • 基本音量滑块之外的音频设置经常被忽略。我目前正在发布的游戏有一个重要的音频组件,这真的让我学会了在这方面下功夫。我甚至为玩家提供了一个游戏内均衡器来调整声音。

控制选项

  • 这算是我的一个设计痛点,所以对于在这个问题上的强烈主见,我表示歉意。实现起来并不简单,但也不是什么未知的质量问题。
  • 所有东西都应该在你的所有输入格式上可重新映射
    • 将输入层抽象化对于支持多种输入方法来说非常必要,而重新映射并不是一个很大的跨越。说实话,我无法想象现在的游戏里没有这个功能,但它却出奇地普遍。
  • 尽可能多地支持输入方式——不是所有游戏都能支持所有输入方式。
    • 对我而言,这意味着大多数项目要支持以下几点:
    • 手柄——我通常首先专注于这里。通用行为是必须的,特定手柄功能则是锦上添花。
    • 键盘和鼠标
    • 仅键盘
    • 仅鼠标
    • 后两种是有关辅助功能的。它们通常需要稍微重新设计才能可行,但对于那些只能用这些方式玩游戏的玩家来说,你为此付出的额外努力对他们意义重大。

持久化与保存

  • 按设备保存配置设置,而不是按用户。这对于那些会从PC切换到Steam Deck游玩的玩家很重要。我知道,这个比例不大,但无论如何,这仍然是一个很好的实践。
  • 玩家的存档应该具有弹性、容错性(尽可能实用),并且能在需要时触发保存。对我来说,这是我默认项目暂停菜单的一部分。
    • 我知道有很多游戏玩法范式不允许这样做。我理解。但在你移除它之前,请确保你知道为什么要这样做。不要让缺乏合理的保存选项成为创造有意义挑战的替代品。
  • 真正的暂停——除非有非常真实的原因不实现真正的暂停(例如多人游戏),暂停必须做到它所说的,应该停止所有游戏交互。把它放在主循环里,就别动了。
  • 让玩家轻松清除所有数据并重新开始——不仅仅是新建一个存档位,完全重置为默认配置通常非常有帮助。

帮助选项

  • 错误处理
    • 当游戏崩溃时——它肯定会崩溃——让玩家能轻松获得帮助。一个健壮的崩溃处理器,能将所有错误数据打包,并提供自动发送或简单的操作说明,这大有帮助。哪怕只是一个Mailto链接也能帮你获取数据。
    • 在崩溃体验中添加一个供玩家添加备注的文本框,但假设他们不会使用它。
    • 如果你的游戏高度依赖存档来记录进度,请确保向玩家显示上次保存的时间/日期,以便他们知道哪些已保存、哪些未保存。
  • 记住,没人会读说明书,他们都在跳过教程,略过对话。让玩家在游戏内(比如暂停菜单)了解游戏功能的方式,会有很大帮助。我正在制作的传统Roguelike游戏中有一个完整的百科全书,列出了所有生态群落、那里生长什么、栖息着什么怪物等等;它还有详细解释的游戏机制、怪物详情,以及一个实时更新器,显示他们在哪里遇到过某个NPC。
    • 每款游戏都不同,大多数不需要百科全书这种形式,但小细节很重要。我的Roguelite双摇杆射击游戏中的暂停菜单会显示屏幕上当前有哪些怪物以及它们有什么能力。我就假设玩家在第一次看到这些信息时都会跳过。

大家还推荐添加些什么?