[T.6] 团队项目技术规格说明书

[T.6] 团队项目技术规格说明书

项目 内容
这个作业属于哪个课程 北航2026年春季软件工程
这个作业的要求在哪里 [T.6] 团队项目:技术规格说明书
我在这个课程的目标是 接触理解应用现代软件工程常用的开发方式,锻炼自己编写代码以及团队协作的能力
这个作业在哪个具体方面帮助我实现目标 详细说明本团队项目的技术规格

1 概念和术语

节点与场景树:Godot引擎底层的组织形式,任何可视或不可视的逻辑单元都是节点,节点按树状结构组合成场景。这种设计模式用于替代传统的面向对象继承体系。

信号总线:一种发布订阅机制,用于解耦不同节点之间的通信。某一个节点可以发出信号,其他节点监听该信号并执行对应的操作。

寻路权重矩阵:提供给敌人寻路算法的地图数据模型,不同地形或玩家建筑对应不同的通行代价。

只读配置表:以JSON格式存储的纯文本文件,包含所有兵种、敌人和增益效果的数值。游戏在初始化阶段读取并将其转化为内部数据结构,使得修改数值无需重新编译代码。

2 技术栈

程序设计语言选择GDScript。这是Godot引擎专用的动态类型脚本语言,能够无缝调用引擎的底层接口,极其适合快速迭代游戏逻辑与状态机控制。

应用开发框架选用Godot 4引擎。该引擎非常轻量级,原生支持高质量的二维游戏开发,其独特的节点树设计能够很好地应对复杂界面的组织。同时它自带完善的网页端打包工具。

运行环境分为开发期和部署期。开发与测试环境需要配置Windows或macOS系统并安装Godot编辑器。实际部署的运行环境为现代主流浏览器。

3 软件架构

软件总体架构基于纯客户端单机模式设计,整体划分为状态控制层、核心业务层和数据配置层。这三层协同工作,完成单局游戏的完整循环。

状态控制层负责全局状态机的流转,以单例模式常驻内存。它管理开局、白天探索、夜晚防守和结算四个阶段的顺序切换,并向业务层下发相应的阶段切换指令。

核心业务层包含四大平行模块。地图模块负责噪声地形的生成和网格坐标体系的管理。战斗模块处理所有实体的生命周期、射程检测、伤害计算和技能冷却倒计时。怪物人工智能模块负责多模态的寻路算法与仇恨计算。基建与界面模块负责建造逻辑的判定和所有资源数量的渲染。这四大模块之间通过全局信号总线进行通信。

数据配置层作为一个独立的数据注入器,在游戏启动时负责解析本地的配置文件,将解析后的数据结构派发给对应的业务模块,例如告诉怪物模块今晚应该刷出什么类型的敌人。

4 软件设计和实现

代码编写工作主要围绕四个业务模块展开。地图部分需要完成坐标映射函数和地形随机生成算法。战斗部分需要编写伤害的结算逻辑,以及英雄单位能量槽充能的代码。人工智能部分需要实现寻路算法,使其能够处理规避障碍和强行破坏建筑两种不同的寻路策略。界面部分需要编写响应玩家鼠标拖拽和点击事件的交互代码。

系统文档方面需要详细编写一份数据填表规范和接口字典。填表规范需要规定所有配置表字段的英文键名、数据类型和取值范围,以确保美术和策划同学修改数值时不会引发解析错误。接口字典需要记录全局信号总线中定义的每一个事件名称、触发时机以及附带传递的参数列表。

5 软件测试和性能量度

测试计划分为逻辑验证、性能承压和黑盒试玩三个环节。针对逻辑验证,需要编写一系列独立的测试场景,将战斗结算公式、资源扣除逻辑和敌方寻路算法提取出来进行孤立测试,观察输入输出是否符合预期。针对性能承压,需要设定明确的压力指标,即确保同屏同时存在五十个敌方单位和三十个我方建筑时,在普通的办公电脑浏览器上帧率稳定在六十帧。黑盒试玩阶段将打包初期版本分发给班级同学,重点收集各种极端操作下导致的报错异常。

软件性能的量度主要依赖Godot引擎自带的性能分析器。核心关注点为每帧的主线程脚本执行时间和渲染耗时。从技术实现的边界来看,最大的瓶颈在于单线程的寻路计算。当玩家改变地形导致多只怪物同时请求重新规划路线时,计算量会产生突变,可能会引发画面卡顿。

基于上述量度标准,软件的出口条件设定为:核心玩法的六天闭环可以顺畅执行且无逻辑死锁;内存占用在连续运行数局后无明显的内存泄漏迹象;极端情况下的寻路计算延迟造成的帧率波动控制在十帧以内。

6 技术风险识别和评估

主要的风险来源于频繁拆建建筑导致的全体怪物实时重新寻路的计算灾难。为了避免浏览器主线程卡死,技术上将引入寻路请求队列机制。当发生地形改变时,不会立即重新计算所有怪物的路径,而是将它们的计算请求压入队列,规定引擎每帧最多只处理五到八个寻路任务,将计算压力分摊到多个渲染帧中。

另一个风险在于不同浏览器的内核差异可能导致物理引擎的判定出现细微误差。应对策略是将核心战斗结算彻底脱离帧率,采用固定的物理步长进行计算,确保游戏结果的一致性。

7 软件部署

本项目的部署策略规避了自建服务器的成本和维护负担。游戏构建输出为WebAssembly文件后,直接托管并部署在开源社区的代码托管平台和第三方独立游戏分享网站上,利用它们的静态页面服务分发给玩家。玩家无需下载安装包,通过网页链接即可直接体验。

posted @ 2026-04-22 15:42  Fruit_Inc  阅读(15)  评论(0)    收藏  举报