Server
Easlee
这个作者很懒,什么都没留下…
展开
-
服务器结构探讨(1) -- 开篇
关于服务器技术的文章不怎么好找,做个备忘转载自 http://bbs.gameres.com/showthread.asp?threadid=93775 有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我看的版本有了比较大的完转载 2011-10-09 11:57:27 · 608 阅读 · 0 评论 -
服务器公共组件实现 -- 消息队列
既然说到了消息队列,那我们继续来稍微多聊一点吧。 我们所能想到的最简单的消息队列可能就是使用stl的list来实现了,即消息队列内部维护一个list和一个互斥锁,putMessage时将message加入到队列尾,getMessage时从队列头取一个messag转载 2011-10-09 14:54:35 · 841 阅读 · 0 评论 -
服务器结构探讨(4) -- 继续世界服
都已经看出来了,这种每切换一次地图就要重新连接服务器的方式实在是不够优雅,而且在实际游戏运营中也发现,地图切换导致的卡号,复制装备等问题非常多,这里完全就是一个事故多发地段,如何避免这种频繁的连接操作呢? 最直接的方法就是把那个图倒转过来就行了。客户端只需要连接转载 2011-10-09 12:19:05 · 616 阅读 · 0 评论 -
游戏对象的实现 (补)
有关游戏对象实现的描述,前面两篇文章中说的不甚清楚,主要是一直都要引用网上能够找到的资料来进行描述,以避免与公司引起不必要的麻烦。所以语言有些拼凑的感觉,举的例子也很不恰当,今天正好看到了游戏编程精粹五和六上的两篇文章,内容都差不多,>和>,说的也是我上两篇文章想要描述的内容,所转载 2011-10-09 15:19:02 · 640 阅读 · 0 评论 -
游戏对象的实现 (下)
在上一篇中做了个简单描述,还有一种游戏对象实现方法是使用通用的实体对象。 在游戏编程精粹四有三篇文章讲到了实体以及实体管理的实现方案,其中一篇文章说到了实体管理系统的四大要素:定义实体怎样沟通的实体消息,实现一实体类代码和数据的实体代码,维护已经注册在案的实体类转载 2011-10-09 15:13:24 · 631 阅读 · 0 评论 -
再谈登录服的实现
离我们的登录服实现已经太远了,先拉回来一下。 关于登录服、大区服及游戏世界服的结构之前已做过探讨,这里再把各自的职责和关系列一下。 GateWay/WorldServer GateWay/WodlServer LoginS转载 2011-10-09 15:04:44 · 553 阅读 · 0 评论 -
服务器公共组件实现 -- 状态机
有关State模式的设计意图及实现就不从设计模式中摘抄了,我们只来看看游戏服务器编程中如何使用State设计模式。 首先还是从mangos的代码开始看起,我们注意到登录服在处理客户端发来的消息时用到了这样一个结构体: struct AuthHandle转载 2011-10-09 14:59:56 · 600 阅读 · 0 评论 -
服务器公共组件实现 -- 环形缓冲区
消息队列锁调用太频繁的问题算是解决了,另一个让人有些苦恼的大概是这太多的内存分配和释放操作了。频繁的内存分配不但增加了系统开销,更使得内存碎片不断增多,非常不利于我们的服务器长期稳定运行。也许我们可以使用内存池,比如SGI STL中附带的小内存分配器。但是对于这种按照严格的先进先转载 2011-10-09 14:55:25 · 592 阅读 · 0 评论 -
服务器公共组件实现 -- 继续来说主循环
前面我们只简单了解了下mangos登录服的程序结构,也发现了一些不足之处,现在我们就来看看如何提供一个更好的方案。 正如我们曾讨论过的,为了游戏主逻辑循环的流畅运行,所有比较耗时的IO操作都会分享到单独的线程中去做,如网络IO,数据库IO和日志IO等。当然,也有转载 2011-10-09 12:49:54 · 1224 阅读 · 0 评论 -
服务器公共组件实现 -- mangos的游戏主循环
当阅读一项工程的源码时,我们大概会选择从main函数开始,而当开始一项新的工程时,第一个写下的函数大多也是main。那我们就先来看看,游戏服务器代码实现中,main函数都做了些什么。 由于我在读技术文章时最不喜看到的就是大段大段的代码,特别是那些直接Ctrl+C转载 2011-10-09 12:49:03 · 1312 阅读 · 0 评论 -
服务器结构探讨(5) -- 最终的结构
如果我们就此打住,可能马上就会有人要嗤之以鼻了,就这点古董级的技术也敢出来现。好吧,我们还是把之前留下的问题拿出来解决掉吧。 一般来说,当某一部分能力达不到我们的要求时,最简单的解决方法就是在此多投入一点资源。既然想要更多的连接数,那就再加一台网关服务器吧。新增转载 2011-10-09 12:20:46 · 567 阅读 · 0 评论 -
服务器结构探讨(2) -- 登录服的负载均衡
回想一下我们在玩wow时的操作流程:运行wow.exe进入游戏后,首先就会要求我们输入用户名和密码进行验证,验证成功后才会出来游戏世界列表,之后是排队进入游戏世界,开始游戏... 可以看到跟前面的描述有个很明显的不同,那就是要先验证帐号再选择游戏世界。这种结构也转载 2011-10-09 12:00:59 · 650 阅读 · 0 评论 -
游戏对象的实现 (上)
狭义的游戏对象是指游戏世界中所能看到及可交互的对象,如玩家、怪物、物品等,我们这里也主要讨论这类对象在服务器上的组织及实现。 在大部分的MMOG中,游戏对象的类型都大同小异,主要有物品、生物、玩家等。比如在wow中,通过服务器发下来的GUID我们可以了解到,游戏转载 2011-10-09 15:09:02 · 690 阅读 · 0 评论 -
服务器公共组件 -- 事件与信号
关于这一节,这几天已经打了好几遍草稿,总觉得说不清楚,也不好组织这些内容,但是打铁要趁热,为避免热情消退,先整理一点东西放这,好继续下面的主题,以后如果有机会再回来完善吧。本节内容欠考虑,希望大家多给点意见。 有些类似于QT中的event与signal,我将一些转载 2011-10-09 15:01:34 · 518 阅读 · 0 评论 -
服务器公共组件实现 -- 发包的方式
前面一直都在说接收数据时的处理方法,我们应该用专门的IO线程,接收到完整的消息包后加入到主线程的消息队列,但是主线程如何发送数据还没有探讨过。 一般来说最直接的方法就是逻辑线程什么时候想发数据了就直接调用相关的socket API发送,这要求服务器的玩家对象中保转载 2011-10-09 14:58:50 · 565 阅读 · 0 评论 -
登录服的设计(1) -- 功能需求
正如我们在前面曾讨论过的,登录服要实现的功能相当简单,就是帐号验证。为了便于描述,我们暂不引入那些讨论过的优化手段,先以最简单的方式实现,另外也将基本以mangos的代码作为参考来进行描述。 想象一下帐号验证的实现方法,最容易的那就是把用户输入的明文用帐号和密码转载 2011-10-09 12:38:09 · 624 阅读 · 0 评论 -
服务器结构探讨(6) -- 一点杂谈
再强调一下,服务器结构本无所谓好坏,只有是否适合自己。我们在前面探讨了一些在现在的游戏中见到过的结构,并尽我所知地分析了各自存在的一些问题和可以做的一些改进,希望其中没有谬误,如果能给大家也带来些启发那自然更好。 突然发现自己一旦罗嗦起来还真是没完没了。接下来先转载 2011-10-09 12:26:19 · 600 阅读 · 0 评论 -
服务器结构探讨(3) -- 简单的世界服实现
讨论了这么久我们一直都还没有进入游戏世界服务器内部,现在就让我们来窥探一下里面的结构吧。 对于现在大多数MMORPG来说,游戏服务器要处理的基本逻辑有移动、聊天、技能、物品、任务和生物等,另外还有地图管理与消息广播来对其他高级功能做支撑。如纵队、好友、公会、战场转载 2011-10-09 12:04:48 · 583 阅读 · 0 评论 -
Windows下编译 MySQL 5.5.x
1.官网下载 mysql-5.5.x.zip的源码包并解压2.进入mysql-5.5.x目录3.命令行运行 >cmake . -G "Visual Studio 9 2008"4.开启VS命令行(visual studio 2008 command prompt)5 . > devenv MySQL.sln /build Release6.命令行没有任何提示,直接返回,但此原创 2011-10-25 10:26:22 · 731 阅读 · 0 评论