【塔防】1,游戏架构

游戏架构

  • 一,StoneDefence核心架构分析
    • 1,安装
    • 2,核心框架
      • 2.1创建核心核心环境
        • 2.1.1游戏中的核心元素(GameCore)
          • Apawn
          • GameInstance
          • GameState
          • PlayerState
          • PlayerController
          • GameUserSettings
        • 2.1.2大厅中的核心元素(HallCore)
          • GameModeBase
          • PlayerController
          • GameStateBase
          • Pawn
        • 2.1.3核心元素
          • GameModeBase
        • 2.1.4核心元素
          • WorldSettings
      • 2.2文件夹操作
        • 2.2.1调换文件内容
        • 2.2.2更改文件夹名称
        • 2.2.3合并文件夹
      • 2.3游戏框架
  • 二,StoneDefence_UI架构分析
    • HUD
    • UserWidget
    • UI_RuleOfTheWidget
    • UI_RuleOfTheWidget
  • 三,StoneDefence角色架构分析
    • Character
    • RuleOfTheCharacter
    • AIController
    • Acter
    • 插件的创建
    • Acter
    • ToolBase
  • 四,StoneDefence核心资源和数据架构分析
    • Object
  • 五,扩展到整个游戏架构设计与分析
    • CheatManager
    • 总结

使用UE4.27.2
VS2019

一,StoneDefence核心架构分析

1,安装

UE4.27.2,空文件C++创建新项目(包含初学者内容包)
(出现报错问题,显示无法编译,去.net官网下载6.0,VS下载管理器下载.net内容)

2,核心框架

2.1创建核心核心环境

UE4游戏核心框架包括
Controller:控制
GameMode:游戏世界的逻辑,及整个游戏的玩法规则
PlayerState:存储玩家状态的类
GameState:游戏数据管理,如任务进度,游戏活动等
HUD:用户界面组件,用于显示游戏信息和提供交互性
Player:玩家

按下列顺序依次创建

2.1.1游戏中的核心元素(GameCore)
Apawn

APawn:组成UE世界的角色,提供角色的物理表现
在这里插入图片描述
命名:TowerDefenceGameCamera
路径:(新增)GameCore
不要忘记点击公共(Public)

GameInstance

GameInstance:正在运行的游戏实例的高级管理器对象。在游戏创建时生成并且不会因关卡切换销毁
在这里插入图片描述命名:TowerDefenceGameInstance
路径:bishe/Source/bishe/Public/GameCore

GameState

GameState:存储游戏数据,存在于服务端也存在于客户端
在这里插入图片描述
命名:TowerDefenceGameState
路径:GameCore

PlayerState

PlayerState:游戏中玩家状态
命名:TowerDefencePlayerState
路径:GameCore

PlayerController

PlayerController:玩家控制器
下含有HUD,上含有PlayState,联网功能
命名:TowerDefencePlayerController
路径:GameCore

GameUserSettings

GameUserSettings:掌管游戏设置(音量大小,相机的FOA、背景音乐的控制)
命名:TowerDefenceGameUserSettings
路径:GameCore

2.1.2大厅中的核心元素(HallCore)
GameModeBase

在这里插入图片描述
命名:TowerDefenceHallGameMode
路径:HallCore

PlayerController

在这里插入图片描述命名:TowerDefenceHallPlayerController
路径:HallCore

GameStateBase

命名:TowersDefenceHallGameState
路径:HallCore

Pawn

命名:TowersDefenceHallPawn
路径:HallCore

2.1.3核心元素
GameModeBase

命名:TowerDefenceSelectLevelGameMode
路径:SelectLevel

2.1.4核心元素
WorldSettings

命名:TowerDefenceWorldSettings
路径:Settings

2.2文件夹操作

2.2.1调换文件内容

打开文件,找到TowerDefenceGameUserSettings,剪切想要更换位置的文件到目标文件夹Settings,注意需要更换两次,一次.cpp一次.h
点击下图
请添加图片描述

vs2019跳出弹窗,点击全部重新加载

2.2.2更改文件夹名称

在Public下把文件夹SelectLevel重命名为SelectLevelCore
在Private下把文件夹SelectLevel重命名为SelectLevelCore
点击下图
请添加图片描述

vs2019跳出弹窗,点击全部重新加载

2.2.3合并文件夹

在Public下文件夹创建新文件Core,直接把三个文件夹GameCore、HallCore、SelectLevelCore放入Core中
SelectLevel,注意需要更换两次,一次.cpp一次.h
点击下图
请添加图片描述

vs2019跳出弹窗,点击全部重新加载

以上都需要更改为更改后的正确代码路径
如:TowerDefenceSelectLevelGameMode.cpp
更改前

#include "TowersDefenceSelectLevelGameMode.h"

