ERROR401——团队展示

ERRROR401 ERRROR401 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这个作业属于哪个课程2601_FZU_SE 软件工程实践社区
这个作业要求在哪里软件工程实践团队作业——种子队选拔、团队展示及选题
这个作业的目标完成团队组建与选题论证:确定队名与团队分工,用 NABCD 方法说明《校园突袭》的项目价值,并制定可落地的团队绩效考核方案
其他参考文献《构建之法》(邹欣)

目录


一、团队名片

1.1 队名

队名: ERROR401

队名释义(为什么叫这个名字):

「ERROR401」是 HTTP 里最有名的错误码:未授权——服务器拒绝了你的请求。它好记、好笑,也很像我们八个熬夜写代码的人凑在一起的样子,一次「未经授权的访问」。但真正让我们选定它的是它和《校园突袭》的关系:在我们的设计里,AI 不允许直接读取玩家位置,只能靠自己的眼睛判断——要在视距之内、视野角之内,而且中间没有被墙挡住,才算「看见」,看见之后还得等一段反应时间才开枪;换句话说,这张地图上没有人拥有「上帝权限」,看不到就是看不到——这正是 401 的含义。我们想做一款没有权限外挂、只靠枪法和配合说话的对枪游戏,也想做一支不走捷径、只靠一次次提交把东西做出来的队伍。


1.2 队员风采

成员 1

  • 学号 :102400129
  • 成员姓名:烟雨梦江南
  • CSDN 地址 : https://blog.csdn.net/2402_90005310?type=lately
  • 成员性格 :慢热、习惯观察思考、对新事物好奇
  • 擅长的技术 :C/C++、Dart、flutter、Mysql、Git
  • 兴趣爱好 :音乐、游戏、羽毛球
  • 希望的软工角色 :后端开发
  • Slogan :慢慢成为自己

成员 2

  • 学号 :102400116
  • 成员姓名:汉堡
  • CSDN 地址 : https://blog.csdn.net/hanbaowang666
  • 成员性格 :随和佛系,但做事有条不紊、按计划推进,情绪稳定
  • 擅长的技术 :Vue3、Vite、Element Plus、ECharts;Python、Flask、SQLite;jieba、scikit-learn 数据处理
  • 兴趣爱好 :听音乐、健身、吉他、睡觉
  • 希望的软工角色 :全栈开发(主要后端)
  • Slogan :慢慢来,比较快。

成员 3

  • 学号:102400111
  • 成员姓名:yywdzz
  • CSDN地址:https://blog.csdn.net/yywdzz?type=bbs
  • 性格:比较认真负责,遇到问题喜欢自己研究和尝试,做事情比较有耐心
  • 擅长的技术:HTML、CSS、JavaScript、Vue、Git,了解 Node.js、Express、SQLite 等前后端技术
  • 兴趣爱好:编程、玩游戏、听音乐,也喜欢尝试一些有趣的软件和小游戏
  • 希望的软工角色:前端开发
  • slogan:码上前行,加油

成员 4

  • 学号:102400110
  • 成员姓名:阿宝
  • CSDN 地址:https://blog.csdn.net/2401_85045493?type=bbs
  • 成员性格:做事沉稳细心,善于沟通,团队协作时乐于配合队友调整方案
  • 擅长的技术:Java、MySQL、SpringBoot、Git;了解Vue基础,会简单的数据库设计与接口开发
  • 兴趣爱好:打游戏,健身,听音乐
  • 希望的软工角色:后端开发
  • Slogan:积微成著,代码见真章。

成员 5

  • 学号:102400127
  • 成员姓名:prince
  • CSDN 地址:https://blog.csdn.net/prince_1031
  • 成员性格:乐观开朗 情绪比较稳定 善于沟通
  • 擅长的技术:Java、MySQL、SpringBoot、Git;了解Vue、HTML、CSS基础;编写功能测试用例
  • 兴趣爱好:打游戏 篮球 看电影
  • 希望的软工角色:前端 测试
  • Slogan:细节决定成败 态度决定一切

成员 6

  • 学号 :102400132
  • 成员姓名 :界限
  • CSDN 地址 :https://blog.csdn.net/2403_89224786?type=bbs
  • 成员性格 :较为活跃,喜欢有条理的做事情
  • 擅长的技术 :C/C++,SQL,HTML,Markdown,Git等
  • 兴趣爱好 :打游戏,聊天,打乒乓球
  • 希望的软工角色 :后端开发
  • Slogan:精研软件工程,构筑数字根基

