迷茫之鹰 发表于 2024-4-1 11:32:26

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

作者:雪风 转载自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的。https://picx.zhimg.com/80/v2-e4050d51b7868fcd1203d936fd9ccd87_720w.webp?source=1def8aca
https://pic1.zhimg.com/80/v2-5cc399b57aed8d100c140e1eb9a4dfa5_720w.webp?source=1def8aca
https://picx.zhimg.com/80/v2-75e71cd059ffd1a2f0535e4c0b489618_720w.webp?source=1def8aca
https://picx.zhimg.com/80/v2-fed89a2facf8ac19d0e790e81e9ab79e_720w.webp?source=1def8aca

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

BoostBoost推荐安装到默认位置(通常是 C:\local\boost_1_XX_0\),在“系统”变量中添加一个名为“BOOST_ROOT”的环境变量,其值为您的 Boost 安装目录,例如 "C:/local/boost_1_83_0"。重要的是使用斜杠 "/",而不是反斜杠 "\" 指向目录。(确保它没有尾随斜杠(路径的末尾)。https://picx.zhimg.com/80/v2-cd520793b2d8881dd4dc825b9b40487f_720w.webp?source=1def8aca

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-installationAzerothcore不像TrinityCore 有 3.3.5(巫妖王之怒)和 Master(魔兽世界最新版)二个分支,只有一个基于TC 3.3.5 版本的Master分支,所以直接Clone源码即可。拉取源代码使用git拉取源代码到本地:git clone https://github.com/azerothcore/azerothcore-wotlk.git因为源代码比较大,这对很多人是一个困难的工作,需要会魔法,这里如果卡住了且不会解决,请留言。https://picx.zhimg.com/80/v2-9e01e9d8ab74460a39b09a4185872cbf_720w.webp?source=1def8aca
https://pic1.zhimg.com/80/v2-660ac52be3371db0a4d496d9c02059a1_720w.webp?source=1def8aca

迷茫之鹰 发表于 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窗口中使用按钮,直接在VS中打开解决方案。
https://picx.zhimg.com/80/v2-1af0e7833ca8d793da9a1585e43493e3_720w.webp?source=1def8aca
https://picx.zhimg.com/80/v2-403e47e0831e675de167b5a4dd114761_720w.webp?source=1def8aca
https://pic1.zhimg.com/80/v2-418ee8a6f068e482662fc98476a391f1_720w.webp?source=1def8aca
https://pic1.zhimg.com/80/v2-1f1855833580fe078090b33f07fc9ecb_720w.webp?source=1def8aca
https://pica.zhimg.com/80/v2-37473d101f095db5bf44cbc1d74ad8f4_720w.webp?source=1def8aca

迷茫之鹰 发表于 2024-4-1 11:54:05

编译源码在 CMake 窗口中使用 按钮直接打开解决方案到 VS。在顶部的菜单上,把 Debug,修改为 Release。https://picx.zhimg.com/80/v2-968941b5ca239aa9927c9a9981c9ddb4_720w.webp?source=1def8aca
右键单击 ALL_BUILD,然后选择 生成。https://pic1.zhimg.com/80/v2-5d9a479c00b35f2752875eaa1d5df498_720w.webp?source=1def8aca
编译时间因计算机而异,您可以预期它在 5 到 30 分钟之间。如果在编译过程中被要求“Reload build files”,请执行此操作。当构建完成时,您将找到类似于下面的消息(数字可能不同)。========== Build: 22 succeeded, 0 failed, 0 up-to-date, 1 skipped ==========
https://picx.zhimg.com/80/v2-e99dd223890945d5149063710c8cbde8_720w.webp?source=1def8aca
你将在编译文件夹中找到新编译的二进制文件。这些文件最终将用于按照此说明运行服务器。https://picx.zhimg.com/80/v2-218109c9cb2222c763c005ae3b0de346_720w.webp?source=1def8aca
为了使核心正常运行,您需要以下文件:
[*]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 根文件夹中(与之前的文件一起)。https://pic1.zhimg.com/80/v2-f7465de3350296f9f6aec48885583503_720w.webp?source=1def8aca
步骤 3运行 "extractor.bat" 并选择您的提取选项。对于全新设置,应选择选项 4 - 提取全部。https://pic1.zhimg.com/80/v2-f445c982ef89baa8af616507c107b066_720w.webp?source=1def8aca
https://pica.zhimg.com/80/v2-cd02d38e50a571f097721064207be0eb_720w.webp?source=1def8aca
https://picx.zhimg.com/80/v2-990a9b88586a2c7a71d564f0bf8a4312_720w.webp?source=1def8aca
这需要的时间取决于工具构建的模式和可用 CPU 核心的数量,对于完全提取,根据硬件不同,可能需要从不到 15 分钟到数小时的时间。重要注意事项:
[*]dbc、maps 和 vmaps 是使服务器正常运行所必需的!
[*]不要尝试停止 vmaps 提取过程。当它打印 "Press any key..." 时,表示完成。它将创建两个新文件夹:buildings

