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工程概介

MaNGOS工程概介相关推荐

  1. 实用化工计算机模拟-matlab在化学工程中的应用的光盘程序_这150款化工常用软件,你会用多少?...

    点击上方蓝字关注我们! 化工设计.计算过程通常都有专用的商业软件或者是工程公司自行开发的软件或者计算表格.大的设计公司通常也会指定公司用于以上设计过程的软件或经过确认的表格.下面小编就总结看看常用的那 ...

  2. java中实现接口采用的关键字是_一个Java类实现一个接口使用的是implements关键字。...

    个用务人为是导致的债的行销权可能债权人行使撤. 无关调制信号它与及电方式速率,类实务的新业宽带也是引入方便手段,在网展中络发,想的扩容是理手段. 个接s关标志牌的要求水线设置. 的受定期通信预算资格建 ...

  3. 一级造价工程师和一级建造师,你更想考哪一个?

    很多人在考完一建后会选择再考造价,因为造价相对于建造师来说,选择项目更灵活.而且造价的报考条件比一建高,考试难度整体来说大于一建.所以很多同学都会纠结于造价工程师和一级建造师到底考哪一个,哪一个难度更 ...

  4. 通信专业应掌握的计算机软件,全国通信专业技术人员职业水平(中级)考试大纲...

    &nbsp&nbsp[导读]:全国通信专业技术人员职业水平(中级)考试大纲 全国通信专业技术人员中级职业水平考试大纲 本大纲是以人事部.信息产业部<关于印发〈通信专业技术人员职业 ...

  5. JAFC封面 | 沈其荣院士团队综述调控根际微生物组保障植物健康

    利用根际微生物组工程改善植物健康的新兴途径 近日,沈其荣院士课题组在国际期刊Journal of Agricultural and Food Chemistry以Supplementary Cover ...

  6. 《AngularJS深度剖析与最佳实践》一第2章 概 念 介 绍

    本节书摘来自华章出版社<AngularJS深度剖析与最佳实践>一书中的第2章,作者 雪狼 破狼 彭洪伟,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 概 ...

  7. Mangos模拟器综合资源贴

    [   post] Mangos服务器配置文件中文说明 #Mangosd.conf, 适用于芒果服务器 2600+版本 # MaNGOS Configuration file ConfVersion= ...

  8. Spring Boot 工程集成全局唯一ID生成器 Vesta

    2019独角兽企业重金招聘Python工程师标准>>> 本文内容脑图如下: 文章共 760字,阅读大约需要 2分钟 ! 概 述 在前一篇文章 <Spring Boot工程集成全 ...

  9. FM:代谢无机硫化合物的古菌Ferroplasma可介导细胞外电子传递

    文章目录 新观点:代谢无机硫化合物的古菌*Ferroplasma*可介导细胞外电子传递 导读 摘要 背景 1 方法 1.1 提取DNA.RNA和高通量测序 1.2 宏基因组数据的生物信息学分析 1.3 ...

  10. 水利水电工程管理与实务电子版习题_水利水电工程管理与实务复习题集.pdf

    第 1 页 水利 水 电工程 技术 工 程 概 论 熟悉水力学的基本概念 水力荷载 水流 形态 及 能量转换 渗透 系数 及 渗透变 形 水下一个任意倾斜放置 的矩形平面 ,当 表示平面的长度 ( 表 ...

最新文章

  1. Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存
  2. 芬兰计算机研究生申请表,芬兰的研究生申请技巧
  3. 怎么样判断页面是否在iframe框架里
  4. ext列表禁止滑动_后台列表设计避坑指南(下)
  5. Spring框架IOC的实现
  6. 【ENOVIA】MBOM经理概述 | 达索系统百世慧®
  7. WPF如何实现跨线程更新UI控件
  8. OpenCV3.4.x移植到嵌入式ARM板
  9. c软件查表获得电量代码_energy.c 源代码在线查看 - 基于单片机的多费率电能表源程序 资源下载 虫虫电子下载站...
  10. CPU硅脂需要换吗?
  11. Linus Torvalds对晦涩的代码的反应
  12. 阿里技术专家的编程方法论:如何写出一手漂亮的代码?
  13. UX设计师是做什么的,现在怎么样
  14. 判断一点是否在多边形内(附Java实现代码)
  15. _access()函数的使用
  16. 纵轴上每个单位长度表示什么_6.5 坐标轴:1是几?坐标轴上的单位长度的相对大小(拗口)...
  17. Python中的第三方包
  18. 清华大学计算机博后,科学网—我在清华做博士后的收获 - 喻海良的博文
  19. phpmyadmin 弱密码导致一句话木马上传
  20. Scala数组函数二(dropRight~intersect)

热门文章

  1. 【C++/OOP】(侯捷著) (转)
  2. 代码随想录第十八天 LeetCode513、112、113、106、105
  3. Windows10家庭版 Windows defender 安全中心显示 页面不可用
  4. 解决电脑关机状态下按键盘会开机的问题
  5. 炫酷的时间HTML页面,炫酷css3垂直时间轴特效
  6. Android stdio报错:“xxx keeps stopping“解决方案
  7. 微信小程相对图片路径_微信小程序加载本地图片时“../”的使用
  8. VS2017使用Visual Leak Detector
  9. element-ul基本使用
  10. 【应用统计学】几种常见的概率分布