您当前所在位置:首页游戏资讯游戏攻略网页游戏平台游戏接入-网页游戏架构与开发-经验分享

网页游戏平台游戏接入-网页游戏架构与开发-经验分享

更新:2023-05-14 20:10:41编辑:9rj归类:游戏攻略人气:63

网页游戏平台游戏接入-网页游戏架构与开发-经验分享

《网页游戏架构与开发-经验分享》会员分享,可在线阅读。 更多《网页游戏架构与开发-经验分享(35页珍藏版)》请在人人文库在线搜索。

1. 开发经验分享 咖啡熊(李莉) email: 日期: 2011-5-28 内容介绍 - 网页游戏概述 网站服务器架构 网络游戏服务器架构 网页游戏服务器架构 服务器事件系统 狂RPG 对战流程 游戏时间校对 数据库设计介绍 游戏开发的程序员需要了解游戏的定义和逻辑吗? 不必要? 需要? 网页游戏概述 什么是网页游戏? 网页游戏和在线游戏有什么区别? 为什么会出现网页游戏? 网页游戏的特点? 网页游戏实际上是用浏览器玩的游戏。 它不需要下载客户端,只要一台能上网的电脑就可以玩游戏。 是不是页游是根据是否需要下载客户端来划分的。 是不是网页游戏是根据用户来划分的。比较公认的定义:基于

2、浏览器,用户玩的游戏时间碎片化的网络游戏称为网页游戏。 下面我们主要讨论这类游戏的架构和开发。 网页游戏可以看作是网站和游戏的结合体,因此具有这两类系统的特点。 我们不仅可以把网页游戏看成是网站,也可以把它看成是网络游戏。 网站是B/S结构,网络游戏是C/S结构,网页游戏是两者的结合。 Web服务器架构 网站是B/S结构。 MVC思想:浏览器通过HTTP协议发送数据请求,控制器接受请求,通过路径委托给数据模型处理。 模型通过与逻辑层和持久层的交互,将处理结果反馈给控制器,控制器根据结果进行组装。 查看,最后反馈给客户端浏览器。 4. 集成模块返回位置 3. 提交集成模块进行处理,/逻辑层和

3. 持久层Web服务器架构 Web服务器架构 Web服务器架构 Web服务器架构 前端页面缓存 J Drunk | 可复用业务 各类数据中心 同步/异步 同步/异步 页面碎片缓存 数据缓存 分布式缓存 DAL分布式文件系统 类似于基础网络游戏服务器架构。 网络游戏一般采用C/S结构。 客户端负责绘制游戏世界的实时画面,服务端负责响应所有客户端连接请求和游戏逻辑处理,控制所有客户端的画面绘制,客户端与服务端交互互相通过网络数据包来完成游戏逻辑的每一步。 网关服务器模式,主要职责是将客户端通信与游戏服务器隔离。网关服务器只负责解析数据包、加解密、超时处理、过滤错误

4.封装,客户端只需要与网关服务器建立连接即可进入游戏,无需直接连接游戏服务器。 网关服务器分为(登录网关服务器)和(游戏网关服务器)。 . Log主要负责维护玩家登录时客户端与客户端之间的网络连接和通信,并对与客户端的通信数据进行加密和校验。 2、主要功能是验证玩家账号是否合法,生成登录凭证。 主要负责客户端与客户端之间的网络连接和通信,对客户端的请求和发送的数据进行简单的分析。 4.主要负责游戏

5、逻辑处理,包括战斗系统、任务系统、角色系统、地图系统等。 5、主要负责游戏数据缓存,包括玩家游戏属性数据,减轻数据库压力。 6、负责一组服务器中多个服务器之间的数据转发和广播。 7. Mysq I 负责持久化数据存储。 127.0,0.8。 客户端套接字,消息 ID 127.0.0,8。客户端套接字消息 ID 127.0.0.9,客户端套接字。 登录服务密钥网关:Mid,。 角色选择服务器网关。 close-a.te.exe:.exe.127.0.0.3:7100.127.0.0.1:?CC0: 服务套接字接口,FTP补丁服务完成

6.端口服务套接字。 完成端口,即完成端口游戏客尸机.exe:Mir3.e=xe.127.0.0.7,客户端,消息127.0.0.5:7330。 网页游戏服务器架构 服务器采用L inxu系统,Nginx,MySQL数据库,PHP Fast CGI环境,PHP进行核心功能和逻辑功能开发,聊天和部分实时功能使用C++。 一个游戏区以12台服务器为一组。 Web、DB主从、逻辑运算,老区可以使用12台服务器节省成本,新区可以使用24台服务器。 分离架构取决于游戏区域的压力。 静态发球

