DOVION.io

幕后揭秘:一个没有任何外部依赖的游戏服务器

· 1 分钟阅读 · 作者:Dovion 船员

如果你接触过Web开发,你肯定知道这个段子:一个现代项目的 `node_modules` 文件夹比银河系照片还重。成百上千个外部库叠在一起,没人真正搞清楚它们都在做什么。在用Node.js开发我们的游戏时,我们走了相反的路,这是我们最自豪的开发成就之一:Dovion的服务器启动时零外部依赖。一个都没有,不引用任何第三方库。

具体来说,这意味着什么?

当一个工作室搭建在线游戏服务器,通常的反应是拼接现成模块:一个WebSocket库(负责浏览器和服务器之间的实时连接),一个文件服务库,一个这个,一个那个。初期很快。

我们把所有东西都手写了。包括最让人头皮发麻的那个部分:WebSocket服务器本身——也就是那个在服务器和每个玩家之间实时传输舰船位置、开炮动作和事件的协议。这是99%的项目不假思索直接引入的组件。我们宁愿把它理解到最后一行代码。

为什么折腾自己?

这不是(只是)受虐狂。这个选择有非常具体的优势:

网络被锁的备用方案

这种掌控力的一个具体例子:某些网络——学校、公司——会阻止WebSocket连接。在大多数游戏里,这会导致一个无限转圈的连接屏幕。因为我们掌控整个网络层,我们能够构建一个HTTP/SSE备用传输方案:如果WebSocket被阻止,游戏自动切换到这条备用路线,你照样能玩。当网络层是个进口的黑盒子时,这种安全网很难建立。

缺点(因为确实有)

说实话,这个哲学有代价:时间。自己写别人一行代码就能引入的东西,需要额外数周工作,要读技术规范,要处理各种边缘情况。这是一个有热情的小项目才有的奢侈;一个有商业截止日期的团队大概承担不起。我们不会声称这对所有人都是正确的方法——这是我们的方法,符合我们的规模。

这种自制哲学不止于服务器:游戏世界本身也是由代码绘制的,没有图片文件,就像我们在吉卜力风格渲染幕后里解释的那样。最终结果:一款轻量、加载快、在低配置机器上也能运行的游戏——证明在低配置运行Dovion里。

所有这些不可见的工作只有一个目的:让你点击就能用。亲自验证:免费畅玩Dovion

准备起航了吗?Dovion 免费游玩,无需下载,支持电脑和手机。

⚓ 玩 Dovion