YuchenYoung / GloryOfTheKing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

同济大学软件学院C++期末项目


王者荣耀(2D)——Glory of the King

组员:

杨雨辰 1853829

赵浠明 1850250

张艺腾 1852137

季潇熠 1851343

小组成员贡献及分工

杨雨辰:防御塔制作、Game Mode制作 100%

赵浠明:人物基础攻击制作、联网、代码管理 100%

季潇熠:地图制作、人物技能制作、AI制作 100%

张艺腾:界面制作、人物属性制作、人物技能制作 100%

github地址

https://github.com/YuchenYoung/GloryOfTheKing.git

进度时间线

2019.4.16 开始了解游戏制作流程、游戏引擎、版本控制

2019.5.1 确定虚幻4引擎并开始学习

2019.5.20 完成地图制作

2019.5.23 完成菜单界面制作

2019.5.30 完成人物攻击、选择英雄功能

2019.6.1 完成生命值组件、初步实现防御塔、开始联网

2019.6.3 完成生命值HUD、攻击基本兼容

2019.6.6 实现联网攻击、技能、小兵的同步

2019.6.8 实现小兵的分拨生成

2019.6.11 完成商店界面、人物属性设置、人物技能特效完成、实现主塔

2019.6.13 完成敌我双方攻击机制、AI初步完成

2019.6.14 实现人物重生、完成防御塔血条

2019.6.15 人物技能完成、AI完善、完成野怪、联网失败放弃

2019.6.16 各种方面的完善,并打包项目提交

游戏选用引擎

Unreal Engine 4(虚幻4)

基础功能

  • 地图绘制(可适用1V1及5V5)
  • 支持鼠标控制人物移动,键盘触发攻击及技能
  • 支持三种英雄选择(亚瑟,后羿,廉颇)
  • 支持三种小兵(近战兵,远程兵,炮兵)及防御塔AI
  • 支持水晶系统,及水晶击破后的胜利判定
  • 支持金币各种形式获取(时间、补兵、防御塔)
  • 支持商店系统,可提升人物属性
  • 支持战绩查询
  • 支持经验、等级系统

扩展功能

  • 支持野怪(单一种类)
  • 支持回城、泉水系统
  • 分辨率可调节
  • 支持各种动画效果(人物攻击动画、死亡动画)

游戏架构设计

游戏规则

在封闭地图中进行的1v1MOBA类对战游戏

对战双方各操控一名英雄,并有己方小兵及防御塔辅助你的进攻与防守,以击破敌方主塔为胜利条件

操作功能

鼠标点击:操控己方英雄

A键:普通攻击

Q键:回城

数字1键:发动1技能

数字2键:发动2技能

数字3键:发动3技能

Esc键:退出游戏

项目过程中困难及解决方法

1.一开始配置环境的时候vs2017在下载c++游戏开发组件总是下载失败,有的下载项目没有权限。解决方案:卸载2017下载2019版本并且打开电脑权限。

2.Sourcetree使用的时候总是拉取与推送冲突,解决方案:每次大家分开来写不同的部分,尽量不要同一时间修改一个部分,同时做完之后先拉取在推送。

3.制作联网的时候,我们所使用的TopDown模板中,人物移动组建NavMesh不可适用于客户端,导致再进行联网尝试的时候我们没有办法使客户端的人物进行移动,解决方案:自己写人物移动,使用AWSD按键进行上写左右的移动,放弃使用模板。

4.一开始写小兵的时候,对于如何让敌方小兵发现我方英雄有点问题,解决方案:给人物添加了发出生声音的组件,同时每帧调用,给小兵添加PawnSenceing组件使得小兵可以发现人物。

5.在写防御塔的时候,一开始防御塔对于人物没有造成伤害,解决方案:在debug时候发现,我们将防御塔的碰撞胶囊体误设置为攻击范围,所以导致防御塔的实际攻击范围也非常小,最后通过重新写了一个防御塔的碰撞组建修改范围。

6.在制作技能的时候,使用UE4自带的技能会导致技能只要是使用了一次就不会消失,永远在重复播放,解决方案:从网上下载资源包,自己尝试制作特效,修改相应组件的LIFETIME。

7.制作远程小兵的时候,遇到一个问题就是如何使得弓箭朝着人物方向移动并且戳到人物身上。解决方案:新写一个Actor,每帧调用发现的敌方单位的坐标,同时减去生成弓箭位置的坐标,打出向量,向量的方向就是移动方向,同时目标设置为人物Actor。

8.写AI的时候,AI在发现了敌方英雄之后会继续往前走但是不会朝着英雄走去,解决方案:在发现了敌方英雄之后,使用Aicontroller来使得AI朝着人物所在方向移动。

游戏可玩性

1.可在商店使用金币购买装备提升人物属性

2.随人物等级提升开发更多技能并提升技能等级

3.可体验三种英雄类型

游戏玩法

1.游戏开始时,选择你喜欢的英雄类型并加入对局

2.双方玩家会出生在己方主塔的附近,并拥有自己的小兵和防御塔,小兵会每隔一段时间生成帮助你攻取敌方主塔

3.利用金币购买装备提升你的属性,并合理使用技能来击杀敌方英雄和士兵

4.双方英雄死亡后隔一段时间会重生,用高超的操作来攻取敌方主塔获得胜利吧!

C++特性的使用

  • 常量表达式
  • 初始化列表
  • STL容器和相应方法的使用
  • 迭代器
  • 范围for的使用
  • 类和多态
  • 模板

About


Languages

Language:C++ 98.2%Language:C# 1.8%