问题标签 [real-time-strategy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
artificial-intelligence - RTS AI:从哪里开始?
我想开始修补 RTS AI,但我很难找到一个好的工作环境,即一个已经创建的游戏。我看过 Spring RTS 和 Bos Wars,但它们似乎不利于创建简单的示例。
我并不完全反对编写自己的游戏环境,只是需要很长时间。有没有人建议我如何在不编写自己的游戏的情况下弄湿我的脚?
.net - 确定性浮点和 .NET
如何保证 .NET 应用程序(例如 C#)中的浮点计算总是产生相同的位精确结果?尤其是在使用不同版本的 .NET 并在不同平台上运行时(x86 与 x86_64)。浮点运算的不准确性无关紧要。
在 Java 中,我会使用 strictfp。在 C/C++ 和其他低级语言中,这个问题基本上是通过访问 FPU / SSE 控制寄存器来解决的,但这在 .NET 中可能是不可能的。
即使控制了 FPU 控制寄存器,.NET 的 JIT 也会在不同的平台上生成不同的代码。在这种情况下,像 HotSpot 这样的东西会更糟......
为什么我需要它?我正在考虑编写一个实时策略 (RTS) 游戏,它在很大程度上依赖于快速浮点数学以及锁步模拟。本质上,我只会通过网络传输用户输入。这也适用于通过存储用户输入来实现回放的其他游戏。
不是一个选项是:
- 小数(太慢)
- 定点值(使用 sqrt、sin、cos、tan、atan 时太慢且太麻烦……)
- 像 FPS 一样通过网络更新状态:发送数百或数千个单位的位置信息不是一种选择
有任何想法吗?
python - Python中的2D RTS?
我是一个伟大的蟒蛇迷。最近我有了一个想法来编写 RTS 引擎和/或基于这个引擎的简单 RTS 游戏。有几件事我需要考虑,也许你可以给我一些建议:
- 表现。大多数游戏都是用 C++ 编写的。python对于游戏引擎来说是不是太慢了?我只针对 2D,但它仍然可能太令人讨厌了。
- 图形。python有什么好的图形库吗?SDL/OpenGL 绑定或者更适合 python 的东西?
- 游戏引擎。你知道任何现有的用 python 编写的 RTS 引擎吗?
- 任何可能有助于开发 RTS 的 Python 工具/库
提前致谢!
javascript - 浏览器中的多人 RTS
所以我看到人们在浏览器中做小规模的即时战略游戏,我只想知道,从哪里开始?我用 js+html5 创建了小型单人游戏,所以我知道基础知识。启动此类项目最好阅读哪些资源?
python - 两个精灵互相发现
你好,堆栈溢出。你可能还记得我在我的 pygame 程序“Table Wars”中的单位生成问题。我决定将我的游戏范围改为即时战略而非回合制游戏。我希望这款游戏能够像顶级 Flash 游戏:“战争时代”那样玩。游戏中的几乎所有东西都可以正常工作:生成单位、游戏的 HUD,甚至是基础生命值。不幸的是,我似乎无法弄清楚如何实现单位攻击敌人或敌人基地的能力。以下是单位本身的概念:
- 该单位在团队基地周围的按键上
K_1
生成:从Red_Infantry
类中生成一个精灵 - 该单位在生成时被添加到一个
Group
类中。有两个Group
s,每个团队一个。 - 该单位通过 a
move_ip
内的呼叫移动,def update
直到它到达靠近敌人基地的一个点,然后停止。
以下是我希望不同单位的战斗方式:
- 单位在其攻击范围内发现敌人时停止。不同的单位有不同的攻击范围
- 然后该单位以一秒的间隔进行攻击。
- 如果该单位成功将敌方单位的生命值降至 0,则敌方死亡,另一方可以继续
- 这个循环一直重复,直到单位到达敌方基地,然后它将每隔一秒攻击敌方基地。其中一个单位将能够对基地造成三倍的正常伤害。
这是我的代码示例,显示了Red_Infantry
该类:
主循环仅包含生成每个单位的能力。
php - PHP实时策略游戏数据库结构?
我正在尝试用 PHP 构建一个实时策略浏览器游戏,但是我正在尝试使游戏尽可能真实,这意味着将为每个用户分配单独的数据来存储,并且单个数据库运行不顺利用我的想法,因为我想存储关于用户和他的“帝国”的一切,这可以让游戏更真实
这是关于要存储多少数据的想法:
人口:例如,每个公民都有自己的行来跟踪他的类型、技能、统计数据、分配等,并且由于“帝国”可能有几千个公民次 (*),几千个用户可能会导致一些单表超载
军队:例如,每个士兵都有自己的行来跟踪他的类型、技能、统计数据、分配等,并且由于军队可能会获得较大的时间 (*),数千名用户可能会再次导致过载对于单个表
建筑物:....同样的故事
财富: .... 一个真正的帝国可以持有的每一盎司或货物都被追踪到
等等,你明白了....
所以我的第一个想法是给每个用户一个唯一的 ID ex。5b325475ef698183bbbcc5352c7f20f5... 并有一个用户文件夹,用于存储各个用户的 SQLite 数据库,其结构类似于:
还有一个 MySQL 数据库,用于存储前端的一般公共详细信息,这将是 sqlite 数据库中累积数据的结果
但是后来我听说一个 sqlite 数据库在对其执行操作时被锁定,这对于多用户站点可能不是一个好的解决方案此外,这样做的缺点是可能很难经常进行更改,因为您必须更改每个每个用户的数据库(仍然比使用可能会随着时间的推移变得缓慢和过载的单个数据库更好)
我的第二个想法是再次使用唯一的用户 ID 为每个用户使用不同的 MySQL 数据库,但是我想我最终会拥有太多的数据库连接和一个非常混乱的代码来维护,并且再次缩小规模是可能很难经常进行更改,因为您必须为每个用户更改每个数据库(同样仍然比使用可能会随着时间的推移变得缓慢和过载的单个数据库更好)
如果有人遇到此类问题并找到解决方案,请分享或上面发布的哪个想法可能最适合记住这是一个网页游戏,玩家将花费大部分时间切换页面导致大量数据库交互(这就是为什么单个 MySQL 数据库可能不是一个好的解决方案)
感谢您的时间和耐心:D
编辑:应用程序将使用 Yii 框架构建,但如果需要,我将从头构建一个新的“框架”
path-finding - A*(A 星)当没有路径时,寻路会减慢一切
在我的 RTS 游戏中,我使用了 BFS,它非常慢。
所以我现在使用A*,找到路径非常快,但是如果没有可能的路径,它会让一切都被绞死。
为了解决这个问题,如果需要大量考虑 src 和 dst 之间的线性距离,我会尝试跳出循环。但是在某些线性距离很短但路径很长的情况下,它会失败。
java - 如何加快MongoDB的插入速度?
我正在尝试使用 mongodb(Java 编码)创建一个大数据应用程序。我的收藏包括普通的文本文档。由于我不希望重复并且文档的文本字段太大而无法创建唯一索引,因此我决定为每个文档的文本计算校验和值(带有 MD5 的 MessageDigest),将此字段保存在文档中并在此创建唯一索引场地。
大致我的文档具有如下结构:
因此,当我向我的集合中添加一个新文档时,首先我尝试通过查找具有该校验和值的文档来查找它是否存在。如果它存在,我更新它(其他字段),否则我插入新文档。
这个策略有效!但是在集合中的一百万个文档之后,我开始获得不可接受的插入持续时间。校验和查找和插入都变慢了。我可以在将近 1 小时内插入约 30,000 个文档!我已经阅读了有关批量插入的信息,但如果我朝那个方向前进,我无法决定如何处理重复记录。关于加快速度的策略有什么建议吗?
java - 如何在 libGDX 中的平铺地图上放置纹理
我在 LibGDX 中创建 RTS,我想知道如何以正确的方式放置我的建筑物纹理。我使用 TiledMap 来创建我的世界,但我必须动态地创建一些对象。我知道如何通过编辑单元格来做到这一点,但这个解决方案在我看来有点混乱(我的建筑物就像 4x5 瓷砖一样大,所以我必须编辑 20 个单元格)。提前致谢!
unity3d - Unity raycast 返回对象的中心,而不是一个点
我想创建一个点击移动游戏,并且有一个导航网格代理,其代码几乎可以工作,除了我的角色总是试图移动到同一个位置,无论我点击哪里或相机的位置。这是我的功能,
用于连接到播放器的点击命令。一切都被引用了,我确定问题出在这段代码上......在此先感谢。