更改后

#include "Core/SelectLevelCore/TowersDefenceSelectLevelGameMode.h"

2.3游戏框架

登录大厅
TowerDefenceHallGameMode(定义大厅里的规则)
TowersDefenceHallGameState(大厅里数据交互)

TowerDefenceHallPlayerController(控制,按键响应)
TowersDefenceHallPawn(提供视口)

游戏内核心元素
StoneDefenceGameModeBase(联网状态下充当服务器,非联网状态下是整个游戏的规则限定)
TowerDefenceGameState(游戏中所有数据)

TowerDefencePlayerState(游戏中玩家的数据)
TowerDefencePlayerController(玩家控制器)

TowerDefenceGameCamera(提供一个视口,摄像机(左移右移等))

选择关卡的定义
TowerDefenceSelectLevelGameMode(关卡选择)

存在于整个游戏
TowerDefenceGameInstance(游戏什么时候开始它就什么时候生成实例,游戏什么时候结束它就什么时候销毁)

设置
TowerDefenceGameUserSettings(游戏中的设置)

level
TowerDefenceWorldSettings(level的状态)
在这里插入图片描述

二,StoneDefence_UI架构分析

制作各种UI

HUD

UMG是HUD的基类

命名:RuleofTheHUD
路径:bishe/Public/UI/GameUI/Core

命名:TowerDefenceHallHUD
路径:bishe/Public/UI/HallUI/Core

命名:TowersDefenceSelectLevelHUD
路径:bishe/Public/UI/SelectLevelUI/Core

UserWidget

命名:UI_RuleOfTheWidget
路径:bishe/Public/UI/Core
上述HUD都需要继承于此

UI_RuleOfTheWidget

命名:UI_MianScreen
路径:bishe/Public/UI/GameUI/UMG
作用:整个游戏界面(当作容器,包括所有元素)

命名:UI_MianScreen
路径:bishe/Public/UI/HallUI/UMG

命名:UI_SelectLevelMain
路径:bishe/Public/UI/SelectLevelUI/UMG

MainHall作为一个根,由次生成MainHall和MainScreen里有各个元素拼接
在这里插入图片描述

UI_RuleOfTheWidget

命名:UI_RucksackSystem
路径:bishe/Public/UI/GameUI/UMG
作用:背包系统UI

命名:UI_Inventory
路径:bishe/Public/UI/GameUI/UMG/Inventory
作用:物品栏UI

命名:UI_InventorySlot
路径:bishe/Public/UI/GameUI/UMG/Inventory
作用:物品栏小格子UI

命名:UI_PlayerSkillSystem
路径:bishe/Public/UI/GameUI/UMG
作用:技能栏UI

命名:UI_SkillSlot
路径:bishe/Public/UI/GameUI/UMG/Skill
作用:每个技能UI

命名:UI_GameInfoPrintSystem
路径:bishe/Public/UI/GameUI/UMG
作用:打印说明(如创建一个塔,跳出创建了一个塔)

命名:UI_GameMenuSystem
路径:bishe/Public/UI/GameUI/UMG
作用:游戏内菜单(通常游戏按ESC跳出的)

命名:UI_MiniMapSystem
路径:bishe/Public/UI/GameUI/UMG
作用:小地图

命名:UI_MissionSystem
路径:bishe/Public/UI/GameUI/UMG
作用:任务栏

命名:UI_ToolBarSystem
路径:bishe/Public/UI/GameUI/UMG
作用:顶部元素

命名:UI_GameSettingsSystem
路径:bishe/Public/UI/Common/UMG
作用:整个游戏设置,对应下面的UI_GameSettingsAudio、UI_GameSettingsGameSettings、UI_GameSettingsOtherSettings、UI_GameSettingsVideo

命名:UI_SaveAndLoadingGameSystem
路径:bishe/Public/UI/Common/UMG
作用:保存游戏,读取游戏,对应下面的UI_SaveAndLoadBar

命名:UI_GameSettingsAudio
路径:bishe/Public/UI/Common/UMG/GameSettings
作用:音乐设置

命名:UI_GameSettingsGameSettings
路径:bishe/Public/UI/Common/UMG/GameSettings
作用:游戏设置

命名:UI_GameSettingsOtherSettings
路径:bishe/Public/UI/Common/UMG/GameSettings
作用:其他设置

命名:UI_GameSettingsVideo
路径:bishe/Public/UI/Common/UMG/GameSettings
作用:图像设置

命名:UI_SaveAndLoadBar
路径:bishe/Public/UI/Common/UMG/SaveLoad
作用:保存游戏,读取游戏的每一小栏

命名:UI_HallMenuSystem
路径:bishe/Public/UI/HallUI/UMG
作用:大厅的开始游戏等按钮

