手记

开发小型网页游戏时的注意事项

又一年过去了,JS13K Games 的比赛已经结束,在这次游戏马拉松中,你需要开发一个不超过 13KB 的游戏(这是我做的游戏 🙌)。这种严格的大小限制意味着我们经常不得不从头开始实现大部分功能,因为大多数游戏引擎都太大了。这意味着我们不断地重新实现轮子,从而导致了新的错误。

一如既往,我们被鼓励测试同事的游戏。以下是我今年在测试游戏时收集到的一些注意事项,这些内容非常简略。

1. 玩家的字体可能和你的不一样

这应该是显而易见的,但每台电脑安装的字体集都不相同。这意味着文字在其他玩家的屏幕上看起来会有所不同。不仅仅是单个字母看起来不同,它们所占的整个大小(宽度和高度)也会不同,无论字体大小如何。不要依赖文字在其他玩家的屏幕上保持相同的大小。

上面的截图来自优秀的游戏Dungeon Of Curse。标题屏幕被截断了,因为我的系统中字体意外地比较宽。

因为嵌入整个字体文件太占资源,许多开发者只是为自己的游戏创建小型字体。但是如果你选择简单的方式使用系统字体,一定要留有足够的空间来适应更粗的字体。

2. 有一些刷新率非常高的屏幕。

长期以来,大多数屏幕的刷新率都是60Hz。因此,当你在JavaScript中调用requestAnimationFrame时,你会期望每秒得到60次更新。然而,如今更高的刷新率非常普遍,从75Hz到120Hz,甚至高达400Hz。

这很重要,因为如果你在每一帧中等比例更新游戏状态而不考虑实际的帧率,游戏可能会变得过快。所以你必须限制游戏的刷新率,或者让游戏中的更新依赖于更新之间的时间间隔。

我不会假装自己是专家——这个问题在这次游戏开发马拉松中让我措手不及——所以这里提供一个与此主题相关的有用链接:

https://gafferongames.com/post/fix_your_timestep/

3. 注意辅助功能特性

说实话,把一个完整的游戏塞进13KB并且在一个月内完成开发已经够难的了。但是世界上有一些人每天都在努力使用技术。他们有时会在浏览器或操作系统中使用辅助功能,这些功能可能会与我们创建的游戏产生冲突。

一个例子是“边打字边搜索”功能"边打字边搜索",该功能会在玩家在页面上打字时触发搜索。可以通过在玩家使用键盘控制游戏时调用preventDefault()来避免这种情况。

这取决于你是否愿意以及如何为不同配置的计算机做准备。只需记住,如果不注意这些细节,你的游戏可能会对某些玩家完全无法运行,而把责任归咎于他们则是不公平的。

4. 语音合成
    "window.speechSynthesis 未定义"

进入全屏模式 退出全屏模式

这是一个奇怪的问题。如果你不熟悉,Web Speech API 是一个网页 API,它允许你合成语音。

显然在某些系统(比如我用的系统)中这是被禁用或缺失的。可以在 Firefox 的 about:config 中通过设置 media.webspeech.synth.enabled 来启用它。

当时尽管他们的游戏崩溃了,我还是没有处罚任何一款游戏。但是修复这个问题很简单,只需要验证 speechSynthesis 是否使用了条件链式:window?.speechSynthesis

并且请记住,浏览器实际上使用的是操作系统的语音合成器。如果没有安装操作系统自带的语音合成器,就没有 speechSynthesis

4.1 语音语言错误

即使用户有一个语音合成器,已经在浏览器中启用,并且window.speechSynthesis已经被定义,你仍然不能掉以轻心!令人惊讶的是,世界上还有使用非英语语言的人 (</s>)。

当调用getVoices()来使用语音合成器时,你可能不会获得一个英文语音。或者可能不是主要的语音。当你尝试用另一种语言读取一个英文句子时,就会出现一些搞笑的情况。

5. 浏览器兼容性仍然很重要

谈到不同的设置,很多人似乎认为现在的互联网浏览器只有Chrome。或者更糟糕的是,认为不使用基于Chromium的浏览器的人会有一个更差的体验。

我是开放网络的坚定支持者,而当前Chrome一家独大的局面正在损害它。Google不应该决定哪些功能成为标准,哪些不成为标准。

作为开发人员,你的任务是确保你的代码在不同的浏览器上都能正确运行。

6. 人们比计算机还要多样化!

虽然计算机和浏览器种类繁多,但人与人之间的差异更大!在开发游戏的过程中,你会形成一些强烈的偏见,没有外部帮助很难消除。游戏目标是否足够明确?游戏难度是否过高,或者难度提升得太快?人们是否仍然习惯只用键盘玩游戏?

除了我们社区玩家测试者的慷慨帮助之外,今年我们很幸运能够使用Poki作为玩家测试工具。这段经历真的让我深感谦卑。

  • 在20次试玩中,有15名玩家在5秒内退出了游戏,因为他们不明白游戏不使用鼠标
  • 如果没有阅读说明,目标就不明确,那么你已经失去了90%的玩家尝试游戏的动力。我没有夸张。就像电影一样,你应该展示而不是讲述,因为没有人喜欢廉价的解释。
  • 大多数玩家除非意识到他们必须这样做,否则不会阅读任何东西;他们需要时间适应这种心态。
  • 玩家有不同的背景;虽然游戏概念对你来说可能很明显,但对其他人来说可能并不明显。
  • 开始时稍微引导一下非常有用,因为让玩家在游戏中小胜一下可以提高他们的参与度
  • 然而,过度引导或缺乏游戏进展会使游戏很快变得无聊。
0人推荐
随时随地看视频
慕课网APP