Fabien Sanglard

RSS: https://fabiensanglard.net/rss.xml
Fabien Sanglard 关于游戏引擎开发、图形编程、逆向工程与软件优化的技术博客。

用 agent.md 提升 LLM 辅助编程的代码质量

游戏开发者 Fabien Sanglard 分享用 配置文件让 LLM 生成代码质量大幅提升的实践经验。2025年中首次用 LLM 写 Rust 代码效果不佳,2026年1月重访时能写出复杂代码但质量差,通过 agentic IDE 迭代后,将反复提出的代码风格建议写入 注入每次会话的 prompt。 具体规则包括:少用魔法数字、减少缩进、函数名不超过30字符、用 enum 替代 bool 参数、私有优先、分层架构、commit message 遵循7条规则。 还提到 context dilution 问题及两个解法:每个 feature 开新 session,或显式要求 reload。
评论点赞收藏37 天前

Quake 共享版 CD:id Software 的 DRM 实验为何 39 天就被破解

1996 年 id Software 推出 Quake 共享版 CD,内置 TestDrive DRM 加密全套游戏目录,试图绕过零售商直接销售。39 天后黑客组织 GNOMON 发布 QCRACK.EXE 一键破解——核心原因是 DRM 机制依赖安全隐匿而非真正加密,序列号生成算法完全本地可复现,且 SKU.17 存在明文备份文件。 作者实测拆解了整个解锁流程,发现多个未测试的 bug,包括 Final Doom 因拼写错误反而让盗版用户获得比付费用户更好的体验。
评论点赞收藏43 天前

《侏罗纪公园》里的电脑设备深度考据

作者逐帧复盘《侏罗纪公园》里的电脑设备,从Apple Powerbook 100到SGI Crimson工作站,甚至发现QuickTime视频通话是造假、PLI软盘朝向有穿帮。 文中引用幕后资料还原了当时好莱坞对计算机硬件的真实还原度与预算投入,细节极其硬核。
评论点赞收藏77 天前

一个能可靠唤醒的扩展坞方案

作者分享解决笔记本连接扩展坞后无法唤醒的长期痛点:更换为ASUS ROG Swift PG27UCDM显示器后,唤醒变得可靠。尽管不确定是显示器固件问题还是其他原因,但提供了具体的硬件配置参考,对受困于Thunderbolt扩展坞唤醒故障的用户有实用参考价值。
评论点赞收藏80 天前

一个能可靠唤醒的扩展坞方案

作者分享解决笔记本连接扩展坞后无法唤醒的长期痛点:更换为ASUS ROG Swift PG27UCDM显示器后,唤醒变得可靠。尽管不确定是显示器固件问题还是其他原因,但提供了具体的硬件配置参考,对受困于Thunderbolt扩展坞唤醒故障的用户有实用参考价值。
评论点赞收藏81 天前

你说的是灭绝吗?——面对AI焦虑,程序员的进化之路

作者以《侏罗纪公园》定格动画大师Phil Tippett转型为例,回应程序员对AI取代的焦虑。结合个人使用LLM进行逆向工程和代码审查的一手经验,提出“进化而非灭绝”的观点。 文章详细分享了利用LLM提升代码质量、规范Commit Message及测试编写的实操技巧,并引用John Carmack关于编程核心价值在于解决问题的论断,鼓励开发者掌握新工具。
评论点赞收藏82 天前

我挚爱的机械键盘:从 IBM Model M 到 Ergodox 的十年体验

游戏开发者 Fabien Sanglard 回顾了他多年来使用过的几款最爱键盘,包括经典的 IBM Model M、ConcertMaster 以及人体工学键盘 Ergodox EZ 和 Moonlander。 文章结合了他在重建复古电脑、开发游戏时的真实使用经历,详细对比了不同键盘的手感、声音及稳定性,并分享了解决手腕不适的个人经验。
评论点赞收藏94 天前

《Silpheed》的艺术与工程设计

逆向工程大师 Fabien Sanglard 花两周时间拆解《Silpheed》的 FMV 视频格式,揭示其如何在 12.5MHz CPU、16色、150KiB/s 带宽的严苛限制下实现惊艳全屏动画。 Game Arts 采用底层向上(bottom-up)设计哲学:纯色瓦片复用节省50%带宽、利用 Mega-CD ASIC 的 Font bit 硬件加速双色瓦片解压、瓦片地图自动增量编码再省30%空间、调色板循环模拟多色激光/爆炸特效——而艺术家不得不在仅12色条件下完成设计。 文章包含完整的硬件架构分析、逐帧压缩率计算和逆向工程方法,是复古游戏技术分析的典范之作。
评论点赞收藏120 天前

解密名片级光线追踪器

