1:准备环境,这里用ubuntu 22.04进行测试,安装环境后为了方便,换源。
注意:这里用的虚拟机,在虚拟机上生成地图信息,地图信息占用内存比较大,我暂时设置磁盘50G进行测试,后面研究细节。
ubuntu@ubuntu:~/res$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammy
2:参考文档了解:
https://trinitycore.info/en/install/requirements/linux
https://trinitycore.info/en/install/requirements/windows
3:开始安装环境-安装必备依赖
sudo apt-get update sudo apt-get install git clang cmake make gcc g++ libmysqlclient-dev libssl-dev libbz2-dev libreadline-dev libncurses-dev libboost-all-dev mysql-server-5.7 p7zip # 这里mysql-server-5.7 版本没有 我这里安装好mysql-server-8.0 sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100 sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang 100
4:开始安装
mkdir game cd game git clone -b 3.3.5 https://github.com/TrinityCore/TrinityCore.git mkdir build cd build cmake ../ -DCMAKE_INSTALL_PREFIX=/home/ubuntu/game -DCONF_DIR=/home/ubuntu/game/bin make -j2 make install #这里完了之后 会在/home/ubuntu/game/bin 目录中生成相关可执行文件,以及配置文件也在这 ubuntu@ubuntu:~/game/bin$ pwd /home/ubuntu/game/bin ubuntu@ubuntu:~/game/bin$ ll total 274160 drwxrwxr-x 2 ubuntu ubuntu 4096 Sep 9 16:38 ./ drwxrwxr-x 5 ubuntu ubuntu 4096 Sep 9 17:22 ../ -rwxr-xr-x 1 ubuntu ubuntu 16259744 Sep 9 16:28 authserver* -rw-r--r-- 1 ubuntu ubuntu 13897 Sep 9 16:10 authserver.conf.dist -rwxr-xr-x 1 ubuntu ubuntu 2810696 Sep 9 16:27 mapextractor* -rwxr-xr-x 1 ubuntu ubuntu 14319552 Sep 9 16:27 mmaps_generator* -rwxr-xr-x 1 ubuntu ubuntu 7811168 Sep 9 16:26 vmap4assembler* -rwxr-xr-x 1 ubuntu ubuntu 6700944 Sep 9 16:27 vmap4extractor* -rwxr-xr-x 1 ubuntu ubuntu 232656040 Sep 9 16:37 worldserver* -rw-r--r-- 1 ubuntu ubuntu 140889 Sep 9 16:10 worldserver.conf.dist #这里的文件 除了配置文件 就是生成地图的工具 以及启动游戏可执行文件 #authserver是认证服务,worldserver是世界服务也就是游戏的核心服
5:生成地图
上面已经编译出处理地图数据的可执行文件 mapextractor, vmap4extractor,vmap4assembler, mmaps_generator,执行后生成其他一些目录或者文件,是服务器需要的地图信息。
#1:首先从客户端中 把客户端安装目录下 Data和Interface 目录,拷贝到服务器上 这里拷贝到/home/ubuntu/res目录下 (这里的客户端自行下载 启动点击wow.exe) #2:处理地图的可执行文件 在/home/ubuntu/game/bin目录中 #3:在地图文件所在目录res目录下执行相关可执行文件,这里要用到Data和Interface 中数据,并且好大,快20G: ../game/bin/mapextractor ../game/bin/vmap4extractor ../game/bin/vmap4assembler ../game/bin/mmaps_generator #如果运行没有问题 生成如下相关文件: #这里的执行比较耗时,一到两个小时,以及这里需要的内存比较大,自己在虚拟机进行测试时,反复测试几次。 ubuntu@ubuntu:~/res$ ll total 1168 drwx--x--x 2 ubuntu ubuntu 311296 Sep 9 18:02 Buildings/ drwxrwxr-x 2 ubuntu ubuntu 4096 Sep 9 17:56 Cameras/ drwxrwxr-x 3 ubuntu ubuntu 4096 Sep 9 17:53 Data/ #主要地图数据 从客户端拷贝而来 drwxrwxr-x 2 ubuntu ubuntu 12288 Sep 9 17:56 dbc/ drwxrwxr-x 3 ubuntu ubuntu 4096 Sep 9 17:47 Interface/ #从客户端拷贝而来 drwxrwxr-x 2 ubuntu ubuntu 159744 Sep 9 17:58 maps/ drwxrwxr-x 2 ubuntu ubuntu 135168 Sep 10 03:11 mmaps/ drwxrwxr-x 2 ubuntu ubuntu 552960 Sep 9 18:05 vmaps/ #4:登录mysql,导入数据库, # 首先处理安装后设置mysql密码问题,不是本次核心。 # 简单重设mysql密码: sudo mysqladmin -u root -p password # 导入对应的数据 在TrinityCore源码目录下/sql/create/ # 可以查看数据库 生成的表 后续待了解相关结构 sudo mysql -uroot -p123456 mysql> source /home/ubuntu/game/TrinityCore/sql/create/create_mysql.sql #5:修改realmlist表中address 信息为本机ip地址。 select * from realmlist; select * from realmlist\G #纵向显示 update realmlist set address="192.168.40.130" where id = 1; #修改ip
注意:这里地图数据特别大,大约20G,比较耗费内存,这里我用虚拟机测试时,直接设置比较大的内存进行解决。
同时,df -h查看内存情况,参考https://zhuanlan.zhihu.com/p/359959580 可以实现磁盘内存扩展
6:开始运行
./worldserver #运行服务器 ./authserver #运行认证服务器 #第一次启动时与相关报错 ubuntu@ubuntu:~/game/bin$ ./worldserver TrinityCore rev. 79e2f77d4403 2023-09-01 12:15:17 +0200 (3.3.5 branch) (Unix, RelWithDebInfo, Static) (worldserver-daemon) ..... File "TDB_full_world_335.23061_2023_06_14.sql" is missing, download it from "https://github.com/TrinityCore/TrinityCore/releases" uncompress it and place the file "TDB_full_world_335.23061_2023_06_14.sql" in the directory "/home/ubuntu/game/bin". Could not populate the World database, see log for details. #按照提示进行处理 去https://github.com/TrinityCore/TrinityCore/releases 找到335.23061对应版本中 #下载对应de.7z 压缩包,用7zip进行解压后,获取到一个sql文件。 #把解压后的sql脚本拷贝到 worldserver 同级目录 TDB_full_world_335.23061_2023_06_14.sql ubuntu@ubuntu:~/game/bin$ pwd /home/ubuntu/game/bin ubuntu@ubuntu:~/game/bin$ ls Auth.log authserver.conf.dist mapextractor TDB_full_world_335.23061_2023_06_14.sql worldserver authserver DBErrors.log mmaps_generator vmap4assembler worldserver.conf authserver.conf GM.log Server.log vmap4extractor worldserver.conf.dist # 把该目录下的配置文件进行处理 cp authserver.conf.dist authserver.conf cp worldserver.conf.dist worldserver.conf #修改配置文件 在配置文件中设置地图信息位置 DataDir = "../../res" vi worldserver.conf #最终,分别启动真正服务器和认证服务器
7:测试运行
#启动./worldserver 后,设置一个用户名和密码,在客户端进行测试 TC> account create test1 1234 TC> Account created: test1 #在客户端,逍遥魔兽登录器.bat 脚本中,修改对应的服务端ip地址 这里改为对应的服务器ip 对应上面修改的数据库内部地址 if not exist "WTF" md "WTF" echo set realmlist 192.168.40.132>realmlist.WTF echo set realmlist 192.168.40.132>data/enGB/realmlist.WTF echo set realmlist 192.168.40.132>data/zhcn/realmlist.WTF start wow.exe goto end #启动该bat脚本,输入上面的用户名和密码 测试ok
太多的技术栈来源于零声学院,上班之余,又报了个游戏的课外进修,做此整理。