步骤 4将 vmaps、maps、dbc、cameras和mmaps文件夹移到与 AzerothCore 二进制文件worldserver.exe相同的目录中。您也可以将它们放在其他地方,并在 worldserver.conf 中指向那里。https://picx.zhimg.com/80/v2-4a537135468d345f2cffd8d301728b14_720w.webp?source=1def8aca
https://picx.zhimg.com/80/v2-4e1a53e1b9274b40dec3e7aa4ab20031_720w.webp?source=1def8aca





迷茫之鹰 发表于 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 或管理员身份运行核心)。https://picx.zhimg.com/80/v2-1d068cf5b973cdc01512fdfec6077c54_720w.webp?source=1def8aca
提示:编辑这两个文件,将默认密码更改为其他内容以提高安全性(记得编辑配置文件以使用新密码)。默认情况下,AzerothCore 需要运行以下三个数据库:
[*]acore_auth - 包含帐户数据 - 用户名、密码、GM 访问、领域信息等。
[*]acore_characters - 包含角色数据 - 创建的角色、库存、银行物品、拍卖行、工单等。
[*]acore_world - 包含游戏体验内容,如NPC、任务、物体等。
https://picx.zhimg.com/80/v2-adac1e0d9653ae1f5d6ca537e3191c81_720w.webp?source=1def8aca
填充游戏数据库和TrinityCOre不同,AC不需要下载数据库,直接启动游戏服务器,会自动从源码中读取SQL文件更新数据库。启动 worldserver,当它询问是否要创建数据库时按 Enter 键。在完成此步骤之前,请不要启动您的 Authserver。
[*]如果出现错误,您可能想要检查 worldserver.conf 中的 mysql 登录凭据并阅读错误消息,因为它可能会告诉您该怎么做。
[*]您还可能已删除或移动了用于编译服务器的源文件夹。在这种情况下,您应该在 worldserver.conf 的“连接和目录”下设置名为 "SourceDirectory" 的设置,以指向您移动或下载的源文件夹。
服务器创建数据库后将查找 dbc 文件、maps、mmaps 和 vmaps,如果找不到,它将退出。 如果您在运行时更改了 reamlist 表,则需要重新启动服务器 authserver。https://pic1.zhimg.com/80/v2-6e7933e0eaa78bf2d8b8468fc8877be3_720w.webp?source=1def8aca
网络配置 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。https://picx.zhimg.com/80/v2-85b09b19b1141eef3d9d289ee42c2625_720w.webp?source=1def8acaa
创建登录账户接下来,通过直接在 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 领域应该可以选择。登录,创建一个角色,您就完成了!https://pica.zhimg.com/80/v2-e4325a352b80ec003b097fc093a172a6_720w.webp?source=1def8aca
# 要创建您的账户:输入: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指令

页: [1]
查看完整版本: 魔兽世界单机版开源的Azerothcore架设源码