ad208三国

 找回密码
 加入
搜索
热搜: 活动 交友 discuz
查看: 187|回复: 9

魔兽世界单机版开源的Azerothcore架设源码

[复制链接]
发表于 2024-4-1 11:32:26 | 显示全部楼层 |阅读模式

pc2g,电脑好游戏 作者:雪风 转载自https://www.zhihu.com/question/622748222/answer/3325764236

所以所有人都可以在自己电脑上架起单机版,所以如果需要单机版,也不用求什么推荐,直接用开源的源码自己架起来就好。
以前我发布过魔兽世界单机版服务端编译和运行教程,当时使用的是TrinityCore,而魔兽世界服务端除了TrinityCore(以下简称TC)还有Azerothcore(以下简称AC),AC和TC的区别是TC走在时代的前沿,一直在更新迭代,以技术研究为目的,支持3.3.5端和最新的10.0官方端(巨龙崛起),但因为更新迭代快,副作用是可能带来更多的BUG,需要更新修复的频率比较高,这对需要稳定运行游戏的用户不够友好,AC则是从TC3.3.5分支出来的一个服务端,基于TC但不追求新内容,而以修BUG和稳定为首要目的,更适合开服游戏,所以目前多数服务器都是基于AC的。





Azerothcore服务器的安装编译方式和TC基本一样,源码地址为:
https://github.com/azerothcore/azerothcore-wotlk
但和TC编译相比有二点需注意:
  • OpenSSL不支付3.1以上的版本,所以请下载Win64OpenSSL-3_0_12版
  • 数据库不需要单独下载,直接运行worldserver.exe


准备工作 https://www.azerothcore.org/wiki/windows-requirements
支持的Windows操作系统:Windows 10 1903 (19H1) 及其服务器版本(1903)及更高版本。

软件要求
Boost ≥ 1.78(建议使用最新稳定版本)http://www.boost.org/
MySQL ≥ 5.7(强烈推荐使用 8.0 版本)https://dev.mysql.com/downloads/mysql/8.0.html
OpenSSL ≥ 1.1.x(注意和TC不同,AC最高只能用3.0版本)http://www.slproweb.com/products/Win32OpenSSL.html
CMake ≥ 3.18.4(建议使用最新稳定版本)https://cmake.org/download/
MS Visual Studio(Community 版本)≥ 17.4(2022 年)(桌面版)(请勿使用预览版,需勾选使用 C++ 的桌面开发)
https://visualstudio.microsoft.com/downloads/

Git(服务端源码管理)https://git-scm.com/download/win
HeidiSQL(数据库管理工具)http://www.heidisql.com/download.php
 楼主| 发表于 2024-4-1 11:34:19 | 显示全部楼层
Boost
Boost推荐安装到默认位置(通常是 C:\local\boost_1_XX_0\),在“系统”变量中添加一个名为“BOOST_ROOT”的环境变量,其值为您的 Boost 安装目录,例如 "C:/local/boost_1_83_0"。重要的是使用斜杠 "/",而不是反斜杠 "\" 指向目录。(确保它没有尾随斜杠(路径的末尾)。


OpenSSL
下载64位版本,并根据您安装的 MySQL 版本,应选择不同的 OpenSSL 版本: - 对于 MySQL 8.0.34 及更新版本,请使用 OpenSSL v3.0.12。 - 对于 MySQL 8.0 到 8.0.33,请使用 OpenSSL v1.1.1


 楼主| 发表于 2024-4-1 11:51:18 | 显示全部楼层
源码(Azerothcore)编译
https://www.azerothcore.org/wiki/windows-core-installation
Azerothcore不像TrinityCore 有 3.3.5(巫妖王之怒)和 Master(魔兽世界最新版)二个分支,只有一个基于TC 3.3.5 版本的Master分支,所以直接Clone源码即可。
拉取源代码
使用git拉取源代码到本地:
git clone https://github.com/azerothcore/azerothcore-wotlk.git
因为源代码比较大,这对很多人是一个困难的工作,需要会魔法,这里如果卡住了且不会解决,请留言。


 楼主| 发表于 2024-4-1 11:52:17 | 显示全部楼层
