随笔分类 -  网游服务器端设计思考

网游服务器端设计思考
摘要:最近闲着没事把云风的《开发笔记》看了个遍,希望能从大牛的开发轨迹中得到一些启发。但可能是因为本人level太低,一遍看下来还是云里雾里,不甚明白。没办法只好再看一遍,希望能对他们的服务器端架构有个简单的认识,这里同时做些笔记。 PS:本文是我个人对云风的开发笔记的读后感,可能会有很多错误,慎入! ----------------------------------------华丽... 阅读全文
posted @ 2012-10-15 20:06 ychellboy 阅读(57647) 评论(14) 推荐(3)
摘要:上一篇《网络游戏服务器构架设计(二)》介绍了刀剑Online的连接负载服务器CLS,博友提出质疑“说得不够详细,比如你怎么,场景服务器怎么才算一个场景服务器,场景服务器切换怎么处理不断线后连接另一个场景的,还有很多细节问题没有说到”,本篇就来介绍游戏服务器最为核心的部分:游戏逻辑服务器,同时也回答了这位博友的问题。PS:本篇的文章结构主要分两个部分,前半部分(2.2节)介绍刀剑Online如何实现游戏逻辑服务器,后半部分(2.3节)为本人结合实际工作对这套服务器构架做出的一些展开解释及补充,主要对设计思想进行分析。精彩在后面哦!--------------------------------. 阅读全文
posted @ 2012-09-17 16:51 ychellboy 阅读(18953) 评论(17) 推荐(8)
摘要:本文并没有涉及什么逆向工程,只是拜读刀剑Online服务器端主程的文章后[1],想结合自己的经验谈一谈。PS:由于题目范围太大,本系列的前言做了一些限制。一、网络游戏服务器 要想设计好网络游戏服务器的构架,首先需要知道网络游戏服务器在玩家游戏过程中发挥什么作用。就我个人的理解:网游服务器在玩家游戏过程中扮演上帝的角色。玩家在服务器制定的规则下进行游戏,服务器负责同步在线玩家之间的属性、操作、状态等等,最终在多个不同的客户端呈现一个“统一”的游戏世界。 所谓的服务器构架在本系列blog中,主要是指如何将服务器各部分合理的安排,以实现最初的功能需求。好的结构不是一蹴而就的,是通过需求的推动一步步. 阅读全文
posted @ 2012-08-20 20:48 ychellboy 阅读(18163) 评论(17) 推荐(4)
摘要:这篇blog题目涉及的范围真大!以至于在这里需要先写一篇前言把范围缩小。选择写这样一个系列的文章,主要是想给工作了两年的自己一个交代,或者说是一个阶段性的总结。两年时间里,房价依然再涨,工资依然跑不赢CPI,某人依然在仰望星空。期间很多梦碎了,很多还在坚持着,生活过得波澜不惊。而我也从刚毕业是的青涩逐步蜕变为“老油条”。不知道是一种悲哀、还是一种悲哀、还是一种悲哀....... 庆幸的是梦还在继续,一颗倔强的心还在坚持。希望明天的明天被束缚的心能回到梦开始的地方!==========================我只是条分割线======================== 作为本系列bl. 阅读全文
posted @ 2012-08-14 21:14 ychellboy 阅读(11178) 评论(0) 推荐(2)
摘要:网络游戏服务器端对时间的需求可以说是无处不在的,小到技能的冷却、技能的释放时间、物品使用的冷却、怪物的死亡重生、掉落物品的存在时间,大到节日活动的开启、boss怪的精确出生、周任务日任务的准点开始等等。而这些对时间的需求都依赖于服务器端提供的时间服务的实现,因此时间服务、时间控制模块在网游服务器端设计中是占有比较重要的地位。 本系列的第一篇《时间服务(一)序言》也描述了部分需求,但是用词较为戏谑。本文将进一步细化需求,最大程度上把实际工作中对时间的需求描述清楚。一、总体分类 按照大类来分,时间需求主要分为两大类:相对时间需求和绝对时间需求。下面具体展开来说:相对时间需求: 相对时间指的是时间. 阅读全文
posted @ 2012-03-04 00:06 ychellboy 阅读(3635) 评论(3) 推荐(2)
摘要:在网络游戏中常常会出现这样的情况,玩家在进行一些操作的同时是不能进行另一些操作的。比如说:正在移动的玩家不能释放带有吟唱的技能;死亡时不能交易;不能同时和两个玩家进行交易;不同阵营不允许交易等等。而很多需要交互的操作(比如交易)当一方取消或异常操作时,服务器会撤消双方的操作,并通知双方撤消的原因。在这就会面临一个问题,应该使用什么方式来通知客户端这些错误? 在设计游戏错误提示模块时应该考虑一下几个问题:易用性:每次添加新的错误提示都不费劲!可维护性:来个新人和他说两句,下次添加的时候他想都不想就能找到在哪加!可扩展性:今天加逻辑服务器给客户端的错误提示,明天要加连接服务器给客户端的错误提示也. 阅读全文
posted @ 2012-02-24 17:39 ychellboy 阅读(2322) 评论(2) 推荐(0)
摘要:网络游戏服务器端对于时间的需求很多,有些需求依赖于相对时间,比如开始采矿——需要随后几秒时间让客户端播动作。有些需求依赖绝对时间,比如只在2012年12月21日开启“末日之旅”的活动。正是由于有众多需求对时间有依赖性,使得时间服务、时间控制成为服务器端模块设计中较为重要的一部份。本系列将从游戏开发需求出发,循序渐进的介绍时间服务模块的设计和实现。 Attention:本文措辞比较调侃、夸张,非少数民族程序员请在父母陪同下观看:-) 壮族小伙本文简称“小伙”Scene 1 话说公元某年某月某日,帝都一个阳光明媚的早上,策划A笑眯眯的跑过来道“少年!我们想在4月1日愚人节开启一个活动,所有玩家发. 阅读全文
posted @ 2012-02-13 23:26 ychellboy 阅读(2224) 评论(1) 推荐(2)
摘要:网络游戏服务器的主要作用是模拟整个游戏世界,客户端用过网络连接把一些信息数据发给服务器,在操作合法的情况下,更新服务器上该客户端对应的player实体、所在场景等,并把这些操作及其影响广播出去。让别的客户端能显示这些操作。 在这个模拟过程中,需要解决的一个重要问题是:多长时间处理(更新)一次该服务器上的待处理事件,体现在实际开发中,这就是一个服务器端的心跳设计问题(tick)。 在网络游戏服务器端的心跳设计里主要面临以下几个问题:心跳函数的处理间隔往往是固定的,因为需要模拟现实世界中时间的性质,不能让游戏世界表现得忽快忽慢。但处理间隔固定不代表一定要和真实时间一致,有可能有快放慢放的需求。固. 阅读全文
posted @ 2012-02-10 17:37 ychellboy 阅读(13252) 评论(4) 推荐(6)