解析器不必复杂:一个零拷贝扫描器的工程实践Branimir Karadžić 提出 bx::Scanner,用零拷贝、无分配、单游标设计替代手写指针遍历和第三方解析库。 该工具在 INI 解析、URL 处理、路径归一化和栈跟踪符号化等场景中,通过子扫描器隔离行边界,消除越界 bug,代码量从数万头文件降至 75 行。 核心原则是 accept/peek 返回 StringView 而非 bool,空视图仍指向游标,结构存在性需单独检测;字符类代替模式语言,接口仅一个头文件,调试可见。 评论点赞收藏18 天前
正统C++:一种极简的工程实践哲学作者提出“正统C++”概念,主张使用C++的一个最小子集(类似C风格),明确反对使用异常、RTTI、STL内存分配和现代C++模块等特性。文章列举了这些特性在工程实践中的弊端,如增加复杂性、运行时开销和移植困难,并推荐了DOOM 3、bgfx等采用此风格的开源项目作为案例。 评论点赞收藏63 天前
让跨平台 SIMD 代码编写变得更愉悦作者介绍其开发的 bx 库经过三次迭代,解决了跨平台 SIMD 编程中内建函数冗长、平台差异大以及类型系统不友好等问题,提供了更简洁高效的解决方案。 评论点赞收藏105 天前
bgfx WebGPU 后端:再探作者重新审视并介绍了 bgfx 渲染库的 WebGPU 后端实现。文章阐述了 bgfx 作为跨平台、API 无关的中层渲染库的核心概念,特别是其基于视图(views)的声明式 API 和绘制调用排序机制,将其与 WebGPU 原生、ANGLE 等进行对比,强调其在不同渲染后端间提供一致抽象的能力。 评论点赞收藏216 天前
极速调用栈回溯技术解析文章深入探讨了在不同操作系统上获取调用栈追踪的各种方法,重点分析了为何传统API在实时性能分析中往往过慢,并试图揭示实现快速调用栈回溯的技术原理,适合需要开发性能分析工具或底层调试器的工程师阅读。 评论点赞收藏300 天前
Branimir Karadžić 的个人经历:从ZX Spectrum到游戏开发Branimir Karadžić的个人经历简介,从1984年接触ZX Spectrum开始,经历Demoscene和汇编开发,最终进入游戏行业。 评论点赞收藏303 天前
bgfx 改用 IDL 生成 API文章指出 bgfx 主 API 虽基于 C++ 但风格类似 C,导致无法直接用于 C 项目。为解决 C99 绑定维护困难的问题,作者宣布将采用 IDL(接口定义语言)来自动生成 API 声明和虚拟表函数类型,从而简化跨语言绑定并作为 API 设计的校验手段。 评论点赞收藏2687 天前
为何我认为即时模式 GUI 是游戏开发工具的最佳选择Branimir Karadžić 强烈主张即时模式 GUI (IMGUI) 是开发游戏工具的最佳选择。文章基于其多年使用 Dear ImGui 的经验,详细阐述了 IMGUI 相比传统保留模式 GUI 在迭代速度、状态管理和调试便利性上的巨大优势,并反驳了 IMGUI 性能差或仅适合原型开发的观点。 评论点赞收藏3450 天前
将 AirMech 移植到 Native ClientCarbon Games 博客文章,介绍将游戏 AirMech 移植到 Chrome Native Client 的技术决策过程。作者提到早期计划为 Linux 和 Mac 做原生移植,但在 Chrome 浏览器支持 Native Client 后决定尝试该技术路径,以实现跨平台覆盖。 评论点赞收藏5336 天前
开源或者没做:AirMech 全面转向开源技术栈Branimir Karadžić 宣布其游戏 AirMech 彻底移除闭源库,全面转向使用自研或开源软件。文章分享了这一技术决策背后的思考以及完整的开源软件清单,体现了开发者对开源社区的承诺和透明化的工程实践。 评论点赞收藏5444 天前