配置和使用 CMake 生成 Visual C++ 解决方案
  • 点击“Browse Source...” -> 选择源目录(git clone的AC源码目录)
  • 点击“Browse Build...” -> 选择构建目录(亲建一个目录用来编译程序)
  • 点击“Configure”
  • 确保“Use default native compilers”被勾选(默认应该已勾选)。
  • 在下拉菜单中,选择在“所需软件”部分下载的编译器版本为"Visual Studio 17 2202"。
  • 点击“Finish”。
  • 确保“TOOLS_BUILD”选为all。这将编译稍后设置中需要的地图提取工具。
  • 再次点击“Configure”。只要在日志窗口中有以红色输入的错误,您就需要检查您的参数并再次点击它。
  • 点击“Generate”。这将安装所选的构建文件到您的Build文件夹中。
  • 在CMake窗口中使用按钮[Open Project],直接在VS中打开解决方案。





 楼主| 发表于 2024-4-1 11:54:05 | 显示全部楼层
编译源码
在 CMake 窗口中使用 [Open Project] 按钮直接打开解决方案到 VS。
在顶部的菜单上,把 Debug,修改为 Release。

右键单击 ALL_BUILD,然后选择 生成。

编译时间因计算机而异,您可以预期它在 5 到 30 分钟之间。如果在编译过程中被要求“Reload build files”,请执行此操作。当构建完成时,您将找到类似于下面的消息(数字可能不同)。
========== Build: 22 succeeded, 0 failed, 0 up-to-date, 1 skipped ==========

你将在编译文件夹中找到新编译的二进制文件。这些文件最终将用于按照此说明运行服务器。

为了使核心正常运行,您需要以下文件:
  • libmysql.dll
  • legacy.dll
  • libcrypto-3-x64.dll
  • libssl-3-x64.dll
这4个DLL文件需要复制到编译的服务端程序目录中,文件所在目录如下:
libmysql.dll 在 C:\Program Files\MySQL\MySQL Server 8.x\lib中,其它3个在C:\Program Files\OpenSSL-Win64\bin中。
请记得将configs目录中的 worldserver.conf.dist 重命名为 worldserver.conf,将 authserver.conf.dist重命名为 authserver.conf。



 楼主| 发表于 2024-4-1 11:54:48 | 显示全部楼层
Windows 服务器设置
https://www.azerothcore.org/wiki/windows-server-setup
步骤 1
进入 服务端程序所在\bin\Release文件夹,将下面信息框中显示的文件复制到您的World of Warcraft 根文件夹(Wow.exe 和 Data 文件夹所在位置)中:
mapextractor.exemmaps_generator.exevmap4extractor.exevmap4assembler.exe
3.3.5版中文客户端自己百度World-of-Warcraft-3.3.5a.12340-zhCN,或者可以从这里下载:
  • https://www.wowdl.net/client/World-of-Warcraft-3.3.5a.12340-zhCN (纯净版,少了巫妖王之怒相关动画文件,可以从其它端中补)
  • https://wwiw.lanzouy.com/iQwdt1efztch (包括多玩插件的三方端,可用)
  • https://www.123pan.com/s/4dCeVv-DnQAA.html (一样是三方端,可用)
步骤 2
进入AC源码 azerothcore-wotlk\apps\extractor 文件夹,将 extractor.bat 复制到您的 World of Warcraft 根文件夹中(与之前的文件一起)。

步骤 3
运行 "extractor.bat" 并选择您的提取选项。对于全新设置,应选择选项 4 - 提取全部。



这需要的时间取决于工具构建的模式和可用 CPU 核心的数量,对于完全提取,根据硬件不同,可能需要从不到 15 分钟到数小时的时间。
重要注意事项:
  • dbc、maps 和 vmaps 是使服务器正常运行所必需的!
  • 不要尝试停止 vmaps 提取过程。当它打印 "Press any key..." 时,表示完成。它将创建两个新文件夹:buildings