7. r为CDN,各区共享。 IM全区通用。根据玩家资料,大众敢ig逻辑可云玄半生(atJ定一世真云修陀储字云可云W眼无翠(丹玉库(全血障(救泽库(听库(垃圾她) ) (数据缓存服务,业务逻辑层,zzxZX,以及玩家浏览器体验所需要的响应。5K网页游戏服务器架构 当用户通过浏览器访问服务器时,首先访问web服务器,通过web服务器,去访问游戏逻辑层,通知游戏逻辑层执行玩家操作,从游戏逻辑层获取游戏数据,或者直接访问数据库获取游戏数据,web服务器的特点是触发执行,以及当用户访问网页时,才会执行网页的程序代码。而我们经常

8、实际上需要24小时执行,所以web服务器的执行方式不适合游戏。 所以我们需要另一个应用程序来执行这些 24 小时不间断的事情要做。 这就是为什么我们需要添加游戏服务器设计思路。 网页游戏服务器架构网页游戏服务器架构对战逻辑计算服务器组玩家数据库WEB服务器(逻辑计算层)客户端浏览器服务器事件系统什么是事件系统事件系统是整个系统的核心组成部分,它控制着游戏进程,以便游戏及时执行过期命令。 事件是指玩家在游戏中的活动指令,分为瞬时活动和非瞬时活动。 瞬间活动,顾名思义,就是在玩家发出指令的瞬间就可以完成的活动。玩家从NPC那里购买一瓶药水,玩家

9. 发出该指令后,玩家金钱减少,药水增加1瓶,全部在玩家发出指令后瞬间完成。 服务器端的事件系统而非瞬时事件会在玩家发送某个命令后经过一定时间后执行。 比如在RPG游戏中,玩家点击地图上的怪物进行攻击。 这个攻击过程是一个非瞬时的过程,它有一个战斗的过程,这个过程需要一定的时间。 在游戏中网页游戏平台游戏接入,玩家的很多操作都可以看作是瞬时事件和非瞬时事件的结合。 比如在策略游戏中升级建筑,瞬时事件就是村庄资源的减少,非瞬时事件就是建筑的建造,非瞬时事件的结果就是建筑等级的提升。 例如,在策略游戏中的军队战争中,瞬时事件是当前村庄的士兵数量减少,非瞬时事件是减少的士兵移动到需要进攻的村庄。 结果,两个村庄开始打架。

10、服务器事件系统的事件队列中已经提到了瞬态事件和非瞬态事件的概念。 运行数小时后,系统会产生大量的非瞬态事件。 通常,将这些非瞬态事件统一取出,对事件结束事件进行排序,形成一个队列(event queue)。 然后通过一个触发器,在到达事件设置的结束时间的时刻执行对应的事件。 实现方法 数据库建立一个数据库内存表来存储事件队列,其中通常包含开始时间、结束时间、事件类型、事件参数等数据。 PHP写了一个FOR循环的过程,查询事件队列内存表,如果有队列有过期时间,则处理并删除队列数据。 LINUX消息队列通过LINUX消息队列存储游戏事件队列,PHP定时监听消息队列中是否有需要处理的事件队列进行处理

11.删除队列数据。 数据库存储方式与内存存储方式的比较:游戏中的事件队列会比较多,体现在数量和类型上。 各种事件队列。 在SLG游戏中: 1.在城市中建造建筑。 2.城市之间的战争。 3.在城市中建立军队。 4.研究技术。 RPG游戏中: 1 打怪或PK。 2.不断杀怪挂机。 3.练习挂机。 4.技能培训。 LINUX消息队列存储的好处是减轻了PHP进程对数据库查询的压力。 缺点是服务器宕机,内存中保存的消息事件队列会丢失。 RPG怪物事件队列丢失影响不大,但当前怪物无效。网页游戏平台游戏接入,但是其他类型的事件队列的丢失可能会产生巨大的影响,以及查询过期事件的效率。 RPG战斗流程客户端玩家发起战斗事件命令,服务端PHP接收

12、当事件到来时,在验证战斗的合法性后,将事件,即相关的计算数据存入LINUX消息队列,PHP战斗进程监听LINUX消息队列。 如果发现消息队列中有战斗事件: 1、PHP计算进程进行计算。 2.计算过程结束后,PHP计算过程将计算结果写入玩家的战绩DB内存表进行存储,并通过IM推送战报给客户端播放。 (注:战斗结果是存储在DB中还是在LINUX消息队列或内存中?) 3、PHP战斗结束进程监控数据库中的玩家战斗结果表。 战斗结束,删除数据,处理战斗奖励。 4.为防止玩家重复发起战斗事件,可以通过玩家ID验证服务器端是否有战斗队列。 (注:是否需要验证服务器的战斗状态?

13.怎么做? 查询搜索? ) 根据以上分析,服务器端会出现两个以上的战斗相关进程。 PHP监控战斗事件并计算进度,PHP监控战斗结束流程。 PHP处理战斗计算过程,可以扩展成战斗计算分布式服务器。 游戏时间校对校对玩家机和服务器的时间-防止客户端时间篡改-更准确的完成事件交互-客户端定时器长时间运行后,会与服务器端有时间差时间。 建筑施工倒计时和策略战队行军倒计时在SLG页游中很常见。 RPG网页游戏中的怪物连续攻击、挂机等功能。 铜雀阁(17) 04:25:22 攻击(-129, 229) 00:04:28 t 苍天攻击山寨boss训练 02:59:20 网页游戏常用资源储备增加小时输出时间功能.银两

14.: 10000 Grain: 22710© 数据库设计 对于任何项目来说,一个好的数据库设计是极其重要的,尤其是对于项目而言。 一个好的数据库设计相当于一个好的骨架和上下文。 当你的骨架搭建好了,上下文理顺了,你开始游戏功能代码的时候就会很流畅。 我们如何设计一个好的数据库? 设计前做好以下准备工作: 1. 游戏的业务逻辑要清晰。 2、多与游戏策划人员沟通,充分了解游戏的功能需求。 3.游戏逻辑有矛盾之处及时反馈给策划者并进行调整。 4.对于游戏功能,先按模块划分,再细化到各个表的结构。 5、游戏逻辑复杂的功能点需要反复推敲数据库

15. 设计 在开始设计数据库时,注意: 1. 表名和字段名标准化,逻辑相似的表按游戏功能模块划分并放在一起。 2、合理区分游戏配置数据表和玩家数据表。 3、游戏配置数据表和游戏玩家数据表在表名上进行区分,或者分库。 4、合理平衡表结构的逻辑关系,性能优良,易于理解,易于扩展。 5.表格字段类型的长度设置适当。 能用int就别用,能用就别用into。 7、合理规划表结构、常用字段和不常用字段,在设计中尽量避免关联查询。 8.一定要使用交易表,游戏数据表里面全是交易相关的数据。 9.合理使用JSON格式进行数据存储。 10.数据

16.冗余和性能权衡是个问题,比如用户昵称、职业等字段。 11、设计表索引字段,利用好联合索引。 12、利用好数据库内存表,实现适当的功能。 13、通过SQL验证数据是否存在时,必须使用COUNT(*)。 14.游戏中使用主从数据库时,会出现数据延迟问题,不够实时。 合理规划拆分数据库。 base.np c组。 nd INT( 10) Knock d: Nr(0) nnr § g- & g-1Vri r poor inch) m>3a 52f DIM 暂时 £3 Gs s

17. wnulc Juax Juax .'ua: by iTG ®1M IItWS avje;'Gs s far 1MTWE f«G5xzp一Juaxo ( pEg pdno&.Jdudn £lv aels- q&0 )du £ 2Jdu pp heart>.*£-Hejdu Li Q

18.

19. seq(8=NI pde£ pdeuj pu.2- tJS£ de lulla se- q- blue 0|&£ /E Wo Ideal servo/E 8-e =NIAJ5 pMA late w 柯公寨一动力传动 p ?Old ©o¥ri> N2PJ&dew ®WH?学lcll?£ ( p_Je:"seqQ'vu.n 谢谢!

九软件 版权声明:以上发布的内容及图片均来源于网络,如有无意侵犯到您的权利,请联系我们及时删除!

天空城网页游戏-百万点赞达《天空之城:浩劫》今日公测惊艳亮相极光大银幕 网页游戏发展趋向-在路上 | 游戏发展趋势研究:下一个爆款可能出现在哪些领域?