网页游戏架构与开发-经验分享.ppt
WEBGAME开发经验分享咖啡熊(李黎)
qq:email:shangdi12lili@163
日期:2011-5-28
目录
引言游戏开发的程序员是否要了解游戏相关定义、逻辑。不需要?需要?
网页游戏概述何为网页游戏?网页游戏与网络游戏区别?为何会出现网页游戏?网页游戏特征?网页游戏其实就是用浏览器玩的游戏,它不用下载客户端,只要一台能上网的电脑就可以进行游戏。按是否需要下载客户端来划分是否网页游戏。按用户来划分是否网页游戏。较认可定义:基于浏览器,拥有片段游戏时间的用户进行的网络游戏称为网页游戏。下面我们主要针对这类游戏架构与开发进行讨论。网页游戏可以看作是网站和游戏的结合体,因此它具备了这两类系统的特性。我们不但可以把网页游戏看作是一个网站,也可以把它看作是一个网络游戏。网站是B/S结构,网络游戏那么是C/S结构,网页游戏那么是这两者的结合。
网站是B/S结构。MVC思想:浏览器通过HTTP协议发送数据请求,由控制器接受请求,通过路径委托给数据模型处理,模型通过与逻辑层和持久层的交互,把处理结果反响给控制器,控制器根据结果组装视图,并最终反响给客户端浏览器。网站效劳器架构控制器〔Controller〕视图〔View〕模型
〔Model〕逻辑层和持久层1.浏览器请求数据返回浏览器2.委托模型处理3.提交集成模块处理4.集成模块返回处理5.模型返回处理结果6.准备视图7.返回视图
网站效劳器架构
StaticServer、IMServer客户端浏览器网站效劳器架构
网络游戏效劳器架构网络游戏一般采用C/S结构,客户端负责绘制游戏世界的实时画面,效劳器端那么负责响应所有客户端的连接请求和游戏逻辑处理,并控制所有客户端的画面绘制,客户端与效劳器通过网络数据包交互完成每一步游戏逻辑。网关效劳器方式,主要职责是将客户端通信和游戏效劳器隔离。网关效劳器只负责解析数据包、加解密、超时处理、过滤错误包,客户端只需建立和网关效劳器的连接即可进入游戏,无需与游戏效劳器直接连接。网关效劳器分为LoginGate(登录网关效劳器)、GameGate(游戏网关效劳器)。
网络游戏效劳器架构
1.LoginGate主要负责在玩家登录时维护客户端与LoginServer之间的网络连接与通讯,对LoginServer和客户端的通信数据进行加密、校验。2.LoginServer主要功能验证玩家账号是否合法,并生成一个登录凭证SESSIONKEY。3.GameGate主要负责客户端与GameServer之间网络连接和通讯,对客户端请求和发送数据做简单分析。4.GameServer主要负责游戏逻辑处理,包括战斗系统、任务系统、角色系统、地图系统等。5.DBServer主要负责游戏数据缓存,包括玩家游戏属性数据,降低数据库压力。6.Mserver负责一组效劳器中对多台GameServer之间数据转发和播送。7.Mysql负责数据持久化存储。网络游戏效劳器架构
网络游戏效劳器架构
效劳器使用Linxu系统,NginxWebserver,MySQL数据库,PHPFastCGI环境,PHP做核心功能与逻辑功能开发,聊天和局部实时性功能使用C++。一个游戏区采用1~2台效劳器为一组。WebServer、DBServer主从、MemcacheServer、逻辑运算Server,老区节约本钱可用1~2台效劳器,新区可用2~4台分开架构根据游戏区压力而定。StaticServer做CDN,所有区共用。IMServer所有区共用。网页游戏效劳器架构
用户通过浏览器访问效劳器的时候,首先是访问网页效劳器,通过网页效劳器,再去访问游戏逻辑层,通知游戏逻辑层执行玩家操作,并从游戏逻辑层里获得游戏数据,或者直接通过访问数据库而获得游戏数据。网页游戏效劳器架构网页效劳器的特点是触发执行,及当有用户访问网页的时候,才会执行该网页的程序代码。而我们常见的WebGame实际上是需要24小时不间断执行的,因此网页效劳器的执行方式并不适合做游戏。因此我们另外需要一个应用程序来执行这些24小时不间断要做的事情。这也就是我们需要增加游戏效劳器设计思路的原因。
网页游戏效劳器架构客户端浏览器WEB效劳器
〔逻辑运算层〕CACHE数据层公共数据库玩家数据库客户端浏览器WEB效劳器
〔逻辑运算层〕玩家数据库战斗逻辑运算效劳器群
效劳端事件系统什么是事件系统事件系统是整个WebGame系统里一个核心的组成局部,它控制着游戏的进程,使游戏能够及时执行到期命令。事件是指游戏里玩家的某个活动指令,它可以分为瞬时活动和非瞬时活动。瞬时活动顾名思义就是在玩家发出指令的瞬间就能完成的活动。玩家从NPC里购置一瓶药水,在玩家发出这个指令后,