步骤 4
将 vmaps、maps、dbc、cameras和mmaps文件夹移到与 AzerothCore 二进制文件worldserver.exe相同的目录中。您也可以将它们放在其他地方,并在 worldserver.conf 中指向那里。







 楼主| 发表于 2024-4-1 11:55:47 | 显示全部楼层
作者:雪风
链接:https://www.zhihu.com/question/622748222/answer/3325764236
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

数据库安装
https://www.azerothcore.org/wiki/database-installation
在 MySQL 中创建数据库
要创建 AzerothCore 需要的 MySQL 数据库,您需要使用 mysql 客户端之一执行以下 MySQL 查询:
这个create_mysql.sql文件在azerothcore-wotlk\data\sql\create目录中。
DROP USER IF EXISTS 'acore'@'localhost';CREATE USER 'acore'@'localhost' IDENTIFIED BY 'acore' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;GRANT ALL PRIVILEGES ON * . * TO 'acore'@'localhost' WITH GRANT OPTION;CREATE DATABASE `acore_world` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;CREATE DATABASE `acore_characters` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;CREATE DATABASE `acore_auth` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;GRANT ALL PRIVILEGES ON `acore_world` . * TO 'acore'@'localhost' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON `acore_characters` . * TO 'acore'@'localhost' WITH GRANT OPTION;GRANT ALL PRIVILEGES ON `acore_auth` . * TO 'acore'@'localhost' WITH GRANT OPTION;
在运行核心之前,您需要使用 MySQL 客户端或 MySQL CLI 使用一个 MySQL root 帐户运行其中一个文件(仅使用 MySQL root 导入其中一个文件,绝不要以 root 或管理员身份运行核心)。

提示:编辑这两个文件,将默认密码更改为其他内容以提高安全性(记得编辑配置文件以使用新密码)。
默认情况下,AzerothCore 需要运行以下三个数据库:
  • acore_auth - 包含帐户数据 - 用户名、密码、GM 访问、领域信息等。
  • acore_characters - 包含角色数据 - 创建的角色、库存、银行物品、拍卖行、工单等。
  • acore_world - 包含游戏体验内容,如NPC、任务、物体等。

填充游戏数据库
和TrinityCOre不同,AC不需要下载数据库,直接启动游戏服务器,会自动从源码中读取SQL文件更新数据库。
启动 worldserver,当它询问是否要创建数据库时按 Enter 键。在完成此步骤之前,请不要启动您的 Authserver。
  • 如果出现错误,您可能想要检查 worldserver.conf 中的 mysql 登录凭据并阅读错误消息,因为它可能会告诉您该怎么做。
  • 您还可能已删除或移动了用于编译服务器的源文件夹。在这种情况下,您应该在 worldserver.conf 的“连接和目录”下设置名为 "SourceDirectory" 的设置,以指向您移动或下载的源文件夹。
服务器创建数据库后将查找 dbc 文件、maps、mmaps 和 vmaps,如果找不到,它将退出。
如果您在运行时更改了 reamlist 表,则需要重新启动服务器 authserver。

网络配置
https://www.azerothcore.org/wiki/networking
注意:如果是纯单机运行,请跳过此部分。
Worldserver 和 Authserver 配置
对于几乎所有基本设置方案,应该保持默认的本地主机(127.0.0.1)IP设置不变。默认的绑定 IP(0.0.0.0)也应该保持不变。
以便来自互联网的客户端能够找到您的服务器,您必须从您的路由器/防火墙转发或打开端口 3724 和 8085,如果计划拥有不同版本的服务器,则需要为其他版本使用不同的 worldserver 端口。
Realmlist 表
您需要确保您的 authserver / bnetserver



 楼主| 发表于 2024-4-1 11:56:18 | 显示全部楼层


