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

news2025/1/22 12:52:12

关键词: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.coloradmin.cn/o/1673705.html

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

相关文章

EXECL小技巧

一、批量给某列添加单引号或者双引号 如下:D2列为需要添加引号的列,效果如下图 1.双引号 """"&D2&"""" 2.双引号后增加逗号 """"&D2&""""&&quo…

Android 高德地图 添加 天地图 卫星瓦片图片(解决高德地图部分地区放大后无卫星图片问题)

废话不多说,直接商代吗 高德地图的加载就不多说了,这个直接去高德官网看就行了 高德官网:概述-Android 地图SDK | 高德地图API 下面我们就说如何添加天地图瓦片图层 天地图官网:天地图API 1.先去天地图注册成为开发者 2.创建…

【C++】深度解析:用 C++ 模拟实现 String 类,探索其底层实现细节

目录 了解string类 string的内存管理 VS下string的结构 ​g下string的结构 string的模拟实现 string的构造函数 浅拷贝 深拷贝 string的遍历 重载 [] 下标访问 迭代器访问 reserve resize 增删查改 push_back() append和 insert和erase find substr swap 流插入…

java sql中 大于 小于 大于等于 小于等于 代替符号

在写java时sql会经常会忘记大于小于号的表示方法导致无法运行&#xff0c;总结一下 第一种方法&#xff1a; < &#xff1a;< < &#xff1a; < &#xff1a;> &#xff1a; > sql如下&#xff1a; create_at > #{startTime} and create_at < #{end…

【Docker学习】重启容器的docker restart

命令&#xff1a; docker container restart 描述&#xff1a; 重启一个或多个容器 用法&#xff1a; docker container restart [OPTIONS] CONTAINER [CONTAINER...] 别名&#xff1a; docker restart(docker的一些命令可以简写&#xff0c;docker restart就等同于docker cont…

(接上一篇linux rocky 搭建DNS高阶版)实现不同网段访问解析不同的服务器并加域

上一篇链接&#xff1a;linux rocky 搭建DNS服务和禁止AD域控DNS&#xff0c;做到独立DNS并加域-CSDN博客文章浏览阅读417次&#xff0c;点赞13次&#xff0c;收藏7次。使用linux rocky 搭建DNS服务&#xff0c;用于独立AD域控DNS存在&#xff0c;并且实现加域。https://blog.c…

解决Jmeter报错 :Error generating the report: java.lang.NullPointerException

当我们在使用命令行的方式来执行jmeter 脚本的时候&#xff0c;例如 ./jmeter -n -t /opt/jmeter/script/test.jmx -Juser50 -Jtime100 -l /opt/jmeter/script/restult2.jtl 上面脚本的含义解释如下&#xff1a; -n -t 通过命令行的方式执行脚本test.jmx -Juser50 并发用户…

【排序算法】之冒泡排序

一、算法介绍 冒泡排序&#xff08;Bubble Sort&#xff09;是一种基础的排序算法&#xff0c;它的主要思想是通过重复遍历待排序的列表&#xff0c;比较每对相邻的元素并根据需要交换它们&#xff0c;使得每一遍遍历都能将未排序的最大&#xff08;或最小&#xff09;元素“冒…

httpretty,一个神奇的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - HTTPretty。 Github地址&#xff1a;https://github.com/gabrielfalcao/HTTPretty 在现代软件开发中&#xff0c;API和微服务的测试是确保应用稳定性和功能正确性的关键环…

RAR:Retrieving And Ranking Augmented MLLMs for Visual Recognition

我的博客已全部迁往个人博客站点&#xff1a;oukohou.wang&#xff0c;敬请前往&#xff5e;&#xff5e; paper: RAR:Retrieving And Ranking Augmented MLLMs for Visual Recognitioncodes: https://github.com/Liuziyu77/RAR 一、闲言碎语 RAR&#xff0c;整体动机总结一下…

LeetCode2390从字符串中移除星号

