论:即时战略RTS游戏的小地图采用 自下而上的汇报式 还是 自上而下的查找式?

关键词:RTS 小地图 游戏设计 思路 卫星 位置映射 阵营 更新 汇报 询问 UE4 UE5 Unreal Engine

前言

你是否想过类似红色警戒的战略小地图的要素是采用何种方式更新数据的。大量数据实时更新,考虑频率,运行效率,开发中如何选型?

正题

请问:小地图采用 自下而上的汇报式 还是 自上而下的查找式?

答:首选第一种方式,自下而上的汇报式。

在游戏设计中,小地图的位置更新机制可以采用不同的方法,具体取决于游戏的架构和设计需求。以下是两种常见的更新策略:

  • 自下而上的汇报式(Bottom-up Reporting):
    在这种方法中,游戏世界中的各个实体(如玩家、敌人、重要物品等)负责监控自己的位置,并定期将这些信息发送给小地图系统。
    每个实体都有一个汇报机制,当它们的位置发生变化时,它们会主动通知小地图。这种方法的优点是,小地图系统不需要主动去查找过滤每个实体的位置,从而减少了中央处理的负担。代码更加高效,没有查找式的性能瓶颈。如果RTS游戏采用ECS组件系统开发,则非常适合此方式。

这与真实战场前线士兵定时汇报战况是一样的。士兵向上汇报。除非紧急情况,忙碌的指挥官才会主动询问。

  • 自上而下的便利搜索式(Top-down Searching):
    在这种方法中,小地图系统定期扫描游戏世界,查找需要显示在小地图上的实体。
    小地图系统充当中央权威,它知道哪些实体应该被跟踪,并负责获取它们的位置信息。
    这种方法的优点是,游戏逻辑可以保持简单,因为实体本身不需要知道它们是否应该更新小地图。
    但是,这种方法可能会增加小地图系统的负担,因为它需要定期查询所有相关实体的位置。如果更新频率快,则小地图的负担将非常大,性能也会有瓶颈。

请问:采用汇报式,汇报给谁?HUD/UMG小地图组件/Player Controller/GameMode/GameState?

坦克Actor下挂在小地图专用Component,将位置信息直接发给Player的UMG的小地图
● 做一个Minimap Component挂给Actor;
● Component中,通过接口找到小地图UMG组件,直接发给UMG;
● 接口不用数组,接口使用单个对象,数据结构:(AActor* Actor,int state,Vector2D Location2D);
● 可调节发送频率如0.1s,无位移则不发送;
● UMG小地图中,做一个map映射,使用Actor为Key,不推荐使用ID为Key,装入map;
● 小地图自上而下定时2秒巡检一次所有Actor是否存在,如果不存在则删除UI图标;
● 删除的for循环使用倒叙模式。

附篇: 常见的游戏小地图有两种

第一人称 如下图GTA游戏,玩家在小地图中心。有叫雷达小地图,导航小地图,视角地图,环境地图。。。都是一个东西。一般射击类游戏喜欢这个。
请添加图片描述

第三人称 如下图红色警戒 展平的游戏全图地图,有叫世界地图,卫星地图。。。该地图要面临大量频繁的位置更新。
请添加图片描述

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

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

相关文章

SysML需求图的七种关系

SysML(系统建模语言)中的需求图定义了七种主要的关系来描述需求之间的关联。这些关系帮助构建了需求的逻辑框架,提供了需求管理的系统性方法。以下是这七种关系的简要描述: 包含(Containment):…

MATLAB中的数据类型主要包括数值类型、逻辑类型、字符型、函数句柄、结构体和单元数组类型

文章目录 数值类型逻辑类型字符串字符串的构造 函数句柄结构体类型数组类型单元数组map容器 MATLAB中的数据类型主要包括数值类型、逻辑类型、字符型、函数句柄、结构体和单元数组类型。 数值类型 数值类型主要有整数、单精度浮点数和双精度浮点数。对于运算结果的整数类型溢出…

111111111111111111

11111111111111111111111111111

Redis——跳跃表详解