启动服务器
https://www.azerothcore.org/wiki/final-server-steps
运行 Authserver
运行 authserver 以启动您的服务器。
提示:authserver 允许您输入用户名/密码以连接到领域(游戏服务器)选择屏幕,而 worldserver 允许您连接到领域(游戏服务器)本身。一旦您进入游戏,如果您不希望其他人连接到服务器,可以安全地关闭 authserver。
a
创建登录账户
接下来,通过直接在 worldserver 窗口中输入 GM 命令 account create来创建您的登录账户。语法如下:(见下面的示例)
如果您希望将账户设置为 GM,则在 worldserver 窗口中输入以下命令:account set gmlevel $account #level #realmid,其中 $account 是要更改的账户名,#level 可以是 0-3,#realmid 是领域 ID。将 #level 设置为 "3" 是 GM 账户级别(更高的数字表示更多权限),而 "-1" 是领域 ID,表示 "所有领域"。
打开数据库管理工具中的 world 数据库,找到 command 表。该表显示了所有 GM 命令及其描述和使用它们所需的安全性(GM 级别)。在其他地方,您不会找到更准确的当前 GM 命令列表(假设您保持数据库更新)。对于给定命令的安全级别标识了该 GM 级别可以使用该命令,以及所有在它上面的 GM 级别。例如,如果一个命令的安全级别为 2,那么所有 GM 级别为 2、3 和 4 的账户都可以使用它。有关更详细的信息,请参阅 GM 命令页面。
最小化您的服务器并运行 WoW(除非您编辑了上面的 realmlist.wtf 的 patchlist 选项,否则不要使用启动器运行 WoW)。 使用您刚刚创建的用户名/密码登录。 AzerothCore 领域应该可以选择。登录,创建一个角色,您就完成了!

# 要创建您的账户:输入:account create示例:account create test test# 要设置您的账户级别:输入:account set gmlevel 3 -1示例:account set gmlevel test 3 -1# 登录到您的账户:通过自定义客户端启动器登录(未提供):用户名:test密码:test




 楼主| 发表于 2024-4-1 11:57:12 | 显示全部楼层

客户端设置
打开位于您的 World of Warcraft\Data\zhCN 文件夹内的 realmlist.wtf 文件。realmlist.wtf 文件中的 IP 应该与您在上面的 realmlist 表中输入的 IP 地址完全相同。
将第一行更改为:set realmlist 实际上在 realmlist 表中使用的 IP 地址
示例:set realmlist 127.0.0.1
(可选)如果您希望使用 WoW Launcher.exe 运行客户端,则必须将 set patchlist 更改为与您的 realmlist 相同的 IP/dns 名称。
或者直接在WTF目录下改Config.wtf文件,参考如下:
SET locale "zhCN"SET realmList "127.0.0.1"SET hwDetect "0"SET gxRefresh "144"SET gxMultisampleQuality "0.000000"SET gxFixLag "0"SET videoOptionsVersion "3"SET movie "0"SET Gamma "1.000000"SET readTOS "1"SET readEULA "1"SET showToolsUI "1"SET Sound_OutputDriverName "System Default"SET Sound_MusicVolume "0.40000000596046"SET Sound_AmbienceVolume "0.60000002384186"SET farclip "397"SET specular "1"SET groundEffectDensity "24"SET projectedTextures "1"SET mouseSpeed "1"SET accounttype "LK"SET Sound_EnableReverb "1"SET Sound_EnableSoftwareHRTF "1"SET Sound_EnableHardware "1"SET realmName "Trinity"SET gxResolution "3840x2160"SET gameTip "1"



 楼主| 发表于 2024-4-1 11:57:44 | 显示全部楼层


