游戏
stanjiang2010
这个作者很懒,什么都没留下…
展开
-
万里长征第一步
转眼间,2010已过去将近3月了,在老家过完春节回到这南国之地,也近1个月了,而心里一直盘算着我的2010工作目标与学习计划。 是的,这个周末终于已经把它搞定了,看到充实得有些苛刻的学习工作计划,心里忽然变得沉甸甸的。但这种沉甸并不会让我变得沉重,反倒是另外一种喜悦。因为,只有目标更清晰、务实了,踏出的步伐也会更坚实而有力。 前几天看倒一篇帖子,讲到一名大师原创 2010-03-14 22:55:00 · 935 阅读 · 1 评论 -
网游数据的推和拉
<br />应该允许客户端自行决定从服务器获取数据的方式。<br />1. 拉方式:请求时才发送。<br />2. 推方式:服务器主动发送。<br />客户端可以设定方式。<br />如客户端进入简化模式,不需要显示周围的玩家, 就设为请求时才发送周围玩家信息。<br />以位置同步信息为例:<br />假设服务器设定100-1000m范围内的位置同步信息的刷新间隔为3s.<br />客户端可以自主选择以下刷新方式:<br />1. 以不小于3s的间隔主动向服务器请求。如对于视野边缘的,刷新间隔可以是10s转载 2010-08-23 23:28:00 · 1117 阅读 · 0 评论 -
游戏服务器架构设计中的一些思考
<br />1、 游戏世界由很多个游戏对象组成(游戏角色、物品、NPC、技能等); <br /> <br />2、 一个游戏对象的有效数据主要存放在客户端、游戏服务器和持久性数据库中;<br /> <br />3、 游戏对象的处理可划分为与位置有关的和与位置无关的,如公会处理、物品处理等主要行为可以看作是与位置无关的处理,而NPC(AI)、战斗、移动这类的主要行为可以看成是与位置有关的。<br /> <br />4、 从客户端的角度来看,游戏行为可分为四类动作: <br />a) 来自服务器端的动作,如另外转载 2010-10-10 09:03:00 · 1856 阅读 · 0 评论 -
游戏服务器中的数据库异步操作技术和游戏数据的保存机制
<br /> 在游戏服务器中,处理玩家登陆需要向数据库查询玩家的账号和密码,玩家上线和下线需要对玩家的角色数据从数据库中读取和保存。可以说,相对于游戏逻辑处理来说,数据库操作是一种相对很慢的操作,即便你通过使用多个线程多个数据库连接来提高数据库操作的处理能力,但是,在高并发高负载的服务器应用中,这样仍然会是相当的负载瓶颈。设想这样一种设计方案,见下图:<br /><br /> 在大量玩家登陆游戏服务器时,由于有大量的数据库访问请求,即便是有自己实现的CACHE机制,还是会导致服务器耗尽所有的逻辑线转载 2010-10-10 09:16:00 · 2231 阅读 · 0 评论 -
网游开发中选择线程模型的思考
<br />一个典型的游戏服务器设计中,一般都是用的多线程,服务器中一般运行两类线程,N个SOCKET IO线程,1个逻辑线程,<br />IO线程接受客户端发来的信息,通过消息队列发送给逻辑线程处理后,再发送消息给客户端,发送消息这里一般是IO线程处理实际发送。<br /><br />其实我认为,如果逻辑线程都是消耗的CPU运算资源的话,服务器完全采用单线程的方式来做。<br /><br />首先,我们看IO处理,基本就是数据入队、出队,send、recv操作,作为服务器的SOCKET处理一般都是异步SO转载 2010-10-10 09:14:00 · 2695 阅读 · 2 评论 -
游戏服务器场景管理AOI方案
<br /><br />---------------------------------------------------------------------<br /> AOI(Area Of Interest)在MMOPRG游戏服务器上是不可或缺的技术,广义上,<br />AOI系统支持任何游戏世界中的物体个体对一定半径范围内发生的事件进行处理;<br />但MMOPRG上绝大多数需求只是对半径范围内发生的物体离开/进入事件进行处理。<br />当你进入一个游戏场景时,如果你能看到其他玩家,那背后转载 2011-05-18 11:10:00 · 5734 阅读 · 1 评论 -
来自同行朋友的wok list
<br />代码阅读==== 语言 ====<br />lua, http://www.lua.org/, http://luajit.org/<br />erlang, http://www.erlang.org/<br />python, http://www.python.org/golang, http://golang.org/, http://go-lang.cat-v.org/java, http://openjdk.java.net/The Computer LanguageBenchmar转载 2011-04-19 21:34:00 · 1345 阅读 · 0 评论 -
基于多层结构的网络游戏平台的研究与应用
基于多层结构的网络游戏平台的研究与应用学科专业: 计算机软件与理论研究方向: 计算机软件导 师: 李 祥 教授研 究 生: 匡 华中国 · 贵州 · 贵阳 2007年 5 月本文的主要工作在《天骄II》、《傲世online》、《凤舞天骄》中得到了实际运用目 录第一章 前言 81.1 网络游戏平台的发展背景 81.2转载 2011-06-20 08:02:00 · 8459 阅读 · 0 评论 -
搭建可复用的游戏服务器框架的思路
网络游戏公司成长到一定的阶段,会有一些经验和技术的积累,这些积累会在日后的游戏开发使用,但如果背负了过重的历史包袱,就应该丢弃,开发一套全新的架构在适应现在的游戏开发技术需要。而我,最近就在考虑一个可复用的服务器框架,这个问题思考已经不是一天两天的事情了,但还未正式开始实施。框架设计目的1:加快游戏开发过程,缩短开发周期——设计和代码的复用2:提高产品质量——由所谓的“精英”程序员开发和维护要提高转载 2011-06-20 07:26:00 · 2354 阅读 · 0 评论 -
MMOG游戏的服务架构初探
因MMOG游戏的功能决定,即游戏的各个实体存在大量的交互行为,比如地图视野内对象属性变化,战斗发生时各对象属性存在的大量的偏转和影响,很难通过基于角色对象的多线程功能划分来实现对多CPU的利用,所以这种模式并不适合多线程模式。 但是基于游戏的玩法,又存在地图区域,国家,势力,副本等很清晰概念,在各个定义范围内存在相互较独立的特点,可以较好的分割各功能模块,同时绝对功能的转载 2011-06-20 07:15:00 · 1997 阅读 · 0 评论 -
网游服务器通信架构的设计
随着网游从业者的规模和需求不断扩大,越来越多的朋友进入了网游开发这个领域,使得市场中网游开发技术相关的需求量迅猛增长。目前,网游行业比较紧缺的是具有较深技术功底的“专家型”开发者,这主要包括两个方面:服务器端设计人员以及客户端设计人员。对于网络游戏而言,由于其主要的游戏逻辑计算是在服务器端完成的,数据同步与广播信息的传递也是通过服务器完成的,所以,是否拥有一个有经验的服务器端设计转载 2011-06-20 07:26:00 · 2385 阅读 · 0 评论 -
游戏服务器通用架构
这里讨论的游戏服务器架构大概是目前国内乃至世界上的网游通用的一种架构了:http://bbs.gameres.com/showthread.asp?threadid=93775作者:qinglan有段时间没有研究技术了,这次正好看到了新版的mangos,较之以前我转载 2011-08-28 16:01:32 · 5661 阅读 · 5 评论 -
Social Game与MMORPG在服务器架构上的差异
最近在作公司的一个Social Game的项目服务器架构设计,与之前做过的MMORPG(简称RPG)相比,差别还是较为明显的,现总结一二,以供分享!(一)协议通信 1)Socail Game为了快速开发,在通信协议的选择上均会选择http作为底层通信协议,这样选择的好处大致有: 1、方便客户端编程:http为一应一答的同步模型;原创 2011-11-10 00:45:03 · 5121 阅读 · 2 评论 -
带宽限制下的视觉实体属性传播
<br /> The Sage of Ryzom是一款在2004年9月发布的MMOPRG,最开始发布在欧洲和北美,目前已经被本地化为3种不同的语言。它由Nevrax在2000年开发,在2006年末时由Gameforge接管。 <br /><br /> Ryzom由Nevrax团队独立开发,包括了Nevrax Library (NeL),该库基于GPL协议发布。在NeL之上,开发出了一项服务器技术用来处理高度仿真的虚拟世界。这篇文章关注于所开发出的如何平滑地移动实体和将动态属性传播给所有相同区域内其他客户转载 2010-06-10 09:06:00 · 1336 阅读 · 0 评论 -
网络游戏的位置同步
<br /> 有关位置同步的方案实际上已经比较成熟,网上也有比较多的资料可供参考。在《带宽限制下的视觉实体属性传播》一文中,作者也简单提到了位置同步方案的构造过程,但涉及到细节的地方没有深入,这里专门针对这一主题做些回顾。<br /> 最直接的同步方案就是客户端在每次发生位置改变时都向服务器报告 ,服务器再转发给周围的其他玩家,其他客户端将对应的游戏实体移动到新的位置上。<br /> 但是这样存在一个问题,每个玩家的位置都是自己先开始移动,一段时间之后才在其他玩家的客户端上表现出来。如果只是希转载 2010-06-10 09:20:00 · 1652 阅读 · 1 评论 -
这是一个好兆头
双休归来,又是新一周的开始。 早知道,今天凌晨有皇马的比赛的,但自从冠军杯意外出局,在那个让人无比失望的凌晨,我就跟女友说,这个赛季我再也不看皇马的比赛了(还多亏心爱的女友陪我一起看球,真TNND太不给面子了!)。看体育新闻,看到皇马赢球了,在客场4:1大胜,这多少能给我些许安慰,看到伊瓜因帽子戏法,又不禁为这小子能从逆境中知耻而后勇的精神而折服。希望这个赛季唯一的联赛冠原创 2010-03-15 22:11:00 · 1040 阅读 · 0 评论 -
进程结束new出的内存会回收吗?
今天调试程序,弄得有点纠结。无意间,和一帮同事讨论起一个问题:进程结束操作系统会回收new的内存吗?在自己的印象中,一直固执地认为,在使用C++操作分配对象内存后,如果程序员自己不用相应的delete操作回收的话,这块从堆内存是一直存在。在讨论中,有同事提醒说,在进程结束后,new操作的内存会被回收。但也只是结论,也说不出具体理由。 没关系,何不google一下,一查下去原创 2010-03-16 20:17:00 · 9808 阅读 · 5 评论 -
游戏服务器无条件core掉的启示
实际运营时,游戏服务器可能在任何时候core掉,一般而言,服务器中的重要数据都会存储在共享内存中,以便服务器进程core掉自动重启时,能尽可能恢复到core掉前的运行状态。最大限度地减小玩家的不适体验,理想情况下,当然是不让玩家感觉到服务器core了。 这里想到的一个问题是:当server core掉时,存储在共享内存的对象若有运行状态还未结束时,如何在恢复其数据时,继续原创 2010-03-17 22:24:00 · 2066 阅读 · 0 评论 -
MMORPG中技能战斗系统的技术分享
今天下午参加了公司兄弟项目组的一个技术分享会,主题是关于MMORPG游戏中的技能系统设计的,有几点体会和思考,先记录下来了! (1)技能施法时,client只有一个上行的请求施法包,后续施法的过程全由server来驱动下发施法各阶段的结果信息,如吟唱、效果伤害、命中信息等等; (2)弹道类技能是由server计算飞行时间,并不考虑飞行后的轨迹,若此时目标有移动,则cli原创 2010-03-18 21:26:00 · 3338 阅读 · 0 评论 -
游戏服务器程序的性能思考
今天看到做的项目(具体来说是服务器程序)被测试组同事做完压力测试后的邮件,有一些感触。 对于一个服务器程序来说,性能指标无非有CPU负载、内存消耗、I/O回写压力、网络包的流量等,目前测试组的测试都是在公司内网来做的,所以,网络包的流量不是瓶颈,但从测试的结果来说,这块恰好是我们的短板。我在想,有几个地方可能是我们可以优化的地方: (1)字节序的转换问题:游戏服原创 2010-03-19 22:42:00 · 1388 阅读 · 2 评论 -
强大的table
今天继续抽时间学习lua语言,慢慢接触到lua几个重要的语言特性了,比如:元表、元方法、模块与包的创建与应用、面向对象编程、以及弱引用table等。用step by step的方式一路学来,不禁为lua中table强大的功能所折服,目前领会到的table的强大功能有: (1)table提供直接访问lua的任意数据类型,即在绝大多数应用中,无需在lua中编写搜索算法;原创 2010-03-25 23:06:00 · 991 阅读 · 1 评论 -
关于MMORPG游戏开发中配置数据的一些思考
MMORPG游戏在开发中会涉及到大量的配置数据,这些配置数据有如下几个特征: 1)配置数据在服务器启动时进行初始化载入; 2)配置数据会经常变更,一些重要模块的配置数据几乎每个小版本都会有修改,如:技能系统、任务系统等; 3)错误的配置数据往往会引发程序许多意想不到的Bug; 4)各个模块的配置数据累加起来纷繁杂多,而这些配置数据原创 2010-03-29 19:40:00 · 2075 阅读 · 2 评论 -
由一个疑难Bug想到的... ...
今天游戏服务器在测试时碰到了一个疑难Bug,具体现象如下:server进程在间隔很短的时间(几十ms),同时收到client发过来的两个做技能的消息包,而正常情况下这两个消息包是要隔一个技能CD时间的。在排除client是按正常发送消息的情况后,自然就是对server的处理逻辑进行检查了。 几经排查,发现了另外一个问题,即在打印的server日志中,发现存在两条日志的时间原创 2010-03-30 18:29:00 · 1150 阅读 · 1 评论 -
思考游戏服务器的tick机制
游戏服务器程序内部都会统一设计所谓的tick机制,这个机制一般来说有两个用途,一是许多业务模块都会有定时处理的需求,如:技能Buff计时、时间道具检查、定时给玩家收益(打坐定时回血和蓝,跳舞定时回经验等)等等;二是游戏服务器内部会有一些日常主动驱动的事件,如:怪物移动、玩家移动等,这些需求都需要用到这个tick处理,夸张一点说,游戏服务器业务逻辑的处理绝大部分都会有涉及到tick处理的原创 2010-03-31 19:51:00 · 9139 阅读 · 2 评论 -
御龙在天---我们的游戏,我们的梦想
做了快两年的项目,今天第一次对外技术封测了。两年的时间,项目经历了核心人员的变更,项目管理的混乱,策划需求的频繁修改等等许多于项目不利的因素。但无论怎样,我们终于要给玩家亮相了。这次技术测试,我们放了约1900多个号,主要还是侧重于技术层面的验证,毕竟这是外网的第一次正式运营。上午10点,准时开服,在线的数据也慢慢的上升。我重新创建角色,作为一个普通玩家参与游戏中,尽管之前作内部测试时,已原创 2010-04-11 16:59:00 · 2313 阅读 · 2 评论 -
游戏马上技术封测了,姑且闲聊之... ...
项目马上就要进入技术封测了,这阵子加班也成了家常便饭,每天都是进行到凌晨1、2点,每天出一个版本,我知道这种工作方式是有待商榷的,虽然,明知道疲劳作战效率低下;虽然,明知道过度加班会导致Bug丛生;可目前似乎也就只能这样了。作为一名战士,首先你得服从。 午饭时,碰到了一位web game的同事,当聊到他们项目进展如何时,他说目前碰到了一些困境,项目中仅有两个策划,一个离职原创 2010-04-07 20:49:00 · 1246 阅读 · 1 评论 -
MMORPG游戏在技能战斗中的位置同步问题
这里列举在技能战斗系统开发中,碰到的两个与位置同步相关的问题 (一) 在MMORPG游戏中,对于那些同时拥有近攻和远程系等多种职业的游戏,策划一般都会对近攻类的职业,加上冲锋类的技能,以便平衡远程类职业在攻击距离上的优势。在client看到的效果,是玩家边播放冲锋动作,然后快速接近目标,并对目标一个伤害,而对server而言,该技能与其它技能在原创 2010-05-04 16:18:00 · 5271 阅读 · 2 评论 -
2013年度总结
今天是2014年的第一天,又是一年过去了。 过去的2013,是我生命中最重要的年份之一!这一年无论生活,还是工作,都发生了许多大事,值得一一记录! 【生活篇】 (1)皮皮出生 2013在我生活里,最重要、最特别、最欣喜的事情就是小宝宝的出生。 新年伊始,我可爱的皮皮诞生了,谢谢亲爱的、伟大的老婆,经历了分娩的痛楚,顺产成原创 2014-02-09 15:31:40 · 1497 阅读 · 0 评论