开源魔兽世界服务器everwar搭建

魔兽世界私服架设教程——如何搭建魔兽世界私服 注意其中Git、MySYSGit和KDiff这三个软件必须全部安装,安装Git的时候,在路径选择那里选择“RunGit from the Windows Command Prompt”。安装到默认路径(C:\local\boost_1_XX_0),然后添加一个名为“BOOST_ROOT”的环境变量到你的安装路径,比如“C:/local/boost_1_60_0”。3)MySQL Workbench(MySQL官方出品,个人感觉使用起来不太友好,但是是唯一可以建立模型的软件)OpenSSL版本为1.0.x。 阅读详情

本文档是原创的,具有可操作性,不是网络上互相抄袭的博客。

觉得有用就赞一个。

项目官网: http://everwar.cn

同名原创文章(界面样式更简洁一些):

开源魔兽世界私服搭建 - 狂奔的骆驼 - 博客园

一、背景

60魔兽经典旧世是最经典的版本,遗憾的是60年代时还在大学读书,穷得很,买不起点卡,后来工作了,大概70年代开始玩的。

多年以前,玩游戏时,一直非常期望能够自己控制角色的属性级别,得到各种装备。

多年以后,在这款纯粹的开源服务器问世后,终于如愿以偿。

直到如今,都2023年了,魔兽世界游戏的服务端源码项目在开源界依然非常活跃。

让我们重温经典吧。

二、demo

客户端下载wow-1.12.3版本,只需要修改一处配置文件realmlist.wtf

SET realmlist wow.whyalive.org

指向上面的服务器地址即可。


测试帐号:
test1/123
wow/123

如果你懒得DIY自行编译安装,可以用上面给的demo账号和环境,下载客户端,修改配置文件,就可以登录游戏了。

三、客户端

魔兽世界经典旧世客户端1.12.3下载地址:

https://pan.baidu.com/s/1BgIYpZEmfTiAmeD_lMB1Sg

四、服务器端

下面的编译安装过程比较多,但我已经尽可能完整的整理出来。基本上没有疏漏。

说明:
由于资金和时间精力的关系,本人最近几个月暂时没有时间发布支持CentOS7.x的版本
但我把我之前基于CentOS6.5的版本的详细的编译过程发布成这个文档,
另外把编译后的安装版本发布并上传到本开源项目的release1版本里。

https://github.com/geektcp/Namjagbarwa-wow/releases/tag/1.0


有兴趣的高手可以直接用这个release版本,
也可以参考本文档自行编译基于CentOS6.X或者CentOS7.x的版本。

计划:
感谢各位的star,支持和关注,接下来这个项目也会进行持续的更新,大家可以留意动态。
2023年会发布一个新版本,基于CentOS7.x的版本,并部署到公网,到时候方便大家直接使用。


 

1、编译服务端有版本要求

envversion
osCentOS 6.5
Namjagbarwa-wowmaster
gcc4.9.3
cmake3.5
boost1.60
dbc and map1.12.3
wow client1.12.3
 

2、升级cmake

mkdir -p /usr/local/src/wow/
cd /usr/local/src/wow/
wget --no-check-certificate \
https://cmake.org/files/v3.5/cmake-3.5.2.tar.gz
tar -zxvf cmake-3.5.2.tar.gz
cd cmake-3.5.2
./configure --prefix=/usr/local/cmake-3.5.2
make -j16
make install

3、升级GCC

yum -y install glibc-devel.i686
tar -jxvf gcc-4.8.2.tar.bz2
cd gcc-4.8.2
./contrib/download_prerequisites
mkdir build
cd build
../configure --prefix=/usr/local/gcc-4.8.2
make -j16
make install

4、安装boost

在centos6.5上用yum安装的boost版本太低,必须重新编译安装。

最好直接安装在默认路径。

wget http://netcologne.dl.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.bz2
tar -jxvf boost_1_60_0.tar.bz2
cd boost_1_60_0
./bootstrap.sh
./b2
./b2 install

5、编译安装

先下载源码,
然后开始编译并安装(必须要指定环境变量LD_LIBRARY_PATH为新版本g++的库):

cd /usr/local/src/wow/
git clone https://github.com/geektcp/elf-wow.git

