每天都很开心!😊

最近,我发布了我的第一款独创作品,叫做“形状迷宫”(100%免费,没有广告的多边形uzzle游戏),但我并不只是简单地分享链接,而是想与大家分享,我在利用Unity开发它的过程中遇到的技术挑战,特别是与移动渲染和架构相关的问题。 我从这个论坛-learning得到了很多,希望这篇后设故事能唤起一些好的话题!

以下是项目的构建流程、遇到的挑战和解决方案:

  1. 渲染和自定义着色器(最大挑战)
  2. 渲染是游戏的核心,它用各种多边形(三角形、正方形、五边形等到八边形)创建无限迷宫。在初期,我通过DRAW CALLS(几百个在较大的牌面)。
  3. 解决方案 : 我大量使用Frame Debugger并编写了一个自定义着色器来计算形状和墙壁组合的数学。现在,所有迷宫类型和形状使用同一个着色器(只是不同的变体)。这大大降低了DRAW CALLS(从几百个到十几个),并且仍然允许用户自定义颜色palettesystem。
  4. SRP Batcher陷阱 : 在使用Frame Debugger时,我意识到我的着色器破坏了SRP Batcher的兼容性,因为我在着色器中使用的自定义节点和非常精确的计算。找到瓶颈并解决兼容问题后,渲染速度大大提高。
  5. 移动硬件限制 : 在测试硬件时,我遇到了一个严重的问题,即迷宫在某些较老的安卓设备上根本不显示。结果是较老的移动GPU芯片被着色器中使用的重负荷三角度和高精度计算搞蒙了。因此我不得不回头并大幅优化数学,以适合老版移动体系结构。关键经验:请小心使用在低端移动设备中使用的shader中的重三角几何。

  6. 架构和依赖注入
    *为了使我的代码可扩展并遵循最佳实践,我决定学习依赖注入。 我使用Unity的[Reflex](hhttps://github.com/gustavopsantos/Reflex/tree/main)framework。如果你还没试过,我强烈推荐。它非常容易阅读,并且极速设置起来,而且避免了在第一款游戏中常见的“spaghetti Code陷阱”。

  7. 音频实现与FMOD(https://www.fmod.com/unity)
    *我不再依赖Unity的标准音频源,而决定学习FMOD(FMOD Studio)。我为所有效果音和音乐在FMOD Studio中实现并将其连接到Unity。FMOD让我有更多的控制对音频混音和事件的控制,也不会使我的C#代码变得混乱。

这个项目的学习曲线非常的陡峭,从设计到优化到整个谷歌商店发布流程。

很高兴听到你的想法!你会遇到类似的移动GPU限制与自定义着色器吗? 或者你有比Reflex更喜欢的DI框架吗?

如果你想看看优化结果,这款游戏是完全免费和广告无关:

[下载形状迷宫在Google Play]

https://play.google.com/store/apps/details?id=spellforge.shapemaze

[在这里观看游戏试玩视频]

https://www.youtube.com/shorts/lEQnYZKI75Q

对这个过程的感谢和我很高兴回答你对实施的任何问题!