注意事项
可以编辑worldserver.conf修改游戏的经验倍率等全局数据,以下是部分重要设置:
##    CharactersPerAccount#        Description: Limit number of characters per account on all realms on this realmlist.#        Important:   Number must be >= CharactersPerRealm#        Default:     50CharactersPerAccount = 50##    CharactersPerRealm#        Description: Limit number of characters per account on this realm.#        Range:       1-10#        Default:     10 - (Client limitation)CharactersPerRealm = 10##    HeroicCharactersPerRealm#        Description: Limit number of heroic class characters per account on this realm.#        Range:       1-10#        Default:     1HeroicCharactersPerRealm = 1##    CharacterCreating.MinLevelForHeroicCharacter#        Description: Limit creating heroic characters only for account with another#                     character of specific level (ignored for GM accounts)#        Default:     55 - (Enabled, Requires at least another level 55 character)#                     0  - (Disabled)#                     1  - (Enabled, Requires at least another level 1 character)CharacterCreating.MinLevelForHeroicCharacter = 55##    StartPlayerLevel#        Description: Starting level for characters after creation.#        Range:       1-MaxPlayerLevel#        Default:     1StartPlayerLevel = 1##    StartHeroicPlayerLevel#        Description: Staring level for heroic class characters after creation.#        Range:       1-MaxPlayerLevel#        Default:     55StartHeroicPlayerLevel = 55##    SkipCinematics#        Description: Disable cinematic intro at first login after character creation.#                     Prevents buggy intros in case of custom start location coordinates.#        Default:     0 - (Show intro for each new character)#                     1 - (Show intro only for first character of selected race)#                     2 - (Disable intro for all classes)SkipCinematics = 0##    StartPlayerMoney#        Description: Amount of money (in Copper) that a character has after creation.#        Default:     0#                     100 - (1 Silver)StartPlayerMoney = 0##    StartHeroicPlayerMoney#        Description: Amount of money (in Copper) that heroic class characters have after creation.#        Default:     2000#                     2000 - (20 Silver)StartHeroicPlayerMoney = 2000##     PlayerStart.String#        Description: String to be displayed at first login of newly created characters.#         Default:    "" - (Disabled)PlayerStart.String = ""##    MaxPlayerLevel#        Description: Maximum level that can be reached by players.#        Important:   Levels beyond 100 are not recommended at all.#        Range:       1-255#        Default:     80MaxPlayerLevel = 80##    Rate.XP.Kill#    Rate.XP.Quest#    Rate.XP.Explore#    Rate.XP.Pet#        Description: Experience rates (outside battleground)#        Default:     1 - (Rate.XP.Kill)#                     1 - (Rate.XP.Quest)#                     1 - (Rate.XP.Quest.DF) - Dungeon Finder/LFG quests only.#                     1 - (Rate.XP.Explore)#                     1 - (Rate.XP.Pet)Rate.XP.Kill      = 1Rate.XP.Quest     = 1Rate.XP.Quest.DF  = 1Rate.XP.Explore   = 1Rate.XP.Pet       = 1##    Rate.Drop.Item.Poor#    Rate.Drop.Item.Normal#    Rate.Drop.Item.Uncommon#    Rate.Drop.Item.Rare#    Rate.Drop.Item.Epic#    Rate.Drop.Item.Legendary#    Rate.Drop.Item.Artifact#    Rate.Drop.Item.Referenced#    Rate.Drop.Money#        Description: Drop rates for money and items based on quality.#        Default:     1 - (Rate.Drop.Item.Poor)#                     1 - (Rate.Drop.Item.Normal)#                     1 - (Rate.Drop.Item.Uncommon)#                     1 - (Rate.Drop.Item.Rare)#                     1 - (Rate.Drop.Item.Epic)#                     1 - (Rate.Drop.Item.Legendary)#                     1 - (Rate.Drop.Item.Artifact)#                     1 - (Rate.Drop.Item.Referenced)#                     1 - (Rate.Drop.Money)Rate.Drop.Item.Poor             = 1Rate.Drop.Item.Normal           = 1Rate.Drop.Item.Uncommon         = 1Rate.Drop.Item.Rare             = 1Rate.Drop.Item.Epic             = 1Rate.Drop.Item.Legendary        = 1Rate.Drop.Item.Artifact         = 1Rate.Drop.Item.Referenced       = 1Rate.Drop.Money                 = 1
GM指令

Archiver|手机版|小黑屋|ad208三国

GMT+8, 2024-5-2 13:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表