MaNGOS工程概介

MaNGOS是WoW的模拟服务器端工程,架设在sourceforge上,使用C++,开放源码,代码写的很清楚,架构清晰,质量很高.我看重的,是其对3D游戏服务端编程的通用流程和问题的处理手法和经验.研究消息包结构,一般就能推断WoW采取哪种逻辑方案来解决一些棘手的通用问题,而服务端编程质量在很大程度上取决于程序员的经验.
由于采用大量优雅的模板技法,MaNGOS的编译速度很成问题,调试变得有点困难.

C++的编译速度确实是一个很大的问题,编译速度缓慢直接导致了修改代码再调试的这个频繁的开发行为变得难以忍受,开发效率大大降低.
C++模板是很优秀的技术,但是因为其难以忍受的编译速度,有时也就不敢大规模应用了,只在些小地方耍耍小聪明.连那个常用的Singleton模板我也是不敢用的,编译的太慢了,还是手写的Instance方法比较快.
 
本来是希望CPU速度上去后,编译速度的问题自然就会解决,但事实上从VC6->VC2003->VC2005,一个比一个编译地慢,CPU全让M$自己给用光了.

我现在以为使用Lua,Python等脚本技术可以解决C++的编译速度导致的开发问题,把易变的逻辑全转到脚本去,脚本的编译是最快的了.

我的机器比较老,用的1.6G的P4,完全编译MaNGOS要花7-10分钟,game模块特别地慢,一改动关键的头文件就要重新全部编译.我又喜欢在写程序同时看下载的电影,编译地就更慢了.调试时又要开wow客户端,:(.

不知道使用Stdafx预编译后速度会不会快一些.至少每个cpp的Include段要整理一下,把比较稳定的头文件放到最前,有利于预编译,Common.h里的EXPECTED_MANGOS_CLIENT_BUILD经常变动,还是挪出来比较好.

自己最近几天,改了些东西:
0.修改主工程配置,去除zlib和zthread两个dep工程,这样载入工程会快一些.
1.因为很讨厌事先要导出Ddc和Maps数据,所以修改了MaNGOS让其直接去读MPQ文件里的dbc和maps.
2.DOTCONFDocument不支持多字节配置字符串,我用"D:\魔兽世界\Data"这个目录,isspace函数assert报警,改成_istspace解决.
3.整合网上的MaNGOS的2446 TBC版本,做了个_TBC_BUILD_预定义编译分支,意图同时支持当前和TBC版本,TBC升到2046后,CMSG_AUTH_SESSION验证算法失败,然后厌倦了MaNGOS的编译,等我机器升级了再继续.


转自

MaNGOS工程概介

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mangos不是一个魔兽私服模拟器,它是一个开源的自由软件项目,是用c++和C#编程语言,实现的一个支持大型多人在线角色扮演游戏服务器的程序框架,在这个框架下,它理论上应该支持任何客户端的网络游戏,由于现在很多人使用魔兽世界来对它进行测试,所以针对魔兽世界的脚本和数据库文件比较完善,很多人就利用这个开源项目来实现魔兽私服。   首先,mangos项目是一个开源的自由软件(如同linux或者firefox),并且遵守其中最为严格的GPL协议,也就是保证源代码绝对的自由,要了解什么是开源软件,自由软件请自己搜索这方面的资料。   其次开发小组一再强调,这是个研究,教育性质的对怎样开发大型网游的服务器端有好处的项目,是一个技术细节毫无保留向公众开放的软件,是一件很有意义的事情,如果你使用它作为盈利目的,那你本身就违反了软件的协议。所以任何利用mangos项目进行私服活动的组织和个人都违反了mangos的宗旨,mangos项目也不会对它们负责。   mangos的技术细节上是这样的,核心部分是个和特定游戏没有关系的核心框架程序,主要是进行进程调度,创造世界,建立心跳机制,处理网络接入等。数据库也是使用的开源数据库软件MySQL,编译器使用的是GCC。至于游戏内容数据库,游戏人物,时间,世界脚本,都是由这个核心程序所支持的扩展脚本来实现,所以有一些独立出来的项目专门模拟魔兽世界来开发支持mangos的核心程序。现在mangos的核心程序已经放到著名的协同开发网站sourceforge上开发了,使用的版本控制工具是subversion,(目前已经迁移到GIT)。大家都可以从sourceforge的subversion数据库中下载最新的源代码程序。   另外有点要注意的是,开源项目是很容易被利用的,有时候有的公司开发了一个软件说是自己做的其实内核都是别人的开源内核,但是公司又不承认,利用了别人的劳动成果赚钱不说,既不回报社区,也对开源自由软件造成了很大的伤害。所以大家注意了,如果看到一个和魔兽世界很像的什么网络游戏?要想想是不是利用的mangos的核心程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值