天龙八部详细搭建教程(主要讲原理,能搭大部分服)
本帖最后由 h19990426 于 2025-12-19 15:54 编辑一、前言
玩了十年宝湾,今天牛马当完了,心血来潮摸摸鱼写个帖子吧,第一次发帖,用惯了markdown,富文本的编辑器还用不习惯,将就看吧。
二、简单声明
本教程仅供学习,切勿用作商业开服。
本教程适应大多数32位端,有些端虽然方式不一样,但了解了原理后是可以灵活运用的。
本教程默认你有基础的Linux知识,不会Linux的就别折腾了。
本教程默认使用 CentOS7.6、MySQL5.x
三、账号验证(billing)
1、介绍
就拿登录举例吧,登录过程的伪时序图大概是 客户端 -> 账号验证 -> Mysql -> 账号验证 -> 客户端 -> 选择角色
客户端发起一个账号验证请求,所以得有一个账号验证服务器,为什么会拆分成游戏服务器和账号验证服务器呢?估计是开发商想一个账号可以登录多个游戏,单点登录。
所以我们会发现许多一键端中,存在一个Windows机,这个Windows机上就启动了一个账号验证服务,也就是 billing ,这个软件之前应该是没有Linux版本的,
所以才用一个Windows来跑(我猜的),不过现在有Linux版本的了,所以其实我们是不需要Windows机了的,直接在Linux上启动一个billing来做账号验证就可以了。
2、操作
操作其实很简单,首先你得下载这个billing软件,访问GitHub库并下载(当前2025-12-19日最新版本,你可以下载最新版) Release v1.3.5 版本 · liuguangw/billing_go · GitHub ,
下载32位或64位的版本取决于你的Linux是多少位的。他是一个压缩包,使用命令解压(以64位为例):
tar -zxvf billing-release-x32.tar.gz到当前文件夹,cd进入解压的文件夹,会有一个配置文件config.yaml,内容大概是这样:
ip: 127.0.0.1
port: 12680
db_host: localhost
db_port: 3306
db_user: root
db_password: 'passwd'
db_name: web
allow_old_password: false
auto_reg: true
#allow_ips:
#- 127.0.0.1
#- 192.168.10.3
point_fix: 0
max_client_count: 500
pc_max_client_count: 3
# billing类型 0经典 1怀旧
bill_type: 0你需要根据你的环境来配置,如果你在的本地搭建了MySQL,那db_host地址可以填localhost/127.0.0.1,至于ip和port,是指你启动的billing服务在哪里,
如果你是本地启动,那么使用默认值就好。
启动billing服务,运行nohup命令后台启动:
nohup billing > log.log 2>&1 & # 将所有信息包括错误都重定向到标注输出到当前目录的 log.log 文件中或者:
nohup billing & # 如果不需要日志,可以重定向到 > /dev/null当然,其他命令也是可以的,不一定要用nohup,只要启动了就行。
这时候使用命令:
ss -tulnp就能看到一个12680的端口占用,证明账号验证启动正常。
四、服务端
1、服务端配置修改
现在billing验证启动成功了,我们就可以上传服务端的压缩文件,一般是 tlbb.tar.gz 文件,这个文件你可以从一键端上直接拷贝,
也可以下载别人提供的,如果从一键端上拷贝,那么文件夹在 /home/tlbb 目录下,为了统一,建议大家拷贝到自己的Linux上时,也放在 /home/tlbb
目录,使用命令压缩文件夹为压缩文件:
tar -zcvf tlbb.tar.gz ./tlbb然后下载刚压缩的文件并再上传到你自己的Linux中,使用命令解压:
tar -zxvf tlbb.tar.gz要改的地方基本上都在 tlbb/Server/Config 目录中,分别是:
ConfigInfo.ini 游戏基本配置
LoginInfo.ini 登录配置
ServerInfo.ini 服务器配置
ShareMemInfo.ini 共享内存配置
其中:
Ⅰ、ConfigInfo.ini
这个文件主要改(不是必须的,你可以不改,也能正常进游戏):
人物、心法最高等级(不重要的我省略了)
...
HumanMaxDefaultLevel=120 ; 人物最高等级,这里规定多少,能升级的等级就是这个等级 - 1,例如这里配置120,游戏里能升的最高等级是 119
XinfaMaxDefaultLevel=120 ; 心法也是一样的
...经验倍数(不重要的我省略了)
ExpParam=50 ; 游戏内多少倍经验,填多少就是多少倍,在不吃经验丹的情况下
...还有其他的配置,你们可以慢慢看,配置里面都写了注释了的。
Ⅱ、LoginInfo.ini
这里就必须得改了,主要改(不重要的我省略了):
...
DBIP=127.0.0.1 ; 你的MySQL数据库地址
DBPort=3306 ; MySQL端口
DBName=tlbbdb ; MySQL游戏数据库名,这个一般不用改,但是我遇到过把数据库名改为 tlbbdb2的,这里也要同步改
DBUser=root ; MySQL账号全部改成你的MySQL的信息
Ⅲ、ServerInfo.ini
这个文件关于服务器的端口部分的配置都不要动,只改IP。
还记得我们之前搭建的 billing 吗?在这里要将它配置进来了,有一部分:
Number=1
IP0=127.0.0.1 ; 我们启动 billing 时用的IP,如果 billing 在本地启动,那就填 127.0.0.1就行
Port0=12680 ; billing 用的端口,如果使用默认的话就是12680
...还要改:
...
IP0=127.0.0.1 ;其实这里填本地地址或外网地址都可以,不影响
...
...
IP0=127.0.0.1
...
Ⅳ、ShareMemInfo.ini
和上面的LoginInfo.ini一样的,改MySQL的配置就行:
DBIP=127.0.0.1
DBPort=3306
DBName=tlbbdb
DBUser=root
DBPassword=passwd
...
2、服务端环境
这一步非常重要,也是很多服务端跑不起来的原因,要安装几个依赖:
Ⅰ、unixODBC
ODBC其实就是程序用于连接数据库的基础驱动,但是由于天龙是老游戏,所以它依赖的odbc以及许多编译器、库都是旧的,
这也就是为什么我们要使用CentOS7.6这个老掉牙的系统的原因了,在这个系统上,有许多的库和游戏版本是兼容的,当然,
你也可以选择使用其他较新的系统,但是你得自己解决一些库太新导致不兼容的问题。
在安装ODBC前,你得检查你的服务端文件是多少位的(一般都是32位,但还是检查一下),可以检查 tlbb/Server/ShareMemory 或者
tlbb/Server/Server 文件,使用命令:
file ShareMemory如果输出的信息中带有 ELF 32-bit LSB executable 的字样,证明你的服务端是32位的,你需要安装32位的ODBC,运行:
yum update -y
yum install -y glibc.i686 libstdc++.i686
yum install -y unixODBC.i686即可安装32位的ODBC,安装完后,还要编辑odbc的配置文件 /etc/odbc.ini:
vi /etc/odbc.ini将内容:
Driver = /usr/lib/libmyodbc5w.so
Description = MyODBC 3.51 Driver DSN
SERVER = 127.0.0.1
PORT = 3306
USER = root
Password = passwd
Database = tlbbdb
OPTION = 3添加进去,其中,SERVER是你MySQL的地址,PORT是端口,USER账号,Password是密码,Database是游戏数据库。
Ⅱ、MySQL的ODBC驱动
上面我们安装的是基础的ODBC,还要安装MySQL的ODBC实现,当然,如果你使用的是Postgresql等其他数据库,就安装对应的ODBC实现。
在CentOS7.6上已经找不到MySQL5.X的ODBC实现驱动了,我们只能去MySQL的官网找驱动,索性我已经找到了,你们直接下载,地址:
https://cdn.mysql.com/archives/mysql-connector-odbc-5.1/mysql-connector-odbc-5.1.13-1.el6.i686.rpm如果下载太慢,就用华为的镜像地址:
https://mirrors.huaweicloud.com/mysql/Downloads/Connector-ODBC/5.1/mysql-connector-odbc-5.1.13-1.el6.i686.rpm下载好后,上传到Linux中,随便哪里都行,然后运行命令本地安装驱动:
yum localinstall -y mysql-connector-odbc-5.1.13-1.el6.i686.rpm这个命令会为我们自动解决安装所需依赖的。
安装完成后,可以检查一下 /etc/odbcinst.ini 配置文件内容(当然也可以不用管,安装驱动的时候自动为我们配置好了),检查MySQL所依赖的那些so库都存在。
在检查完没问题后,可以运行:
isql -v tlbbdb看看连接是否成功,如果成功的话,会显示:
isql -v tlbbdb
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help |
| quit |
| |
+---------------------------------------+
SQL>
Ⅲ、libodbc的软连接
在安装完签名两个驱动后,我们还要去检查一下libodbc.so.1的问题,去到 tlbb/Server 目录下,手动运行:
./ShareMemory如果报错:
./ShareMemory
./ShareMemory: error while loading shared libraries: libodbc.so.1: cannot open shared object file: No such file or directory那就运行命令创建软连接:
ln -s /usr/lib/libodbc.so.2 /usr/lib/libodbc.so.1这个命令的原理是将 libodbc.so.1 软链接到 lobodbc.so.2 上去,它是兼容的,再次运行 ./ShareMemory ,应该就能正常启动了,如果看到日志最后几句是:
PostInit FindFriendADSMU_11001 from databaseOk! (-147302656)(T0=2025-12-19_15:5:15 T1=0.3660)
Init Managers...OK! (-147302656)(T0=2025-12-19_15:5:15 T1=0.3660)
Loop...Start (-147302656)(T0=2025-12-19_15:5:15 T1=0.3660)证明启动没问题,使用快捷键 Ctrl + C 停止 ShareMemory,就可以去 tlbb 目录下,运行:
sh run.sh启动服务器了,如果启动脚本没报错,且运行:
ss -tulnp发现有./Login、./Server、./ShareMemory等关键程序的话,证明服务端启动成功。
如果还是报错跑不起来,+球球qun8_0_7_3_5_1_3_7_1找群主问问吧。
五、数据库
5.X版本的数据库在CentOS7.6上是无法直接通过yum命令安装的,所以我们还是要去MySQL官网下载,要下载两个rpm包,地址(都用华为镜像地址吧,下载快一点):
https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-5.1/MySQL-server-community-5.1.73-1.rhel5.x86_64.rpm然后运行:
yum localinstall -y MySQL-server-community-5.1.73-1.rhel5.x86_64.rpm
yum localinstall -y MySQL-client-community-5.1.73-1.rhel5.x86_64.rpm就可以了,yum会为我们自动解决缺失的依赖,安装完成后启动mysql:
systemctl start mysqld
systemctl enable mysqld
然后其他的初始化MySQL,修改root远程登陆等问题,网上一搜一大堆,我这里就不赘述了。
六、客户端
如果有登陆器,那么直接修改登陆器上的IP地址为你的Linux的外网地址,如果没有登陆器,可以修改客户端根目录下的Patch目录下的 loginserver.txt 文件,
将里面所有的IP地址都替换为你的Linux外网地址即可,记得别动端口
七、换端
现在这个问题已经变得很简单了,你只需要拷贝目标端的服务端文件,也就是 tlbb.tar.gz 到你的Linux中,解压,替换掉之前的tlbb,然后做第 四步的第1小步 修改服务端配置信息就行了,其他都不管。
八、免责声明(叠个甲)
再次重申,本教程仅供学习使用,请勿用作商业用途,请大家支持正版,抵制盗版(手动狗头)。
另外,推一下我的网游单机交流qun吧(主要是天龙),都是大家一起玩天龙的,没有商业性质,图一个一起玩开心,完全免费,服都是我搭的,服务器都是大家众筹买的。
球球qun号8_0_7_3_5_1_3_7_1,防止和谐去掉中间的下划线,我还会一些简单的修改例如商城等等,我现实生活中是搞Java开发的,不是专职搞这个的,所以懂得不多,大家可以交流一下,互相学习。
后续我心血来潮了可能回来修改这个教程,让他变得更详细也说不定呢,
搞Java的或者运维的可以来看看我的博客:
https://blog.csdn.net/m0_53928179?type=blog
7.6对于游戏来说也不算过于老掉牙吧:很多老游戏当初还是6.x和5.x才能跑呢: 感谢分享~~~~~~~~~~~~~ 谢谢分享 简直是看天书: 你字多,我顶下 学习,顶上 技术贴必须顶。
页:
[1]