8作者: runshouse7 天前
我从未拥有过个人网站,也不想做一个简历/作品集网站,所以我重建了《光环3》中的“守护者”地图,并在其中隐藏了一个关于我人生的寻宝游戏。 游戏开始于《光环3》的主菜单,然后进入大厅,在地图中重生并进行探索。地图中散布着照片、故事、任务、小游戏和彩蛋。移动操作使用 WASD 和鼠标,无需注册。 “守护者”是我成长过程中最常去的地方。从九年级开始,放学回家后,我和朋友们就会打开《光环3》,在“守护者”地图上进行自由混战,使用 MLG 设置,直到大家都上线,然后花费数小时进行自定义游戏或排位赛。 周末,我们会把 Xbox 和显示器带到彼此家,通宵达旦地玩,参加本地比赛。“守护者”大概是我最接近数字家园的地方,所以我想让我的网站在那里。玩着它,在十多年后再次听到主题音乐,在一个我了如指掌的地方,感觉就像回到了家。 地图本身并非由 AI 生成。它使用了通过粉丝运营的 Halo Archive 分发的原始“守护者”资源导出:一个拥有 115,250 个面的 OBJ 文件,原始 UV 坐标,以及 42 个引用的漫反射纹理,通过 Three.js 加载。 AI 生成的是将它变成一个完整游戏所需的一切:着色器、光照、场景标签、物理、动画、碰撞、移动、天空和雾效、升降平台、拾取物、武器处理和任务路径。 每一个拾取物都是手工放置在几何体上的,使用了标注地图和仅限开发者使用的坐标定位器。这项工作出奇地繁琐,才能做到尽善尽美——我记得仅仅是为了让“伪装”地图上的蓝色升降平台与边缘平行,就迭代了 10 次。 “守护者”的几何体和纹理资源共计 21MB,因此加载过程被隐藏在大厅倒计时和计分板屏幕中,同时着色器也在预热。游戏目标是 60 FPS,在最近的 MacBook 上的 Chrome 浏览器中运行流畅。 在移动设备上支持触摸控制,但竖屏模式下的视野大约只有 20 度,所以桌面端绝对是最佳的游玩方式。 我使用 Astra 和 Codex 构建了它。它几乎编写了所有的代码:118 个文件共计 20,552 行 TypeScript 代码,973M 个 token,37 小时的运行时间,以及大约 25-30 小时的我的时间。 编码本身并不是难点。耗时的是决定哪些记忆应该放在地图的哪个位置,哪种游戏机制最适合它们,然后一遍又一遍地玩游戏来修复 bug,并调整移动和用户流程,使其感觉恰到好处。 我将在评论区详细介绍 Codex/Astra 的使用情况,因为在用它构建如此庞大的项目时,我学到了很多有趣的东西。 这是一个非官方的粉丝项目,我不会从中获利。几何体、纹理、UI 和许多音效都是《光环》的素材,属于其各自的所有者。 有些地方仍然有些粗糙。拾取强力武器时偶尔会出现延迟。升降平台的感觉不太自然——很难复制真实升降平台的吸力效果。在某些浏览器(如 Firefox)上,音频需要点击一下才能开始播放。 非常希望得到关于如何改进的反馈,特别是来自那些也曾在这张地图上花费大量时间的人。
2作者: ul0gic7 天前
构建 fail2zig 是因为我喜欢 fail2ban 的日志到封禁模型,但又希望有一个更小的运行时,并对攻击者控制的输入可能造成的损害设定明确的限制。 fail2zig 是一个单一的静态二进制文件,具有有界解析器而不是正则表达式引擎,支持 SQLite 的持久化状态,并通过 netlink 直接强制执行 nftables。它还能够检查和迁移现有的 fail2ban 配置。 我今天刚刚发布了 0.4.0 版本,这是一个让我更愿意将其推荐给更多人的版本。 来源:<a href="https://github.com/ul0gic/fail2zig" rel="nofollow">https://github.com/ul0gic/fail2zig</a> 我很乐意听取目前正在运行 fail2ban 的用户的反馈,包括你们不愿切换的原因。