首页作品

GridHorizon - 地平线

项目

GridHorizon 是我近期在做的一个大尺度网页开放世界探索游戏。

在玩狩猎游戏《猎人之路》的时候,我意识到这种大地图、慢节奏的游戏充满了魅力:当你没那么容易获得猎物时,真正得到猎物会产生巨大的成就感。同样的思路,我觉得当年的绝地求生(吃鸡)也是。那个游戏最大的改变不是毒圈、不是跳伞,我觉得是 100 个人在巨大地图里的求生——那种孤独感是前所未有的。

所以我一直想做一款特别拟真的探索游戏,就类似 16 世纪的欧洲探险家在美洲的探索:他们在大洋里航行数月见不到陆地,见到的陆地也不知道到底是一个小岛还是一片大陆;对他们来说,一切如外星球一样未知,一种深深的孤独感和恐惧感,非常有魅力。

其实我本来想做更大的世界,比如按真实地球每 100 米一个格子,一个人走一格要真实的 5 秒钟这样。但在和 AI 计算之后发现,这确实没法玩,因为太大、太慢了!真实地球地表面积的尺度依然不是当今计算机可以模拟的容量:一是体积太过庞大,数据库存储的压力不可计数;还有个问题是玩家根本不太可能在这个尺度的游戏里遇到人——哪怕地球上 80 亿人都进到这个游戏、完全随机分配,都碰不见几个。再进一步想,这还只是太阳系里一颗渺小的地球;整个太阳系在银河系里也不过是一粒沙子,尺度简直让人细思极恐。

鉴于游戏性能和游戏性的考虑,最终我确定地图为 8000×8000 格子,大概一半土地、一半海洋。玩家路过每个格子默认是 1 秒钟;即便这样,从地图一端走到另一端也要两个多小时,走遍全图要数月,每个格子都走完要两三年!

开发方面主要采用 Next.js,部署在 Vercel 上,用了 Vercel 的 Storage,并用 Ably 做玩家之间的信息同步。

真实开发时,项目要比我预想的难,而且还有网络请求延迟的问题。本来的方案是轮询更新玩家位置,但会导致大量等待;AI 初期实现时,基本所有请求都要等网络 callback 之后再做。后来改成本地优先,再同步到服务端,让玩家的操作先看到效果。

这毕竟是一个巨大的多人在线游戏,里面还包含路过缴费、玩家之间更新所处位置等互动。摒弃轮询之后,我采用 Ably 来实现。

数据库 schema 的复杂程度要远超我本来的设想。这其实并不是一个简单的游戏,理论上比我做那些单机游戏麻烦很多,尤其在服务器通信方面。

这个游戏我也录了视频,并在 Reddit 上做了简单推广。在其中一个论坛里,被几个玩家嘲讽说是 AI 做的游戏。我这时才意识到,海外玩家对 AI 创作有多大的恶意和抵触。不过在另外一些论坛里我得到了 10 个点赞,也听到了赞美。YouTube 的播放数据也不错,我甚至吸引到一个进入我 Discord 频道的玩家——他就游戏的问题提出了自己的疑问,让我深受感动。

这个游戏的游戏性有一部分取决于有多少玩家进入。如果形成规模效应,一下子几千上万玩家融入,会让所有人都感到好玩;但如果只有几个人,大家很快就会放弃。基于这个原因,我对此没有特别足的信心。

也因为这个,我将项目设成了开源,GitHub 仓库是 public 的,也欢迎感兴趣的人一起加入。

不过我现在也没太搞懂:是不是在 AI coding 时代,开源已经渐渐不行了——因为不太需要开源合作,AI 都能帮你很快搞定,大家都是在和 AI 合作做开源项目。

再等等看吧。

项目信息

周期
2026.7 - now