命名:UI_LevelButton
路径:bishe/Public/UI/SelectLevelUI/UMG/Button
作用:选择关卡界面
在这里插入图片描述

三,StoneDefence角色架构分析

角色属性有共同之处,生命值、魔力值、攻击力等,需要一个基类承接

Character

命名:RuleOfTheCharacter
路径:bishe/Public/Character/Core
作用:角色

RuleOfTheCharacter

命名:Towers
路径:bishe/Public/Character/CharacterCore
作用:塔

命名:Monsters
路径:bishe/Public/Character/CharacterCore
作用:怪物

AIController

命名:MonstersAIController
路径:bishe/Public/Character/AIController
作用:控制怪物的AI

命名:TowersAIController
路径:bishe/Public/Character/AIController
作用:控制塔的AI

Acter

命名:RuleOfTheBullet
路径:bishe/Public/Character/Bullet
作用:子弹

五种子弹类型:跟踪,直线(可以穿模),线性(不可穿模),AOE,闪电
请添加图片描述

插件的创建

需要一个工具类,辅助游戏的,如飘动的字、摄像机碰到阻碍视线的自动移动、摄像机的移动差值(可以做成插件)

编辑-》插件-》新插件(NewPlugin)-》空白(Blank)
命名:StoneToolClass

Acter

命名:ToolBase
路径:F:/bishe/Plugins/StoneToolClass/Source/StoneToolClass/Public/Core
作用:当移到低位时,摄像机缓慢下降,当移到高位时,摄像机缓慢上升
在这里插入图片描述

ToolBase

命名:DisplacementTrgger
路径:F:/bishe/Plugins/StoneToolClass/Source/StoneToolClass/Public/Tool
作用:位移触发
请添加图片描述

四,StoneDefence核心资源和数据架构分析

不能把UI和数据写在一起,不能把数据和Controller放在一起,如果写在了一起,后期的扩展维护很难,UE4已经提供了数据架构PlayState和GameState

接下来使用UE4提供的数据架构

View,Controller,Data的关系VCD模式(专业叫做MVC)
View:视口,渲染在屏幕上的UI,看到的信息,显示
Controller:控制,负责场景中交互问题、响应问题、逻辑问题
Data:数据

GameMode,GameState:放置场景中的规则问题

PlayState,GameState:存放许多逻辑并处理许多数据的逻辑,GameState里的数据逻辑包含PlayState里的所有数据

下面创建玩家数据和游戏数据,玩家数据可能被游戏数据所包含,玩家数据的量很大而且后期需要维护,所有可以独立出去

Object

命名:CharacterData
路径:bishe/Public/Data/Core
作用:角色数据
请添加图片描述

命名:PlayerData
路径:bishe/Public/Data/Core
作用:玩家数据

命名:GlobaData
路径:bishe/Public/Data/Core
作用:伪全局数据

命名:TDGameResources
路径:bishe/Public/Resources/Core
作用:资源类,加载资源用,贴图、声音、特效等
在这里插入图片描述
在这里插入图片描述

五,扩展到整个游戏架构设计与分析

CheatManager

命名:CommandLineManager
路径:bishe/Public/Debug
作用:调试,作弊功能

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/161294.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

水库大坝安全监测是什么和主要作用?

水库大坝安全监测是指通过仪器观测和巡视检查对水利水电工程主体结构、地基基础、两岸边坡、相关设施以及周围环境所作的测量及观察。大坝安全监测是作为水库大坝安全管理的重要组成部分,是掌握水库大坝安全性态的重要手段,是科学调度、安全运行的前提。…

BI零售数据分析,当代零售企业的核心竞争力

在数字化转型中,BI智能零售数据分析成为了极其重要的核心竞争力之一。通过对大数据的采集和分析,零售企业可以更好地了解消费者的需求和行为模式,从而做出更准确的决策。例如,通过分析消费者的购物历史、浏览记录等数据&#xff0…

【微信小程序】6天精准入门(第1天:小程序入门)

一、介绍 1、什么是小程序 小程序是一种轻量级的应用程序,可以在移动设备上运行,不需要用户下载和安装。它们通常由企业或开发者开发,用于提供特定功能或服务。 微信小程序(wei xin xiao cheng xu),简称小程…

Linux centos安装SQL Server数据库,结合cpolar内网穿透实现公网访问

文章目录 前言1. 安装sql server2. 局域网测试连接3. 安装cpolar内网穿透4. 将sqlserver映射到公网5. 公网远程连接6.固定连接公网地址7.使用固定公网地址连接 前言 简单几步实现在Linux centos环境下安装部署sql server数据库,并结合cpolar内网穿透工具&#xff0…

九月 NFT 行业解读:熊市情绪仍占上风