成员 7

  • 学号: 102400112
  • 成员姓名: みつき
  • 成员csdn地址: https://blog.csdn.net/2401_88734098?type=bbs
  • 成员性格:  嚴謹細緻
  • 擅长的技术: C++ 開發能力
  • 兴趣爱好: 探索後端新技術
  • 希望的软工角色: 後端
  • slogan: 邏輯即真理

成员 8

  • 学号:102400130
  • 成员姓名:乌鸭
  • CSDN地址:https://blog.csdn.net/Big_Dark_Duck?spm=1000.2115.3001.5343
  • 成员性格:做事踏实细心,遇到问题愿意沉下心排查调试,乐于和队友讨论方案,偶尔喜欢钻研底层原理,遇到难题不轻易放弃。
  • 擅长的技术:Web前端基础、HTML/CSS/JS,Vue3基础;Git版本控制;简单硬件基础;C/C++编程
  • 兴趣爱好:跑步,睡觉,研究硬件焊接、电路调试,游戏,阅读计算机相关技术文档。
  • 希望的软工角色:前端开发
  • Slogan:脚踏实地,把每一行代码写扎实。

二、NABCD 分析

2.1 N —— Need(需求)

目标用户: 宿舍、班级里 4—8 人的小团体,想在课间、午休、晚自习后打一局战术射击的同学;以及想在低配置笔记本上体验"对枪"乐趣、又不想被主流竞技游戏门槛拦住的玩家。

使用场景: 午休时间,几个人各自打开电脑,就算凑不齐人数也能和 AI 打上一场;一局打完不到十分钟,输了立刻再来一场。

核心痛点:

  1. 凑不齐人:主流战术射击游戏需要 5 人组队才能好好打,少一个人体验就断了,而宿舍里往往凑不齐固定的五个人;
  2. 单局太长:一局动辄三四十分钟,要先热身、再排队、再打满半场,课间和午休根本吃不下;
  3. 规则太重:炸弹、经济、道具、技能层层叠加,新玩家上手成本高,还没体验到对枪就先被劝退;
  4. 配置与体积门槛:安装包几十 GB,低配笔记本跑不动,宿舍网络下载一次也很痛苦。

2.2 A —— Approach(做法)

一句话方案: 用 Unity + C# 开发第一人称团队战术对枪游戏《校园突袭》,把规则砍到最简——没有炸弹、没有经济,红蓝两队完全对等,消灭对方全员的队伍赢下这一局。考虑到团队此前没有任何 Unity 经验,第一阶段只做最小可运行版本:一名真人玩家在一张白盒小地图上对抗 3 个 AI 敌人,能移动、能开枪,AI 会追人会还击,一方全灭即分出胜负;跑通之后再把 AI 逐个替换成真人玩家,平滑过渡到 4v4 联机。

功能范围(分两段做):

模块最小可运行版本做(P0)第二阶段再做(P1)
玩家系统第一人称移动、鼠标视角、跳跃、奔跑、开火、换弹蹲下、静步、瞄准,以及不同移动状态的噪音半径与 AI 听觉
武器系统1 把步枪:射线检测命中、弹药与换弹、扣血手枪 / 冲锋枪 / 霰弹枪、后坐力、武器切换
伤害系统整体血量扣减与死亡判定部位划分与伤害倍率、爆头判定、击杀归属与击杀提示
AI 系统四状态有限状态机(巡逻 / 追击 / 开火 / 死亡)+ NavMesh 寻路;视觉感知只做"视距 25m + 视野 60° + 射线遮挡判断",带 0.3 秒反应延迟听觉感知、掩体、搜索、撤退重聚、拟人化对枪参数、AI 队友跟随
地图一张 40m × 30m 白盒小场地(平地 + 墙 + 箱子 + 双方出生点)教学楼中庭对称对枪地图:三条主路线、掩体与高低差、掩体点标注与导航区域
比赛流程3 个 AI 全部被消灭即胜利、玩家阵亡即失败、按 R 重开一局回合开始重置血量弹药、回合倒计时 120 秒、超时判定、先赢 3 局、比赛结算
表现与数据主菜单、血量 / 弹药 / 剩余敌人数 HUD、胜负提示观战、记分板、音效表现与本地数据保存

技术路线与架构:

层面选型说明
引擎与语言Unity + C#,目标平台 Windows PC文档与学习资料充足,适合 8 人协作
第一阶段范围只用 Unity 自带功能:CharacterController / NavMesh / Canvas / Raycast / 内置 Input不引入第三方插件与新输入系统,出问题时全组都能查
架构原则逻辑与表现分离、模块化、统一接口单机阶段不引入网络库,但预留网络化改造空间
AI 方案Unity 自带 NavMesh 寻路 + 四状态有限状态机团队零 Unity 基础,先不引入行为树与机器学习,也先不做听觉与掩体
网络阶段服务器权威架构、状态同步(玩家 / 战斗 / 游戏状态)、房间与匹配系统单人 → 2v2/3v3 → 4v4 逐步演进
数据存储最小可运行版本不做数据存储;多人阶段 MySQL(User / PlayerStats / Match / MatchPlayer)战绩、比赛与排行榜的数据基础
工程规范Git 分支与 Commit 规范、Pull Request、模块接口约定、任务看板8 人协作的质量底线,场景文件由专人主负责

关键难点与应对:

  1. 团队此前没有 Unity 经验 → 第一阶段只做最小可运行版本,按 4 周推进,每周都有可演示的验收物(能走动 → 能打固定靶 → AI 会追人会还击 → 完整打完一局);第一周先全员跟官方教程做一遍热身;
  2. AI 做不出来或调不好 → 状态先压到 4 个,视距、视野角、反应延迟、开火间隔等参数全部外置为可配置项,并严格遵守"AI 不直接读取玩家位置"的硬性约束;若进展不顺,退化为"会朝玩家移动 + 定时开枪"的极简版本;
  3. 多人网络开发过难 → 先完成单机版本再开发多人,AI 设计刻意与多人模式兼容,可逐个替换为真人玩家;
  4. 美术工作量过大 → 采用默认材质与白盒场景,把产能集中到玩法与手感上;
  5. 8 人代码难以合并 → 统一目录结构、命名规范与模块接口,场景文件由专人主负责,走分支 + PR 流程,主干由成员 8 把关。

2.3 B —— Benefit(好处)

对用户的价值:

  1. 随时能开局:有 AI 补位,凑不齐人也能打一场完整的战术对枪;
  2. 碎片时间友好:单回合一两分钟,整场比赛 5—10 分钟,课间和午休就能打完;
  3. 门槛低:没有经济与道具系统,比拼的只有枪法、走位、掩体、视野、声音信息与团队配合;
  4. 完全公平:红蓝两队能力、武器、出生区条件完全相同,不存在攻守不对称带来的"选边优势";
  5. 体验更真实:AI 只能靠自己的视觉获取信息(视距之内、视野角之内、中间没有墙遮挡),而且看到之后还要等一段反应时间才开枪,不是"隔墙就能锁头"的自动瞄准机器人。

对团队与课程的价值: 用四周走通"环境搭建 → 玩家控制 → 射击 → AI → 流程与交付"的最小闭环,先把能跑的东西做出来,再按"单机完善 → 多人联机 → 4v4 完整版"逐步扩展;同时实践 Git 协作、模块化设计与文档沉淀,产出的 AI 感知与决策框架、白盒关卡结构均可复用到后续模式(如爆破模式)与其他课程设计中。

可衡量的指标(最小可运行版本验收口径):

指标目标值
能玩起来(最小可运行版本)从主菜单进入地图,用 WASD + 鼠标控制角色跑动、跳跃,左键开枪、R 换弹,全程不穿墙、不掉出地图
AI 能力3 个 AI 会在地图中巡逻;玩家进入视距与视野角、且中间没有墙遮挡时会被发现,随后 AI 靠近并开枪;AI 不会卡墙、不会隔墙发现玩家、被打三枪阵亡
胜负判定3 个 AI 全部被消灭显示"胜利",玩家阵亡显示"失败",按 R 可重开且血量、弹药与 AI 状态完全重置
交付物能打包成 Windows 可执行文件并在别的电脑上直接运行;GitHub 仓库含源码与说明文档
第二阶段目标(非本次验收)四类武器、后坐力与部位伤害、听觉与掩体、AI 队友、回合制与"先赢 3 局"、观战与记分板

2.4 C —— Competition(竞争/替代方案)

现有方案它的优势它的不足我们的差异点
CS2 / VALORANT竞技深度高、生态成熟、赛事体系完善单局耗时长、必须凑齐队友、规则与经济系统复杂短局制、AI 可补位、无经济系统,上手即对枪
穿越火线等传统 FPS上手门槛相对低、模式丰富内容体量大、对硬件有要求、单机体验薄弱单机也能打完一场完整比赛,配置要求低
大逃杀类(绝地求生、和平精英)玩法成熟、社交属性强单局 20 分钟以上,碎片时间打不完5—10 分钟一场,节奏紧凑
单机 FPS / 射击训练软件无需联机、随时可玩缺少团队对抗与战术配合的核心体验保留团队对抗与人数判定,同时用 AI 补位
替代方案:玩手机游戏或去网吧零开发成本、即时可玩受设备、场地与时间限制,也没有"自己学校的战场"以校园建筑为战场,题材与场景自带代入感

