B博客

Deki 0.20:更快、更流畅,支持更多屏幕

一次关于性能的发布:游戏绘制更快,画面不再撕裂,Deki 能驱动的屏幕多了很多,滚动手感对了,设置会自动选择。

发布于
作者
DevKirbyrawr
阅读
约 3 分钟
开发板绘制的四个 Deki 演示画面:Meadow、Effects、菜单和 UI 工具包,都是 60 fps。

Deki 0.20 关注的是性能和屏幕:游戏绘制得有多快,显示得有多流畅,以及 Deki 能驱动多少种屏幕。每一项改动都在两块熟悉的开发板上测量过:LilyGO T-Deck Plus 和 T-Display S3 AMOLED。但改进都在 Deki 本身,所以每块开发板都能受益。

永不撕裂的画面

屏幕每秒大约 60 次从上到下重新绘制自己。如果新画面在这个过程中途到达,你会看到一半是一幅画面、一半是另一幅,中间有一条线。这叫撕裂,在整个屏幕同时变化时最明显,比如打开新场景时。

Deki 现在会等待发送每幅画面的合适时机。许多屏幕有一根线会告知何时开始重新绘制,Deki 会跟随它。在没有接这根线的开发板上,Deki 会改为询问屏幕它重新绘制到了哪里。无论哪种方式,每幅画面都完整到达。

绘制更快

游戏最常绘制的东西都变得轻量很多:文字、颜色渐变、放大或缩小绘制的图像,以及粒子。放不进芯片快速内存的大屏幕,现在在快速内存中一条一条地绘制,比在较慢的内存中绘制整幅画面快得多。在两块测试开发板上,演示中的每个场景都以 60 帧每秒运行。

而且当游戏要求 60 帧每秒时,现在得到的正好是 60,而不是 62 到 66 之间的某个数。

Deki 自己的显示库

Deki 现在用自己的显示库 deki-display 直接与屏幕通信。它能驱动大多数爱好者开发板使用的屏幕:ILI9341、ILI9488、ST7735、ST7789、ST7796、GC9A01 和 SSD1351,以及两种 AMOLED。它支持常见的连接方式,包括快速的并行连接,并能从常见的触摸芯片读取触摸,包括廉价的电阻式触摸。

两块 LilyGO 开发板现在都用它运行,不再需要 LovyanGFX。对于 deki-display 还不认识的屏幕,LovyanGFX 包仍然可用。新加入的屏幕都对照 LovyanGFX 自己的设置检查过,但还没有在真实开发板上运行过。如果你有,欢迎在 Discord 上告诉我效果如何。

你会注意到的小修复

  • 滚动手感对了。 列表在滑动开始时不再跳动,横向列表会跟着手指走。
  • 知道屏幕真实大小的布局。 开发板现在会说明屏幕有多少英寸,这样游戏可以在很小的屏幕上把东西做得足够大,方便阅读和点击。
  • T-Deck 上不再有残影。 它的屏幕会留下上一幅画面的淡淡影子,现在没有了。
  • 场景干净地打开。 某些情况下,新场景出现前会先显示一帧空白;现在会立即出现。

需要设置的更少了

这些改动带来了新设置,但没有人应该需要去学它们:

  • 选好开发板,就已经调好了。 开发板包带有该开发板运行最好的设置。
  • 其余的会自动选择。 游戏启动时,开发板会判断自己能做什么并自行选择,启动日志会说明选了什么以及原因。
  • 删除了两个设置。 “半宽帧缓冲"和"隔行"从来没有起过作用,所以删掉了。
  • 新的指南 提升速度,适用于你制作自己的开发板,或想知道某个场景为什么慢的时候。

更新

0.20 不会破坏任何东西:在新编辑器中打开你的项目,它会照常运行。要获得这些改动,请从包管理器更新包,或运行 DekiEditor --packages-update all <project>。如果你的项目里有以前的 LilyGO 开发板副本,在它上面执行 Update,就会迁移到 deki-display。

其余改动见更新日志。在这里下载编辑器。

← 全部文章