题目描述 给你一个包含若干星号 * 的字符串 s 。在一步操作中&#xff0c;你可以&#xff1a;选中 s 中的一个星号。移除星号 左侧 最近的那个 非星号 字符&#xff0c;并移除该星号自身。返回移除 所有 星号之后的字符串。注意&#xff1a;生成的输入保证总是可以执行题面中描…

JAVA 项目<果园之窗>_完结

目录 1、前言&#xff1a;2、视频展示&#xff1a;3、环境配置&#xff1a;4、工程代码&#xff1a;5、原理&#xff1a;6、原理补充&#xff1a;7、综上&#xff1a; 1、前言&#xff1a; 因为没有足够的时间这个项目用的是别人搭好的框架&#xff0c;在此基础上做调整并根据前…

算法训练营第二十八天 | LeetCode 77 组合(剪枝优化)、LeetCode 216 组合总和III、LeetCode 17 电话号码的字母组合

LeetCode 77 组合&#xff08;剪枝优化&#xff09; 当我们到达某一层&#xff0c;后面的结点数已经不能满足条件时。可以进行剪枝操作。 代码如下&#xff1a; class Solution { private:vector<int> path;vector<vector<int>> res;void backtracking(in…

前端无样式id或者class等来定位标签

目录&#xff1a; 1、使用背景2、代码处理 1、使用背景 客户使用我们产品组件&#xff0c;发现替换文件&#xff0c;每次替换都会新增如下的样式&#xff0c;造就样式错乱&#xff0c;是组件的文件&#xff0c;目前临时处理的话就是替换文件时删除新增的样式&#xff0c;但是发…

机器学习中常用的几种距离——欧式、余弦等

目录 一、欧式距离&#xff08;L2距离&#xff09;二、曼哈顿距离&#xff08;L1距离&#xff09;三、汉明距离四、余弦相似度 一、欧式距离&#xff08;L2距离&#xff09; &#xff08;1&#xff09;二维空间的距离公式&#xff08;三维空间的在这个基础上类推&#xff09;&…

Spring AI项目Open AI对话接口开发指导

文章目录 创建Spring AI项目配置项目pom、application文件controller接口开发接口测试 创建Spring AI项目 打开IDEA创建一个新的spring boot项目&#xff0c;填写项目名称和位置&#xff0c;类型选择maven&#xff0c;组、工件、软件包名称可以自定义&#xff0c;JDK选择17即可…

IDC:2023年中国IT安全软件市场同比增长4.7%

IDC最新发布的《中国IT安全软件市场跟踪报告&#xff0c;2023H2》显示&#xff0c;2023年下半年中国IT安全软件市场厂商整体收入约为169.8亿人民币&#xff08;约合23.5亿元美元&#xff09;&#xff0c;同比上升2.7%。结合全年数据&#xff0c;2023全年中国IT安全软件市场规模…

学习Uni-app开发小程序Day11

今天是学习的第11天&#xff0c;今天学习了组件的生命周期&#xff0c;这里的生命周期&#xff0c;主要是学习uni-app的组件生命周期&#xff0c;虽然vue也有&#xff0c;但主要还是学习uni-app的。1. onLoad 监听页面加载&#xff0c;该钩子被调用时&#xff0c;响应式数据、计…

Python新手注意:避免常见错误,学会‘/’和‘\’的正确使用

Python 编程语言中的正反斜杠符号&#xff08;‘/’和‘\’&#xff09;是非常基础但又极其重要的元素&#xff0c;它们在不同的场合下扮演着不同的角色。了解这两个符号的意义和用法&#xff0c;对于编写清晰、有效的代码至关重要。 基础概念 正斜杠&#xff08;‘/’&#…

Image to Music V2 :只需上传一张照片,自动转换成与图片内容匹配的音频!

前言 我们之前肯定已经见过了很多文本生成图片、文本生成声音以及AI翻唱歌曲 等多种AI产品&#xff08;模型&#xff09;。 其实音乐和图片从某种意义上来说都是艺术创作的一种形式&#xff0c;它们可以相互配合&#xff0c;共同呈现出一种更加丰富、感性的表达方式。 将图片…