返回首页

24小时热榜

3作者: ditchfieldcaleb大约 13 小时前
最近我一直在用 Codex 开发一款塔防游戏,部分是为了学习游戏开发是如何运作的,部分是为了看看只用 Codex 能做到什么程度,完全不手动编写代码。我有了我的 AGENTS.md 和 CODESTYLE.md 文件,以及另外六个全大写的 .md 文件等等,并且正在进行一些重构,以保持代码库的整洁和文件大小的减小等。<p>然后我在最新重构的 ExecPlan 中看到了这个:<p>---<p># 观察结果<p>- 观察:重构后,在正确重新捕获基线后,截图像素完全一致。<p>证据:sha256sum 截图/before-implementation-x.png 截图/after-implementation-x.png 报告了 before/after 对 1、2 和 3 的哈希值匹配。<p>---<p>这太疯狂了!我从未告诉 Codex 对应用程序的 before/after 截图进行 <i>sha 比较</i>,但我确实在我的 PLANS.md 中有说明,要截取游戏 Web 应用程序的 before &amp; after 截图,以确保我们避免前端回归(它使用 GPT-Image-2 进行分析)。因此,对于不影响前端的更改,当然在游戏开始时以 <i>相同的时间戳</i> 截取的截图之间不应该有任何差异。<p>但进行明确的 SHA 比较——这简直是……我 <i>永远</i> 没想到的事情。太棒了。
3作者: bsommerfeld大约 20 小时前
一切始于无人机。我和我的联合创始人当时正在开发一个 Minecraft 插件,无人机需要在未加载的区块中导航——这些地形甚至还不存在于内存中。现有的库都没有相关的概念,导致无人机被困在“不存在”的地方。<p>起初,我们自己构建了一个,代码很粗糙,而且与 Minecraft 的 API 紧密耦合。但在开发过程中,我们意识到:问题不在于 Minecraft,而在于 Java 寻路的一般构建方式——以对象为主、对垃圾回收不友好,并且默认是单线程的。<p>于是我拆分了这个项目。核心部分独立出来,成为一个单独的项目:纯 Java 8+,为了兼容性,它使用零分配的原始堆,而不是理论上最优的斐波那契堆,因为指针追逐和缓存未命中是不可接受的。100% 异步,即使在单线程、厌恶异步的 Minecraft 地狱中也是如此,并且有一个处理器管道提供完全的扩展性。没有游戏引擎,但可以适应你的环境。<p>有时候,需要优化的不是算法本身,而是它所处的环境。Pathetic 充满了这些微优化:在昂贵的闭集检查之前进行 BloomFilter 查找,使用多指标平方启发式来消除 Math.sqrt() 的开销,以及将 3D 坐标位打包成单个原始 long 类型。为了让 Java 变得快速,你需要像对待 C++ 一样对待它。<p>结果:在约 7 毫秒内完成 1 万条并发路径,而大多数库会默默地崩溃。在不膨胀堆的情况下,完成 2 万距离的路径(相当于 10 万多个节点)大约需要 60 毫秒。 README 是一种……选择。去评价它吧,因为它也会这样评价你。