前言
斗地主不一定非要打开游戏平台,Linux 终端里同样可以开一局。
Ratel 是一个基于 Java 的开源斗地主项目,包含服务端和客户端。把项目部署到 Linux 以后,可以启动一个独立的斗地主服务器,再通过客户端连接进去,既能和 AI 对战,也可以让其他玩家加入。整个游戏过程都在终端完成,出顺子、三带一、王炸或者 Pass,都有对应的文本命令。
本文会从 Ratel 的下载和编译开始,处理 Java、Maven 等运行环境,然后分别启动服务端和客户端,确认 1024 端口正常监听,并实际进入一局游戏测试出牌。
本地跑通以后,再继续解决多人联机的问题。通过 cpolar 给 Ratel 的 1024 端口建立 TCP 公网入口,其他电脑即使不在同一个局域网,也可以使用公网域名和端口连接到这台 Linux 服务器。临时测试可以使用随机 TCP 地址,如果准备长期保留这个游戏服务器,还可以继续配置固定 TCP 地址。
整篇文章其实就是做一件事:先把一套终端斗地主服务跑起来,再把原本只能局域网玩的牌局变成可以跨网络加入的多人房间。

1.在linux上部署ratel
Ratel 是一个基于 Netty 和 Spring Boot 的斗地主游戏后端。本文介绍如何在 Linux 系统上快速部署并运行 Ratel 服务,实现服务器启动与客户端连接,助你轻松搭建本地游戏环境。
1.1安装ratel
首先下载打包,确保本地安装有JRE环境:
shell
java --version
验证之后,打包下载:
git clone https://github.com/ainilili/ratel.git
部署完成后,切换到ratel目录:
shell
cd ratel

将项目编译、测试:
shell
mvn install package
发现没有mvn,安装:
shell
yum install -y maven

继续运行这个命令,发现没有找到java,瘦到查询java安装位置:
shell
readlink -f $(which java)

进入配置文件修改:
shell
vi /etc/profile
修改如下。

使配置文件生效:
shell
source /etc/profile
继续执行这个命令:
shell
mvn install package

部署完成后,可以启动啦!
1.2启动ratel
切换到以下目录:
shell
cd /root/ratel/landlords-server/target
输入以下命令,启动:
shell
java -jar landlords-server-1.4.0.jar -p 1024

显示以上信息就为成功啦!
在开一个终端,启动终端不要断,切换到这个目录下:
shell
cd /root/ratel/landlords-client/target
验证一下1024端口是否启动成功:
shell
netstat -tunlp | grep 1024
输入以下命令,连接:
shell
java -jar landlords-client-1.4.0.jar -p 1024 -h 192.168.42.140
(-h后面是你的ip地址,不要填错~)

如图则加入游戏成功,可以玩啦!
1.3斗地主摸鱼开始
这边显示连接成功:

启动终端就会有消息,有连入信息:

输入Nico:

我这里选择【2】与ai对抗,选择【2】以后选择模式,我选择【1】简单模式:

选择【1】后游戏就开始啦!

如图操作:


- 王炸:
sx - 顺子:
34567 - 三带一:
3334 - 飞机:
333444a2 - 单张10:
0或者t - 单张A:
a或者1 - 封顶顺子:
34567890jqka - 不想出牌:
pass或p - 退出:
exit或者e
一个人摸鱼哪够爽?独乐乐不如众乐乐!
现在,是时候拉上同事一起"协同办公"了。
接下来,我们用 cpolar 打通内网,让全组都能连上你的斗地主服务器------摸鱼,就要摸出团队精神
2.安装cpolar与同事一同摸鱼
cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
shell
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
shell
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://192.168.50.100:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

3.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理------创建隧道:
- 隧道名称:可自定义,本例使用了:ratel,注意不要与已有的隧道名称重复
- 协议:tcp
- 本地地址:192.168.42.140:1024
- 端口类型:随机临时TCP端口
- 地区:China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用任意一个地址在终端中访问即可。
- tcp 表示使用的协议类型
- 2.tcp.cpolar.top是 Cpolar 提供的域名
- 16749是随机分配的公网端口号

通过 Cpolar 提供的公网地址和端口,可以从任意一台主机连接到斗地主游戏!
连接成功!

4.保留固定TCP公网地址
使用cpolar为其配置TCP地址,该地址为固定地址,不会随机变化。

选择区域和描述:有一个下拉菜单,当前选择的是"China VIP"。
右侧输入框,用于填写描述信息。
保留按钮:在右侧有一个橙色的"保留"按钮,点击该按钮可以保留所选的TCP地址。
列表中显示了一条已保留的TCP地址记录。
-
地区:显示为"China Top"。
-
地址:显示为"27.tcp.cpolar.top:10156"。

修改隧道信息,将保留成功的TCP端口配置到隧道中。
- 端口类型:选择固定TCP端口
- 预留的TCP地址:填写保留成功的TCP地址
点击更新。

创建完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的TCP地址。

最后测试一下固定的地址是否可以连接:

结尾
Ratel 这套玩法最大的特点,就是够轻。服务端运行在 Linux 上,客户端通过终端连接,不需要复杂的图形环境,本地既可以直接和 AI 对战,也可以继续加入其他玩家。
通过 cpolar 给 1024 端口增加 TCP 公网入口以后,Ratel 的使用范围也从同一局域网扩展到了不同网络。随机地址适合临时开一局,固定 TCP 地址则更适合长期保留服务器。
它当然不能替代成熟的在线棋牌游戏,但作为一个 Java 网络通信、服务端部署和 TCP 联机的小项目,Ratel 反而很适合拿来边玩边理解客户端和服务端到底是怎么连起来的。