文档详情

网页游戏架构与开发讲解.ppt

发布:2018-03-01约5.46千字共33页下载文档
文本预览下载声明
这段代码放到程序中实际运行时不难发现,N P C会迅速地追踪到目标。这种跟踪非常精确,但是在游戏中过于精确却不一定是一件好事,因为这会使N P C的行为看上去显得有点假。一种更自然的跟踪方式是使跟踪者的方向矢量与从跟踪目标的中心到跟踪者的中心所定义的方向矢量靠拢。 这个算法可以这样设计:假设AI 控制的对象称作跟踪者(tracker)并有以下属性: 跟踪算法 Position:(tracker.x,tracker.y) Velocity:(tracker.xv,tracker.yv) 被跟踪对象称作跟踪目标(target),有如下属性: Position:(target.x,target.y) Velocity:(target.xv,target.yv) 跟踪算法 if(ghost.y bat.y) bat.y--; else if(ghost.y bat.y) bat.y++; ?闪避算法 这个技术是让游戏的N P C 能避开玩家角色的追击,跟前面的跟踪代码很相似,跟踪算法的对立面就是闪避算法,只要把上例中的等式翻转,闪避算法就成了,下面是转换后的代码: if(ghost.x bat.x) bat.x--; else if(ghost.x bat.x) bat.x++; 以上介绍的3 个算法可以模拟NPC 的一些简单的寻路、跟踪和闪避行为,在小游戏中会经常用到。但是,在较大型的游戏中使用这样简单的算法就会大大影响游戏效果了。因此,大型游戏的人工智能算法都较复杂。 数据库设计 对于任何项目,一个好的数据库设计极其重要,对于WEBGAME来说就更是重中之重了。一个好的数据库设计相当于一付好的骨架和脉络,当你的骨架搭建好,脉络理顺后,再进行游戏功能代码的时候将会非常顺畅。 怎么样才能设计好一款WEBGAME的数据库呢? 在设计前因做好如下准备: 1.对于游戏业务逻辑要相当清晰。 2.多和游戏策划人员进行沟通,充分了解游戏功能需求。 3.发现游戏逻辑部分有矛盾时及时向策划人员反馈、调整。 4.对于游戏功能先按模块进行划分,然后再细化到每张表结构。 5.对于游戏逻辑复杂的功能点需要反复推敲。 数据库设计 开始设计数据库的时候因注意: 表名、字段名规范化,按游戏功能模块划分逻辑相近的表放在一起。 合理的区分游戏配置数据表和玩家数据表。 游戏配置数据表和游戏玩家数据表在表名上区分开,或则分库。 合理权衡表结构的逻辑关系、性能优、易理解、易扩展。 表字段类型长度设置合适,能用int就不要用varchar,能用mediumint就不要用int。 合理使用数据库表的纵切与横切来降低表压力。 合理规划表结构,常用字段和非常用字段,尽量在设计上避免关联查询。 一定要用INNODB事务表,游戏数据表中处处都是事务关联数据。 合理使用JSON格式进行数据存储。 数据冗余和性能权衡是个问题,比如用户昵称、职业等字段。 设计好表索引字段、用好联合索引。 在合适的功能上用好数据库内存表。 通过SQL来验证数据是否存在时一定要用COUNT(*)。 主从数据库用在游戏中会有数据延迟问题,不够实时。 合理的规划拆分数据库。 数据库设计 谢 谢! * 目录 引言 游戏开发的程序员是否要了解游戏相关定义、逻辑。 不需要?需要? 网页游戏概述 何为网页游戏? 网页游戏与网络游戏区别? 为何会出现网页游戏? 网页游戏特征? 网页游戏其实就是用浏览器玩的游戏,它不用下载客户端,只要一台能上网的电脑就可以进行游戏。按是否需要下载客户端来划分是否网页游戏。按用户来划分是否网页游戏。 较认可定义:基于浏览器,拥有片段游戏时间的用户进行的网络游戏称为网页游戏。 下面我们主要针对这类游戏架构与开发进行讨论。 网页游戏可以看作是网站和游戏的结合体,因此它具备了这两类系统的特性。 我们不但可以把网页游戏看作是一个网站,也可以把它看作是一个网络游戏。 网站是B/S结构,网络游戏则是C/S结构,网页游戏则是这两者的结合。 网站是B/S结构。 MVC思想:浏览器通过HTTP协议发送数据请求,由控制器接受请求,通过路径委托给数据模型处理,模型通过与逻辑层和持久层的交互,把处理结果反馈给控制器,控制器根据结果组装视图,并最终反馈给客户端浏览器。 网站服务器架构 控制器(Controller) 视 图 (View) 模 型 (Model) 逻辑层和持久层 1.浏览器请求数据 返回浏览器 2.委托模型处理 3.提交集成模块处理 4.集成模块返回处理 5.模型返回处理结果 6.准备视图 7.返回视图 网站服务器架构 Static Server、IM Server 客户端浏览器 网站服务器架构 网络游戏服务器架构 网络游戏一般采用C/S结构,客
显示全部
相似文档