Redis中的跳跃表(Skip List)是一种有序数据结构,它通过维护多个指向其他节点的指针来实现快速访问节点。下面是对Redis中跳跃表的详细解释: 跳跃表的结构 节点结构:跳跃表的每个节点都包含多个层(Level&a…

2024年5月18日(星期六)骑行香杆箐

2024年5月18日 (星期六)骑行香杆箐,早8:30到9:00,郊野公园西门集合,9:30准时出发【因迟到者,骑行速度快者,可自行追赶偶遇。】 偶遇地点:郊野公园西门集合 ,家住东,西,南…

AI绘画Stable Diffusion | 如何利用SD垫图实现照片风格转换,动漫真人互转教程

“ 小红书上有很多用AI做卡通头像的,大概思路是你拍一张个人照片发给博主,博主利用midjourney的垫图功能转换成卡通形象,一张收取一定费用……” 稍微了解AI绘画的人都应该知道,midjourney是付费的软件,而且需要一定魔…

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第7章 安装VMwareTools

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

Go编程语言变量赋值教程

Go语言(Golang)是一种静态类型编程语言,其变量赋值的方式相对直观和简洁。下面是一个关于Go语言中变量赋值的教程: 1. 声明并赋值 原文链接: Go编程语言变量赋值教程 - 红客网-网络安全与渗透技术 在Go语言中&#…

【软件的安装与基本设置】AD21软件的PCB规则设置

在绘制PCB之前,要进行规则的创建,因为在绘制PCB的过程中,难免会出现很多错误,所以需要先对绘制PCB创建规则,即所有的打孔,走线,铺铜都要基于电气性能规则去设计,等到后期&#xff0c…

摸鱼大数据——Linux搭建大数据环境(安装zooKeeper和zookeeper shell命令)五

安装zookeeper软件 1.上传软件 使用CRT等客户端远程上传 zookeeper-3.4.6.tar.gz 文件到/export/software目录下 2.解压软件 [rootnode1 ~]# cd /export/software/ [rootnode1 software]# tar -xzvf zookeeper-3.4.6.tar.gz -C /export/server/ [rootnode1 software]# cd /ex…

在Jenkins Pipeline中获取自上次成功构建后的文件变更

在Jenkins Pipeline中获取自上次成功构建后的文件变更 背景 最近调整了一下项目的流水线,希望可以根据代码文件的变更自动识别修改的模块,从而进行相应服务的构建打包部署,简单记录一下。 具体实现 我们的项目是基于Maven多模块的&#x…

Shell编程之数组

一.数组定义方法 1.数组名称(数值1 数值2 数值3 数值4 数值5)数组名称("字符串1" "字符串2" "字符串4" "字符串5" "字符串6")(或者使用单引号) 如何查看数组的元素&#xff1…

项目管理表格-项目总体计划(项目管理-项目经理干货资料Excel)

项目管理总体计划模板 1、项目基本信息 2、项目里程碑 3、项目干系人 4、项目团队组织架构管理 5、项目预算管理 6、项目项目任务计划管理 7、问题及风险管理 8、项目周报 9、项目相关要求 软件项目相关全套精华资料包获取方式①:点我获取 获取方式②:本…

javaSE:类和对象

面向对象 java是一种面向对象的编程语言,面向对象就是把能为我们所用的东西直接拿来使用,省去中间过程,比如洗衣服,要完成这一个动作,我们本来需要一个盆,放水,放衣服,换水&#xf…

Hive的排序

order by 全局排序,因此只有一个reducer,设置了多个reducer也不起作用.-- 设置reducer的个数为2 set mapred.reduce.tasks2; -- 查询 select * from user_install_status_limit order by uptime limit 10;order by 在hive.mapred.mode strict 模式下,必须指定 limit,否则执行…

Hive内部表(管理表)和外部表的区别

1、定义 Hive内部表:默认创建的表是内部表。hive完全管理表(元数据和数据)的声明周期,类似于RDBMS的表。当删除表时,他会删除源数据以及表的元数据。 Hive外部表:外部表的数据不是Hive拥有或者管理的,只管…

三大国密浏览器简单介绍-行云管家

国密浏览器是指支持国密算法SM2/SM3,支持基于国密算法的SSL协议,支持采用国密SSL证书实现HTTPS加密的网站正常访问的浏览器。今天我们行云管家小编就给大家简单介绍一下三大国密浏览器,以便大家了解。 三大国密浏览器简单介绍-行云管家 1、密…

JavaScript的数据类型和运算符

JS的数据类型和运算符 1 JS的数据类型 1.1 数值类型 数值类型统一为 number,不区分整数和浮点数 1.2 字符串类型 字符串类型为 string 和JAVA中的String相似,JS中不严格区分单双引号,都可以用于表示字符串 1.3 布尔类型 布尔类型为boolean 和Java中的boolean相似,但是在…

开源可视化表单服务商:提升自主研发 助力流程化办公!

当前,做好流程化办公可以为企业实现提质增效的办公效果,助力企业进入数字化转型。作为开源可视化表单服务商,流辰信息坚持研发创新理念,努力提升自主研发能力,专为广大客户朋友提供集产品、框架定制、产品交付为一体的…

【WEEK12】 【DAY2】整合Druid数据源【中文版】

2024.5.14 Tuesday 目录 12.整合Druid数据源12.1.Druid简介12.2.配置数据源12.2.1.添加Druid数据源依赖12.2.2.切换数据源12.2.3.运行Springboot04DataApplicationTests.java12.2.4.尝试使用Druid数据源的专有配置12.2.5.导入Log4j 的依赖12.2.6.新建config文件夹12.2.7.修改测…