Hole Punch:借黑洞引力把你的飞船甩到目的地

查看原文 HN 讨论

文章摘要

Hole Punch 是英国开发者 Tim White(HN 用户名 trwhite,个人博客域名 notoriousbfg.com)做的一款浏览器物理解谜小游戏,页面上没有任何介绍文章,打开就是游戏本身。下文根据游戏界面、内置说明和游戏的 JavaScript 源码整理。

玩法。 游戏的一句话简介是:在太空中“打”出黑洞,借它们把飞船甩回家。每一关里,飞船从固定位置、固定方向和速度出发,目标是让它停靠到空间站。你没法操纵飞船,只能往场地里放黑洞,用黑洞的引力弯折它的航线。在空白处按住鼠标,黑洞会随按住的时间不断长大,同时消耗每关有限的“物质”配额;松开就定型。放下的黑洞可以拖动;点一下选中后,上下箭头可以增减质量,叉号可以删掉。键盘玩家可以用上下方向键或鼠标滚轮调质量、Delete 删除、Tab 在黑洞之间切换、空格发射或中止、Z 撤销、R 重置。发射前会有一段虚线,显示航线最初几秒的走向。飞船会在以下情况坠毁:进入黑洞的事件视界、撞上岩石或行星、飞出场地,或者飞行 45 秒仍未停靠。评分看用了几个黑洞、耗了多少物质,越少越好,每关保留最好成绩。

二十个关卡。 游戏共 20 个“星区”,每关都有名字和一句提示,循序引入新机制:第一关“First light”只需一个最小的黑洞;“The rock”让你绕开障碍;“About turn”的空间站在飞船身后,提示说近距离掠过转弯最急,但掉进去就会被吞掉;“Heavy neighbour”引入同样有引力、而且是实心的行星;“Slalom”要用一个黑洞把飞船交给下一个;“Sleeping giant”里有一个关卡自带、删不掉的黑洞;“Traffic”里的岩石会移动;“Push and pull”加入把飞船推开的白洞;“Shortcut”加入虫洞,飞船会以同样的速度和朝向从另一端飞出。第十关之后难度明显上升:飞船没有燃料,原地不动,直到有东西把它拉走(“Dead stop”);必须先穿过琥珀色信标空间站才开门(“Checkpoint”);斜线区域不能放黑洞(“Keep off”);空间站本身在移动,要算好到达时机(“Catch”);“Rationed”只给一个黑洞的配额,其余靠行星;“Relay”是三个互不相通的“房间”。最后一关就叫“Hole punch”,提示是“没有燃料、一个信标、一个移动的空间站,外加三个黑洞”。

工程上的小心思。 源码里的注释写得很有条理。物理部分单独放在 physics.js,开头注释说它是“游戏规则本身,不含任何绘制和输入”,这样屏幕上飞船用的是同一份代码,测试里证明关卡可解用的也是这份代码。模拟总以 1/240 秒的固定步长推进,与帧率无关,所以同一组黑洞永远产生同一条航线。每关还内置一个“标准答案”:通过搜索找出用最少黑洞、其次最少物质、而且不靠毫厘之差侥幸过关的解。卡关时打开星区列表点“I give up”,电脑会替你摆好黑洞并飞一遍,但不计分。界面做成了一台老式控制台的样子,带 CRT 扫描线效果、琥珀色数码管和“Unit 0426 · Mk II”铭牌;在手机上会要求横屏。

HN 评论精华

本帖 373 分、约 95 条评论,整体非常正面,不少人说一口气通关了全部 20 关。作者 trwhite 全程在评论区回复,根据反馈当天就推送了好几次更新。讨论主要集中在移动端体验、操作细节,以及一个小插曲:有人发现自己 vibe coding 出的游戏和这个长得几乎一样。

“停不下来”。 frellus 说这东西让人上瘾,“我要我的周六晚上回来”;jvandonsel 说“这周的冲刺泡汤了”。manlymuppet 说他从没这么快跳过一个教程,“这是夸奖”,chirau 附和说一看页面就大致知道怎么玩。goolz 说它让人想起 addictinggames.com 那些老 Flash 网站带来的快乐,mosfets 觉得很适合和孩子一起玩。EA-3167 说它简单却有强烈的“再来一局”魔力,让他想起《Seedship》。NooneAtAll3 通关全部 20 关后提出,有些关卡物质预算很宽裕,似乎在暗示“快飞快撞”的解法,可惜没有飞行时间评分,他希望能有像 Zachtronics 游戏那样展示玩家成绩分布的排行榜。willguest 和 CarVac 发现电脑给出的“标准答案”很狡猾,用成对黑洞的方式和自己完全不同。

