Game Programe
文章平均质量分 65
yebeans
追寻你的梦想
坚持你的信念
展开
-
Ascent代码分析2-底层shared
底层shared工程1. 线程&线程池 线程对象的基类ThreadBase提供了2个接口:virtual bool run() = 0;virtual void OnShutdown() {};新建线程对象只需要从ThreadBase派生,并实现run接口。然后使用CThreadPool::ExecuteTask()将线程对象加入线程池中原创 2008-11-19 22:52:00 · 4117 阅读 · 4 评论 -
Ascent代码分析1-运行环境架设
Ascent是一个魔兽世界服务器的模拟器开源项目,也就是现在使用的比较广泛的魔兽世界私服之一(还有个就是Mangos),Ascent的性能相对较高,有私服广告称,四核服务器能带1000玩家,根据其他人的反应应该差距不会太大。另外感觉ascent的代码相对mangos实现较为简洁易懂,所以稍微研究一下。程序主要有LogonServer,RealmServer,voicechat,world四个。原创 2008-11-26 23:04:00 · 7141 阅读 · 4 评论 -
Ascent代码分析4-World之地图管理及实现结构
Wow世界中的地图有两种:场景地图和副本地图. 场景地图只有一个实体,一般比较大。如东部王国、卡里姆多和外域分别是一个整张的地图(各个地图间传送的港口也是单独的地图)。 副本地图是同样的地图场景,但却有多个不同的实体。比如各种副本和战场,都属于副本地图。InstanceMgr:将负责整个世界的地图创建和保持。每个地图(以及原创 2008-11-27 00:19:00 · 3287 阅读 · 3 评论 -
Ascent代码分析3-World之对象与脚本
事件管理器(EventMgr) Ascent的每个事件是一个TimedEvent对象,其中包含了一个回调函数对象、间隔时间、回调次数和标志信息。EventMgr只是封装了添加事件的操作(并不负责运行事件的回调函数),真正执行事件回调函数的是EventableObjectHolder的update()函数。当使用EventMgr::AddEvent的时候,需要指定目标对象(一原创 2008-11-27 00:08:00 · 3557 阅读 · 2 评论 -
Ascent代码分析5-更新一下资源
休假太久了也颇无聊...更新一下。 目前相对比较活跃的一个版本是arcemu,衍生自ascent,所以代码结构差不多。但是更新较快也较为完善。数据库的话,以前用的NCDB停掉了,目前较为好用的是whyDb.相对之前早期版本,指针都使用share_ptr重写了一遍,所以编译需要C++ tr1,这个可以在vc2008 sp1中找到。或者使用boost库中的tr1也可以。 这个版本可原创 2009-10-05 18:31:00 · 1987 阅读 · 1 评论 -
Ascent代码分析6-技能
相关概念: Spell 施放的技能,如火球术。每个技能可附带三种效果(如某系伤害、Aura) Effect 技能造成的效果,可以是某系魔法伤害,或者物理伤害,或者持续效果 类型定义:SpellEffects SpellTarget 技能目标,可能是单个目标(如火球术),一串目标(连锁闪电)或者区域目标(暴风雪) 类型定义:SpellTargetType原创 2009-10-05 18:52:00 · 2752 阅读 · 1 评论 -
Ascent/Arcemu代码分析8-任务系统
任务类型: 对话、送信、施放技能、杀怪、收集、采集、探索、护送(未实现) 任务定义: Quest 定义了任务的需求、奖励、文本描述、完成条件以及QuestScrip扩展接口。和ItemPrototye类似,作为任务的定义模板,其对象在运行期间不变。 QuestLogEntry 任务的实例,记录了一个任务的运行期状态,如已完成的杀怪数量。和Item类似,引用一原创 2009-10-05 19:19:00 · 3689 阅读 · 1 评论 -
Ascent/Arcemu代码分析7- 物品及装备
类型定义: 主要在ItemPrototype.h中,是各种道具相关的宏定义和枚举定义。 物品类型(INVENTORY_TYPES): 道具分类(ITEM_CLASS) 道具子类(I原创 2009-10-05 19:17:00 · 3150 阅读 · 0 评论