export LD_LIBRARY_PATH=/usr/local/gcc-4.9.3/lib64/
export BASE_DIR=/usr/local/wow_mangos_bot_2017.10.2
mkdir -p /usr/local/src/wow/ClassicWOW/build/  &&
rm -rf /usr/local/src/wow/ClassicWOW/build/*  &&
cd /usr/local/src/wow/ClassicWOW/build &&
/usr/local/cmake-3.5.2/bin/cmake ../ \
-DCMAKE_INSTALL_PREFIX=$BASE_DIR  \
-DCONF_DIR=$BASE_DIR/etc \
-DPCH=1 \
-DDEBUG=0 \
-DCMAKE_C_COMPILER=/usr/local/gcc-4.9.3/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/local/gcc-4.9.3/bin/g++ &&
time make -j16 &&
make install &&
chown -R wow.wow -R $BASE_DIR

6、地图文件生成

服务端部署时必须的map文件包括maps,mmaps,vmaps,dbc四个部分。

每个文件夹下面有大量地图文件。这些地图文件含有艾泽拉斯世界的各个地图的信息。非常关键。

这些地图文件是从哪里来的呢?

答案是:从客户端的安装文件里面的抽取出来的。

抽取方式,先从服务器端的源码里面找到如下目录:

https://github.com/geektcp/Namjagbarwa-wow/contrib/extractor_binary

ls ./contrib/extractor_binary

ad.exe

ExtractResources.sh

MoveMapGen.exe

MoveMapGen.sh

offmesh.txt

README.txt

vmap_assembler.exe

vmapExtractor.exe

注意上面这几个exe文件,只有我用的这个版本才有,最新的cmangos-classic没有对应的可执行文件,而这几个可执行文件是用来生成map文件的,而服务器端启动时必须依赖map文件。

网上找到的下载1.12版本的map文件很难找到,没有下载地址,有也是无效的链接,或者下载下来不能用的。

有个简单的办法,其实这些完整的map文件其实我已经导出来了,和第一个release版本一起发布的。也是这个地址,直接用即可。

https://github.com/geektcp/Namjagbarwa-wow/releases/tag/1.0

如果要自行导出map文件将上面的exe文件都拷贝windows环境的wow客户端下,跟wow.exe同一级目录

然后依次直接按如下步骤运行:

1、生成dbc和maps文件

ad.exe

2、创建vmaps空文件夹并生成文件

md vmaps

vmap_assembler.exe Buildings vmaps

3、创建mmpas文件夹并生成文件,这一步可能要很久,一两个小时。

md mmaps

MoveMapGen.exe

最后,如过不想一步一步完成,可以使用批处理(写入到generateMap.bat文件中):

ad.exe

md vmaps

vmap_assembler.exe Buildings vmaps

md mmaps

MoveMapGen.exe

7、数据库初始化

wow mangos classic经典版本的数据库数据来源于:

/usr/local/src/wow/mangos-classic/sql

另一部分存在于源码目录下:

git clone git://github.com/cmangos/classic-db.git

创建数据库账号:

grant all on *.* to mangos@'%' IDENTIFIED by 'mangos';

创建wow数据库:

CREATE DATABASE `mangos` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `characters` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE `realmd` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

然后进入源码目录下的sql目录:

导入对应的sql到对应的数据库:

git clone  https://github.com/cmangos/mangos-classic/tree/master/sql/base

ls cmangos/mangos-classic/tree/master/sql/base

characters.sql  mangos.sql  realmd.sql

8、配置文件

mangosd.conf的关键配置项如下:

# 监听端口
WorldServerPort = 8085

# 监听网卡IP
BindIP = "0.0.0.0"

# 是否启用控制台
Console.Enable = 0

# 日志级别
LogLevel = 1

另外还有数据库连接方式的参数:

LoginDatabaseInfo     = "10.10.10.10;3310;mangos;mangos;realmd"
WorldDatabaseInfo     = "10.10.10.10;3310;mangos;mangos;mangos"
CharacterDatabaseInfo = "10.10.10.10;3310;mangos;mangos;characters"

标准可用的配置文件如下:

cat /usr/local/wow_mangos/etc/mangosd.conf |grep -v ^# |grep -v ^$ 

[MangosdConf]

ConfVersion=2015090801

RealmID = 1

DataDir = "/usr/local/wow_mangos/data/"

LogsDir = "/usr/local/wow_mangos/logs/"

LoginDatabaseInfo     = "10.10.10.10;3310;mangos;mangos;realmd"

WorldDatabaseInfo     = "10.10.10.10;3310;mangos;mangos;mangos"

CharacterDatabaseInfo = "10.10.10.10;3310;mangos;mangos;characters"

LoginDatabaseConnections = 1

WorldDatabaseConnections = 1

CharacterDatabaseConnections = 1

MaxPingTime = 30

WorldServerPort = 8085

BindIP = "0.0.0.0"

SD2ErrorLogFile = "SD2Errors.log"

UseProcessors = 0

ProcessPriority = 1

Compression = 1

PlayerLimit = 100

SaveRespawnTimeImmediately = 1

MaxOverspeedPings = 2

GridUnload = 1

LoadAllGridsOnMaps = ""

GridCleanUpDelay = 300000

MapUpdateInterval = 100

ChangeWeatherInterval = 600000

PlayerSave.Interval = 900000

PlayerSave.Stats.MinLevel = 0

PlayerSave.Stats.SaveOnlyOnLogout = 1

vmap.enableLOS = 1

vmap.enableHeight = 1

vmap.ignoreSpellIds = "7720"

vmap.enableIndoorCheck = 1

DetectPosCollision = 1

TargetPosRecalculateRange = 1.5

mmap.enabled = 1

mmap.ignoreMapIds = ""

UpdateUptimeInterval = 10

MaxCoreStuckTime = 0

AddonChannel = 1

CleanCharacterDB = 1

LogSQL = 1

PidFile = ""

LogLevel = 1

LogTime = 0

LogFile = "Server.log"

LogTimestamp = 0

LogFileLevel = 0

LogFilter_TransportMoves = 1

LogFilter_CreatureMoves = 1

LogFilter_VisibilityChanges = 1

LogFilter_Weather = 1

LogFilter_DbStrictedCheck = 1

LogFilter_Pathfinding = 1

LogFilter_MapsLoading = 1

LogFilter_EventAiDev = 1

LogFilter_PeriodicAffects = 0

LogFilter_PlayerMoves = 1

LogFilter_SQLText = 1

LogFilter_AIAndMovegens = 0

LogFilter_PlayerStats = 0

LogFilter_Damage = 0

LogFilter_Combat = 0

LogFilter_SpellCast = 0

WorldLogFile = ""

WorldLogTimestamp = 0

DBErrorLogFile = "DBErrors.log"

EventAIErrorLogFile = "EventAIErrors.log"

CharLogFile = "Char.log"

CharLogTimestamp = 0

CharLogDump = 0

GmLogFile = ""

GmLogTimestamp = 0

GmLogPerAccount = 0

RaLogFile = ""

LogColors = ""

GameType = 1

RealmZone = 1

DBC.Locale = 255

DeclinedNames = 0

StrictPlayerNames = 0

StrictCharterNames = 0

StrictPetNames = 0

MinPlayerName = 2

MinCharterName = 2

MinPetName = 2

CharactersCreatingDisabled = 0

CharactersPerAccount = 50

CharactersPerRealm = 10

SkipCinematics = 0

MaxPlayerLevel = 60

StartPlayerLevel = 1

StartPlayerMoney = 0

MaxHonorPoints = 75000

StartHonorPoints = 0

MinHonorKills = 15

MaintenanceDay = 3

InstantLogout = 1

AllFlightPaths = 0

AlwaysMaxSkillForLevel = 0

ActivateWeather = 1

CastUnstuck = 1

MaxSpellCastsInChain = 20

RabbitDay = 0

Instance.IgnoreLevel = 0

Instance.IgnoreRaid = 0

Instance.ResetTimeHour = 4

Instance.UnloadDelay = 1800000

Quests.LowLevelHideDiff = 4

Quests.HighLevelHideDiff = 7

Quests.IgnoreRaid = 0

Guild.EventLogRecordsCount = 100

TimerBar.Fatigue.GMLevel = 4

TimerBar.Fatigue.Max = 60

TimerBar.Breath.GMLevel = 4

TimerBar.Breath.Max = 60

TimerBar.Fire.GMLevel = 4

TimerBar.Fire.Max = 1

MaxPrimaryTradeSkill = 2

TradeSkill.GMIgnore.MaxPrimarySkillsCount = 4

TradeSkill.GMIgnore.Level = 4

TradeSkill.GMIgnore.Skill = 4

MinPetitionSigns = 9

MaxGroupXPDistance = 74

MailDeliveryDelay = 3600

MassMailer.SendPerTick = 10

PetUnsummonAtMount = 0

Event.Announce = 0

BeepAtStart = 1

ShowProgressBars = 0

WaitAtStartupError = 0

Motd = "Welcome to the Continued Massive Network Game Object Server."

PlayerCommands = 1

AllowTwoSide.Accounts = 0

AllowTwoSide.Interaction.Chat = 0

AllowTwoSide.Interaction.Channel = 0

AllowTwoSide.Interaction.Group = 0

AllowTwoSide.Interaction.Guild = 0

AllowTwoSide.Interaction.Trade = 0

AllowTwoSide.Interaction.Auction = 0

AllowTwoSide.Interaction.Mail = 0

AllowTwoSide.WhoList = 0

AllowTwoSide.AddFriend = 0

TalentsInspecting = 1

ThreatRadius = 100

Rate.Creature.Aggro = 1

CreatureRespawnAggroDelay = 5000

CreatureFamilyFleeAssistanceRadius = 30

CreatureFamilyAssistanceRadius = 10

CreatureFamilyAssistanceDelay = 1500

CreatureFamilyFleeDelay = 7000

WorldBossLevelDiff = 3

Corpse.EmptyLootShow = 1

Corpse.Decay.NORMAL = 300

Corpse.Decay.RARE = 900

Corpse.Decay.ELITE = 600

Corpse.Decay.RAREELITE = 1200

Corpse.Decay.WORLDBOSS = 3600

Rate.Corpse.Decay.Looted = 0.0

Rate.Creature.Normal.Damage = 1

Rate.Creature.Elite.Elite.Damage = 1

Rate.Creature.Elite.RAREELITE.Damage = 1

Rate.Creature.Elite.WORLDBOSS.Damage = 1

Rate.Creature.Elite.RARE.Damage = 1

Rate.Creature.Normal.SpellDamage = 1

Rate.Creature.Elite.Elite.SpellDamage = 1

Rate.Creature.Elite.RAREELITE.SpellDamage = 1

Rate.Creature.Elite.WORLDBOSS.SpellDamage = 1

Rate.Creature.Elite.RARE.SpellDamage = 1

Rate.Creature.Normal.HP = 1

Rate.Creature.Elite.Elite.HP = 1

Rate.Creature.Elite.RAREELITE.HP = 1

Rate.Creature.Elite.WORLDBOSS.HP = 1

Rate.Creature.Elite.RARE.HP = 1

ListenRange.Say = 40

ListenRange.TextEmote = 40

ListenRange.Yell = 300

GuidReserveSize.Creature = 100

GuidReserveSize.GameObject = 100

ChatFakeMessagePreventing = 0

ChatStrictLinkChecking.Severity = 0

ChatStrictLinkChecking.Kick = 0

ChatFlood.MessageCount = 10

ChatFlood.MessageDelay = 1

ChatFlood.MuteTime = 10

Channel.SilentlyGMJoin = 0

GM.LoginState            = 2

GM.Visible               = 2

GM.AcceptTickets         = 2

GM.Chat                  = 2

GM.WhisperingTo          = 2

GM.InGMList.Level        = 3

GM.InWhoList.Level       = 3

GM.LogTrade              = 1

GM.StartLevel            = 1

GM.LowerSecurity         = 0

GM.InvisibleAura         = 31748

Visibility.GroupMode = 0

Visibility.Distance.Continents    = 90

Visibility.Distance.Instances     = 120

Visibility.Distance.BG            = 180

Visibility.Distance.InFlight      = 100

Visibility.Distance.Grey.Unit   = 1

Visibility.Distance.Grey.Object = 10

Visibility.RelocationLowerLimit    = 10

Visibility.AIRelocationNotifyDelay = 1000

Rate.Health = 1

Rate.Mana = 1

Rate.Rage.Income = 1

Rate.Rage.Loss = 1

Rate.Focus = 1

Rate.Loyalty = 1

Rate.Energy = 1

Rate.Skill.Discovery = 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 = 1

Rate.XP.Kill    = 1

Rate.XP.Quest   = 1

Rate.XP.Explore = 1

Rate.Rest.InGame = 1

Rate.Rest.Offline.InTavernOrCity = 1

Rate.Rest.Offline.InWilderness = 1

Rate.Damage.Fall = 1

Rate.Auction.Time = 1

Rate.Auction.Deposit = 1

Rate.Auction.Cut = 1

Auction.Deposit.Min = 0

Rate.Honor = 1

Rate.Mining.Amount = 1

Rate.Mining.Next   = 1

Rate.Talent = 1

Rate.Reputation.Gain = 1

Rate.Reputation.LowLevel.Kill    = 0.2

Rate.Reputation.LowLevel.Quest   = 1

Rate.InstanceResetTime = 1

SkillGain.Crafting = 1

SkillGain.Defense = 1

SkillGain.Gathering = 1

SkillGain.Weapon = 1

SkillChance.Orange = 100

SkillChance.Yellow = 75

SkillChance.Green  = 25

SkillChance.Grey   = 0

SkillChance.MiningSteps   = 0

SkillChance.SkinningSteps = 0

SkillFail.Loot.Fishing = 0

SkillFail.Gain.Fishing = 0

SkillFail.Possible.FishingPool = 1

DurabilityLossChance.Damage = 0.5

DurabilityLossChance.Absorb = 0.5

DurabilityLossChance.Parry  = 0.05

DurabilityLossChance.Block  = 0.05

Death.SicknessLevel = 11

Death.CorpseReclaimDelay.PvP = 1

Death.CorpseReclaimDelay.PvE = 1

Death.Bones.World = 1

Death.Bones.Battleground = 1

Death.Ghost.RunSpeed.World = 1.0

Death.Ghost.RunSpeed.Battleground = 1.0

Battleground.CastDeserter = 1

Battleground.QueueAnnouncer.Join = 0

Battleground.QueueAnnouncer.Start = 0

Battleground.ScoreStatistics = 0

Battleground.InvitationType = 0

BattleGround.PrematureFinishTimer = 300000

BattleGround.PremadeGroupWaitForMatch = 0

OutdoorPvp.SIEnabled = 1

OutdoorPvp.EPEnabled = 1

Network.Threads = 1

Network.OutKBuff = -1

Network.OutUBuff = 65536

Network.TcpNodelay = 1

Network.KickOnBadPacket = 0

Console.Enable = 0

Ra.Enable = 0

Ra.IP = 0.0.0.0

Ra.Port = 3443

Ra.MinLevel = 3

Ra.Secure = 1

Ra.Stricted = 1

SOAP.Enabled = 0

SOAP.IP = 10.10.10.10

SOAP.Port = 7878

CharDelete.Method = 0

CharDelete.MinLevel = 0

CharDelete.KeepDays = 30

cat /usr/local/wow_mangos/etc/realmd.conf |grep -v ^# |grep -v ^$ 

[RealmdConf]

ConfVersion=2010062001

LoginDatabaseInfo = "10.10.10.10;3310;mangos;mangos;realmd"

LogsDir = ""

MaxPingTime = 30

RealmServerPort = 3724

BindIP = "0.0.0.0"

PidFile = ""

LogLevel = 0

LogTime = 0

LogFile = "Realmd.log"

LogTimestamp = 0

LogFileLevel = 0

LogColors = ""

UseProcessors = 0

ProcessPriority = 1

WaitAtStartupError = 0

RealmsStateUpdateDelay = 20

WrongPass.MaxCount = 0

WrongPass.BanTime = 600

WrongPass.BanType = 0

9、启动服务器

cat /usr/local/wow_mangos/bin/startup.sh

启动脚本内容如下:

#!/bin/sh
# usage : sh shutdown.sh
# author : nagle
# date   : Sat Jan 21 16:10:11 CST 2017
# website:  https://github.com/geektcp

base_dir=`dirname $0`/..

cd $base_dir/bin/

export LD_LIBRARY_PATH=/usr/local/gcc-4.9.3/lib64/:$base_dir/lib

nohup $base_dir/bin/realmd 2>&1 >> $base_dir/logs/nohup_realmd.out &

$base_dir/bin/mangosd

cat /usr/local/wow_mangos/bin/shutdown.sh

关闭脚本内容:

#!/bin/sh
# usage : sh shutdown.sh
# author : nagle
# date   : Sat Jan 21 16:10:11 CST 2017
# website: https://github.com/geektcp

ps -ef |grep wow_mangos |grep wow|grep -v grep |grep -v local|awk '{print $2}' |xargs -t -i kill -9 {}

alais环境变量(方便启动,可以忽略):

cat ~/.bash_profile

alias startmangos='screen -S thy -X screen su - wow -c /usr/local/wow_mangos/bin/startup.sh'

alias stopmanos='screen -S thy -X screen su - wow -c /usr/local/wow_mangos/bin/shutdown.sh'

10、创建账号

如果启动mangosd服务端时,配置文件指定了启用控制台,那么可以在控制台输入命令:

account create nagle 123

即可创建一个帐号为nagle,密码为123的帐号了。

另外通过数据库也可以创建账号,对应的sql语句是:

SET
@username = "test1",
@password = "123",
@email = "test@163.com",
@expansion = 0,  -- 0表示经典旧时, 1表示70年代,一次类推
@gmlevel = 0,   -- 0 = player, 1=GM, 2=Moderator, 3=Admin, 4=Console
@realmid = 1;
 
INSERT INTO account
(username, sha_pass_hash, gmlevel, email, expansion, active_realm_id)
VALUES (
UPPER(@username),
(SHA1(CONCAT(UPPER(@username),
':', UPPER (@password))) ),
@gmlevel,
@email,
@expansion,
@realmid
);

INSERT INTO `realmd`.`realmcharacters` (`realmid`, `acctid`) VALUES ('1', '5');

 

11、客户端连接

找到wow.exe同一级目录下的配置文件,没有用记事本新建一个,重命名为realmlist.wtf

写入内容(其中如果不是默认端口3724,可以在后面添加端口,比如:13724):

SET realmlist wow.whyalive.org

三、扩展功能

这个版本支持机器人,也是可以自行创建若干玩家一起玩。

常用配置项

开启所有飞行点

AllFlightPaths=1

机器人用法

对应的机器人命令(魔兽世界登录后,在聊天窗口输入指令):
https://github.com/geektcp/Namjagbarwa-wow/blob/master/doc/playerbot/commands.txt

查看机器人状态:

/t 夜之眼 stats

/t 夜之眼 info

召唤机器人:

.bot add 夜之眼

.bot add 索拉查的笛声

保持位置不动:

/t 夜之眼 stay

/t 索拉查的笛声 stay

/t 夜之眼 cast 1243

其他命令:

.bot remove 索拉查的笛声

.bot add 小牛

.bot add 塞拉摩

.bot add 爱在西元前

/t 爱在西元前 orders combat heal

/t 塞拉摩 orders combat protect

/t 小牛 orders combat resistfire

/t 小牛 orders combat assist

.bot remove 夜之眼

.bot remove 索拉查的笛声

/t 夜之眼 orders combat heal

/t 夜之眼 help

/t 夜之眼 follow near

/t 夜之眼 follow far

/t 索拉查的笛声 follow near

/t 索拉查的笛声 follow near

/t 索拉查的笛声 follow info

/t 爱在西元前 orders combat attack

.bot remove  爱在西元前

.bot remove 塞拉摩

常用GM命令

21级血杀斧:

.additem 13016

盾牌24级:

.additem 12997

.additem 13032

学会所有法术:

.learn all

传送

传送门

添加传送门(如果对应的id不存在,或者填错了,就会增加一个空的物体):

.gobject add [entry]

删除传送门:

.gobject delete [guid]

entry是物体模板id,可以按同一个模块添加多个同样的物体,

所以删除时必须删除物体id

添加物体后,控制台界面(聊天窗口)会返回GUID信息,这个GUID就是物体的id,根据这个id删除物体即可。

传送门entry对应 表是gameobject_template

传送门guid对应的表是gameobject

查看guid和entry对应关系:

SELECT t.entry,t.name,o.id, o.guid,

o.position_x,o.position_y,o.position_z,o.map

FROM gameobject o,gameobject_template t

WHERE o.id=[entry]

比如:

SELECT t.entry,t.name,o.id, o.guid,

o.position_x,o.position_y,o.position_z,o.map

FROM gameobject o,gameobject_template t

WHERE o.id =176499

序号

添加物体

命令

备注

0

删除传送门

.gobject delete 90007

 

1

奥格瑞玛传送门

.gobject add 176499

 

2

暴风传送门

.gobject add 176296

 

3

铁炉堡传送门

.gobject add 176497

 

4

达纳苏斯传送门

.gobject add 176498

 

5

奥格玛传送门

.gobject add 176499

 

6

雷霆崖传送门

.gobject add 176500

 

7

幽暗城传送门

.gobject add 176501

 

8

末日传送门

.gobject add 177193

 

9

半人马传送门01

.gobject add 178386

 

10

集合石传送门

.gobject add 179944

 

11

卡拉赞传送门

.gobject add 181146

 

12

暗夜村落传送门

.gobject add 182061

 

13

部落营地传送门

.gobject add 182060

 

14

黑石塔之传送门

.gobject add 184247

 

15

召唤传送门(黄球)

.gobject add 181810

 

16

玛拉顿的传送门

.gobject add 178400

 

.gobject activate 90072

坐标

序号

目的地

命令

备注

1

奥格瑞玛鸟点

.go 1652 -4331 62 1

主城

2

奥格 武器大师

.go 1637 2091 -4822 1

主城

3

幽暗城门口

.go 1909 235 53 0

主城

4

幽暗城鸟点

.go 1567 268 -43 0

主城

5

雷霆崖

.go -1391 140 23 1

主城

6

暴风城门口

.go -9065 434 94 0

主城

7

暴风城银行

.go -8832 627 94 0

主城

8

铁炉堡门口

.go -5032 -819 495 0

主城

9

铁炉堡银行

.go -4927 -947 502 0

主城

10

铁炉堡最高峰(屋顶)

.go -4866 -1445 580 0

主城

11

达纳苏斯

.go 9961 2055 1329 1

主城

12

GM岛

.go 16222.1 16252.1 12.5872 1

主城

13

藏宝海湾

.go -14302 518 9 0

副城

14

棘齿城

.go -977 -3788 6 1

副城

15

牛头出生地

.go -2254 -758 8.2 1

 

16

塔伦米尔:

.go -36 -927 55 0

 

17

陶拉祖营地:

.go -2375 -1880 96 1

 

18

灰谷:

.go 2324 -1668 125 1

 

19

千针石林山顶

.go -4885 -1596 101 1

 

四、常见问题

编译安装通常是正常的,问题往往处在map文件的获取,及map文件和当前编译版本不匹配,或者是数据库表,由于不完整,或者不同版本杂乱在一起导致没法正常启动。

1、代码调试方法

打印日志,以打印std:string类型的字符串name为例:

sLog.outError("111111: %s", name. c_str());

2、map和sql的版本问题

map文件必须跟服务器端的版本匹配,目前我的客户端是1.12.3版本

服务器端的版本是老的mangos-classic,这个源码也不记得从哪里搞的,反正现在的官方的github下的mangos-classic是没有可执行文件生成map,而且用本文档提供的方式生成的map也跟github上的官方源码版本是不匹配的,这个地方要注意。

只能用我的git下的服务端源码下的用于抽取的可执行文件,来抽取我的客户端版本1.12.3下的map文件,服务器才能正常启动,另外数据库初始化数据也必须用我的git下的初始化sql。

报错如下

Using DataDir ../data/

WORLD: VMap support included. LineOfSight:1, getHeight:1, indoorCheck:1

WORLD: VMap data directory is: ../data/vmaps

WORLD: MMap pathfinding enabled

VMap file '../data/vmaps/000.vmtree' is missing or point to wrong version vmap file, redo vmaps with latest vmap_assembler.exe program

Correct *.map files not found in path '../data/maps' or *.vmtree/*.vmtile files in '../data/vmaps'. Please place *.map and vmap files in appropriate directories or correct the DataDir value in the mangosd.conf file.

可能原因

这个问题可能跟map文件的版本也有关,但是从网上下别人的机器人端的map文件也提示报这个错,我怀疑是数据库里面某个字段对应的版本号有关系,导致提示这个错误。

待研究。

解决办法

重要找出问题原因了,原来是mangos启动时会检查地图的版本,如果不匹配直接退出,就没有启动成功了。

在代码src/game/GridMap.cpp里面有个判断语句,用到检查方法是:

vim /usr/local/src/wow/portalclassic/src/game/GridMap.cpp

bool GridMap::ExistVMap(uint32 mapid, int gx, int gy)

{

    if (VMAP::IVMapManager* vmgr = VMAP::VMapFactory::createOrGetVMapManager())

    {

        if (vmgr->isMapLoadingEnabled())

        { bool exists = vmgr->existsMap((sWorld.GetDataPath() + "vmaps").c_str(),  mapid, gx, gy);

             if (!exists)

            {

                std::string name = vmgr->getDirFileName(mapid, gx, gy);

                sLog.outError("VMap file '%s' is missing or point to wrong version vmap file, redo vmaps with latest vmap_assembler.exe program", (sWorld.GetDataPath() + "vmaps/" + name).c_str());

                return false;

            }

...

临时解决方案:

vim /usr/local/src/wow/portalclassic/src/game/vmap/MapTree.cpp

// const char VMAP_MAGIC[] = "VMAP_6.0";

// 修改bug,因为地图版本不同导致启动不了的问题

const char VMAP_MAGIC[] = "VMAP_5.0";

const char RAW_VMAP_MAGIC[] = "VMAP005";

vim /usr/local/src/wow/portalclassic/src/game/vmap/VMapDefinitions.h

// const char VMAP_MAGIC[] = "VMAP_6.0";       // used in final vmap files

// 修改bug,因为地图版本不同导致启动不了的问题

const char VMAP_MAGIC[] = "VMAP_5.0";

 // used in extracted vmap files with raw data

const char RAW_VMAP_MAGIC[] = "VMAP005"; 

3、猎人宠物过段时间直接消失

锁表后查日志,发现,确实是服务器程序自动删除了数据库的一条记录导致:

vim /usr/local/src/wow/portalclassic/src/game/Pet.cpp

注释掉下面两行,测试:

465         //SqlStatement stmt = CharacterDatabase.CreateStatement(delPet, "DELETE FROM character_pet WHERE owner = ? AND id = ?");

 466         //stmt.PExecute(ownerLow, m_charmInfo->GetPetNumber());

上面的方法会引起bug。

解决办法:

这其实不是bug,而是60年代的猎人的精细设计一个体现,宠物一定时间不喂养,就会逃跑,因为饿死了,或者忠诚度太低导致。

修改配置文件:

vim mangosd.conf

# 启用宠物忠诚度,小于等于1,包括0,都会导致空闲宠物10分钟多一点的时间不喂食就逃跑了,改10以上即可。

Rate.Loyalty = 100

4、添加机器人报错

添加或者移除机器人时报错:

.bot add 索拉查的笛声

.bot remove 索拉查的笛声

界面提示:

指令语法格式错误

后台报错:

tailf /usr/local/wow_mangos_bot/logs/Server.log

2017-01-28 17:58:00 ERROR:MMAP:loadMap: 0003337.mmtile was built with generator v4, expected v5

原因还是地图版本问题导致:

因为当前源码的版本默认编译安装使用的题图版本是5,而我用extractor.exe之类的抽取程序抽取的map是4的版本,服务器启动会检查map,vmap,mmap版。

vim /usr/local/src/wow/portalclassic/src/game/MoveMapSharedDefines.h

找到如下一行:

#define MMAP_VERSION 5

修改为:

#define MMAP_VERSION 4

语法格式错误的解决方式:

修改mangos的mangos_string表的entry为10的记录,即把内容:

指令语法格式错误

设置为空,然后重启服务器即可,这个表示在服务器启动时就读取到内存的。

5、传送门已锁

添加传送门后,提示传送门锁定

待解决

vim /usr/local/src/wow/ClassicWOW/src/scriptdev2/scripts/eastern_kingdoms/gnomeregan/instance_gnomeregan.cpp

五、参考链接

我的服务端源码地址(含可用的mysql初始化数据):

https://github.com/geektcp/mangos-classic

客户端下载地址:

http://pan.baidu.com/s/1hslkRVQ

官方服务端下载地址(不能用):

https://github.com/cmangos/mangos-classic

sql下载地址(可用):

https://github.com/keyshuwen/Classicdb/

部署参考链接:

https://github.com/cmangos/issues/wiki

官方部署文档(有参考价值):

https://github.com/cmangos/issues/wiki/Installation-Instructions

其他参考链接:

http://www.mangoscn.com/forum.php?mod=viewthread&tid=180042

60年代其他参考版本:

https://github.com/TrinityZero/TrinityZero

其他相关下载服务端:

git clone git://github.com/cmangos/mangos-classic.git   mangos_server

git clone git://github.com/scriptdev2/scriptdev2-classic.git    mangos_scriptdev2

git clone git://github.com/ACID-Scripts/Classic.git     mangos_acid

git clone git://github.com/classicdb/database.git       mangos_classicdb

git clone git://github.com/cmangos/classic-db.git

魔兽世界WOW私服架设详细教程 本人比较喜欢圣骑士,经过试验,将对圣骑士比较有用的GM代码传,由于网上的代码太多,很乱而且不统一,经过筛选并和游戏比对,但还是有些地方有误。(4)双击wow.bat运行游戏(这样运行一次后,以后就可以直接双击wow.exe运行游戏了),然后输入你刚才建立的用户名和密码来登录游戏,或者用默认GM账号来登录游戏,用户名:player密码:player。(4)打开服务端数据库安装目录下的web_server文件夹,启动“大芒果WEB服务端.exe”,在弹出网页里面注册你的游戏账号。 阅读详情

相关推荐

魔兽世界私服架设 服务器架设简易教程

必须按这个顺序启动,否则先启动“一键启动WOW服务器”会找不到mySQL服务器,因为mySQL默认是由“一键启动WEB服务器”启动的。从这个地址下载不需要注册,如果从mangoscn.com的网页上直接点击,还需要邀请码,注册以后才能下载。2.端口80可能被占用掉,如果被占用掉,那就关闭占用80端口的服务,或者修改Tomcat的默认端口号。而且要是台服的,国服的好像不好使(3.1.3的私服用国服的3.1.3是不可以连上的)先启动“一键启动WEB服务器”,然后再启动“一键启动WOW服务器”。

用最简单的方式说最重要的事!服务器、存储、云计 算、A智能的大数据产品、游戏开发技术。致力于广 大开发者、政企用户、各项机构等,构建云上世界提供全方位云计算解决方案。旨在打造差异化的开放式闭环生态系统帮助用户快速构建稳定、安全的云计算环境。 1万+

魔兽世界60级1.12私服搭建架设教程

ad.exemd vmapsmd mmaps7、数据库初始化wow mangos classic 经典版本的数据库数据来源于:另一部分存在于源码目录下:

用最简单的方式说最重要的事!服务器、存储、云计 算、A智能的大数据产品、游戏开发技术。致力于广 大开发者、政企用户、各项机构等,构建云上世界提供全方位云计算解决方案。旨在打造差异化的开放式闭环生态系统帮助用户快速构建稳定、安全的云计算环境。 1万+

Gamit 数据处理,相关的文件配置

一、处理前准备 1、在主文件夹内新建test项目文件,项目内新建brdc、igs和rinex三个文件夹,分别存放广播星历,精密星历几观测值文件,所用的命令分别为sh_get_nav、sh_get_orbits和sh_get_rinex (若文件为.Z,用gunzip命令解压,若仍为d,用命令sh_crx2rnx -f 命令解压为o文件) 2、进入test项目文件夹,链接tables,运行 sh_setup -yr 2015 -apr itrf08_com.apr 3、生成station.info文件。 将t

CodeDoraemon的博客 3375

魔兽世界经典旧世私服搭建教程

ad.exemd vmapsmd mmaps。

用最简单的方式说最重要的事!服务器、存储、云计 算、A智能的大数据产品、游戏开发技术。致力于广 大开发者、政企用户、各项机构等,构建云上世界提供全方位云计算解决方案。旨在打造差异化的开放式闭环生态系统帮助用户快速构建稳定、安全的云计算环境。 8706

华为[ENSP]OSPF的配置实例(单区域+多区域)

华为[ENSP]OSPF的配置实例(单区域+多区域)

weixin_62594100的博客 2万+

【系统分析师】2026年上半年真题:案例分析-答案及详解(回忆版)

案例一聚焦因果分析法(鱼骨图)的应用,分析企业订单履约问题。问题1阐述因果分析法定义及常见方法(鱼骨图、5个为什么等);问题2将8个原因归类为人员、方法、合同等5类;问题3筛选适合鱼骨图的场景(如系统响应慢、服务器故障等),强调其适用于复杂根因分析。 案例二对比嵌入式系统中Linux与RTOS的差异(实时性、资源占用等),结合智能监控终端需求推荐Linux+四核ARM方案(高算力、性价比),并列选Linux的5大优势(生态成熟、多任务支持等)。 案例三设计互联网医院系统用例图(患者、医生等参与

数据知道的博客 1352

开源魔兽世界服务器everwar搭建指南

开源魔兽世界服务器everwar搭建指南 去发现同类优质开源项目:https://gitcode.com/ 本仓库提供了一个详细的指南,帮助你搭建开源魔兽世界服务器everwar。通过本指南,你可以轻松地搭建自己的魔兽世界服务器,重温经典游戏体验。 内容概述 本指南涵盖了以下几个主要步骤: 背景介绍:介绍了魔兽世界经典旧世版本的历史背景,以及为什么选择搭建开源服务器everwar。 客户端配置:...

gitblog_06574的博客 480

【020】C++ 动态内存管理解析:new 和 delete 的正确使用

C++中的动态内存分配是在程序运行时根据需要进行内存空间的分配和释放,与静态内存分配相比,具有更大的灵活性和适应性。动态内存分配可以通过new和delete或者malloc()和free()等函数实现。在程序运行时无法确定所需的内存大小。需要在多个函数之间共享数据,并且数据可能被频繁地创建和销毁。静态数组无法满足需求,例如需要支持可变长度数组。如果在动态分配内存后忘记了释放它,则会导致内存泄漏。为避免内存泄漏,可以使用智能指针或手动管理内存的方式来释放动态分配的内存。

Lion_Long的博客 1470

重温经典:开源魔兽世界服务器everwar搭建指南

重温经典:开源魔兽世界服务器everwar搭建指南 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 你是否怀念那些年与朋友一起在艾泽拉斯大陆上冒险的日子?是否渴望再次体验魔兽世界经典旧世版本的魅力?现在,通过开源魔兽世界服务器everwar,你可以轻松搭建自己的魔兽世界服务器,重温那段经典的游戏时光。 everwar项目提供了一个详细的搭建指南,帮助你从零开始,一步步搭...

gitblog_06576的博客 490

7、初级视觉皮层(V1)的研究综述

本文综述了初级视觉皮层(V1)的基本功能特性、计算理解、细胞相互作用及理论模型。V1不仅执行方向和空间频率的选择性滤波,还通过相位选择性和上下文调制参与高级视觉处理。研究从信息编码角度解释了V1感受野的形成,并介绍了基于自然图像统计的建模方法。横向与反馈连接揭示了V1在全局视觉整合中的作用,尤其是上下文对细胞响应的快速调节。李的动态模型提出V1可生成视觉显著性图,支持前注意分割和注意力引导。未来研究聚焦于V1在注意力、意识和硬件实现中的潜在应用,推动视觉神经科学与人工智能的交叉发展。

7z8x2c4v6b9的博客 145

RK3568移植AP6256

本文主要是记录RK3568移植正基的AP6256的WIFIBT模块,感兴趣的朋友可以一起学习!!!提示:以下是本篇文章正文内容,下面案例可供参考。

qq_24093081的博客 3715

终极指南:如何快速搭建everwar开源魔兽世界私服

想要体验经典的魔兽世界游戏,但不想受限于官方服务器?everwar开源魔兽世界服务器项目正是你需要的解决方案!这是一个基于C++开发的开源魔兽世界私服,让你能够搭建属于自己的游戏世界,与朋友一起重温艾泽拉斯的冒险旅程。 ## 🎮 什么是everwar魔兽世界服务器? everwar是一个功能完整的开源魔兽世界私服实现,基于MaNGOS核心开发。它支持魔兽世界经典版本的完整功能,包括角色创建、

gitblog_00032的博客 465

Android 9.0 延时开机动画解决首次开机黑屏和去掉android正在启动的提示框

在9.0的系统产品rom定制化开发中,在一些产品中会出现在首次开机的时候,由于在开机动画播放完以后会出现几秒短暂的黑屏情况,然后进入默认Launcher,这在产品体验上 也是感觉到有点差,所以会要求在去掉这个首次开机黑屏的效果,和在启动过程中的 android is starting这个提示框的这些效果优化,接下来就分析下相关功能, 然后实现这个功能的开发

安卓兼职framework和app工程师的博客 3244

终极指南:如何在5步内免费搭建高效魔兽世界私服

你是否曾梦想拥有自己的魔兽世界服务器,与好友一起重温经典任务,体验自定义游戏内容?everwar开源魔兽世界服务器项目正是你需要的完美解决方案!这是一个基于C++开发的完整魔兽世界私服框架,让你能够轻松搭建专属游戏世界,享受高度自由的游戏体验。通过everwar,你可以快速部署魔兽世界私服,自定义游戏内容,创建个性化游戏环境,实现多人联机冒险。 ## 🎯 为什么选择everwar搭建魔兽世界私

gitblog_00743的博客 1081

游戏大厂状态同步与帧同步技术全解析——让虚拟世界万物协同的“时间齿轮”

本文深入解析了大厂游戏开发中的两种核心同步技术:状态同步和帧同步。状态同步适合大型MMO和FPS游戏,由服务端计算并广播世界状态;帧同步则通过统一操作输入实现MOBA和RTS游戏的绝对公平。文章详细比较了两者的差异、适用场景和底层实现原理,并揭秘了《王者荣耀》《PUBG》等热门游戏的同步机制。同时探讨了本地预测、延迟补偿、防作弊等关键技术,以及未来AI和云游戏带来的同步新挑战,为开发者提供了全面的技术参考和实践指南。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 919

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

3步快速搭建UeCore开源魔兽世界服务器:完整指南与实战演示

想要重温经典魔兽世界的冒险旅程吗?UeCore开源魔兽世界私服为你提供了一个完美的解决方案!这是一个基于C++开发的开源魔兽世界服务器引擎,让你能够搭建属于自己的游戏世界,与朋友一起探索艾泽拉斯大陆。作为一款国产开源项目,UeCore魔兽世界私服提供了长期维护和中文支持,让国内玩家能够轻松上手。 ## 🎯 为什么选择UeCore开源魔兽世界服务器? UeCore不仅仅是一个简单的私服实现,它

gitblog_00598的博客 192

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

UeCore引擎深度解析:打造你的专属魔兽世界服务器,从入门到精通

UeCore(Universe Engine Core)是一款开源的MMO RPG框架,作为魔兽世界服务器引擎,它为开发者和游戏爱好者提供了构建自定义游戏世界的强大工具。无论你是想创建独特的游戏体验,还是深入学习服务器架构,本指南都能帮助你快速掌握UeCore的核心功能和使用方法。 ## 为什么选择UeCore引擎? UeCore引擎凭借其开源特性和强大的功能,成为构建魔兽世界私人服务器的理想

gitblog_00082的博客 659

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

为什么选择UeCore?10年开源历程打造的经典魔兽世界服务器引擎

UeCore(Universe Engine Core)是一款经过10年开源历程精心打造的经典魔兽世界服务器引擎,为MMO游戏开发者和爱好者提供了一个强大、稳定且易于扩展的开源框架。作为一款专业的魔兽世界服务器引擎,UeCore不仅支持经典的60级版本,还扩展到了80级巫妖王之怒版本,让开发者能够轻松搭建属于自己的魔兽世界私服。 ## 🎯 UeCore的核心优势:为什么选择这个开源魔兽世界服务

gitblog_00844的博客 636

3步搭建专属魔兽世界私服:UeCore开源引擎终极方案

你是否曾梦想拥有自己的艾泽拉斯世界,与好友一同冒险却不受官方服务器限制?UeCore开源魔兽世界服务器引擎正是你寻找的解决方案!这个持续开发十多年的国产开源项目,让你能够快速搭建功能完整的经典魔兽世界私服,重温60级经典旧世的辉煌时代。 ## 为什么选择UeCore而不是其他方案? 面对众多魔兽世界服务器项目,UeCore凭借三大核心优势脱颖而出。首先,它是唯一持续十多年更新的国产开源项目,对

gitblog_00015的博客 313

7大核心技术突破:UeCore开源魔兽世界服务器引擎完全指南

在MMORPG服务器开发领域,UeCore(Universe Engine Core)作为一款持续演进超过十年的国产开源魔兽世界服务器引擎,正以其独特的架构设计和工业级实现标准,重新定义经典游戏服务器的开发范式。基于魔兽世界经典旧世1.12.x版本客户端,UeCore不仅完美复刻了原版游戏体验,更在性能、扩展性和维护性方面实现了质的飞跃。 ## 项目愿景与价值主张 UeCore的诞生源于对经典

gitblog_00336的博客 844

技术实践:使用UeCore构建高可用魔兽世界服务器引擎的完整方案

面对传统魔兽世界私服架构复杂、维护困难的技术痛点,如何快速搭建一个稳定、可扩展的MMO RPG服务器框架?UeCore作为一款持续演进的开源魔兽世界服务器引擎,通过模块化设计、Boost网络库和OpenSSL加密,提供了完整的角色系统、AI导航、任务副本等核心功能实现方案。 ## 问题引入:传统MMO服务器架构的局限性 传统的魔兽世界服务器项目如MaNGOS、TrinityCore等,虽然功能

gitblog_00654的博客 348

10分钟快速部署UeCore服务器:CentOS系统下RPM包一键安装教程

UeCore是一款开源的魔兽世界服务器引擎,基于经典旧世60级版本打造,支持1.12客户端。通过RPM包一键安装,即使是新手也能在10分钟内完成服务器部署,轻松搭建属于自己的魔兽世界私人服务器。 ## 📋 准备工作:系统与环境要求 UeCore RPM包专为CentOS系统优化,推荐使用以下配置: - **操作系统**:CentOS 7.9(官方推荐版本) - **硬件要求**:2核CPU/

gitblog_00543的博客 808

从0开始学UeCore开发:新手必备的环境搭建与基础配置指南

UeCore(Universe Engine Core)是一款强大的开源MMO RPG框架,作为魔兽世界服务器引擎,它为开发者提供了构建沉浸式游戏世界的完整工具集。本指南将帮助新手快速掌握UeCore开发环境的搭建与基础配置,让你轻松开启MMO游戏开发之旅。 ## 📋 准备工作:开发环境必备组件 在开始UeCore开发前,确保你的系统满足以下要求并安装必要的开发工具: - **操作系统**

gitblog_00922的博客 292

终极对比指南:为什么UeCore这款国产开源MMO引擎值得你选择?

在魔兽世界(WoW)私服开发领域,选择合适的游戏引擎至关重要。UeCore(Universe Engine Core)作为一款国产开源MMO RPG框架,正逐渐成为开发者的新宠。本文将深入对比UeCore与主流WoW引擎,揭示这款国产开源项目的独特优势,帮助你做出明智的选择。 ## 🎯 UeCore核心优势解析 ### 引擎级架构设计 UeCore采用了**引擎级重构**的设计理念,不同于传

gitblog_01036的博客 757

UeCore 1.4版本新特性详解:PVP/PVE玩法升级与架构优化全解析

UeCore 1.4版本作为这款开源魔兽世界服务器引擎的重要更新,带来了革命性的PVP/PVE玩法升级和架构优化。🎮 作为持续了十多年的国产开源MMO RPG框架,UeCore 1.4在保持经典魔兽世界体验的同时,通过引擎级重构和技术创新,为玩家和开发者提供了更稳定、更高效的服务器解决方案。 ## 🚀 UeCore 1.4版本核心特性概览 ### PVP玩法全面升级 在UeCore 1.

gitblog_00305的博客 710

UeCore核心架构揭秘:模块化设计如何支撑MMO游戏的高并发需求

UeCore(Universe Engine Core)是一款开源的MMO RPG框架,专为构建大规模多人在线游戏服务器而设计。作为魔兽世界服务端引擎的现代化重构版本,UeCore通过精心的模块化架构设计,成功解决了传统MMO游戏服务器在面对高并发玩家连接时的性能瓶颈问题。本文将深入解析UeCore的核心架构设计,揭示其如何通过模块化设计支撑数千名玩家同时在线的游戏世界。 ## 🎯 为什么需要

gitblog_00336的博客 963
下一篇: 线程安全的ID生成器
thy2012
博客等级 码龄15年 9粉丝 2原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值