移动端的痛点。 jonplackett 说这游戏显然是为桌面设计的,“这是个移动世界”,leptons 反驳说桌面和移动大约五五开。xixixao 说在 iOS Safari 上能打开但玩不了,sajithdilshan 说点黑洞没反应,petepete 说安卓 Chrome 也一样;grobibi 说他连看视频都拒绝横屏,所以永远不会知道这游戏有多好,“不是故意找茬,只是告诉你有我这样的人”,下面一串“我们有好几十个!”的《发展受阻》梗。trwhite 一再道歉,说它一开始就是个桌面游戏,手边没有手机复现问题,已经推了改进触控和加入全屏支持的更新,还透露 iOS 版正在做,会有新谜题、更有意思的物理,“还有猪”。shantanujoshi 等不及,自己用 AI 做了一个带触感反馈、支持竖屏的 iOS 版“Milk Orbit”放到 TestFlight 上,还开源了代码。

操作细节的反馈。 adamesque 抱怨按住加质量容易加过头,又没法减;40four 说只能撤销重来。msephton 和 gschizas 指出点一下黑洞就会出现加、减、删三个按钮,trwhite 也说刚推了更新让这一点更明显,并预告第 10 关以后会更好玩。rkagerer 给了一组细致的建议:拖动黑洞时质量控件应该隐藏,免得挡住周围;新建黑洞最好需要长按之类的明确操作,他总是想调整已有的黑洞却误加了新的;一上来就弹出说明有点多,让玩家自己摸索机制会更有趣;他还发现前 8 关中好几关一个最小尺寸的黑洞就能过。nilslindemann 列出拖拽手感的四个小问题,比如鼠标要移动 5 像素后黑洞才开始跟随、第一下会跳一小段;gblargg 补充黑洞拖得离飞船太近时没有任何提示,看起来像没反应。Razengan 和 rapidfl 希望能直接输入物质数值、能加速模拟;wat10000 希望有个让预测轨迹无限延长的模式,因为后面关卡的试错循环太长。endlessvoid94 卡在没有燃料的关卡放弃了,trwhite 给出提示:诀窍是用两个黑洞做成一道“门”,再给其中一个加质量来转向,实在不行可以点“I give up”看答案。

物理与同类游戏。 mnw21cam 说这类引力游戏几乎都忽略了一个事实:黑洞、行星和恒星本身也应该在动。codesnik 说《坎巴拉太空计划》就没忽略,规划弹弓轨道和利用奥伯特效应很有乐趣,pavel_lishin 补充说它还有让行星和飞船轨道更真实的插件。评论里还冒出一串类似作品:ashdnazg 推荐一个 2003 年的老游戏,玩法恰好相反,要让飞船在引力井之间尽量久地不撞;iamwil 觉得像“太空高尔夫”,建议做成回合制的《焦土》(Scorched Earth)式对战,x______ 推荐了 Steam 上的《Interplanetary》;amelius 推荐 falstad.com 的轨道交会模拟,peesem 提到《Gravitee》,SeriousM 说操控方式和《The Long Journey Home》一模一样;yogthos 和 m-nez 都晒出了自己多年前做的类似游戏。smorgasborg 通关后意犹未尽,把这个游戏的解空间画成了一张动态图,直接引用了作者的 physics.js,trwhite 回复说欢迎使用,“看起来棒极了”。

“我的 AI 也做出了一样的东西”。 fogleman 贴出自己最近 vibe coding 的游戏 Gravity Assist,说和 Hole Punch“出奇地眼熟”。derpyzza 讽刺道:“真奇怪,我的抄袭机器吐出来的东西和你的抄袭机器一模一样!”slopinthebag 说你们大概碰上了同一个 RLHF 检查点。djaro 举例说在亚马逊搜“十万个为什么”会看到一页又一页几乎相同的书,他让 ChatGPT 起一个儿童教育书名,去亚马逊一搜,就找到一本几个月前出版、标题完全相同的书;他的结论是 LLM 会向“预期中的文本”收敛,在几乎没有输入时很难给出新颖的点子,独特的部分得自己来。rcxdude 讲了一个老师让全班用 ChatGPT 写创意作文的故事:每个人都觉得 AI 的选择很有创意,读出来一比才发现大半个班写得差不多。sebastianconcpt 称赞游戏的拟物风格让人耳目一新,GalaxyNova 则说这看起来就是“标准的 Claude 生成风格”。作者本人没有回应这部分讨论。