张大妈

“作死”挑战:在 2D 计算器里手搓 3D 游戏

源自UP主:blueblur青速

01-16 11:44

将一个2D图形计算器变为3D游戏的开发平台,这听起来像是天方夜谭。然而,通过突破性的编程思路和对渲染算法的深度改造,开发者成功在Desmos上构建了一款可玩的3D游戏。这不仅是一次技术极限的探索,更展示了在不被看好的领域里,创造力如何突破工具的束缚,带来令人惊叹的成果。

“作死”挑战:在 2D 计算器里手搓 3D 游戏智能速览

  • 开发者选用2D图形计算器Desmos来制作3D游戏。

  • 面临渲染速度慢和远景遮挡近景等关键技术难题。

  • 通过背面剔除、重合面剔除等方法,将渲染性能提升了数倍。

  • 游戏受限于平台,物体数量上限为100个,且仅支持鼠标操作。

  • 最终实现了一款玩家需复刻3D结构的游戏,并加入评分系统。

“作死”挑战:在 2D 计算器里手搓 3D 游戏精华内容

将一个只能绘制2D图形的计算器改造成3D游戏引擎,这过程充满了对数学和编程原理的极致探索。开发者如何一步步克服看似无法逾越的障碍?接下来,将深入剖析其背后的技术实现路径。

不可能的起点

Desmos本是一款网页2D图形计算器,常用于绘制函数图像和简单图案。但开发者此前已利用它实现过3D旋转体的可视化,为本次挑战积累了经验。开发3D游戏面临的核心限制在于Desmos不支持列表的嵌套,这意味着存储和操作3D向量数据需要借助极长的单层列表,并通过大量复杂的取模和条件运算来实现,这本身就是一个巨大的挑战。

渲染攻坚

项目初期最大的难题是如何为3D模型上色。开发者首先尝试了光线投射(Shader)方案,通过计算屏幕上每个点的颜色来生成图像。虽然效果逼真,但其计算量巨大,导致帧率跌至个位数,完全无法满足游戏实时交互的需求。经过权衡,最终选择放弃光照,转而采用将3D顶点投影到2D平面,再利用多边形功能连点成面的方案,大幅提升了渲染效率。

穿越视界

实现3D投影后,新的问题接踵而至。如何处理摄像机视野之外的顶点,特别是位于摄像机后方的顶点,成为关键。若不处理,物体将错误地显示在屏幕上,但专业的裁剪算法又过于复杂,会影响性能。开发者最终选择限制游戏设计,避免任何物体移动到摄像机后方。同时,针对远景遮挡近景的渲染错误,采用了按物体距离由远及近的顺序进行渲染,虽然不完美,但基本解决了问题。

极限优化

当游戏场景中仅有10个方块时,便已出现严重卡顿。原因在于,系统渲染了所有多边形面片,包括那些被遮挡和看不见的背面。为提升性能,开发者引入了两项关键优化:背面剔除,即不渲染任何背向摄像机的多边形;重合面剔除,即不渲染两个相邻方块之间的公共面。这两项优化立竿见影,使渲染性能提升数倍,让游戏基本达到了可玩状态。

游戏成型

技术框架搭建完毕后,游戏的玩法被设计为“结构复刻”,类似于一个3D版的俄罗斯方块,玩家需要参考目标模型尽快搭建出相同的结构。通过巧妙利用Desmos的“Actions”功能,开发者实现了变量交互,从而制作出放置方块、切换关卡和计分的按钮。最终,一个包含从“离谱”到“菜”的线性评分系统的完整游戏宣告完成,并作为早期作品参加了Desmos举办的艺术比赛。

这次在Desmos上开发3D游戏的尝试,远不止是技术炫技。它生动地展示了在严格的限制下,如何利用基础工具和数学原理创造出复杂而有趣的事物。这种“螺蛳壳里做道场”的创造力,或许能启发更多人在看似无解的难题中,找到属于自己的突破口。下一个被意想不到的平台会是什么?

内容由AI生成
0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章
相关兴趣推荐