[T.14] 团队项目:Alpha 阶段项目总结
一、设想和目标
- 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述?
- 我们达到目标了么(原计划的功能做到了几个? 按照原计划交付时间交付了么? 原计划达到的用户数量达到了么?)
- 用户量,用户对重要功能的接受程度和我们事先的预想一致么?我们离目标更近了么?
Paradice(派乐代)是一款支持 2~4 人游玩的轻量化多人派对游戏。对于派对游戏,首先希望开局足够轻量,同时规则简单易于上手,其次平衡策略和随机性,让玩家玩得开心。我们定义了典型用户(例如室友、朋友),并围绕用户进行了典型场景的刻画(例如寝室游戏、朋友聚会)。
我们达成了最初的目标,在 Alpha 阶段实现了 Paradice 的可玩版本并按时交付:支持 2~4 人创建房间、房主管理成员并开局;玩家可选择四类阵营能力;每轮通过五种 mini game 争夺不同品质的骰子,并在随机地图上前进;到达终点击败 Boss。
发布之后收到了很多用户的反馈,会觉得「玩起来有意思」,我们离目标更近了。
二、计划
- 是否有充足的时间来做计划?
- 团队在计划阶段是如何解决同事们对于计划的不同意见的?
- 原计划的工作是否最后都做完了?如果有没做完的,为什么?
- 有没有发现你做了一些事后看来没必要或没多大价值的事?
- 是否每一项任务都有清楚定义和衡量的交付件?
- 是否项目的整个过程都按照计划进行,项目出了什么意外?有什么风险是当时没有估计到的,为什么没有估计到?
- 在计划中有没有留下缓冲区,缓冲区有作用么?
- 将来的计划会做什么修改?(例如:缓冲区的定义,加班)
我们在很早就进行了游戏玩法的讨论与技术栈的探索,所以有充足的时间进行计划。前期偏向于实现游戏的逻辑计算,后期逐渐转向用户可见功能,进行动画渲染与 UI 美化。后端规划很充分,包含 HSM、Action、EventBus、协议、CLI 测试等内容。
工作计划是在每周的例会上讨论得出的,队友们产生不同意见时会进行沟通与调整,最终拿出一个大家都支持的最优版本。
原计划的工作中,核心玩法和联机主流程基本完成。没有做完的主要是用户体验完善:其一,没有实现音效,原因是优先级让位于动画;第二,UI 没有完全实现统一的像素风格,原因是前端页面和按键很多,实现起来可能会花很多时间,影响交付;最后,压力测试和真实用户验收不足,原因是 Alpha 阶段我们主要进行功能闭环和发布流程的验证。
在着手写代码前,我们经历过换选题和换前端技术栈,虽然可能浪费了一些时间,但是感觉也是有意义的,让我们能更轻松地完成后续工作。
每项任务均有清楚的定义,在飞书上记录并且指派成员完成。
项目整体进展比较顺利,没有出现什么意外。
关于缓冲区:时间上,预留了发布周的前半周来测试和修 Bug;功能上,设置了任务的优先级,不影响游戏主要流程的一些任务会酌情延后完成。
三、资源
- 我们有足够的资源来完成各项任务么?
- 各项任务所需的时间和其他资源是如何估计的,精度如何?
- 测试的时间,人力和软件 / 硬件资源是否足够?对于那些不需要编程的资源(美工设计 / 文案)是否低估难度?
- 你有没有感到你做的事情可以让别人来做(更有效率)?
资源充足。开发人员配置合理,后端、前端、策划、小游戏、UI 都有明确的负责成员,并且对自己的工作很熟悉与擅长。游戏中用到的美术资源有 itch.io、craftpix、PixelLab、GPT image 2、Nano Banana、MXAI 的支持 ♡,很充裕。硬件资源方面,配置了火山引擎 ECS 云服务器,用于官网部署、联机服务测试和团队联调,并有特定的成员进行维护。
测试资源基本支撑了 Alpha 阶段发布。文案的投入不足,出现过文字描述错误的情况。
分工明确,基本没有。
四、设计与实现
- 设计工作在什么时候,由谁来完成的?是合适的时间,合适的人么?
- 设计工作有没有碰到模棱两可的情况,团队是如何解决的?
- 团队是否运用单元测试(unit test),测试驱动的开发(TDD)、UML,或者其他工具来帮助设计和实现?这些工具有效么? 比较项目开始的 UML 文档和现在的状态有什么区别?这些区别如何产生的?是否要更新 UML 文档?
- 什么功能产生的 Bug 最多,为什么?在发布之后发现了什么重要的 bug?为什么我们在设计 / 开发的时候没有想到这些情况?
- 代码复审(Code Review)是如何进行的,是否严格执行了代码规范?
项目开发初期,由 xxk 完成后端架构的设计,包括 Nakama Match Handler、HSM、前后端协议、CLI 测试、前端需要进行渲染的 action;由 wty 完成前端架构的设计 PhaserBoard 的搭建。这些部分在项目早期由熟悉游戏规则、效率高、认真负责的成员推进是非常合适的 ദ്ദി ˉ꒳ˉ )✧
我们使用了较多单元测试和集成测试。后端有 53 个 Go 测试文件,覆盖:RNG 与骰子;资源加载;错误处理;ID 与协议;游戏日志;Nakama 生命周期、消息、Presence、错误处理;Engine、Action、Event、Buff、Item、Boss 战、小游戏相关逻辑;HSM 状态栈、状态转移、回合场景、集成测试;Gamemap 路径与格子行为;CLI 自动化场景。测试对后端设计非常有效,尤其是 HSM 和 Action 系统。前端主要依赖构建检查和人工验收。
Bug 较多的地方是 Buff / Item / Event 规则系统。例如 Fire buff、相同 Buff 叠加、Buff tick、duration、everyNTurns、Hidden Buff、道具订阅等问题。原因是 Buff 和道具和不同 phase、持续时间、触发条件、目标玩家、Action 系统相互交织,设计的时候要考虑何时触发、是否叠加、是否阻挡、是否派生 Action,实现时就容易出现一些 Bug。发布后没有发现重要 Bug。
Paradice 开发过程中,我们主要通过 GitHub Pull Request 的方式进行代码复审。会先提交到独立分支,再发起 Pull Request,前端由 wty 进行 review,后端由 xxk 进行 review,再合并到 dev 分支。
五、测试与发布
- 团队是否有一个测试计划?为什么没有?
- 是否进行了正式的验收测试?
- 团队是否有测试工具来帮助测试?
- 很多团队用大量低效率的手动测试,请提出改进计划:至少一个方面的测试要用自动化的测试工具,自动化的测试结果报告,比较测试结果的差异,等等。
- 团队是如何测量并跟踪软件的效能(Performance)的?压力测试(Stress Test)呢?从软件实际运行的结果来看,这些测试工作有用么?应该有哪些改进?
- 在发布的过程中发现了哪些意外问题?
团队有后端测试计划和 CLI 自动化测试计划,明确了基础对局流程、回合主流程、决策中断、小游戏流程、错误处理、断线重连、道具和阵营技能等测试范围。
在发布前进行了充分的验收测试。
核心状态机、引擎、Nakama 适配、网络协议、工具包均有对应测试;CI 方面已配置 GitHub Actions,至少包含 go test、开发构建、CLI 构建 3 类自动任务,代码提交后具备基础自动校验能力。
我们对效能的跟踪主要体现在跨平台运行测试、连续完整对局测试和多人联机场景测试上。验证了主界面渲染、房间列表、地图渲染、小游戏、Boss 战、GameOver、桌面版打包在 macOS、Linux、Windows 上的运行情况;出口条件也要求连续 10 局完整对局无业务逻辑中断。这些测试对发现稳定性问题是有用的。未来应加入更量化的性能指标和自动化压力测试。
六、讨论
- 对比敏捷的原则,你觉得你们小组做得最好的是什么?
- 什么是在下个阶段要改进的地方?越具体越好。
做得最好的是能够围绕可运行的软件持续迭代,并根据实际问题调整优先级。我们较早地实现了核心玩法闭环,较早地形成了一个可玩的版本,然后在此基础上进行动画的渲染和用户体验优化。
在 Beta 阶段,我们会更明确各个模块的负责人,进行更严格的代码 Review;结合 GitHub issues 进行进度管理。


浙公网安备 33010602011771号