网站深度测评
strlen.com是什么网站?
strlen.com 是荷兰程序员 Wouter van Oortmerssen 的个人网站,用来汇总他的职业经历和各类个人项目。
他是谁
- 常驻旧金山的荷兰程序员,方向集中在游戏、引擎、编程语言和工具。
- 曾任职 Google,参与 WebAssembly,并创造了序列化库 FlatBuffers。
- 更早曾在 Crytek 参与初代 CryEngine 和游戏《Far Cry》,负责多人、核心引擎系统和新脚本语言。
- 也做过独立咨询,客户包括 Maxis(《SimCity》)和 Gearbox(《Borderlands 2》)。
网站上能找到什么
- 游戏与引擎:Cube 引擎及开源项目 Cube 2 / Sauerbraten,以及他其他的游戏、编辑器与地图。
- 工具:TreeSheets,一种“层级电子表格”,定位是文本编辑器、表格、思维导图和大纲工具的替代品;还有若干效率工具。
- 编程语言:近年主要是游戏编程语言 Lobster 和重构系统 Restructor;早期有 Amiga 平台广泛使用的 Amiga E、深奥语言 False,以及博士与硕士阶段的 Aardappel、Bla。
- 个人兴趣:摄影、关卡设计、游戏设计等。
适合谁看 想了解某款语言或工具的设计思路、追踪作者项目进展,或研究游戏引擎与编程语言实践的人,可以把它当作作者本人的项目索引。例如需要为关卡编辑或数据序列化选型时,站内对 Cube 引擎和 FlatBuffers 的说明能提供第一手背景。
想找同类内容 如果关注开源游戏引擎,可对照 Cube 2: Sauerbraten;关注序列化方案可看 FlatBuffers;想了解 WebAssembly 可参考 WebAssembly。
Wouter van Oortmerssen 在游戏引擎和编程语言领域有哪些主要作品?
Wouter van Oortmerssen 的主要作品可以分成两条线:游戏引擎与游戏,以及编程语言与开发工具。
游戏引擎与游戏
- Cube 引擎 / Cube 2: Sauerbraten:他早期以“简单、游戏设计、游戏内关卡编辑”为出发点做的引擎练习,后来发展成较完整的开源游戏与引擎项目,Cube 2 与 dot3 labs 的 Lee 合作。
- CryEngine 与《Far Cry》:在 Crytek 期间参与初代 CryEngine 和《Far Cry》,负责多人、核心引擎系统以及一门新的脚本语言。
- VoxRay Games:目前他经营自己的游戏工作室。
- 其他游戏、引擎、编辑器和地图:页面上还列出了他其他相关项目。
编程语言与工具
- Lobster:他近期主要投入的游戏编程语言。
- Restructor:重构系统。
- Amiga E:Amiga 平台上使用最广的语言之一,曾作为商业产品出售数年。
- False:引发了后续一批 esoteric language 的语言。
- Aardappel 与 Bla:分别来自他在阿姆斯特丹大学硕士和南安普顿大学博士期间的编程语言研究项目。
- TreeSheets:他称为“层级电子表格”,定位是文本编辑器、电子表格、思维导图、大纲工具等的替代品。
- FlatBuffers:在 Google 期间创建的序列化库。
- WebAssembly:在 Google 期间参与相关工作。
如果关注“游戏引擎”,优先看 Cube / Sauerbraten 和 CryEngine 经历;如果关注“编程语言”,优先看 Lobster、Amiga E、False 以及他的学术语言项目。
FlatBuffers 是什么,它解决了什么问题?
FlatBuffers 是 Wouter van Oortmerssen 在 Google 期间创建的序列化库,作者在个人网站 Wouter van Oortmerssen 的职业经历中明确提到“I created for example the serialization library FlatBuffers”。
它解决的核心问题:读取序列化数据时不必先解析/解包
传统序列化格式(如 JSON、Protocol Buffers 的部分用法)通常需要把整个数据解析成对象或中间结构,才能访问其中某个字段。FlatBuffers 的设计目标是让数据以扁平二进制形式存储,访问时直接按偏移量读取字段,不需要反序列化步骤,也不产生额外的临时对象。
典型使用场景
- 游戏运行时频繁读取配置、关卡、资源元数据,对加载延迟和内存分配敏感。
- 需要把同一份数据零拷贝地传给不同模块,甚至通过内存映射文件直接访问。
- 跨语言共享数据结构:一份 schema 可生成 C++、C#、Java、Python 等多语言代码。
和其他方案的侧重点差异
- 与 JSON 相比:FlatBuffers 是二进制、需先定义 schema,换来更小的体积和更快的访问;JSON 胜在可读、无需编译步骤。
- 与 Protocol Buffers 相比:两者都基于 schema 和代码生成,但 Protobuf 常规用法仍需 parse 成对象;FlatBuffers 强调的是“访问即读取”,适合对延迟极敏感、或需要随机访问大缓冲区中少量字段的场合。
下一步
如果你要判断是否该用它,先问自己:访问数据时是否真的需要“零解析”?如果只是偶尔读一次配置文件,JSON 或 Protobuf 更省事;如果是每帧读取大量结构化数据,FlatBuffers 的收益才明显。
TreeSheets 与普通电子表格或思维导图工具有什么不同?
TreeSheets 是 Wouter van Oortmerssen 做的一个“层级电子表格”,定位在普通电子表格、文本大纲和思维导图之间。它最大的不同是:每个单元格都可以展开成一张子表,表格和层级结构是同一套东西,而不是两种模式。
和普通电子表格的区别
- 普通电子表格是二维网格,行列基本平铺;TreeSheets 的单元格可以嵌套,点开一个格子就是下一层表格。
- 普通电子表格靠公式、筛选、图表做计算和分析;TreeSheets 更偏向“整理信息”,适合把大纲、分类、笔记放进同一张可缩放的表里。
- 普通电子表格适合数值密集的报表;TreeSheets 适合结构密集的想法、清单、资料分类。
和思维导图的区别
- 思维导图通常是一个中心节点向外发散,强调关系和脑暴;TreeSheets 是表格化的层级,强调对齐、分类和批量整理。
- 思维导图做展示很直观,但信息一多就难比较;TreeSheets 可以在同一层级里并排看多个条目,更像“能折叠的表格”。
- 思维导图偏图形,TreeSheets 偏文本和结构,适合长期维护一个知识库或项目分解。
适合谁、什么时候用
- 需要把一个大主题拆成多层子项,同时还想用表格方式并排比较时。
- 做笔记、写大纲、整理资料,又觉得纯文本编辑器太线性、思维导图太散时。
- 想在一个工具里同时完成“展开细节”和“收拢总览”,而不是在多个软件之间切换。
选择条件
如果你主要做数字计算、统计和图表,普通电子表格更合适;如果你要快速脑暴、展示节点关系,思维导图更直接;如果你要层级化地整理复杂信息,并且希望每一层都能像表格一样排列,TreeSheets 是更对口的工具。
Lobster 编程语言适合用来做什么类型的项目?
Lobster 是 Wouter van Oortmerssen 设计的游戏编程语言,定位是“游戏编程语言”,因此最适合用它来做游戏逻辑和游戏相关工具,而不是通用后端或 Web 服务。
典型使用场景
- 独立游戏或小型游戏项目:作者本人就在做游戏工作室,Lobster 是他围绕游戏开发需求设计的。
- 游戏逻辑与脚本层:适合写游戏规则、关卡行为、实体逻辑这类需要频繁改动、又要求运行效率的代码。
- 与自研引擎配合:Lobster 常和作者自己的引擎、工具链一起使用,适合愿意自己搭引擎或已有引擎的开发者。
- 游戏相关工具:例如关卡编辑、资源处理等围绕游戏开发的辅助程序。
它不太适合什么
- 大型 Web 后端、企业业务系统:生态和库支持不在这个方向。
- 需要大量现成第三方库的项目:Lobster 的社区和库规模远小于主流语言。
- 团队协作中要求招人容易、资料丰富的项目:学习资料和用人市场都更小众。
选择条件 如果你在做游戏、想要一门为游戏逻辑设计的语言、并且能接受较小的生态,Lobster 值得看;如果项目依赖成熟框架、云服务或大量现成库,建议选更主流的语言。想进一步判断,可以先看作者站上 Lobster 的示例和文档,确认它的语法与你的引擎/工具链能否配合。
Cube 2 / Sauerbraten 引擎是否还适合现在用来学习或开发游戏?
Cube 2 / Sauerbraten 仍然适合作为“学习游戏引擎与关卡编辑”的素材,但不太适合当作面向商业发布的现代游戏开发主力引擎。作者本人把 Cube 引擎描述为“从简单性、游戏设计和游戏内关卡编辑的练习开始”,并发展成较完整的开源游戏与引擎项目 Cube 2 / Sauerbraten。
它适合谁、在什么情况下用
- 想理解 FPS 引擎基本结构、BSP/关卡几何、多人游戏逻辑的人,可以读源码、改玩法、做小规模实验。
- 对“游戏内实时编辑关卡”感兴趣的人:Cube 系列一开始就把 in-game level editing 作为核心动机,这类工作流在今天的引擎里反而少见。
- 想研究脚本语言与引擎结合方式的人:作者在 CryEngine / Far Cry 时期就做过新脚本语言,Cube 生态也延续了用脚本驱动玩法的思路。
- 做教学 demo、课程作业、原型验证,而不是追求画面、跨平台发布、商业资产管线。
不太适合的情况
- 需要现代渲染特性、成熟的编辑器生态、主机/移动端发布支持。
- 团队协作、资产规模较大、需要长期维护的商业项目。
- 想直接对接当下主流招聘技能栈:更接近 Unity 或 Unreal Engine 的工作流。
和常见选择的侧重差异
| 选择 | 更侧重 | 与 Cube 2 / Sauerbraten 的差别 |
|---|---|---|
| Cube 2 / Sauerbraten | 开源、轻量、游戏内编辑、引擎学习 | 代码和工具链更“自成一派”,现代生产管线弱 |
| Godot | 开源、完整游戏开发、社区生态 | 更适合从学习过渡到实际发布 |
| Unity | 商业项目、跨平台、资产商店 | 学习资料和岗位需求更主流 |
| Unreal Engine | 高画质、大型项目、蓝图 | 体量和复杂度更高,不适合轻量学习起步 |
下一步可以怎么做
- 先明确目标:学引擎原理就下载源码和地图工具,做发布项目就选更现代的引擎。
- 用 Cube 2 / Sauerbraten 做一个小型多人 FPS 实验,重点看网络同步、关卡编辑和脚本。
- 如果目标是就业或商业开发,把 Cube 2 当作“读懂引擎”的跳板,再转向 Godot、Unity 或 Unreal。
用户评价(0)