今天刷到一个东西,我第一反应是看错了。一个能跑3D画面的高尔夫游戏,连自动生成球场、物理、音乐全算上,压缩完只有13KB。不是安装包13MB,是13KB,连一张普通截图都塞不进去的容量。

游戏叫《Sunshine Golf Classic》,开发者Frank Force在9月6日发到了Reddit的独立开发者社区。他本人有25年以上从业经历,还参与过重启版《DOOM》的开发。这次出手,是冲着游戏开发竞赛「js13kGames」去的。

打开网易新闻 查看精彩图片

13KB到底有多苛刻

js13kGames这个比赛,规则简单但相当硬核:提交的zip压缩包必须小于13KB,也就是13,312字节。解压后浏览器要能直接玩,所有文件都得塞进去,外部加载数据基本不允许。过去做过的游戏不能拿来充数,源码也要一并提交。

这个比赛从2012年开始,每年8月13日到9月13日举行。冠军能拿到超过3万美元的奖金,还有原创周边,全球包邮。今年主题是「Unicorns and Rainbows」,独角兽加彩虹,所以活动页面上已经堆了一堆花里胡哨的作品。

截至发稿时,今年已有8款游戏正式提交,还有73个草稿。距离截止只剩5天左右。

高尔夫玩法,但处处是刀法

说回《Sunshine Golf Classic》。它致敬的是《马里奥高尔夫》和《NEO TURF MASTERS》这类作品。玩家要调整球杆、角度、旋转,盯着移动的力度条,在合适的时机按下空格。球飞出去会拖出一道彩虹轨迹,目标是在规定杆数内进洞。

游戏准备了18个固定球道。如果能打出标准杆以上的成绩,就会解锁「remix mode」,之后可以玩程序化生成的球场。也就是说,球场不是预先手工摆好的,而是代码现场算出来的。

为了省容量,画面上的树都是八面体,棱角分明,一眼就能看出是低模。但开发者没忘了在细节上做文章:彩虹色特效散落在各处当点缀,打出老鹰球的时候,还会冒出一个独角兽图标。这种“能省则省,该花就花”的思路,挺有意思。

13,301字节,离上限只差11字节

Frank Force说,这游戏是他用自研引擎从零写的。3D渲染、物理运算、球场程序化生成、音乐,全部打包压缩进13KB。有人从GitHub仓库把zip下下来实测,大小是13,301字节,离13,312的上限只差11字节。

11字节是什么概念?大概就是一句话里几个字母的容量。等于说这游戏是贴着规则天花板塞进去的,再多个标点可能就超了。

他还提到,等比赛结束后,打算把渲染从WebGL换成three.js,把画面再打磨一下。也就是说,现在的版本是“极限压缩版”,之后可能还有“视觉升级版”。

1.44MB都算奢侈了

为了让人理解13KB有多夸张,原文还拿老式3.5英寸软盘做了对比。一张软盘容量1.44MB,以前有比赛用这个当限制,已经算很紧了。现在随便一张现代图片都可能超过1.44MB。而js13kGames要求的是这个数字的1%都不到。

这么一比,13KB的压迫感就出来了。不是“精简”,是每一字节都要抠。

《Sunshine Golf Classic》在PC和手机浏览器上都能玩。比赛作品提交截止到9月14日。如果你对“如何在13KB里塞下一个3D世界”这件事有好奇心,可以去活动页面翻翻,顺便看看其他参赛作品。反正我是挺想试试,打一杆看看那道彩虹轨迹到底长什么样。