为了让我的生活更容易,我想出了一个创造 Idle-Breakout 等级的想法,从像素艺术图片中创建它们。最疯狂的是,它实际上是有效的!
所有这一切都源自我在 YouTube 频道发布的一篇教程中,教大家如何创建一个非常基本的 Breakout 游戏。视频结束时,我鼓励观众以深入学习的方式自定义它,但我收到了几条评论来自那些缺乏实验想法的人。
所以我决定带头示范。
这个想法很快就来了:现代化经典街机 Breakout 游戏,添加对局模式并移除拍子,以创建一个休闲游戏!
这原本只是一个小创意练习,新的视频素材。但我想要一个视觉上吸引人的等级,而这种简化版本中的等级创建方式是非常麻烦的......一个巨大的 2D 数组,需要手动填充,数组中的每个整数都代表一个特定的颜色。等级创建的时间不仅耗时,而且难以在等级达到某个大小时可视化结果,甚至不可能。
"如果我能在像素艺术中绘制我的图像,并将其解释为等级,那么这将会更容易很多。"
一个主要是出于懒惰的想法,我不得不承认。但最终我对结果非常喜欢!
你想知道它是如何工作的吗?实际上很简单。有两个像素艺术图像:一个用于背景,一个用于前景。代码加载了两个图像,并为图像中的每个像素创建一个砖块。如果像素是透明的,就会被忽略。位于前景边缘的像素会生成不可破坏的块。
使用 SRP 优化,它在这样的一个等级中(大约 3000 个立方体)工作得很好,稳定 120 FPS,即使每个立方体都有一个使用 Material.SetColor() 应用的不同颜色。
但当我尝试构建一个更大的等级时,我又回到了现实中。等级中大约有 5000 个立方体时,我已经下降到 30 FPS了。并且这只是渲染立方体而没有任何游戏玩法。
使用 Material Property Block?这是一个坏主意,结果更糟糕...... 9 FPS。顶点颜色?我会省略这些试错的日子......最终,我在 Reddit 上发帖,某人建议使用 RSUV 结合 GPU Instancing。对我来说,这是一个完全新的领域,我甚至从来没有听说过它。经过一些阅读,几行代码和一个新的支持 RSUV 的着色器,我突然有了一种改变我的砖块颜色的完全新方法!
嘭!25000 个砖块,仍然稳定 120 FPS。太棒了。这就是我的解决方案。足以创建 128x128 像素的等级,尽管我怀疑我会超过 64x64 像素,所以没有必要优化得更好。
但......我遇到了另一个小问题......我使用的视觉反馈工具 Feel Craft,用于创建我视频中的所有小动画,尚未支持 RSUV 驱动的颜色动画......没关系,我立即更新了我的工具!
当前设计很可爱,但我认为它们并不是非常令人满意的玩法。要找到一种让球可以弹跳并进入弹跳隧道的美观风格,我需要再花一些时间思考!
在此期间,我希望你能享受这篇文章 😄
评论 (0)