我们的差异化优势(一句话): 不跟大厂比内容量,我们比"进场门槛"——不用凑人、不用等匹配,十分钟内打完一场 4v4 战术对枪。

2.5 D —— Delivery(交付与推广)

交付形式: Windows PC 可执行版本(最小可运行版本)+ GitHub 开源仓库(源码、Git 规范、设计文档与答辩材料);本学期先交付稳定可玩的单机版本,多人联机(2v2/3v3、4v4)作为后续阶段继续推进。

开发与交付节奏(对应《校园突袭_MVP精简设计方案》第 15 节):

阶段内容交付物 / 验收标准
第 1 周环境搭建 + 玩家控制全组装好 Unity 与 Git,工程能跑;用 WASD 在测试地图中移动、跳跃,视角正常
第 2 周射击摆几个固定靶子,能开枪打掉(射线命中 + 扣血 + 弹药与换弹)
第 3 周AIAI 会巡逻、发现玩家后追踪、进入射程会开枪,被打三枪阵亡,且不卡墙
第 4 周流程与交付主菜单 → 完整打完一局 → 胜负提示与按 R 重开;打包 exe 能在别的电脑上运行
后续阶段单机完善四类武器、后坐力与部位伤害、听觉与掩体、AI 队友、回合制与"先赢 3 局"、观战与记分板
后续阶段多人扩展从多人基础联机(2v2 / 3v3、状态同步)推进到 4v4 PvP(服务器权威、房间、匹配、战绩、数据库)

风险与备选方案(对应《校园突袭_MVP精简设计方案》第 16 节): 团队没有 Unity 经验是当前最大的风险,因此第一阶段把范围压到"一张白盒小地图 + 一把枪 + 3 个简单 AI",每周都有可演示的验收物,任何新想法先进"以后再做"清单;若 AI 进展不顺,退化为"会朝玩家移动 + 定时开枪"的极简版本,优先保证不卡地图、不穿墙;若流程整合或打包吃紧,则以"能走动 + 能打 AI + 能分出胜负"作为保底交付;联机、房间、匹配、数据库、爆破模式、角色技能等一律后置,坚决不做范围膨胀。


三、拟作的团队项目选题

3.1 一句话选题(中英文均可)

中文: 做一款以校园建筑为战场的短局制第一人称团队战术射击游戏《校园突袭》,红蓝两队完全对等,先赢 3 局者拿下比赛。

English: Campus Strike — a short-round first-person tactical shooter set in a symmetric campus map, where two equal teams fight to wipe each other out and the first to win 3 rounds takes the match.

3.2 选题 PDF 文档链接


四、团队的愿景

选择《校园突袭》,初衷很朴素:八个人都没有 Unity 实战经验,想借软件工程实践走一遍从需求分析、原型设计到编码实现的完整流程,在协作中磨合分工与沟通。现阶段目标很明确:做出能用于课程答辩演示的单机原型——基础射击、简单对战、基础地图场景可用,AI 敌人会巡逻、追击并还击,整局流程稳定跑通。

我们不急着堆功能:先把单机本地版本做扎实,再逐步加入多种武器、部位伤害、AI 队友与回合制等玩法,最后做到 4v4 联机。希望借这个项目补上 Unity 短板,积累实战与协作经验,打磨出可持续拓展的原型。

希望通过这个项目积累Unity、C#、网络编程、AI和软件工程实践经验,将课程项目逐步沉淀为能够展示在简历和作品集中的完整项目,为未来就业、竞赛或考研继续深造打下实践基础。


五、团队绩效考核方案

5.1 考核目的与原则

  • 目的: 让每个人的贡献都有据可查,让多干活的人被看见,避免贡献均摊和「搭便车」;同时给进度落后的成员明确的改进信号,而不是等到期末才追责。
  • 原则: 过程留痕(一切打分都要有证据)、多来源交叉验证(自评 + 互评 + 组长评)、公开可申诉、考核结果与任务分配和课程成绩挂钩。

5.2 考核对象与周期

项目内容
考核对象全队 8 名成员(含组长)
考核周期每周一次简短小结 + 每个迭代(2 周)一次正式打分 + 期末总评
组织者组长负责组织打分,另由负责测试的成员核对证据
记录载体Git 提交记录与 Pull Request + 任务看板 + 周会纪要 + 互评问卷