作者: stellafootprint.network 9 月,著名主流媒体《滚石》(Rolling Stone)发表了一篇题为《你的 NFT 实际上——终于——完全不值钱了》(Your NFTs Are Actually — Finally — Totally Worthless)的文章&#xff0c…

Nginx正向代理,反向代理,负载均衡

Nginx正向代理,反向代理,负载均衡 Nginx当中有两种代理方式: 七层代理(http协议) 四层代理(tcp/udp流量转发) 七层代理:七层代理,代理的是http的请求和响应 客户端请求…

F5.5G落进现实:目标网带来的光之路

数字化与智能化的世界将走向何方?这个问题有着非常复杂的答案,但其中有一个答案已经十分清晰。那就是智能化的下一步,必将走向泛在万兆的世界。 网络是算力联接的底座,是智能演化的基础。纵观每一代数字化升级,都可以发…

算法-堆/归并排序-排序链表

算法-堆/归并排序-排序链表 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/sort-list/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 优先级队列构建大顶堆 2.1 思路 优先级队列构建小顶堆链表所有元素放入小顶堆依次取出堆顶…

vscode使用

vscode 快捷键1、ctrl f 文件内搜索2、ctrlp 快速打开最近打开的文件3、ctrlshiltn 打开新的编辑器窗口4、ctrlshiftw 关闭编辑器5、ctrlhome 跳转到页头6、ctrlend 跳转到页尾 插件1、Markdown Preview 参考文章 https://zhuanlan.zhihu.com/p/113222681?utm_sourcecom.tenc…

React添加文件路径时使用@符号代替src目录(非creae-react-app)

在其它项目中看到的可以用符号来代替src目录,那么在自己的react项目中也必须得尝试一下。本人的项目不是通过create-react-app脚手架来创建的,无法使用craco或者的方案来实现。 jsconfig.json配置 用的vscode进行开发,查看项目当中是否存在js…

QT中使用QVTKOpenGLNativeWidget的简单教程以及案例,利用PCLVisualizer显示点云

先添加一个带有ui的QT应用程序。 一、在ui界面中添加QVTKOpenGLNativeWidget控件 先拖出来一个QOpenGLWidget控件 修改布局如下: 然后将QOpenGLWidget控件提升为QVTKOpenGLNativeWidget控件,步骤如下: 右击QOpenGLWidget窗口,选…

【算法挨揍日记】day16——525. 连续数组、1314. 矩阵区域和

525. 连续数组 525. 连续数组 题目描述: 给定一个二进制数组 nums , 找到含有相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 解题思路: 本题的元素只有0和1,根据题目意思,我们可以把题目看成找一段最…

DirectX3D 正交投影学习记录

所谓正交投影变换,就是已知盒状可视空间内任意点坐标(x,y,z),求解垂直投影到xy平面的对应点坐标。 按照这个定义,xyz坐标系本身就是正交坐标系,盒状可视空间内任意点的坐标(x,y,z)投影到(x,y)平面,只要简单地丢弃z坐标…

如何使用前端框架(React、Angular、Vue.js等)?该如何选择?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

SLAM从入门到精通(dwa算法)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 要说搜路算法,这个大家都比较好理解。毕竟从一个地点走到另外一个地点,这个都是直觉上可以感受到的事情。但是这条道路上机…

基于SSM的视频播放系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

NSS [GWCTF 2019]枯燥的抽奖

NSS [GWCTF 2019]枯燥的抽奖 开题让我猜字符串,这种题目肯定不是猜,应该是类似于php伪随机数。 dirsearch扫他一下。 访问/check.php得到源码。 分析一下代码。 通过PHP伪随机数从字符库$str_long1中选取20个字符组成字符串,返回给我们前十…

UE5 运行时生成距离场数据

1.背景 最近有在运行时加载模型的需求,使用DatasmithRuntimeActor可以实现,但是跟在编辑器里加载的模型对比起来,室内没有Lumen的光照效果。 图1 编辑器下加载模型的效果 图2 运行时下加载模型的效果 然后查看了距离场的数据,发现…

【扩散模型从原理到实战】Chapter2 Hugging Face简介

文章目录 Hugging Face的核心功能介绍Hugging Face开源库Hugging Face开源库Gradio工具介绍参考资料 Hugging Face是机器学习从业者协作和交流的平台,成立于2016年,在纽约和巴黎设有办事处,团队成员来自世界各地,远程办公。 致力于…

封装一个Element-ui生成一个可行内编辑的表格(vue2项目)

这个封装的是一个供整个项目使用的表格,可多次复用.放在一个全局使用的公共组件文件下. 大致功能介绍,封装自定义指令,点击获得焦点,显示输入框,失去焦点显示文本内容,类型是字典决定类型,图片可以显示图片名还是上传图片 子组件 <script> export default {props: {//生…