cocos2djs引擎的卡牌游戏的设计与实现服务器端的设计与实现
摘 要据互联网报告数据显示,截止2015年第一季度,中国手游用户规模数量达到了惊人的4.83亿,中国手游戏市场规模也达到95.8亿元的庞大规模。本卡牌游戏借鉴了《最终幻想8》中的卡牌小游戏的玩法,同时进行了创新及改进。游戏主要基于Cocos2d-JS游戏引擎开发,服务端采用Node.js搭建。两者均采用JavaScript语言开发,具有良好的兼容性。Cocos2d-JS是一个跨平台的引擎,可以打包成Web、安卓等版本。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。本项目是卡牌手游,属于休闲类游戏,具有轻松快速的特点。最终游戏服务端实现了玩家对战、电脑对战、卡牌购买等主要功能。
目 录
第一章 绪论 1
1.1课题背景 1
1.2目的和意义 1
第二章 需求分析 2
2.1 服务端的需求分析 2
2.1.1 服务端的功能性需求 2
2.1.2服务端的非功能性需求 3
第三章 服务端设计 4
3.1系统设计思想 4
3.2服务端总体设计 4
3.2.1服务端技术运用 4
3.2.2服务端总体流程图 5
3.2.3服务端详细设计 5
3.3数据库设计 9
3.3.1系统ER图 9
3.3.2数据结构 10
第四章 服务端实现 12
4.1服务端运行环境 12
4.2开发工具简介 12
4.3服务端主要功能的实现 12
4.3.1交互数据处理 12
4.3.2用户表数据库操作 13
4.3.3开始游戏 13
4.3.4卡牌比较 14
结束语 15
致 谢 16
绪论
1.1课题背景
产业信息网发布的报告显示自2012年以来,中国智能手机的用户规模正在快速扩张。 直到2013年,中国的智能手机出货量达到了4.2亿部。在智能手机规模增长的同时,手游市场的成长也十分迅速。而在这些游戏中轻度的HTML5休闲竞技游戏占了不小的比例。在
*好棒文|www.hbsrm.com +Q: ¥351916072$
HTML5游戏方面,游戏玩家的数量在2015年也迎来了爆发。报告显示,直到2015年相应的玩家数量甚至突破了1.71亿。报告显示HTML5游戏类型中休闲游戏和其它轻度游戏占据超过八成。报告对400多家HTML5游戏开发团队做的调查显示,大部分受访者希望推出或者已经推出轻度的益智休闲类产品。在市场同类的卡牌游戏中,采用HTML5开发的相对较少,主要集中在中重度范围,且大多数玩法相对复杂,操作繁琐,本次课题则重点针对这一方面进行研究。
1.2目的和意义
本次课题的主要目的就是开发一个可以实时对战或者与电脑对战的休闲卡牌手游,让玩家可以在短时间内快速完成游戏,不用投入太多精力,同时还可以展现自己的策略与智慧,闲暇时得以放松身心。由于市场同类游戏不具有简易快速等特点,游戏模式不能完全契合玩家的需求,因此本卡牌游戏具有一定的市场前景。
并且通过本次项目的开发实践,可以学习并掌握游戏开发的基本技能以及Cocos2dJS、Node.js等相关技术的运用。在技术运用方面,游戏应用和应用型软件有明显的区别,开发具有一定的挑战性,其次对个人开发能力的提高也有很大的帮助。
第二章 需求分析
2.1 服务端的需求分析
根据游戏的模式以及联网对战对服务端稳定性的要求,综合游戏功能和性能要求进行分析,服务端应该具有以下功能:
能够实现与客户端的稳定交互和数据传输;
能够实现对应功能的数据处理及相应的数据库操作;
设计并实现登录注册、卡牌商店等服务端的功能;
设计并实现服务端完整的游戏对战逻辑。
2.1.1服务端的功能性需求
登录注册
用户输入账号、密码服务端接受数据进行验证通过后便可以登录游戏。如果没有账号需要注册账号后登录。服务端需要处理用户发出的登录或注册请求并进行验证或存储,最后返回处理的结果。
卡牌购买
用户登录后可以到卡牌商店里浏览卡牌,可以选择钻石或者金币购买。服务端需要处理客户端发出的购买卡牌请求,判断用户余额是否足够,足够返回进行数据存储返回结果购买成功,否则返回购买失败。
查看房间
用户登录后可以查看房间列表。服务端需要处理客户端发出的获取房间列表请求,获取房间列表信息返回给客户端,包括房间状态、房间内玩家的信息等。
加入房间
用户获取房间列表后选择一个房间加入或者选择快速加入。服务端需要处理客户端的加入房间请求。如果是加入房间则判断房间状态,决定是否允许加入,返回结果并更新房间状态。如果是快速加入请求,则需要查找符合条件的房间进行加入,并返回结果并更新房间状态。
选择卡牌
用户进入房间后需要选择上场的卡牌。服务端需要获取用户拥有的卡牌信息并返回客户端。根据用户的选择卡牌请求,暂时存储用户的上场卡牌。
进行游戏
用户选择卡牌完毕后选择准备,进入准备状态。客户端需要监听双方准备状态,如果都已经准备则进入到对战界面,并更新房间状态。
游戏对战
用户进入对战界面后,服务端随机生成先出牌玩家,之后依次轮流出牌,只有一方出完之后另一方才可以出牌,最终决出结果。服务端需要处理玩家每次的出牌动作,每轮只有一个玩家可以出牌,依次更换出牌玩家。还需根据牌的数据判断周围的牌面大小决定是否翻牌并改变阵营。最终统计双方牌桌上各自拥有的牌的数量(包括玩家手中的一张牌),决出胜负,并进行数据存储以及经验金钱的发放。
电脑对战
用户也可以选择电脑对战模式,仍需要联网,流程和联网对战一致,电脑需要根据算法进行出牌。
查看对战记录
用户可以查看联网对战记录。服务端在接受到客户端的请求后获取该用户的对战记录,并返回给客户端。
2.1.2服务端的非功能性需求
可靠性
用户通过客户端或者网页端进行游戏,比较稳定,服务端运行在云平台上具有良好的稳定性和效率。服务端选择了Node.js来搭建,和Cocos2dJS同样采用JavaScript语言来编写且轻量高效。Node.js的非阻塞模式的I/O处理可以让它在相对低系统资源耗用下仍然具备非常高的性能和出色的负载能力,对游戏的稳定性有很大的帮助。数据库方面采用了开源的MySQL数据库,它具有体积小、速度快、成本低等优点。配合Node.js来使用也是很方便,有现成的node_modules模块可以使用。
可行性
目 录
第一章 绪论 1
1.1课题背景 1
1.2目的和意义 1
第二章 需求分析 2
2.1 服务端的需求分析 2
2.1.1 服务端的功能性需求 2
2.1.2服务端的非功能性需求 3
第三章 服务端设计 4
3.1系统设计思想 4
3.2服务端总体设计 4
3.2.1服务端技术运用 4
3.2.2服务端总体流程图 5
3.2.3服务端详细设计 5
3.3数据库设计 9
3.3.1系统ER图 9
3.3.2数据结构 10
第四章 服务端实现 12
4.1服务端运行环境 12
4.2开发工具简介 12
4.3服务端主要功能的实现 12
4.3.1交互数据处理 12
4.3.2用户表数据库操作 13
4.3.3开始游戏 13
4.3.4卡牌比较 14
结束语 15
致 谢 16
绪论
1.1课题背景
产业信息网发布的报告显示自2012年以来,中国智能手机的用户规模正在快速扩张。 直到2013年,中国的智能手机出货量达到了4.2亿部。在智能手机规模增长的同时,手游市场的成长也十分迅速。而在这些游戏中轻度的HTML5休闲竞技游戏占了不小的比例。在
*好棒文|www.hbsrm.com +Q: ¥351916072$
HTML5游戏方面,游戏玩家的数量在2015年也迎来了爆发。报告显示,直到2015年相应的玩家数量甚至突破了1.71亿。报告显示HTML5游戏类型中休闲游戏和其它轻度游戏占据超过八成。报告对400多家HTML5游戏开发团队做的调查显示,大部分受访者希望推出或者已经推出轻度的益智休闲类产品。在市场同类的卡牌游戏中,采用HTML5开发的相对较少,主要集中在中重度范围,且大多数玩法相对复杂,操作繁琐,本次课题则重点针对这一方面进行研究。
1.2目的和意义
本次课题的主要目的就是开发一个可以实时对战或者与电脑对战的休闲卡牌手游,让玩家可以在短时间内快速完成游戏,不用投入太多精力,同时还可以展现自己的策略与智慧,闲暇时得以放松身心。由于市场同类游戏不具有简易快速等特点,游戏模式不能完全契合玩家的需求,因此本卡牌游戏具有一定的市场前景。
并且通过本次项目的开发实践,可以学习并掌握游戏开发的基本技能以及Cocos2dJS、Node.js等相关技术的运用。在技术运用方面,游戏应用和应用型软件有明显的区别,开发具有一定的挑战性,其次对个人开发能力的提高也有很大的帮助。
第二章 需求分析
2.1 服务端的需求分析
根据游戏的模式以及联网对战对服务端稳定性的要求,综合游戏功能和性能要求进行分析,服务端应该具有以下功能:
能够实现与客户端的稳定交互和数据传输;
能够实现对应功能的数据处理及相应的数据库操作;
设计并实现登录注册、卡牌商店等服务端的功能;
设计并实现服务端完整的游戏对战逻辑。
2.1.1服务端的功能性需求
登录注册
用户输入账号、密码服务端接受数据进行验证通过后便可以登录游戏。如果没有账号需要注册账号后登录。服务端需要处理用户发出的登录或注册请求并进行验证或存储,最后返回处理的结果。
卡牌购买
用户登录后可以到卡牌商店里浏览卡牌,可以选择钻石或者金币购买。服务端需要处理客户端发出的购买卡牌请求,判断用户余额是否足够,足够返回进行数据存储返回结果购买成功,否则返回购买失败。
查看房间
用户登录后可以查看房间列表。服务端需要处理客户端发出的获取房间列表请求,获取房间列表信息返回给客户端,包括房间状态、房间内玩家的信息等。
加入房间
用户获取房间列表后选择一个房间加入或者选择快速加入。服务端需要处理客户端的加入房间请求。如果是加入房间则判断房间状态,决定是否允许加入,返回结果并更新房间状态。如果是快速加入请求,则需要查找符合条件的房间进行加入,并返回结果并更新房间状态。
选择卡牌
用户进入房间后需要选择上场的卡牌。服务端需要获取用户拥有的卡牌信息并返回客户端。根据用户的选择卡牌请求,暂时存储用户的上场卡牌。
进行游戏
用户选择卡牌完毕后选择准备,进入准备状态。客户端需要监听双方准备状态,如果都已经准备则进入到对战界面,并更新房间状态。
游戏对战
用户进入对战界面后,服务端随机生成先出牌玩家,之后依次轮流出牌,只有一方出完之后另一方才可以出牌,最终决出结果。服务端需要处理玩家每次的出牌动作,每轮只有一个玩家可以出牌,依次更换出牌玩家。还需根据牌的数据判断周围的牌面大小决定是否翻牌并改变阵营。最终统计双方牌桌上各自拥有的牌的数量(包括玩家手中的一张牌),决出胜负,并进行数据存储以及经验金钱的发放。
电脑对战
用户也可以选择电脑对战模式,仍需要联网,流程和联网对战一致,电脑需要根据算法进行出牌。
查看对战记录
用户可以查看联网对战记录。服务端在接受到客户端的请求后获取该用户的对战记录,并返回给客户端。
2.1.2服务端的非功能性需求
可靠性
用户通过客户端或者网页端进行游戏,比较稳定,服务端运行在云平台上具有良好的稳定性和效率。服务端选择了Node.js来搭建,和Cocos2dJS同样采用JavaScript语言来编写且轻量高效。Node.js的非阻塞模式的I/O处理可以让它在相对低系统资源耗用下仍然具备非常高的性能和出色的负载能力,对游戏的稳定性有很大的帮助。数据库方面采用了开源的MySQL数据库,它具有体积小、速度快、成本低等优点。配合Node.js来使用也是很方便,有现成的node_modules模块可以使用。
可行性
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/rjgc/1333.html