软件设计说明书
1. 介绍
1.1 目的
这篇文档提供了星空传奇游戏软件架构的总览,从不同的视角描述了该系统。同时介绍了星空传奇游戏软件的想法,包含架构分析的关键决策,目的在于帮助开发人员理解星空传奇游戏软件的基本结构。
1.2 范围
介绍了星空传奇游戏软件的登录游戏大厅、游戏准备、游戏对战、结束游戏、更新用户列表。
1.3 内容概览
登录系统
用户若要登录游戏大厅,需要输入用户名和正确的服务器端IP,如果输入错误,则停留在登录页,相反登录到游戏大厅,并更新用户列表;
游戏准备
用户需要进入一个其他用户未使用的座位,加载游戏界面,并且摆放好棋子的位置后点击准
备按钮;
游戏对战
由最先进入游戏界面的一方发起攻击,另一方返回攻击结果,交换进攻权,依次循环;
结束游戏
当有一方的三架飞机均被击中头部,结束游戏;
更新用户列表
当有用户进入或退出游戏大厅时更新游戏大厅用户列表,用户从游戏界面退出时,更新用户信息和大厅信息。
1.4 功能技术特点
功能特点:
本游戏一款奇幻动作类MMORPG网络游戏。 整个传奇世界构建了一个完整的虚拟社会体系,每一个玩家都能在游戏中体会不一样的人生。师徒、夫妻、行会等社会关系,使玩家有效的参与到了“攻城略地”、“行会战斗”、“文明发展”、“个体交往”等虚拟社会活动中去。
技术特点:
1、全面并同等的支持OpenGL和Direct3D。 2、全面支持Windows,Linux以及Mac OS X平台。3、强大且成熟的材质管理和脚本系统,可以不动一行代码去进行材质维护。
2. 体系结构表示方法
这篇文档使用一系列视图反映系统架构的某个方面;
用例视图:概括了架构上最为重要的用例和它们的非功能性需求;
逻辑视图:展示了描述系统关键方面的重要用例实现场景(使用交互图);
部署视图:展示构建在处理节点上的物理部署以及节点之间的网络配置(使用部署图);
过程视图:描述了数据流(使用类图描述数据模型,活动图表示数据流)。
3. 系统要达到的目标和限制
➢ 目标
客户可以正确登录,在登录页面输入信息时能够在输入错误的同时看到错误提示;正确登录后可以加载游戏大厅,通知其他人更新用户列表,点击其中一各位被占用的位置后可以进入到游戏界面,双方都摆放好棋子后可以点击准备按钮,开始一次游戏对战。
➢ 限制
客户输入的不是服务器IP,客户不能登录到游戏大厅;
一个用户无法开始游戏,必须都进入相同桌后点击准备按钮,方可开战。
4. 用例视图
星空传奇游戏软件描述的主要用例有:登录游戏大厅,选择座位,摆放棋子,发起进攻,反馈结果,重新开始,退出游戏,更新用户列表。
4.1 系统用例图
系统用例图见图4.1:
游戏系统更新用户列表登录游戏大厅< 图4.1 系统用例图 4.2 登录游戏大厅 4.2.1 用例简述 用户输入用户名和IP地址登录游戏大厅。系统会通知其他用户更新用户列表。 4.2.2 基本事件流 1 用户:在登录界面输入用户名和服务器IP,登录。 2 系统:判断IP是否符合规则。 3 系统:加载登录大厅,更新用户列表。 4 用例结束。 4.2.3 活动图 登录游戏大厅的活动图见图4.2 usersystem加载登录界面输入用户名和IP地址[否] 输入IP不合法[是] 加载游戏大厅发送更新用户列表 图4.2 登录游戏大厅的活动图 4.3 更新用户列表 4.3.1 用例简述 由用户登录或退出游戏大厅和坐下时,更新用户列表和信息。 4.3.2 基本事件流 1 客户端系统:发送更新用户列表请求。 2 服务器端系统:发送用户列表 3 用例结束。 4.3.3 活动图 更新用户列表的活动图见图4.3 usersystem发送更新用户列表是否更新游戏界面[是] [否] 更新游戏大厅更新游戏界面 图4.3更新用户列表的活动图 4.4 选择座位 4.4.1 用例简述 用户选择空座位进入,同时进入游戏界面,更新用户列表。 4.4.2 基本事件流 1 用户:点击座位想要入座。 2 系统:判断此座位是否已有用户。 3 用户:用户成功入座。 4 系统:加载游戏界面,更新游戏用户列表及用户信息。 5 系统:用例结束。 4.4.3 活动图 选择座位的活动图见图4.4 usersystem载入游戏大厅点击位置座位上已有用户[是] [否] 加载游戏界面发送更新用户列表 图4.4选择座位的活动图 4.5 摆放棋子 4.5.1 用例简述 进入游戏即可移动三个飞机棋子,在双方都进入游戏后,点击“准备”按钮后棋子摆放结束。 4.5.2 基本事件流 1 用户:选择棋子的位置,移动棋子。 2 系统:检测移动是否合法。 3 系统:检测是否有两名用户都已入座。 4 用户:点击准备按钮。 5 系统:将棋子画入棋盘,使其不可更改。 6 系统:判断谁先进入游戏界面,加载相应组件。 7 用例结束。 4.5.3 活动图 摆放棋子的活动图见图4.5 usersystem载入游戏界面移动棋子棋子移动不合法[是] [否] 恢复原始位置改变棋子的位置点击准备按钮移除准备按钮先进入游戏界面[是] [否] 加载反馈组件加载进攻组件 图4.5摆放棋子的活动图 4.6 发动进攻 4.6.1 用例简述 双方都准备后,由显示攻击按钮的一方,通过点击棋盘,自动获取坐标显示在坐标文本框内,点击进攻按钮,发起进攻,同时会在对方棋盘上显示进攻点标记。 4.6.2 基本事件流 1 用户:点击棋盘以获得目标攻击点。 2 系统:在坐标文本框中显示出用户点击的目标点坐标。 3 用户:点击进攻按钮。 4 系统:将攻击点信息发给对方。 5 系统:加载反馈组件。 6 系统:对反棋盘上显示进攻点标记。 7 用例结束。 4.6.3 活动图 发动进攻的活动图见图4.6 usersystem加载游戏界面点击棋盘显示坐标,设置攻击按钮可用点击攻击按钮发送攻击信息移除攻击组件,添加反馈组件 图4.6发动进攻的活动图 4.7 反馈结果 4.7.1 用例简述 接到攻击信息后,可以点击反馈按钮组,同时会将反馈结果显示在对方棋盘,做上相应标记。 4.7.2 基本事件流 1 系统:设置反馈组件可用。 2 用户:根据攻击情况,点击反馈按钮。 3 系统:判断是否是“死”是否被点第三次。 3 系统:移除反馈按钮组和攻击点标记。 4 系统:添加进攻组件或结束游戏组件。 5 系统:对反棋盘上添加与反馈结果相对应的标记。 6 用例结束。 4.7.3 活动图 反馈结果的活动图见图4.7 usersystem添加攻击标识设置反馈按钮组可用点击反馈按钮移除反馈按钮组件“死”未被点击三次[是] [否] 添加结束组件添加攻击组件发送反馈结果 图4.7反馈结果的活动图 4.8 重新开始 4.8.1 用例简述 用户击落所有飞机时会显示这个按钮,点击后棋盘恢复初始状态。 4.8.2 基本事件流 1 系统:移除反馈按钮组,加载重新开始按钮。 2 用户:用户点击重新开始。 3 系统:恢复棋盘及棋子至初始状态。 4 结束用例 4.8.3 活动图 重新开始的活动图见图4.8 usersystem移除反馈组件,添加结束组件点击重新开始恢复初始化棋盘 图4.8重新开始系统的活动图 4.9 退出游戏 4.9.1 用例简述 用户击落所有飞机时会显示这个按钮,点击后退出游戏界面来到游戏大厅。 4.9.2 基本事件流 1 系统:移除反馈按钮组,添加退出游戏按钮。 2 用户:点击退出游戏按钮。 3 系统:关闭游戏界面。 4 用例结束。 4.9.3 活动图 退出游戏的活动图见图4.9 分区3分区4移除反馈组件,添加结束组件点击退出游戏退出游戏界面 图4.9退出游戏的活动图 5. 逻辑视图 逻辑视图部分主要叙述了设计阶段的工作。 5.1 总览 图5.1的领域模型是星空传奇游戏软件的设计实体及其之间的关系; Table-leftSeat : ChairChair-user : User*11User-ID : String-name : String-clientSocket : objectLogIn-submit : object-reset : object-gameHall : GameHall-user : User+login()11ClientThread< 客户端 Server-serverSocket : object1*ServerThread+run()1*Requset-clientAction : string-serverAction : string-paragram : object11< 服务器端 图5.1 领域模型 5.2 主要Package的介绍 星空传奇游戏软件Package图见图5.2 ClientServerAction< ➢ Client Client包,他们属于游戏大厅的类。 ➢ Common Common包,他们属于客户端和服务器端均要使用的公共类。 ➢ Server Server包包含Action,他们属于服务器端的类。 ➢ Game Game包包含Actin,他们属于游戏界面中使用的类 6. 过程视图 过程视图部分叙述几个主要子系统的处理流程。 6.1 登录游戏大厅 6.1.1 用户登录游戏大厅的顺序图见图6.1 userLoginGameHallServercomfirm(user);login(user);sendRequest(request)sendResponse(response) 图6.1 用户登录游戏大厅的顺序图 6.2 准备游戏 6.2.1 准备游戏的顺序图见图6.4 GameHallGameFrameServerSendRequest(request)sendResponse(response)startGameFrame(user)NotifyReady()addAttackCompennets()setIsPreparedWell() 图6.4 准备游戏的顺序图 6.3 游戏对战 6.3.1 游戏对战的顺序图见图6.7 GrameFrame1sendRequest(Request)addFeedbackCompenent()ServerGameFrame2sendResponse(response)addAttackPoint()sendRequest(request)addAttackCompenents()SendResponse(response)addfeedbackCompenents()addAttackResult() 图6.7游戏对战的顺序图 6.4 结束游戏 6.4.1 结束游戏的顺序图见图6.10 GameFrame1ServerGameFrame2GameHallremoveFeedbackCompenents()addGameoverCompenents()sendRequest(request)sendResponse(response)removeFeedbackCompenents()playAgain()addGameoverCompenents()nextPlay() 图6.10结束游戏的顺序图 7. 部署视图 部署视图描述了如何将具体软件制品分配到计算节点 (具有处理服务的某种事物) 上,表示了软件元素在物理架构上的部署,以及物理元素之间的通信。 星空传奇游戏软件的部署视图见图7.1 Client :Generic PCServer/Generic PCCommonServerGameActionClientCommonAction*1 图7.1 星空传奇游戏软件的部署视图 ➢ Generic PC 普通的个人计算机。 ➢ Server 服务器,或者带有服务器功能的普通的个人计算机。 8. 规模和性能 ➢ 满足的规模 能够满足100人同时在线浏览网页,20人同时进行有关数据库的操作。 ➢ 满足的性能 能够满足让顾客可以认同的相应时间。 9. 质量 系统正式使用时,登录、注册、查看商品、生产订单的流程正常。 因篇幅问题不能全部显示,请点此查看更多更全内容