无名杀服务器搭建记录

序言

晚上打算和同学玩三国杀,发现了Github上的这个平替:https://github.com/libnoname/noname
叫做“无名杀”。及其适合几个小伙伴自己搭建服务器玩。

搭建服务器

下载他们的代码之后,按照他们官方的Wiki,直接在项目根目录执行

1
python -m http.server --directory ./

就可以运行他们的无名杀服务器了。

这就是无名杀的本体了。然后我发现这样运行的本体是一个纯静态页面,所有计算都是在本地浏览器进行的。所以直接用nginx把这个静态页面反向代理出来,就已经可以在本地愉快地玩三国杀和AI对战了。

然而我们的目标是和小伙伴联机游戏,打开游戏的联机选项之后,发现需要输入联机服务器地址,于是猜测还需要运行一个联机服务器程序。

联机服务器

通过一番寻找,发现联机程序就是/game/server.js这个程序。运行

1
node ./game/server.js

就会在8080端口运行联机服务器。

这个联机服务器是运行在Websocket之上的,所以用nginx反向代理的话, 要支持Websocket。

联机地址

假设最终联机服务器地址是

1
sgs-server.example.com

且nginx反向代理之后暴露的端口是默认的443端口,那么在游戏界面要填入的联机服务器地址是

1
wss://sgs-server.example.com:443

虽然wss协议默认就是在443端口上的,但是上面这个:443是必不可少的,因为不然的话,无名杀会默认给你连到8080端口。(困扰了好久)

部署到Serverless

因为无名杀本体(去掉联机服务器)是一个纯静态页面,所以可以把它部署到注入Cloudflare Pages或者最新出的腾讯的Edgeone Pages等平台,从而节省(白嫖)带宽资源。需要注意的一点是,根目录下的noname-server.exe文件因为有80多mb的大小,太大了,在这些平台下会部署失败,所以要把它删掉。(别问我为什么他们代码里面会塞一个.exe文件)

如果是部署到CLoudflare Pages上的话,build command设置成rm noname-server.exe就好了。

部署到Edgeone Pages上的话,只能先在github的repo里把这个文件删掉。