上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页

2012年5月25日

摘要: 回想一下我们在玩wow时的操作流程:运行wow.exe进入游戏后,首先就会要求我们输入用户名和密码进行验证,验证成功后才会出来游戏世界列表,之后是排队进入游戏世界,开始游戏... 可以看到跟前面的描述有个很明显的不同,那就是要先验证帐号再选择游戏世界。这种结构也就使得登录服不是固定配备给个游戏世界,而是全区共有的。 我们可以试着从实际需求的角度来考虑一下这个问题。正如我们之前所描述过的那样,登录服在大多数情况下都是比较空闲的,也许我们的一个拥有20个游戏世界的大区仅仅使用10台或更少的登录服即可满足需求。而当在开新区的时候,或许要配备40台登录服才能应付那如潮水般涌入的玩家登录请求。所... 阅读全文
posted @ 2012-05-25 18:08 很多不懂呀。。 阅读(587) 评论(1) 推荐(0) 编辑
摘要: 讨论了这么久我们一直都还没有进入游戏世界服务器内部,现在就让我们来窥探一下里面的结构吧。 对于现在大多数MMORPG来说,游戏服务器要处理的基本逻辑有移动、聊天、技能、物品、任务和生物等,另外还有地图管理与消息广播来对其他高级功能做支撑。如纵队、好友、公会、战场和副本等,这些都是通过基本逻辑功能组合或扩展而成。 在所有这些基础逻辑中,与我们要讨论的服务器结构关系最紧密的当属地图管理方式。决定了地图的管理方式也就决定了我们的服务器结构,我们仍然先从最简单的实现方式开始说起。 回想一下我们曾战斗过无数个夜晚的暗黑破坏神,整个暗黑的世界被分为了若干个独立的小地图,当我们在地图间穿越时,一般都要... 阅读全文
posted @ 2012-05-25 18:08 很多不懂呀。。 阅读(489) 评论(0) 推荐(0) 编辑
摘要: 好的结构不是一蹴而就的,而且每个设计者心中的那把尺都不相同,所以这个优秀结构的定义也就没有定论。在这里,我们不打算对现有游戏结构做评价,而是试着从头开始搭建一个我们需要的MMOG结构。 对于一个最简单的游戏服务器来说,它只需要能够接受来自客户端的连接请求,然后处理客户端在游戏世界中的移动及交互,也即游戏逻辑处理即可。如果我们把这两项功能集成到一个服务进程中,则最终的结构很简单: client ----- server 嗯,太简单了点,这样也敢叫服务器结构?好吧,现在我们来往里面稍稍加点东西,让它看起来更像是服务器结构一些。 一般来说,我们在接入游戏服务器的时候都会要提供一个帐号和密码... 阅读全文
posted @ 2012-05-25 18:07 很多不懂呀。。 阅读(911) 评论(0) 推荐(0) 编辑
摘要: 关于服务器中玩家数据缓存: 服务器在启动的时候会从数据库中导入大量的信息,包括玩家的基本信息,玩家的活动信息,邮件,好友,组队等等。 问题:哪些信息是必须在服务器初始化时导入的? 考虑这个问题的因素:并不是所有的玩家角色活动频繁,有一部分的玩家长时间是不登陆的,全部导入会增加服务器的内存,而且查询服务器数据也会带来效率的影响。 考虑的方案:服务器启动初始化时,仅仅从数据库获取一些经常需要用到的数据,如玩家角色信息,其他数据在需要用到时动态的添加到服务器缓存中。账号服务器也可以采取这样的方案,单个账号服务器存放大量的玩家账号数据,账号服务器启动时候,不导入任何数据,当玩家第一次登陆时候,从数据库 阅读全文
posted @ 2012-05-25 18:03 很多不懂呀。。 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 要在游戏开发最初清楚地知道需要做些什么,就必须构造程序的操作流,并确保能够很容易地对程序进行修改。一个典型的程序,首先要初始化所有的系统和数据,然后进入主循环,大部分事情都出现在主循环中,根据游戏状态(标题画面,菜单画面,游戏画面等),需要对输入和输出进行不同的处理。 下面是一个标准游戏应用程序应该遵循的步骤:1、初始化系统(Windows,图形,输入等)。2、准备数据(加载配置文件)。3、配置缺省状态(一般是标题画面)。 4、开始主循环。5、判定状态并通过获取输入、输出并对之进行处理。6、如果应用程序没结束,则返回第5步,否则进行第7步。7、清除数据(释放内存资源等)。8、释放系统(Wind 阅读全文
posted @ 2012-05-25 17:57 很多不懂呀。。 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 在实际的工作中,通常会有一些状态需要表示。我们这些状态又想节约一点空间。于是我们选择了用一个32位的无符号整数来存放这些状态。比如:在游戏里面,某个玩家的一些状态也就是我们经常说的BUFF,比如:持续加血,持续加蓝,持续加体力,经脉受伤,被点穴等等。于是我们就有一个枚举:enum EPLAYER_STATE{ EPST_NONE = 0x00000000, // 没有状态 EPST_ADDHP = 0x00000001 , // 加血 EPST_ADDMP = 0x00000002, // 加蓝 EPST_ADDSP = 0x00000004, // 加体力 EPST_JMDAM = ... 阅读全文
posted @ 2012-05-25 17:53 很多不懂呀。。 阅读(529) 评论(0) 推荐(0) 编辑
摘要: 整个c++程序设计全面围绕面向对象的方式进行,类的继承特性是c++的一个非常非常重要的机制,继承特性可以使一个新类获得其父类的操作和数据结构,程序员只需在新类中增加原有类中没有的成分。 可以说这一章节的内容是c++面向对象程序设计的关键。 下面我们简单的来说一下继承的概念,先看下图: 上图是一个抽象描述的特性继承表 交通工具是一个基类(也称做父类),通常情况下所有交通工具所共同具备的特性是速度与额定载人的数量,但按照生活常规,我们来继续给交通工具来细分类的时候,我们会分别想到有汽车类和飞机类等等,汽车类和飞类同样具备速度和额定载人数量这样的特性,而这些特性是所有交通工具所共有的,... 阅读全文
posted @ 2012-05-25 16:52 很多不懂呀。。 阅读(670) 评论(0) 推荐(0) 编辑
摘要: 组合和继承的主要目的是为了代码的重用。1.什么是继承A继承B,说明的是A是B的一种,并且B的所有行为对A都有意义eg:A=WOMAN B=HUMANA=鸵鸟 B=鸟(不行),因为鸟会飞,但是鸵鸟可不成2.继承的一些规则1)在继承中,所有继承的东西都默认为private,就算它原来在基类是public的,如果希望在子类中也是public,那么在继承时应该使用public声明2)如果派生类重载了基类的函数,那么派生类的对象调用这些函数时将默认为调用派生类的版本,如果要用基类的版本则要加上类名和范围分解符3)当创建一个派生对象时将默认调用基类的构造函数,其实不管是组合还是继承,基本思想就是在进入新类 阅读全文
posted @ 2012-05-25 16:38 很多不懂呀。。 阅读(656) 评论(0) 推荐(0) 编辑
摘要: 假若计算机属于一个类,主板属于一个类,那个计算机类中就包含有主板类。C++里一样,如果A类中有B类的成员,那么A就包含B类的组合:一个类内嵌其它类的对象作为本身的成员。两者是包含与被包含的关系。当创建类的对象时,如果这个类具有内嵌对象成员,那个各个内嵌对象应首先被自动创建。在创建对象时既要对本类的基本类型数据成员进行初始化,同时又要对内嵌对象成员进行初始化。组合类的构造函数定义: 类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表)....... { 类 的初始化 } 详细为: 类名::类名(对象成员所需形参,本类成员形参):对象1(参数),对象2(参数),........后面红 阅读全文
posted @ 2012-05-25 16:33 很多不懂呀。。 阅读(1192) 评论(0) 推荐(0) 编辑
摘要: 一、表示符号上的区别二、具体区别与联系继承(泛化) 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系,可分单重继承,多重继承(java不支持);在Java中此类关系通过关键字extends明确标识。 实现 指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识 依赖 可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A. 阅读全文
posted @ 2012-05-25 11:29 很多不懂呀。。 阅读(917) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 18 下一页

导航