魔兽世界服务器Trinitycore分析一:前言

一:简介

帖一段官网介绍吧

TrinityCore is a MMORPG Framework based mostly in C++.

Itis derived from MaNGOS,the Massive Network Game Object Server,and is based on the code of that project with extensive changes over time tooptimize, improve and cleanup the codebase at the same time as
improving thein-game mechanics and functionality.

二:学习缘由

大名鼎鼎的魔兽世界,那可是我在大学时为之所疯狂的网游啊。后来听说他有个开源的服务器实现,作为游戏服务器开发人员的我,那还不赶紧clone下来研究一下,哈哈。

第一次听说Trinitycore这个项目,是在2012年底,当时的我还不是游戏开发人员,当时它的底层还是ACE,甚至当然的我还没有办法将它运行起来,可它还是深深地吸引了我。为了它,我去学习ACE。结果,我却变成了ACE黑,研究这个项目的计划也不了了之了(唉,传说中ACE“学之者生,用之者死”,还是有一定道理的)

今年(2014)8月再上Trinitycore官网的时候,却发现在它的最新版本中,项目底层框架从ACE改成boost,我真是太感动了,再不认真研究一下它,也太对不起老天了,哈哈。

可接下来却不太顺利,我在虚拟机的Ubuntu上编译它的Debug版本的时候,一运行worldserver就挂了。开GDB调试,GDB也是一运行就挂,Release版本却一点问题都没有。后来GOOGLE了一下,可能是我的虚拟机性能不达标导致的。。。算了,不折腾LINUX了,还是装个Visual Studio 2013玩一下吧。话说回来,VS+VA比GDB+VIM(含插件)人性化太多了)。

换了VS2013之后,编译确实挺顺利的,然后下个魔兽世界3.3.5客户端玩了一下,却在提示登陆成功之后,在“正在与服务器交换数据”(好像是这句)这个界面里卡住了,搞了半天,才发现原来是我客户端的子版本号不对,这个服务器支持的国服版本只有3.3.5.13930,这个解决起来也不难,下几个补丁就行了。

唉,部署一个运行环境,就搞了我一个多星期(幸好最近工作不算太忙),好在最终还是以喜剧收场了。想当年,我在学校部署魔兽世界私服的时候,用一键安装包的时候,真他妈的方便啊。

三:我所用的版本

主程序:TrinityCore-TDB335.55.zip

数据库:TDB_full_335.55_2014_08_24

客户端:国服3.3.5.13930 (下载地址就不给了,百度一下一大堆)

四:上一张图记念一下

PS:我当年玩魔兽世界的时候,也是这个版本的,哈哈。

时间: 2024-10-06 18:50:49

魔兽世界服务器Trinitycore分析一:前言的相关文章

魔兽世界服务器Trinitycore分析二:auth server的main函数

TrinityCore由生成两个执行文件authserver和world server以及一堆DLL(或so)文件的子项目组成(先忽略map_extractor等几个工具项目). authserver是登录验证服,它主要提供登录验证和获取服务器(区服)列表的功能.world server是真正的游戏服务器,提供游戏里的一切功能.相对而言,auth server比较简单,那我就从它入手啊,先看一下它的main函数,在源码的基础上,我加上了注释. //该函数在src\server\authserve

魔兽世界服务器Trinitycore分析三:日志模块

一:日志接口 TrinityCore的日志有六个级别:Trace,Debug,Info,Warn,Error,Fatal 它们分别对应以下这六个接口,(filterType__也是在配置文件中指定的) #define TC_LOG_TRACE(filterType__, ...) #define TC_LOG_DEBUG(filterType__, ...) #define TC_LOG_INFO(filterType__, ...) #define TC_LOG_WARN(filterType

魔兽世界服务器Trinitycore分析三:auth server网络事件的处理

authserver在初始化静态变量时,会调用AuthSession::InitHandlers(),初始化全局的业务哈希表Handlers: std::unordered_map<uint8, AuthHandler> AuthSession::InitHandlers() { std::unordered_map<uint8, AuthHandler> handlers; handlers[AUTH_LOGON_CHALLENGE] = { STATUS_CONNECTED,

三大WEB服务器对比分析(apache ,lighttpd,nginx)

一.软件介绍(apache  lighttpd  nginx) 1. lighttpd Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点.lighttpd是众多OpenSource轻量级的web server中较为优秀的一个.支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能. Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量. Fastcg

Tiny Web服务器代码分析

Tiny Web服务器代码分析 <深入理解计算机系统>中开发了一个小但是功能齐全的称为Tiny的web服务器,这里是Tiny服务器的源码解析. 1.Tiny的main程序 Tiny是一个迭代服务器,通过命令行中传递来的端口值,调用Open_listenfd()函数打开一个监听套接字,然后Tiny执行无限循环:服务器阻塞在accept,等待监听描述符listenfd上的连接请求,当服务器从accept返回connfd,表明已经与客户端建立起了连接,执行事务,并关闭连接它的那一端,进行下一次循环.

C高级 服务器内核分析和构建 (一)

引言 最经看cloud wind 的 skynet服务器设计. 觉得特别精妙. 想来个专题先剖析其通信层服务器内核 的设计原理. 最后再优化.本文是这个小专题的第一部分, 重点会讲解对于不同平台通信基础的接口封装. linux是epoll, unix是 kqueue. 没有封装window上的iocp模型(了解过,没实际用过). 可能需要以下关于 linux epoll 基础. 请按个参照. 1. Epoll在LT和ET模式下的读写方式 http://www.ccvita.com/515.htm

TCP回射服务器/客户端分析

本文将对一个简单的TCP回射服务器和客户端进行抓包,从而分析一次成功而理想TCP会话的基本流程,多次不成功或与预期不一致的抓包结果将在下篇博文进行分析 本文程序编译环境为: Linux version 3.16.4-1-ARCH gcc version 4.9.1 20140903 (prerelease) Glibc 2.18 服务器代码如下: 1 #include <unistd.h> 2 #include <sys/types.h> 3 #include <sys/so

linux服务器性能分析与优化

#1 查看硬件产品名称dmidecode |grep 'Product Name' #2 查看主板序列号dmidecode |grep -i 'serial number' |grep CN #3 查看CPU型号grep name /proc/cpuinfo #4 查看CPU个(核)数:grep 'physical id' /proc/cpuinfo #5 查看cpu使用情况top #6 查看内存信息grep MemTotal /proc/meminfo free -mvmstat #7 查看分

VC FTP服务器程序分析(二)

上面讲到了CClientThread类,打开这个类的实现,这个类实现了4个函数.依次分析: 1.InitInstance   其说明如下:InitInstance必须被重载以初始化每个用户界面线程的新实例.统称,你重载InitInstance函数来执行当线程首次被创建时必须完成的任务.此成员函数仅在用户界面线程中使用. 1 BOOL CClientThread::InitInstance() 2 { 3 // Attach the socket handle to a CSocket objec