基于云计算的侦探网络游戏系统.docx
《基于云计算的侦探网络游戏系统.docx》由会员分享,可在线阅读,更多相关《基于云计算的侦探网络游戏系统.docx(41页珍藏版)》请在冰豆网上搜索。
基于云计算的侦探网络游戏系统
目录
1引言1
1.1论文主要研究工作及结构1
1.1.1网络游戏现状1
1.1.2网络游戏发展概况2
1.1.3网络游戏未来趋势2
1.2论文主要研究工作及结构3
1.2.1主要研究工作3
1.2.2组织结构3
1.3论文目的和意义4
2理论技术基础4
2.1云计算4
2.2非关系数据库5
2.3逻辑推理6
2.4Comet技术6
2.5Bayeux协议6
2.6GoogleAppEngine平台6
3系统分析7
3.1需求分析7
3.1.1详细调查7
3.1.2组织结构图8
3.1.3功能分析8
3.2流程描述9
3.2.1业务流程9
3.2.2数据流程13
3.2.3数据字典14
4系统设计22
4.1网络结构和系统架构22
4.2模块设计23
4.2.1插件式扩展25
4.2.2适配器模式设计25
4.3游戏功能设计25
4.4系用户体验设计26
4.5内存数据库设计27
4.6代码模型设计27
4.7安全设计28
4.7.1数据安全28
4.7.2防作弊设计28
5系统实施29
5.1适配接口29
5.2业务逻辑算法30
5.3Bayeux协议实现31
6总结与展望31
6.1总结31
6.2展望32
1引言
互联网不仅方便了人们的工作,同时也丰富了人们的生活。
但随着PC技术和网络技术的发展,网络游戏客户端越来越庞大,对电脑配置要求也越来越高,这使很多网游玩家望之却步。
如何更减轻客户端负担已成为网络游戏开发商的挑战之一。
逻辑推理游戏在娱乐的同时培养了玩家逻辑推理能力,于是受大广大逻辑推理爱好者的喜欢。
但单机模式下的逻辑推理游戏比之网络逻辑推理游戏,不仅灵活性和互动性差,更重要的是无法模拟复杂多变的人物心理。
1.1论文主要研究工作及结构
网络游戏区别与单机游戏而言的,是指玩家必须通过互联网连接来进行多人游戏。
它是指由多名玩家通过计算机网络在虚拟的环境下对人物角色及场景按照一定的规则进行操作以达到娱乐和互动目的的游戏产品集合[1]。
1.1.1网络游戏现状
韩国网络游戏公司2004年的销售额达到了6.4亿美元。
韩国国内的游戏制作及经营企业达到了1500多家,网吧等游戏场所46900个,8个包括韩国政府部门下属韩国尖端游戏产业协会KESA和韩国游戏支援中心KGPC在内的游戏协会,在288家有IT相关学位的大学中由政府指定赞助的10家游戏大学及研究院,6大包括OnGameNet、GameTV在内的有线电视和卫星广播专业游戏频道等组成的游戏产业群。
近几年,中国网络游戏市场规模急剧扩大,许多商家投巨资到网游市场,这足以证明整个网游产业的强劲发展势头。
目前我国网络游戏市场基本上以代理国外游戏为主,核心技术的80%为国外控制,这是我国网络游戏存在的技术瓶颈问题。
但国内网游公司已纷纷注意到了技术相对于整个网络游戏产业经济起到的决定性作用,越来越多的公司加入到了自主开发的阵列,《剑侠online》、《海之乐章》、《刀剑online》、《傲世online》、《大话西游》等等,也分别占据了国内市场的一部分份额。
黄少华在《淮阴师范学院学报》(哲学社会科学版)上发表的《青少年网络游戏行为研究》中提到:
“对网络游戏中的暴力内容及其可能导致的行为后果,多数青少年并未能够形成清晰的价值判断。
”说明网络游戏产业再带来巨大商业利润的同时也带来了不少负面影响。
黎朝晖,李岱松,李艳丽在《科技智囊》上发表的《强劲发展中的中国网络游戏产业》中提到:
“网络游戏是文化、艺术和高技术的结合体。
”可见网络游戏已从娱乐性质的游戏,上升为富有内涵社会文化。
随着网站技术上的提升,网页游戏在国内外兴起,由FiveMinutes公司开发的《开心农场》受到国内广大网民的喜爱,并使网页游戏概念深入人心,Facebook、人人网、XX空间、QQ空间等热门社区网站都集成了大量网页游戏应用,可见网页游戏已开始占据网络游戏市场。
1.1.2网络游戏发展概况
第一款真正意义上的网络游戏可追溯到1969年,当时瑞克·布罗米为PLATO(ProgrammedLogicforAutomaticTeachingOperations)系统编写了一款支持两人远程连线游戏。
同年,ARPAnet(AdvanceResearchProjectsAgencyNetwork)诞生,它是美国国防部高级研究计划署研制的世界上首个包交换网络,它的成功直接促成了互联网以及传输控制协议(即TCP/IP)的诞生,从而进入了第二代网络游戏阶级。
一些专业的游戏开发商和发行商开始涉足网络游戏,它们与GEnie、Prodigy、AOL等运营商合作,推出了第一批具有普及意义的网络游戏。
1996年开始,越来越多的专业游戏开发商和发行商介入网络游戏,一个规模庞大、分工明确的产业生态环境最终形成。
人们开始认真思考网络游戏的设计方法和经营方法,希望归纳出一套系统的理论基础,这是长久以来所一直缺乏的。
“大型网络游戏”(MMOG)的概念浮出水面,网络游戏不再依托于单一的服务商和服务平台而存在,而是直接接入互联网,在全球范围内形成了一个大一统的市场。
随着Web技术的发展,在网站技术上各个层面得到提升,国外已经开始新兴许多的“无端网游”,即不用客户端也能玩的游戏,也叫网页游戏或Webgame。
网页游戏上手容易,精简客户端的特性,受到办公室白领一族的追捧,2007年开始,中国大陆也陆续开始有许多网页游戏开始较大规模的运营,网页游戏作为网络游戏的一个分支已经逐渐形成。
康鹏,赵素华在《辽宁大学学报》(自然科学版)上发表的《网络游戏产业面临的机遇和挑战》中指出:
“网络游戏产业是我国重点发展的产业之一,对于推动我国经济的可持续发展具有重要作用.”说明网络游戏产业在我国经济发展道路上的重要性,同时说明该产业还将继续发展下去。
1.1.3网络游戏未来趋势
国内各大门户网站都投入到了网络游戏市场中,并获得了巨大利润,并且大型多人在线网络游戏正在以每月3-4款的速度新增,作为宽带应用的主要内容其市场规模已经高于单机游戏数倍。
时至今日,国内网络游戏产值超过10亿,玩家接近千万,而这样的势头在今后数年内必将有增无减。
据统计,加入到Facebook(国外著名社交网站)的第三方应用已经有3000多个,拥有100万以上用户的应用有26个,10万以上用户的有85个,数百个网页游戏。
而且许多游戏开发商在开发出一款新游戏的同时,会在Facebook上发布一个对应的游戏应用。
网页游戏凭借低配置要求、“瘦”客户端[2]的优点越来越受到人们重视,未来几年将是它的发展热潮。
综合C/S结构网络游戏和网页游戏的优点:
强大的画面效果、丰富的游戏功能、高游戏性能、简便的瘦客户端形式,基于云计算的网络游戏必将是网络游戏发展的未来发展导向。
“你能看多炫的电影,就能玩多炫的游戏”,这句话正说明了,云计算下的网络游戏将所有的程序运算放在云端进行,最终只返回图像结果。
这样一来,网民玩网络游戏所需的电脑配置就大大降纸了。
基于云计算的网络游戏是非常美好的设想,但真正实现还受网络带宽、路由交换速率、高性能云计算服务器等硬件技术的限制。
1.2论文主要研究工作及结构
1.2.1主要研究工作
论文对侦探网络游戏系统做了比较全面系统地研究,论文主要内容如下:
逻辑推理游戏设计:
通过对逻辑推理的理论研究,分析总结其特点,并将理论加入到游戏设计中,研究总结出富有娱乐性和逻辑能力培训效果的网络游戏,在游戏中突出逻辑推理类游戏的灵活性、互动性、智宜性等特点。
研究开发网络游戏系统的技术理论依据及方案:
通过分析网络游戏未发展趋势,总结符合其发展趋势的诸如云计算、非关系数据库、Comet技术、Bayeux协议、GoogleAppEngine平台等开发技术,并通过综合研究提出了系统实现的可行性技术方案。
侦探网络游戏系统分析与设计:
分析系统的需求,流程描述。
在系统中加入插件式扩展的设计,以适配器模式设计将系统核心与表现分离。
侦探网络游戏系统实现:
根据设计实现侦探网络游戏系统;制定出易扩展的适配API接口,构建多种客户端共存的网络游戏系统;系统业务逻辑方面的算法实现;Bayeux协议的定制实现。
总结研究过程中克服的难点和解决方法,探讨网络游戏的未来走向,以及符合网络游戏发展的技术发展方向。
1.2.2组织结构
引言:
介绍论文研究背景、研究内容,以及论文的目的和意义。
理论技术基础:
详细介绍了逻辑推理的理论知识以及系统技术实现方面的知识。
系统分析:
通过对系统进行详细的需求分析,制定系统流程描述说明。
系统设计:
对系统的运行平台,模块、功能、数据库、安全、用户体验等方面进行详细设计。
系统实现:
系统开放适配接口介绍、核心逻辑算法和Bayeux通讯协议的定制实现。
总结与展望:
对全文的理论、工作和意义进行了总结,提出了下一步将要进行的研究工作,并展望了侦探网络游戏未来的发展趋势。
1.3论文目的和意义
论文目的:
在网络游戏系统中运用逻辑推理理论,设计并开发出适合玩家娱乐和培养逻辑思维能力的游戏。
论文意义:
游戏系统以“逻辑推理”为游戏中心思想,“规范化核心,多种客户端共存”的开发设计思路,结合云计算、非关系数据库、Comet技术、Bayeux协议等最新技术为组成元素,GoogleAppEngine为构建平台,是未来网络游戏开发设计思想的体现。
核心与表现分离、特点,使系统核心可以以网页应用形式发布于Facebook、人人网等开放应用平台的社交网站上,通过社交网站获得大量使用用户。
多客户端共存的特点使系统能够发布在如PC、移动设备等不同的平台上,从而吸引更多用户。
2理论技术基础
2.1云计算
云计算(CloudComputing),分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服
图2-1云计算框架图
务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。
透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务[3]。
它是并行计算(ParallelComputing)、分布式计算(DistributedComputing)和网格计算(GridComputing)的发展,或者说是这些计算机科学概念的商业实现。
云计算是虚拟化(Virtualization)、效用计算(UtilityComputing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果,如图2-1。
最简单的云计算技术在网络服务中已经随处可见,例如搜寻引擎、网络信箱在线文档、在线绘图等,使用者只要输入简单指令即能得到大量信息。
GoogleDocs是一个标准的云计算软件服务,用户通过浏览器直接使用该服务,处理和搜索文档、表格、幻灯片,并可以通过网络和他人分享。
2.2非关系数据库
非关系型数据库是相对于关系型数据库而言的,关系数据库的数据逻辑结构是二维表,而非关系数据库有层次数据库、网状数据库等,键值数据库(Key-ValueStoreDB)是它最热门的实现形式,由一系列key-value对的记录构成,key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符串。
它没有数据类型和数据表的概念,当做为Hash表数据库使用时,每个key必须是不同的,因此无法存储两个key相同的值。
随着互联网Web2.0网站的兴起,非关系型数据库已成为极其热门的新领域,非关系数据库产品的发展非常迅速。
而传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:
对数据库高并发读写的需求,关系数据库能勉强应付上万次SQL查询操作,但是无法应付上万次SQL写数据请求;海量数据的高效率存储和访问的需求,Facebook,twitter,Friendfeed等大型SNS网站,每天将产生海量的用户动态数据,以Friendfeed为例,一个月能达到了2.5亿条用户动态数据,而对于关系数据库来说,在一张2.5亿条记录的表里面进行SQL查询,效率是极其低下的。
对数据库的高可扩展性和高可用性的需求,在基于Web的架构当中,数据库最难进行横向扩展,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像Webserver和appserver那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。
对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展十分困难,往往需要通过停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢[4]?
关系数据库不再合适上面提到的“三高”需求,为了解决这类问题的非关系数据库应运而生。
近两年,出现了各种各样非关系数据库,最常见的键值数据库。
它比关系数据库更易伸缩起,典型应用如:
运用上百台数据仓库服务器处理规模庞大的伸缩需求,邮箱空间扩展业务等。
关系数据库模型和应用代码对象模型通常是以不同方式建立起来的,这导致了不兼容性。
开发人员通过将代码映射到关系模型去克服这种不兼容性,然而这样却耗费掉了应用开发的大量时间和精力。
另一方面,许多键值数据库在结构中保留的数据,较底层代码中对象类的映射关系更加直接,从而减少了开发时间。
2.3逻辑推理
逻辑推理是指把不同排列顺序的意识进行相关性的推导。
当人类听到他人陈述的事情时,大脑开始历经复杂的讯号处理及过滤,并将信息元素(Informationelement)经过神经元(Neuron)迅速的触发并收集相关信息,这个过程便是超感知能力。
之后由经验累积学习到的语言基础进行语言的处理及判断,找出正确的事件逻辑。
逻辑推理能力的运用,简单的有逻辑推理题的解答,复杂的有侦探破案的案例。
2.4Comet技术
Comet中文是“彗星”的意思,它是一种基于HTTP长连接的WEB服务器推技术(ServerPush)。
通过延迟响应的原理实现,从而实现了HTTP服务器实时推送消息的功能。
虽然有着实时性好,高性能的优点,但同时由于长期占用连接,丧失了无状态高并发的特点,所以Comet技术是一个有副作用的服务器推技术解决方案。
2.5Bayeux协议
Bayeux是一种客户端和HTTP服务器端之前传输低延迟异步消息的协议。
它定义的消息通过命名通道进行路由并且能够进行双向交互传送:
服务器到客户端,客户端到服务器,甚至客户端到客户端(需要通过服务器中转)。
默认的,此通道已经引用了发布的路由语义,但同时也支持其它路由模块。
Bayeux是Comet技术的一种规范定义,通过一系列json的事件来实现Comet各种业务,并致力让自己成为Comet技术的标准。
2.6GoogleAppEngine平台
GoogleAppEngine平台是一项针对网站构建的Google云计算服务,开发者可在Google的基础架构上运行网络应用程序。
它易于构建,并可根据网站访问量和数据存储需要的增长轻松扩展。
使用GoogleAppEngine,将不再需要维护服务器,开发者只需通过上传您的应用程序,便可立即获取网站服务。
GoogleAppEngine架构分四部分:
前端、应用服务器(AppServer)、服务群(ServiceGroup)和应用管理节点(AppMaster),如图2-2。
前端包括Front
图2-2GoogleAppEngine框架图
End和StaticFiles,主要提供下列功能:
负载均衡、静态文件的传输、html的生成、转发请求给应用服务器;应用服务器能同时运行多个应用的runtime(python/java);服务群现在主要包括下列服务:
Datastore、Memcache、Images、User、URLFetch、Email;应用管理节点主要负责应用的启停和计费。
它利用Google的BigTable技术实现Datastore。
BigTable是一个用来存储结构数据的分布式存储系统。
与平时常用的数据库不同,BigTable并非一个支持sql语言的关系数据库,而是云计算服务下的一个列导向的键值数据库(一列数据连续存储)。
BigTable为读取进行了优化,针对互联网服务中数据库的读取访问远远大于写入是的重要特点。
3系统分析
集中系统详细调查的文档资料,并对系统组织结构、功能模块和信息处理过程进行分析。
3.1需求分析
3.1.1详细调查
网络游戏《天黑请闭眼》有以下游戏规则:
表3-1翻牌方式与发言方式
顺序发言(单位:
玩家率)
自由发言(单位:
玩家率)
翻牌
10%
60%
不翻牌
20%
10%
表3-2各项游戏时间间隔表
时间项
时间(单位:
秒)
白天时间
120
夜晚时间
30
遗言时间
20
投票时间
20
PK对话时间
20
表3-3玩家说话气力值量表
气力值初始量
100
气力值消耗
每个字消耗1,每句话至少消耗10
气力值回复
每5秒回复5
气力值最低量
低于20不允许说话
3.1.2组织结构图
游戏中玩家扮演的“警察”、“杀手”,“平民”三种身份之一,这些身份分为两类,“好人”与“坏人”,“杀手”属于“坏人”,“警察”与“平民”属于“好人”,法官由系统AI扮演。
如图3-1。
图3-1组织结构图
3.1.3功能分析
系统包括帐户业务和游戏业务,账户业务面向用户账户管理,游戏业务面向游戏逻辑处理,如表3-4。
表3-4游戏功能需求列表
所有用户
注册,登录,管理个人信息(妮称、头像),建立房间。
房主玩家
设置游戏属性(翻牌、发言方式),开始游戏,剔除玩家。
杀手玩家
在夜晚可以投票“杀”掉一个玩家。
警察玩家
在夜晚可以投票“查”一个玩家的身份。
平民玩家
无特殊功能
游客玩家
可观看游戏,并室外聊天室聊天。
PK玩家
在PK过程中可以有时间独自发言为自己辩护。
所有玩家
白天所有玩家可聊天,并投票“处决”一名玩家。
3.2流程描述
3.2.1业务流程
系统包括用户账户业务及游戏业务,用户账户业务包括登录(如图3-2)、注册(如图3-3)及个人信息的管理(如图3-4)。
游戏业务包括聊天业务(如图3-5),私聊业务(如图3-6),“杀手”投票业务(如图3-7),“警察”投票业务(如
图3-2用户登录流程图
图3-3用户注册流程图
图3-4个人信息管理流程图
图3-5C2B消息流程图
图3-6C2C消息流程图
图3-8),“处决”投票业务(如图3-9),胜负判断业务(如图3-10)。
所有的业务都由不同的触发机制:
用户手动触发、系统定时程序触发、轮询程序触发。
图3-7“杀手”业务流程图
图3-8“警察”业务流程图
图3-9“除决”业务流程图
图3-10胜负判断流程图
3.2.2数据流程
数据流程图(DFD)是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合地反映出信息在系统中的流动、处理和存储情况。
数据流程图是表示操作或数据的方向。
经过四层数据流程图的分析,游戏系统整体数据流向清晰展现。
顶层数据流程图(如图3-11),第二层数据流程图(如图3-12),第三层数据流程图(如图3-13),第底层数据流程图(如图3-14)。
图3-11顶层数据流程图
图3-12第二层数据流程图
图3-13第三层数据流程图
图3-14底层数据流程图
3.2.3数据字典
数据字典(Datadictionary)是一种用户可以访问的记录数据库和应用程序元数据的目录,它是对数据流程的说明,为后期开发做了明确的数据定义。
·数据项
数据项编号:
A-01
数据项名称:
邮箱地址
别名:
email
简述:
账号的邮箱地址
类型及宽度:
字符型,32位
取值范围:
字母、数字、点号、@组成
数据项编号:
A-02
数据项名称:
密码
别名:
password
简述:
登录的密码
类型及宽度:
字符型,6~20位
取值范围:
字母和数字组成
数据项编号:
A-03
数据项名称:
昵称
别名:
nickname
简述:
账户的昵称
类型及宽度:
字符型,32位
取值范围:
字母和数字组成
数据项编号:
A-04
数据项名称:
年龄
别名:
age
简述:
玩家年龄
类型及宽度:
数字型,1~3位
取值范围:
1~999位
数据项编号:
A-05
数据项名称:
等级
别名:
level
简述:
玩家的游戏等级
类型及宽度:
数字型,1~4位
取值范围:
0~9999
数据项编号:
G-01
数据项名称:
座位
别名:
sn
简述:
玩家在游戏中的座位号
类型及宽度:
数字型,1~2位
取值范围:
1~16
数据项编号:
G-02
数据项名称:
身份
别名:
role
简述:
身份种类
类型及宽度:
字符型
取值范围:
killer,policeman,civilian
数据项编号:
G-03
数据项名称:
房间编号
别名:
rn
简述:
游戏房间的序号
类型及宽度:
数字型,1~2位
取值范围:
1~16
数据项编号:
G-04
数据项名称:
频道编号
别名:
channel_id
简述:
客户端与服务端通信的频道编号
类型及宽度:
字符型
取值范围:
字母、数字组成
数据项编号:
G-05
数据项名称:
客户端编号
别名:
client_id
简述:
各个客户端在服务端记录的标识
类型及宽度:
字符型,10~20位
取值范围:
字母、数字组成
数据项编号:
G-06
数据项名称:
消息内容
别名:
content
简述:
玩家聊天的消息内容
类型及宽度:
字符型
取值范围:
任意字符
数据项编号:
G-07
数据项名称:
投票信息
别名:
vote_msg
简述:
投票信息
类型及宽度:
字符型,1~2位
取值范围:
1~16
数据项编号:
B-01
数据项名称:
握手
别名:
handshark
简述:
客户端与服务器端连接的标识
类型及宽度:
布尔型
取值范围:
true,false
数据项编号:
B-02
数据项名称:
结果
别名:
sucessfule
简述:
消息的传递成功于否
类型及宽度:
布尔型
取值范围:
true,false
数据项编号:
B-03
数据项名称:
传输参数
别名:
advice
简述:
传输特定参数
类型及宽度:
字符型
取值范围:
无
数据项编号:
B-04
数据项名称:
错误
别名:
error
简述:
传输消息中的错误说明
类型及宽度:
字符型
取值范围:
无
·数据结构
数据结构编号:
S2S-01
数据结构名称:
用户
简述:
该系统的用户对象
组成:
邮箱地址+密码+昵称+年龄+等级
相关数据流:
用户登录表单、用户信息资料
相关处理逻辑:
用户信息管理、游戏胜负处理
数据结构编号:
S2B-01
数据结构名称:
玩家
简述:
游戏中的玩家对象
组成:
房间号+座位号+身份+频道编号+客户端编号
相关数据流:
玩家信息资料
相关处理逻辑:
用户进入房间