17611538698
webmaster@21cto.com

程序员为 8 岁女儿创建了游戏引擎,教她写代码

技术人生 0 14 1小时前
图片

21CTO导读:有一位程序员有一个八岁的女儿。为了帮助女儿满足制作电子游戏的愿望,他动用各种方法帮助女儿编程。

歌手尼克有一个小女儿,今年八岁。有一天,她跟老爸说她想创造自己的游戏世界,她已经不再停留在玩现在的游戏了。

尼克很开心女儿这么小就这样好奇的心。为了让女儿能透彻理解,他做了一个“可以制作游戏的游戏”,这是一个由文字、图片还有一个小脚本语言组合的多角色世界的游戏。

通过游戏,他女儿可以在游戏里拆解或重组人物、规则和方法,还能够清晰观察它们是如何运行的。

尼克把自己的这个游戏项目叫做“Canon”,和佳能的拼写有点像。他说灵感是自己在互联网早期玩的那些文字或简单的网络版本的MUD游戏。

图片

三十年前的 HyperCard

尼克在里面讲故事的方式真的很别具一格。他先带人们回到1989年那一年,当时他九岁,正坐在学校计算机课的电脑屏幕前。

与此同时,映入他眼帘的是HyperCard,第一代比尔·阿特金森(Bill Atkinson)在LSD之旅后灵光一现所发明的软件。它的核心理念产品达到了极限:一张张调整,上面可以自由安放按钮、文字与图片;而当调整组成时,就成了一个完整的应用。

“只要你会点按钮,你就会使用HyperCard;而只要你会使用HyperCard,你就能成为它的招聘人员。”

Nick用它写了一款《街头霸王》风格的格斗游戏。当时他完全不懂什么是精灵图(雪碧),对编程也一无相似,但他透彻地理解了一件事:按钮可以把人带到另一张对应。于是,他凭着本能画了数百张动作,每张对应都对应着两个角色在特定位置的姿态姿势组合,再用一个按钮“控制器”,在右边堆里指挥梭跳转。

“我现在在第154张对应:玩家1在2号位进行,玩家2在3号位防御。如果玩家1按下攻击键,页面瞬间跳转到……”

无数个放学后的黄昏,他就这样在教室里鼓捣。但他真的已经出发了——当他亲手操纵着自己创造的世界时,那种无与伦比的成就感瞬间将他击中。他说,“此后我的整个职业生涯,不过是在永无止境地目睹那种纯粹的快感。” 

佳能的三大支柱

尼克并不打算让女儿去学习 HyperCard,但他希望复刻出那套近期魔力的体验:兼顾无拘无束的创作自由度,同时又具备严谨的机械规则约束。

佳能系统系统由三大核心要素构成:玩家、房间、物品。 玩家与房间,依靠文字描述辅以任选图片来完成;而物品则承载了其余全部能力——宠物、NPC、法术效果、初始、房间门、任务标记,全部都属于物品要素。

项目的行为逻辑,由一门名为 Cant 的专用语言来实现。示例如下:

item "Hooded Lantern" {describe "An iron lantern with a hinged hood."on "light" {narrate "{player}'s {item} swings open and warm light spills out."	}}

这就是一个可以被点亮的灯笼。是不是很简单?

佳能里面有一个叫做or的键盘,可以让一个字符串每次随机挑选一个变体。尼克特意把这个功能做进了语言的最底层。”对于一个新的程序员来说,RNG有一种特别的乐趣。你告诉计算机该做什么,它照做。但你也获得了无限制的一点点自主权。它既让你惊喜,也不让你惊讶。你编程了每一个可能的回应,你知道它能说的所有话,但你不知道按下按钮时它会说哪一句。这就像突然让自己挠痒痒。”

一门“设计得很烂”的语言

Nick 坦白在这个系统里:“如果你是个程序员,你会发现这门语言很糟糕。”

比如说那个D20掷骰子,在系统里的写法是:

say1! or 2! or 3! or 4! ...

而不是现代语言中的函数形式: 

randInt(1,20)

尼克如此解释说:

“这是一种非常低效的写作方法。但它很容易理解。这门被设计成‘以教育性的方式很糟糕’的语言,称为“不能”。它优化了很容易理解,而不是写作速度。完全遵循 DRY 原则。”

这套设计哲学贯穿整个经典。

比如说物品有两种状态:标记(逻辑标记,全大写)和数字(数字,全小写)。比如大小写本身就是类型。一个篝火有warmth 10,一个NPC有health 20

更妙的是,状态是挂在物品上而不是玩家身上的。所以PVP决斗是“同意”的——你不想决斗?那就别捡起那根决斗魔杖。

结语

也有投资者质疑说:这个项目到底是在“教编程”,还是只是“给小孩一个玩具”?

其实尼克的心里很清楚。他并不是要女儿变成现在的程序员,而是要重温自己九岁时的那种经历:

在一个“一切皆可编辑、一切都可查看源码”的环境中,发现自己能够创造出某种东西的成就感和震撼力。

Canon的每一项功能都在为这个目标服务:即时反馈——你放上去的东西立刻成为游戏的一部分、查看源码——一切都用游戏自己的工具构建,可自由编辑、复制、拆卸)、从GUI到代码的平滑梯度、以及“足够强有限到初学者能掌握全部原语”的约束。

“在我学会编程的年代,查看源代码是个特别靠谱的老师,我觉得她值得拥有同样的东西。”

作者:场长

来源:

https://tau.dev/2026/08/07/canon

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信