军 团 再 临

重要提示:

Special thanks:

非常感谢Bruce LiuIsaac Wang的鼎力支持,特别是在网络调试💻数据库修复🔏,以及资源查找🔎等诸多方面提供的帮助。

马泽拉斯

我们来到这个世界,无数冒险由此展开。

我们英勇抗击,那些威胁王国和平的敌人。

我们远征异域,将阴影与烈焰的魔王赶回深渊。

当死亡之潮即将吞噬一切之物时,是我们,守在前线。

我们经受了世界的崩坏,又将挑战灭世者,终结它的毁灭循环。

然而,我们所抗争的邪恶势力,并非轻易就能驱除,一切胜利果实,也并非轻易就能守护。

如今,它们又来了!!! 为啥是又???

军团再临

在德拉诺之战结束之后,凯旋的英雄们回到艾泽拉斯,发现暴雪又开始炒冷饭,狗二蛋和他的燃烧军团又回来了,军团再临的故事由此展开…

关键词

How To Play?

  • 注册账号

通过军团再临注册页面注册一个账号

  • 下载客户端

找一个7.3.5(26972)的游戏客户端

  • 修改服务器配置

默认目录是"C:\Program Files\World of Warcraft"。进入目录后,打开名为"WTF"的目录。打开Config.wtf文件,并更改内容为:set portal "www.majun.fun"

  • 登录游戏即可。

Bug的提交

可以通过在线bug提交:Legion 735任务问题汇总

技术分享

游戏固然好玩,但我们这是一个技术博客。如同开头的红字,

所以我们就分享一下在此搭建一个游戏服务器时会遇到的问题。

MySQL

数据库永远是一个产品的灵魂。在与数据库的交互过程中,我们或多或少会遇到一些有的没的的问题,比如:

MySQL环境

Could not find the MySQL libraries! Please install the development libraries and headers.

这个报错解决很简单,替换libmariadbclient-dev的安装包即可:

shell
sudo apt-get install libmariadb-client-lgpl-dev-compat

重置root账户密码

有些人会经常忘记root的密码,这个时候我们可以添加--skip-grant-tables来规避MySQL的验证机制:

  • 启用无需验证的MySQL服务:
shell
mysqld --default-file=my.cnf --console --standalone --skip-grant-tables
  • 登录MySQL
shell
mysql -u root -p
  • 刷新MySQL权限,这一步一定要做,否则仍会报权限错误:
shell
FLUSH PRIVILEGES;

MySQL权限

尽管我们已经使用了root账户登录,但是仍然会遇到类似于权限的报错:

'Access denied for user 'root'@'localhost' (using password: YES)'

我们需要更新一下root的权限,使用命令:

shell
GRANT ALL PRIVILEGES ON database_name.* TO 'root'@'localhost';
FLUSH PRIVILEGES;

MySQL触发器

在7.3.5的legion core中,暴雪引入了战网账号的概念,也就是bnetaccount。

在创建bnetaccount的时候,不会自动将bnetID关联到account的信息中,所以我们需要手动添加一个触发器来自动完成这个操作。 参考如下处理器逻辑:

shell

CREATE DEFINER=`root`@`localhost` TRIGGER `legion_auth`.`battlenet_accounts_AFTER_INSERT` AFTER INSERT ON `battlenet_accounts` FOR EACH ROW
BEGIN
insert into legion_auth.account (username,battlenet_account) values (new.email,new.id);
END

SWAP分区

我的服务器是Debian系统,因为《军团再临》内核版本的特殊性,它要求的openSSL版本和booster版本与Debian系统的版本有冲突,所以我不得不在虚拟机中单独运营legion core,这时候就需要用到Swap分区,也就是Windows中的虚拟内存。

左侧Memory为物理内存,右侧Swap为虚拟内存

我们不需要关心Linux内核如何分配或者调用Swap分区,只需要给一个较大的值(得益于现在廉价的内存和硬盘),保证我们的虚拟机能够流畅运行即可。

  • 检查Swap分区
shell
free -h
  • 关闭Swap文件
shell
sudo swapoff
  • 删除默认的Swap文件
shell
sudo rm -f /swapfile
  • 创建新的Swap文件,大小为4G
shell
dd if=/dev/zero of=/srv/swapfile bs=1M count=4096 status=progress
  • 赋予Swap文件权限
shell
chmod 0600 /srv/swapfile
  • 启用Swap文件
shell
swapon /srv/swapfile
  • 检查Swap文件
shell
swapon -s

输出结果:

FilenameTypeSizeUsedPriority
/srv/swapfilefile41943000-2

后记

当然,这些总结只是服务器的搭建过程中的冰山一角,我们或多或少会遇到各种各样的问题,但是我们有好朋友,所有问题都会迎刃而解。

下一站:


我搭了一个OpenVPN
Rclone云盘管理工具