Alpha阶段项目展示博客
1 团队成员的简介和个人博客地址
成员 | 头像 | 岗位 | 博客 | 个人介绍 |
---|---|---|---|---|
黄贤昊 | PM | 17373253 | 喜欢玩游戏和做游戏,项目经验基本都和游戏相关,擅长摸鱼,偶尔敬业。 | |
刘子航 | 策划 | lzhmark | 用过typescript、c++ 、python和一丢php.最喜欢的事情是把代码写完,然后丢给别人debug | |
何瑞 | 程序、策划 | _nostalgia | 熟悉C++, 然后是python和java,会用mysql,没什么项目经验,各种方向都可以尝试。希望能找到以后能一起开发合作的道友,互相帮忙,彼此进步 | |
吴昭邦 | 程序 | 检石 | 6系普通学生,会C,C++。项目经验不多但会认真完成工作,希望能与大家合作愉快。 | |
梁河览 | 程序 | 梁河览 | 一名6系的韩国留学生,会c++和c语言。希望一起进步与成长 | |
马嘉 | 程序、策划 | 对Java比较熟悉,有一点点后端的经验,希望能和大家伙儿共同进步。 | ||
朱俊豪 | 美术 | JunHaoo | 熟悉c和Java语言,安卓开发课程上在小组里打杂,无大型项目开发经验。希望和团队成员共同进步! |
2 项目概况
2.1 目标与预期
2.1.1 Alpha阶段项目目标
- 完成游戏场景的基本实现(不要求美术资源)
- 完成游戏UI的基本实现(不要求美术资源)
- 制作第一部分的关卡(顺序语句,制作3关左右)
- 完成第一部分关卡和游戏基本逻辑的测试
2.1.2 预期用户
我们的项目面向有以下需求的人
-
对编程有兴趣,希望通过游戏等轻松的方式初步学习编程的群体
名字 小刘 性别 男 用户背景 在 IT 行业越来越火的情况下,萌生了学习编程的想法,但又想以轻松一点的方式(比如游戏)入门编程,了解一下编程思想 用户偏好 希望能从游戏中领略编程思想,增进了解,帮助后续的学习 用户比例 预期游戏玩家的次要群体,偏少 典型场景 “唉,C 语言看的我头都炸了,这都什么玩意”、“我这些语句不是照着教程一行行敲的吗?为什么报错?什么?少了个分号(头秃)”。饱受入门时各种打击后,小刘决定寻找一种轻松的学习方式,于是某款不知名游戏进入了他的视线~ -
经常接触手游的小学生群体
名字 小徐 性别 男 职业 小学 6 年级学生 用户背景 能接触到的上网设备只有手机,平时做完功课的闲暇之余常常会玩一些手游打发时间 用户偏好 游戏机制简单,容易上手,但又足够新颖有趣 用户比例 预期游戏玩家的主要群体 典型场景 又到了星期六,我再也不用担心妈妈催我写作业了!悄悄拿起爸妈的手机,咦发现了一个似乎很牛 B 的游戏—“代码召唤”,这"炫酷"的特效,这"精致"的UI,糟了,是心动的感觉 -
想知道这些程序员写的这些英文句子在干什么的人
名字 小陶 性别 女 用户背景 在“编程”一词越来越火的当下,没有上过编程语言课的小陶同学对“编程”充满了大大的好奇,想要通过对轻松的方式了解编程是什么 用户偏好 希望能从游戏中了解编程是怎样一个过程 用户比例 预期游戏玩家的次要群体,偏少 典型场景 自从升上初中以后,小陶发现好几个同学们总爱在课间热火朝天地讨论着一个个她不懂的话题,什么 c 语言、python、java balaba,这个时候,她小小的眼睛里总是充满了大大的疑惑。于是小陶决定到知乎提问:初中生如何轻松地了解编程?于是有人向她推荐了这款游戏,从此,小陶打开了一个新的世界~~
2.1.3 预期功能描述
详见[对对子队]功能规格说明书
欢迎界面组件 | 功能 | 测试通过条件 |
---|---|---|
新游戏按钮 | 进入新游戏 | 本地建立一个新游戏存档,跳转到 map 页面 |
继续游戏按钮 | 打开旧存档进度 | 跳转到 map 页面,加载本地的游戏进度,包括已过关卡及其得分 |
设置按钮 | alhpa 阶段暂无 | alhpa 阶段暂无 |
帮助按钮 | alhpa 阶段暂无 | alhpa 阶段暂无 |
退出按钮 | 退出游戏 | 点击按钮,退出游戏 |
地图界面组件 | 功能 | 测试通过条件 |
---|---|---|
选择关卡字样 | 显示“选择关卡”字样 | 正常显示字体 |
代表每个关卡的圆点 | 灰色代表锁定的关卡,不可点击;白色代表已经通过的关卡,可以点击重玩所选关卡;橙色代表当前关卡,点击可进入当前关卡 | 正常展现当前游戏的进度:最新的关卡为橙色;灰色关卡不可点击;点击白色和橙色圆点可以进入某一个关卡中 |
代表每个关卡得分的星星 | 记录每一关的星星数,并根据星星的数量展示关卡圆点旁边;不可点击 | 正常记录每一关的得分并将合适数量的星星置于旁边 |
游戏总进度百分比 | 展示当前游戏进度百分比:按照所有关卡满星星(3 颗/关)计算当前星星总数的占比,数字保留到整数如 12%、57% | 正常展示数字,正确计算游戏进度,并保留整数 |
合成指南界面组件 | 功能 | 测试通过条件 |
---|---|---|
合成指南字样 | 显示“合成指南”字样 | 正常显示字体 |
返回按钮 | 点击返回到关卡,并继续游戏进度 | 能够返回关卡,并保留打开 guidance 页面前的游戏进度 |
合成公式展示框 | 每个屏幕展示 5-8 个合成公式,支持下拉 | 能够展示合成公式,并可以用右侧活动条下拉 |
合成公式 | 展示合成公式,点击某个物品可以跳转到该物品的合成方式(原材料除外) | 正常显示合成公式,并且支持鼠标点击链接跳转 |
暂停组件 | 功能 | 测试通过条件 |
---|---|---|
暂停字样 | 显示暂停字样 | 正常显示 |
目标物品 | 显示目标物品,点击可以打开合成指南,并跳转到的相应位置 | 正常显示和跳转 |
从左往右三个星星 | 根据当前的成本,显示星星:如果成本高于某个星星下的数字,则该星星及其右侧的所有星星都无填充;如果成本低于某个星星下的数字,则该星星带上黄色填充 | 根据成本填充星星,正常显示 4 档得分对应的星星 |
重新开始按钮 | 关闭任务目标框,同时背景颜色恢复,清除该关卡内所有数据,重新开始关卡 | 关闭任务目标框,完全清空所有数据并重新开始关卡 |
菜单按钮 | 清除本关所有数据,返回到欢迎页面 | 清除本关所有数据,返回到欢迎页面 |
返回按钮 | 关闭任务目标框,同时背景颜色恢复,返回游戏 | 关闭任务目标框,并能够正常继续游戏 |
游戏界面组件 | 功能 | 测试通过条件 |
---|---|---|
材料区 | 放置各种材料按钮的区域 | 正常显示,固定最左端 |
原材料按钮 | 每种原材料带有一种特定的颜色,表示某种原材料,拖动到工作区中并生成对应的工作区语句 | 支持拖动到工作区中生成对应的工作区语句 |
循环按钮 | 拖动到工作区中并生成循环语句,alpha 版不支持嵌套 | 支持拖动到工作区中并生成循环语句 |
分支按钮 | 拖动到工作区中并生成分支语句,alpha 版不支持嵌套 | 拖动到工作区中并生成分支语句 |
合成按钮 | 拖动到工作区中并生成合成语句,打开合成指南并强制要求选择一种物品作为合成目标 或 拖动到工作区中并生成某种物品的合成语句 | 拖动到工作区中并打开合成指南,必须选择一种合成目标,生成合成语句 或 拖动到工作区中并生成某种物品的合成语句 |
工作区 | 放置各种语句的区域;有隐藏的网格(或者槽),语句能够自动吸附到最近的槽中,实现自动整理排列位置的功能 | 正常显示,紧贴材料区右端;能够吸附语句 |
语句 | 带有颜色,表示“添加”某种材料到盒子中,支持上下移动调换语句顺序,自动吸附位置;并在后端生成相应的运行逻辑 | 支持上下移动以排版,后端能将工作区所有的语句进行编译,得到材料加入的流程 |
循环语句 | 是一个C形的块,支持在其中加入至多三条语句;头部可以设置循环次数为一个[0, 10]的整数 | 能够拖动至多三条语句加入块中;可设置循环次数 |
分支语句 | 是一个E形的块,支持在每一层中加入至多三条语句;头部可以以当前盒子颜色设置分支条件,不支持 else if | 能够拖动至多三条语句加入 E 型块的每一层中 |
合成语句 | 表示执行该语句时,检查当前盒子内物品:满足合成条件,展示转动齿轮 UI,显示合成成功,删去原料,新物品落入盒子中;不满足合成条件,停止合成,提示“原料不足,合成失败”,按钮变成绿色带箭头的环状(参考“开始按钮”) | 转动齿轮 UI 正常,能够检测合成条件满足与否,合成成功时生成新物品落入盒中,失败时停止执行 |
开始按钮 | 点击按钮,进入执行状态,按钮变成红色方形“停止”按钮,再次按下即可停止执行状态,按钮变成绿色带箭头的环状;再次点击返回编辑状态;根据工作区语句顺序依次将原料加入盒子中 | 能够切换状态,并且在执行状态不允许修改语句 |
盒子 | 带颜色静态容器或带指示灯容器 | 正常显示,并根据投入的原料更换其颜色或颜色指示灯 |
机械抓手 | 从上往下把原料加入盒子中 | 正常显示动画,将原料按照工作区语句顺序加入盒子中 |
原料 | 被机械抓手从上往下放入盒子中 | 从最顶端出现,被抓到盒子中然后从视野中消失 |
合成进度条 | 展示当前盒子内物品和成功状态盒子内物品的相似度(待定) | 随着合成的不断进行不断推进直到 100%,合成成功 |
合成成本 | 在执行时,不断对已用材料加和得到当前合成成本,用于计算最后得分 | 自动更新 |
合成指南 | 点击合成指南,打开合成指南界面 | 正常打开合成指南页面 |
任务目标 | 点击任务目标,打开任务目标窗口,同时背景颜色加深 | 正常打开任务目标窗口,同时背景颜色加深 |
盒子物品框 | 显示当前盒子内拥有的物品(或材料)及其数量 | 能够随着合成动态更新 |
盒子物品 | 盒子内某一物品(或材料)及其数量 | 能够随着合成动态更新 |
箭头 | 执行状态下显示当前执行语句,并且有一定带动画的强调效果 | 能够随着执行状态而移动;有强调动画 |
暂停框 | 暂停框,显示该关的目标,具体组件参考上文“暂停”部分 | 具体验收参考上文“暂停”部分 |
2.2 用户数据
截至2020/5/5,即项目发布满一周
fir平台
酷安平台
总下载量为70,满足下载量预期
酷安平台的下载量偏少是因为酷安平台上线时间较晚
导致这个下载量的主要原因是我们的推广力度并不大,beta阶段计划采用更广的渠道和吸引力更强的手段
2.3 项目管理
2.3.1 分工协作
任务大类 | 具体任务 |
---|---|
策划 | 1、设计游戏内UI界面 2、设计游戏场景布局 3、设计关卡1(教程关) 4、设计关卡2、3 5、设计流水线合成系统 6、设计指令编辑系统 7、设计成本和分数系统 8、搭建关卡1(第一个关卡场景) 9、搭建关卡2、3 |
美术 | 1、实现游戏场景中的必要模型(箱子、机械爪等) 2、实现UI的美术需求(按钮、指令图标等) |
程序 | 1、实现游戏场景中使用的组件(箱子、原料等) 2、实现游戏内UI界面使用的组件 3、实现用户指令编辑系统的逻辑 4、实现流水线合成系统的逻辑 5、实现成本和分数系统的逻辑 |
PM | 1、组织例会,记录会议 2、跟进任务进度,做出适时调整和援助 3、撰写必要的博客 |
测试 | 1、测试关卡1并报告 2、测试关卡2、3并报告 |
经验教训:最好在分配任务时确定到个人而不是岗位,否则项目后期容易出现有人事务繁忙有人无事可做的情况
2.3.2 管理方法
通过在项目管理软件中布置issue并关联负责人来跟踪任务完成情况
通过要求成员在每日例会中报告每日完成工作来确认项目进展
通过在每日例会中明确明天的工作计划来确保每个人都知道自己要干什么
2.3.3 平衡
-
我们项目组有两位机动人员(马嘉、何瑞)负责应对一些突发的工作进展不平衡状况发生
例如:开发阶段中期出现过美术方面工作落后的情况,马嘉同学这段时间负责帮助美术寻找资源,使得美术工作进度赶上总体进度
-
在时间与质量相冲突的情况下,我们先保证出口条件定义的硬性的必须达到的目标,放弃软性的没有时间去实现的目标来保证质量过关。
出口条件详见[对对子队]测试报告
2.4 工程质量
2.4.1 测试矩阵
测试机型 | 分辨率 | 开始场景 | 关卡选择场景 | 第一关 | 第二关 | 第三关 | 备注 |
---|---|---|---|---|---|---|---|
华为P10 | 1920*1080 | 正常 | 正常 | 正常 | 正常 | 正常 | - |
华为mate20(Android 10) | 2244*1080 | 正常 | 正常 | 正常 | 正常 | 正常 | - |
红米K20 Pro(Android 10) | 2340*1080 | 正常 | 正常 | 1.烟花效果异常(播放烟花效果时场景变黑) 2.新手引导的视频效果很奇怪 | 同Level1 | 同Level1 | - |
红米note 3 | 1920*1080 | 正常 | 正常 | 烟花效果异常(该播放烟花效果时看不见烟花,场景正常) | 同Level1 | 同Level1 | - |
三星 galaxy wide 3 | 1280*720 | 正常 | 正常 | 正常 | 正常 | 正常 | - |
华为nova2s | 2160*1080 | 正常 | 正常 | 正常 | 正常 | 正常 | 运行有点掉帧 |
vivo x9i | 1920*1080 | 正常 | 正常 | 正常 | 正常 | 正常 | - |
华为 P20 | 2224*1080 | 正常 | 正常 | 正常 | 正常 | 正常 | - |
红米5 plus | 2160*1080 | 正常 | 正常 | 正常 | 正常 | 正常 | - |
三星 galaxy s9+ | 2960*1440 | 正常 | 正常 | 正常 | 正常 | 正常 | - |
LG Q510N | 1560*720 | 正常 | 正常 | 正常 | 正常 | 正常 | - |
2.4.2 功能测试
由于我们的项目是依靠unity引擎开发的游戏,整体开发偏向前端,所以并不能运用传统的对后端代码使用的单元测试那一套系统。我们使用了unity自带的单元测试功能,但是由于输入必须是场景操作输入而无法通过数据表示,指标方面也无法提供覆盖率这样的数据。
所以在反应代码质量方面,我们采用使用几种特征测试样例验证代码所实现的功能的正确性来做测试
2.4.3 相关文档
3 实际进展
3.1 燃尽图
燃尽图总体而言较为真实的反映了我们组的开发状态,但是由于issue的粒度不够细,导致图中经常出现项目进度跳跃式推进的情况
3.2 发布的功能
场景 | 功能 | 功能说明 |
---|---|---|
开始场景 | 开始游戏 | 跳转到关卡选择场景,并且加载之前游戏的记录 |
设置声音 | 调整背景音乐音量和按钮效果音音量 | |
复位存档 | 将之前的游戏记录清空 | |
退出游戏 | 退出当前游戏 | |
关卡选择场景 | 关卡选择 | 点击关卡图标进入相应关卡 |
关卡解锁 | 在完成相应关卡之后解锁后续关卡 | |
返回开始场景 | 返回开始场景 | |
第一关场景 | 玩法说明 | 介绍游戏的基本玩法,在进入场景是自动显示 |
组件库 | 提供过关所需原材料指令和合成指令 | |
工作区 | 将指令进行衔接的区域,支持指令的拖动换位 | |
调试按钮 | 点击后进入调试状态,再次点击退出调试状态。处于调试状态时无法与组件库和工作区交互。调试出错时会弹出错误提示。 | |
设置按钮 | 点击进入设置菜单,可以选择重新开始关卡、返回主菜单、退出游戏和继续游戏 | |
合成指南 | 点击进入合成指南菜单,显示本关的游戏目标和合成公式 | |
盒中物品列表 | 调试时显示当前箱子中已加入的零件,方便调试 | |
流水线 | 进入调试后执行指令的区域,会按指令向箱子中加入各种零件 | |
结算页面 | 合成出目标物品后弹出,显示关卡分数,玩家可以选择回到关卡选择场景或直接进入下一关 | |
第二关场景 | 同第一关场景(无玩法说明功能) | - |
第三关场景 | 同第一关场景(无玩法说明功能) | - |
3.3 发布平台
-
安卓端
发布方式:酷安应用市场,软件分发网站fir.im
发布地址:
-
PC端
发布方式:北航云盘
发布地址:
3.4 用户反馈
用户反馈的问题主要有两个
- 新手引导部分没有明确指出合成按钮可以使用下拉框切换目标,因此不少玩家卡在第三关
- 觉得合成动画太长,希望可以快进或者跳过
用户反馈中并未出现明显bug,部分技能较差的手机会出现掉帧情况
其余测试中发现的bug详见BUG和问题汇总
4 贡献统计
5 Beta阶段的计划
实现第二部分(循环语句)和第三部分(选择语句)的关卡
优化新手引导,降低上手门槛
优化动画、UI等游戏表现,使其更加生动有趣
6 总结体会
成员 | 心得与意见 |
---|---|
何瑞 | α阶段最大的收获就是get了使用Unity开发游戏的新技能了吧,此前我对Unity的了解几乎为0,经过几周的开发,对如何制作游戏了解更加直观深入,其次是丰富了团队合作开发经验。课程组也是比较nice的,暂时没有改进建议 |
黄贤昊 | Alpha阶段的收获大概就是学习了作为一个PM应当怎么管理一个团队,之前虽然有做过敏捷开发但是并没有负责过PM的职位,这次的软件工程给了我这么一个机会。对课程的建议是希望提供一个app发布的平台,现在国内对app发布的管控越来越严了,需要很多相关证明和文件才能发布 |
朱俊豪 | 经过alpha阶段的实践,对软件工程的项目团队开发工作有了深入的了解。一方面与团队交流、工作交接交互等方面有锻炼,另一方面在其他队友的代码风格能力或者工作方法有取长补短。另外,每次课程上老师对我们团队或者其他团队提的建议或意见都很有力度,有所帮助。 |
梁河览 | 在Alpha阶段学了很多东西。比如说怎么合理分工,然后有问题的话相互讨论解决问题,协作完成工作,unity等等。 |
吴昭邦 | 技术方面。主要学习了如何利用unity实现简单游戏功能。 团队方面。首先,在做较大项目时,将任务进行分解并分配到对应的角色是很重要的,这会让人明确自己的工作目标,从而提高效率。其次,作为负责程序编写的成员,明白了开发和测试是不能完全割裂开的。在进行一项开发任务之前,应该提前编写好对应的尽量完备的测试程序。 |
刘子航 | 作为一个策划,在Alpha阶段,我学会了对市面上类似的游戏的作出更加公正专业的评价方法,尝试了给团队制定代码规范,尝试了用设计工具、绘画等方法将自己对游戏的构思设计形象的描述出来;对于课程,我希望能够少一些文字作业,作业要求中少一些不必要的问题需要回答(其中有很多关于问题可以简化),取而代之的是更多的规范编码教程、设计流程和管理技巧等。另一方面我也更希望助教能够学习一些关于所选项目的知识或者根据项目选择跟队助教,让助教也能参与到的团队的建设当中,而不是单纯的发作业改作业、在组内会议中挂机。 |