网页H5小游戏需求分析 作者:093

weixin_43793768 2021-12-21 18:40:20

网页H5小游戏需求分析 作者:093

1.概述

要求

使用Unity或者其他工具,实现一个简易版小游戏,游戏类型不限。支持与局域网内另一玩家对战。需要使用QUIC协议,连接保持(4G/WIFI切换)。采用人机对战方式,支持游戏断开链接后,重新连接游戏并进行对局。保障前端安全性,防止用户篡改前端数据,伪造数据提交。

详细说明

由于没有限定游戏的类型,我们计划做一个简化版的《弹弹堂》小游戏:

1.一次两个玩家,回合制。

2.每个玩家在回合内可以进行移动,也可以发射炮弹。炮弹可以给玩家体力值造成伤害,也可以破坏地形。

3.当玩家发射炮弹,或者回合内的倒计时归零时,回合结束,转移控制权。

4.当一方玩家体力值归零时,游戏结束,归零的一方失败。

其详细的流程如下图所示:

 

游戏的截图如下所示

 

注:

本次工程实践是小组内多人一同开发,主要分为客户端和服务端部分,每个人分工不同。客户端采用Unity工具,服务端采用Go语言实现。

我负责服务器部分的开发,所以接下来的内容不会涉及到客户端开发的部分,只会针对服务端进行。

2.用例建模

从服务端的角度来看,用户会用到的功能如下。

用户功能开始状态终止状态
注册用户点击注册开始填写信息用户收到了注册成功或者失败的反馈
登录用户输入登录信息并发送用户收到了登录成功或者失败的反馈
匹配用户点击“联机”按钮成功匹配到其他玩家
游戏匹配到玩家并游戏开始分出胜负游戏结束

 

3.时序图

从用户的角度,我们来看看从用户登录开始到成功完成一局游戏。用户,客户端,服务器,数据库的时序。

 

对于用户来说,只能看到客户端,服务端和数据库对其是透明的。并且也可以从中看出,服务端并不负责客户端的游戏状态转换,只是负责转发,且十分相信客户端(胜负的结算信息是由客户端主动发送的),这对前端安全来说也是一个挑战。

4.房间

当然,作为一个服务器,不可能只为两个玩家服务。对于每一场游戏,都有一个专门的房间进行维护。两个玩家的游戏在房间中进行。房间与房间互不影响。

对于每一个房间,其创建到结束的流程图如下:

 

 

5.类

 

对于服务端来说,主要有三个类:用户,登录用户列表,房间。

数据库中只存储用户表,属性包括:id,密码,总游戏场数,胜利游戏场数。后两项主要用于在匹配时可以匹配到势均力敌的敌人,从而不会因为双方等级差距太大破坏游戏体验;登录用户列表用于存放已经登录的用户信息,主要包括用户id,用户的通信channel(这是go语言的特性)和用户的ip:端口号以方便通信;房间用于维护对局实现双方玩家的通信交流。

登录用户列表和房间都在内存中,不会持久化到数据库。

三者的类图如下所示:

 

...全文
330 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农孟宁 2021-12-22
  • 打赏
  • 举报
回复

用例图和时序图好像都不是用规范的UML绘图工具画的,不符合UML的语义规范

下载代码方式:https://pan.quark.cn/s/a4b39357ea24 全国计算机等级考试二级教程《Python语言程序设计》(2018年版)被视为针对Python入门者和备考人员的核心学习材料。该资料汇总了教材内的所有编程练习答案,这些答案在Python 3.5.3环境中经过实际执行测试,从而保障了代码的准确性和应用价值。备考人员借助这些答案,能够评估自身的学习进度,并深入理解和熟练掌握Python编程的基础原理与方法。 1. Python基础理论:Python作为一门高级编程语言,因其简明扼要的语法结构和卓越的功能表现而备受推崇。基础内容涵盖了变量、数据种类(例如整型、浮点型、字符串、布尔型、列表、元组、字典、集合)、逻辑控制(比如条件判断if-else,循环控制for、while)、函数的声明及使用、模块的引入等。 2. Python高级应用:Python的进阶内容涉及异常管理(try-except-finally结构),类与实例(面向对象编程的基础,包含类的构造、对象的生成、属性与方法的运用、继承机制、多态表现),装饰器(用于调整函数或类的功能特性),上下文管理器(借助with语句实现资源管理)等。 3. 数据文件处理:Python配备了全面的文件操作功能,涉及文件的开启、数据读写、关闭操作,以及多种操作模式(例如r模式用于读取,w模式用于写入,a模式用于追加内容等)。此外,还包括文本文件与二进制文件的转换处理,以及文件的位置调整、复制和删除等操作。 4. 标准库的运用:Python的标准库资源极为丰富,比如os模块提供操作系统接口,sys模块用于获取系统参数,random模块可用于生成随机数值,datetime模块负责处...

571

社区成员

发帖
与我相关
我的任务
社区描述
软件工程教学新范式,强化专项技能训练+基于项目的学习PBL。Git仓库:https://gitee.com/mengning997/se
软件工程 高校
社区管理员
  • 码农孟宁
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