论:即时战略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.hqwc.cn/news/703826.html

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

相关文章

价格战开卷!字节发布豆包大模型,比行业便宜99.3%

豆包大模型正式亮相 5月15日,在2024春季火山引擎Force原动力大会上,字节跳动自研豆包大模型正式亮相。 (图源:证券时报) 火山引擎是字节跳动旗下云服务平台,据火山引擎总裁谭待介绍,豆包大模型…

民航电子数据库:select查询时部分字段缺失

目录 前言异常排查原因解决使用systemPath标签引入本地Jar包后无法打包 前言 1、对接民航电子数据库 2、框架为shardingsphere caedb mybatis 3、部分SQL查询时,会出现字段缺失的情况 4、查看日志打印出来的SQL,字段并未缺失 异常 这里省略SQL语句…

✅什么是时间轮?

一、问题解析 时间轮算法(Time Wheel Algorithm)是一种用于处理定时任务和调度的常见算法。 时间轮算法主要需要定义一个时间轮盘,在一个时间轮盘中划分出多个槽位,每个槽位表示一个时间段,这个段可以是秒级、分钟级、…

Invalid bound statement (not found) 六种解决方法

前五种参考博文: Invalid bound statement (not found) 五种解决方法-CSDN博客 第六种: 在启动类上加上MapperScan,指定扫描包

web前端框架设计第八课-表单控件绑定

web前端框架设计第八课-表单控件绑定 一.预习笔记 1.v-model实现表单数据双向绑定 2.搜索数据的实现 3.全选案例实现1—JQ方法 4.单选案例实现 5.数据级联(二级级联) 6.v-model中的修饰符 二.课堂笔记 三.课后回顾 –行动是治愈恐惧的良药&#xff0c…

DolphinScheduler(海豚调度)- docker部署实战

1.官方文档 https://dolphinscheduler.apache.org/zh-cn/docs/3.2.1/guide/start/docker 2.docker环境安装 版本情况(这个地方踩了不少坑):docker-26.1.2,docker-compose-v2.11.0。 具体可使用我上传的安装包,一键安…

C++ | string详解

1、string是什么 string是STL文档的容器之一,是一个自定义类型,是一个类,由类模板basic_string实例化出来的一个类; 类模板basic_string实例化出来了四个类,如下图所示; 实例化出的这四个类不同的是他们的编…

2024最新互联网公司工作时长排行榜出炉!

“工作时长”,是选择公司的一个非常重要的参考指标。 我们在选择一个公司的时候,除了需要关注总收入package 以外,还需要考虑这家公司的加班时长是否人性化。 我们的工作时长是周工作小时数。法定工作时间是40小时(955)。大小周通常折算为周…

银河麒麟操作系统下使用QT连接TiDB数据库开发步骤

目标:实现项目软件+硬件都运行在国产化操作系统平台上。 方法:在虚拟机中安装麒麟系统V10Sp1+Qt5.14.2+MySql8.0+TiDB软件,编译MySql驱动,测试连接TiDB数据库项目。 步骤: 1、使用虚拟机软件VMWare安装银河麒麟操作系统。 2、在银河麒麟系统上安装QT5.14.2软件。 3、…

2024一站式解决 python打包代码,发布到pypi

2024一站式解决 python打包代码,发布到pypi 文章目录 2024一站式解决 python打包代码,发布到pypi一、前言二、pypi账户注册与配置2.1 账户注册2.2 双因素认证2.3 API token生成 三、代码打包3.1 准备代码3.2 编写setup.py文件3.3 LICENSE3.3.1 常见的开源…