Three.js在渲染方面非常出色,但就此而止。没有游戏循环,没有输入处理,没有物理引擎,没有音频。 我维护着一个名为LittleJS的开源2D游戏引擎,它非常小巧,最近我添加了一个Three.js插件,使得这两个引擎可以协同工作。这是之前我为几个原型做过的工作,我决定将其添加为一个官方插件。

它的工作原理很简单。插件在LittleJS的canvas后面添加了一个Three.js的canvas,这个Three.js的canvas是透明的。LittleJS负责实际的游戏:一个固定的60fps更新循环,键盘/鼠标/游戏手柄/触摸输入,弹跳物理,粒子和声音效果。每个游戏对象都驱动着一个Three.js的网格,它会自动跟随游戏对象。您需要自己加载Three.js并将模块传递给它,所以引擎不会被捆绑,依赖关系也不会被引入。还有一个相对的摄像机模式,它会将3D摄像机锁定到2D摄像机上,2D精灵和粒子会与3D场景对齐。

我制作了两个简单的演示。一个是2D粒子在3D背景下的横向滚动场景。另一个是一个小型3D平台游戏,玩家会在场景中跑动并跳跃,跳跃的过程中会收集金币。所有的游戏逻辑都由LittleJS的2D物理引擎控制。整个项目只有230行代码。

我在这里分享这个是因为这个堆栈与AI编程工具非常匹配,这不是偶然的。LittleJS有一个小巧的、完全文档化的API,它可以很容易地在上下文窗口中使用,而Three.js是每个模型的训练数据中最好地代表的3D库。

演示:https://killedbyapixel.github.io/LittleJS/examples/?example=Three.js+3D+Platformer
源码:https://github.com/KilledByAPixel/LittleJS

我想知道这里的人们的想法。如果您会使用类似这样的工具,会想要什么样的功能?