5.3 考核维度与权重

维度权重观察点数据来源
任务完成度30%认领任务按时交付的比例任务看板
工作质量25%代码评审通过率、Bug 返工率、文档质量Code Review 记录
投入与工作量20%有效提交次数、有效工作时长Git 记录 / 周报
团队协作15%响应及时性、协助他人、会议参与度会议纪要 / 互评
主动性与贡献10%主动认领难任务、提出改进方案互评 / PM 观察
合计100%

讨论过程: 以上维度由全队在第一次例会上共同确定。讨论中曾出现两种意见:一派主张按「工作量」占大头,另一派认为「交付是否按时」更能反映贡献。最终折中为——任务完成度 30%、工作质量 25%、投入与工作量 20%,其余 25% 留给协作与主动性,理由是游戏项目模块之间耦合度高(例如 AI 依赖地图导航、比赛流程依赖击杀判定),谁都不该只盯着自己那一块。权重合计 100%。各维度统一按 5 档折算:优秀为满分 ×90%—100%,良好 ×75%—89%,合格 ×60%—74%,待改进 ×40%—59%,不合格为 ×40% 以下。

5.4 计算公式

个人总分 = 自评得分 × 20% + 组内互评平均分 × 40% + 组长 评分 × 40%

组内互评平均分 = (所有队友评分之和 − 最高分 − 最低分)÷ (人数 − 2)

最终系数 = 个人总分 ÷ 全队平均分

计算示例: 某成员负责 AI 状态机模块,本迭代自评 88 分,7 名队友互评去掉最高 95 分与最低 70 分后平均 86 分,组长评 90 分,则个人总分 = 88×20% + 86×40% + 90×40% = 87.6 分。若全队平均 82 分,其系数为 1.07,可在下个迭代优先选择自己想做的模块。

防互相刷分:互评时去掉最高分和最低分;互评匿名提交;分数与「事实描述」一起写(如「本周期完成 3 个任务,其中 1 个延期 2 天」),避免只给结论。

5.5 计分与评级标准

分数区间等级说明结果应用
90—100卓越 A核心模块主力,有超出预期的产出期末个人成绩上浮,优先选择下阶段模块
75—89良好 B按时按质完成认领的任务正常计分
60—74合格 C有延期或返工,但整体完成正常计分,需提交书面改进计划
< 60待改进 D多次未完成任务,需要他人补位约谈;连续两个迭代为 D 则下调课程成绩

5.6 加减分项与红线

加分项(每项 +2 分,单迭代上限 +6 分):

  1. 主动承担无人认领的模块并按时交付;
  2. 发现并修复影响游戏能否跑通的严重缺陷(如 AI 卡在地图里、比分判定错误、回合无法结束),或提出被采纳的架构改进;
  3. 主动补位他人任务,且交接文档清晰。

扣分项:

  1. 未请假缺席例会:−2 分/次;
  2. 任务延期且未提前告知:−2 分/天,单迭代累计上限 −10 分;
  3. 提交未经人工审查的代码(含 AI 生成代码)直接合并,导致主干构建失败或功能回退:−3 分/次;
  4. 违反 Git 协作规范(在主干直接开发、分支命名混乱、提交信息无意义)造成他人工作冲突:−2 分/次。

红线(直接判定为不合格并上报):

  1. 提交他人代码 / 抄袭冒充本人工作;
  2. 编造进度、伪造提交记录;
  3. 超过 2 周完全不参与且失联。

5.7 结果应用

  1. 每个迭代结束后公布贡献系数排名,用于下一个迭代的任务分配优先级(系数高者可优先选择自己感兴趣的模块);
  2. 期末总评 = 各迭代个人总分的加权平均(按迭代时长加权),由组长汇总、全队核对后提交,作为个人课程成绩组内系数的主要依据;
  3. 答辩主讲、现场演示、演示视频出镜等展示机会,优先给各迭代贡献系数排名靠前的同学;
  4. 全队平均分纳入团队整体成绩的讨论依据。

5.8 争议处理与申诉

  1. 队员对评分有异议,须在结果公布后 48 小时内向组长提出,逾期不再受理;
  2. 由组长 + 一名非当事成员组成复核小组,依据提交记录、Pull Request 记录与会议纪要复盘;
  3. 复核结果 3 天内反馈;若对复核结果仍有异议,可整理材料直接向任课老师 / 助教反映。
...全文

相关推荐

评论 1
收藏 已收藏
分享
返回顶部
ERRROR401
2601_FZU_SE 95 成员 186 内容