本文详细剖析了Andrew Kensler的“名片级”光线追踪器代码,如何在极小的空间内实现复杂的光线追踪效果。文章解析了该代码如何利用精简数据类型、向量运算和随机采样等技术,在名片大小的代码中生成具有软阴影和景深模糊等高级图形特性。 作者不仅解释了代码结构,还深入探讨了背后的算法原理,并附有完整的代码注释。
评论点赞收藏125 天前

《魔法风云会》格式:趣味40

Fabien Sanglard在2026年的“Beasts of the Bay”活动中,组织了一场80多名玩家参与的40张牌组构建比赛,并分享了使《魔法风云会》游戏有趣的要素。 他详细列举了互动性、多样性、无弃牌和无地破坏等关键因素,并展示了不同颜色组合的牌组设计,如白绿、红绿、黑、红、蓝和红黑等,每个牌组都有其独特的策略和乐趣。 文章中还包含个人经验和现场观察,展示了牌组的视觉效果和策略细节,并邀请读者提出建议。
评论点赞收藏133 天前

超级任天堂卡带内幕:ROM、SRAM及增强处理器

本文深入解析了超级任天堂卡带内部结构,包括ROM容量、SRAM存档芯片以及多种增强处理器(如SA-1、CX4、DSP芯片等)。作者通过拆解和PCB分析,详细介绍了各芯片的功能和应用场景,并列举了多款游戏及其ROM大小。 文章还探讨了社区如何利用这些芯片优化经典游戏性能,展示了硬件技术的历史与现状。
评论点赞收藏157 天前

Michael Abrash如何将Quake帧率提高近一倍

本文通过实验验证了Michael Abrash为Quake引擎编写的手写汇编代码对性能的显著影响。在未启用ASM优化时,游戏帧率仅为22.7fps;启用后提升至42.2fps,性能提升近一倍。 文章详细分析了关键函数如D_DrawSpans8和R_DrawSurfaceBlock8_mip*的贡献,并深入探讨了Pentium FPU流水线的优化技巧,包括指令并行、延迟隐藏等。 作者还对比了VC6编译器生成的代码与Abrash手写汇编的差异,展示了如何通过寄存器重排和指令调度避免流水线停顿。文中还提及了一些未采用的优化如Invert24To16,以及矩阵向量乘法TransformVector的具体实现细节,揭示了x87架构下寄存器的巧妙利用。
评论点赞收藏228 天前

让我们像1997年那样编译《雷神之锤》!

本文详细介绍了如何在1997年的环境下重现编译《雷神之锤》游戏的过程,包括安装Windows NT 4和Visual C++ 6,处理手写的汇编代码等。 作者通过实际操作和截图,详细记录了每一步骤,帮助读者体验当年的开发环境和技术挑战。
评论点赞收藏237 天前

QSpy 还酷吗?来玩《QuakeWorld》吧!

本文作者回顾了三十年前未体验《QuakeWorld》的遗憾,如今用一台老旧的233MHz电脑成功运行该游戏。文章详细描述了使用QSpy客户端连接服务器、解决版本兼容性和内存分配问题等过程,并分享了初次游玩时的激动心情和游戏体验。 作者强调了玩家对经典游戏的持久热爱以及游戏机制的魅力。
评论点赞收藏257 天前

构建1997年Quake PC:基准测试Vquake

本文深入探讨了1997年Rendition Verite 1000显卡作为首款支持《Quake》硬件加速的显卡的历史意义和技术细节。作者通过详尽的性能测试,比较了不同分辨率(从320x200到856x480)、CPU频率变化(Pentium MMX 133MHz至233MHz)以及DOS与Windows环境下的帧率差异,展示了该显卡在游戏性能上的提升和局限。 特别地,文章分析了双线性过滤(bilinear filtering)对帧率的影响,并讨论了BIOS更新对分辨率支持的改进。此外,还评估了该显卡在AMD K5处理器上的表现,揭示了早期3D加速技术在特定硬件条件下的限制。 全文不仅提供了技术数据,还穿插了对当时游戏文化和技术的观察,使读者能够深入了解早期3D图形技术的发展历程。
评论点赞收藏260 天前

构建1997年雷神之锤PC:性能测试与分析

本文详细分析了1997年《雷神之锤》游戏在不同硬件配置下的性能表现,包括英特尔、Cyrix和AMD K5/K6等处理器的对比测试,以及EDO内存与SDRAM、AGP总线与PCI总线的实际效果。 作者通过大量实测数据和历史资料(如用户反馈、技术文档)揭示了当时CPU浮点运算性能的严重缺陷,尤其是Cyrix和AMD K5的不足,并解释了Pentium MMX和Pentium Pro的优势。 文中还提及了DOS与Windows 95环境下的帧率差异,以及驱动程序传输格式对兼容性的影响。内容硬核且信息密度高,适合对复古硬件或游戏技术史感兴趣的读者。
评论点赞收藏261 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。