问题标签 [artemis]

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.

0 投票
1 回答
467 浏览

java - Artemis ECS 中位数据背后的用途

Artemis ECS中的成员和bit成员Component Type背后的目的是什么?TypeBitSystemBitEntity

这些是 Artemis ECS 的 git 存储库的一些屏幕截图,它们引用了ComponentTypeEntity

为了ComponentType

对于 <code>ComponentType</code>

为了Entity 对于<code>实体</code>

是 git 的链接。

0 投票
1 回答
588 浏览

artemis - Artemis - 如何从世界中删除所有实体

我想从世界中删除所有实体。如果为实体注册了标签或组,我也想删除它们。就像根本没有这样的实体。它很像World.delete函数,但你应该循环所有实体。我找不到办法。并且无法相信设计师没有准备这样的功能来清除世界上的实体。我错过了什么吗?

0 投票
1 回答
703 浏览

java - 如何结合 artemis-odb + Glenn Fiedler 游戏循环

我想在我的游戏中使用 artemis ( https://github.com/junkdog/artemis-odb )。

最近我读到了 Glenn Fiedler 的游戏循环: http: //gafferongames.com/game-physics/fix-your-timestep/

所以提到的游戏循环有两个部分,artemis world.process(); 会发生。集成部分和渲染部分。

任何想法我如何用阿尔忒弥斯完成这样的事情。

artemis 支持这种游戏循环吗?

我现在想到的唯一解决方案是:

设置一个全局静态标志,指示其是集成还是渲染过程,然后EntitySystem.process(Entity e)在设置错误标志时退出所有方法。像这样:

问题在于,由于实体不处理任何内容,因此不需要对许多实体进行迭代。

我正在考虑拥有 2 个Worlds,但我认为我不能轻松地在 之间共享相同的 Component 实例Worlds,尤其是当它们是池对象时。

知道如何结合 artemis-odb + Glenn Fiedler 游戏循环吗?

编辑:刚刚发现我可以setEnabled()用来禁用和启用EntitySystems. 现在就可以了。

0 投票
1 回答
129 浏览

java - 如何防止游戏客户端发送假玩家ID?

我正在编写一个游戏客户端/服务器。我使用 Artemis-odb 和 Netty 来处理实体和网络。每个注册玩家都从数据库中分配了一个自动增量 ID。此 ID 与每个客户端/服务器事件相关联。

我想防止客户通过简单的 ID 欺骗来阻止帐户劫持。从理论上讲,防止这种情况的最佳做法是什么?

游戏/客户端不使用 UUID,但如果这是最佳选择则可以。

谢谢!

0 投票
1 回答
80 浏览

artemis - Artemis - EntityManager 的多个实例

我正在使用 Artemis-odb 框架在 Java 中编码游戏(https://github.com/junkdog/artemis-odb)。

我想实例化一些实体(例如,建筑物和人/工人)。我还看到了框架的 EntityManager 类并尝试使用它。

这是我的问题:

  • 我不想拥有一个扩展 EntityManager 并拥有所有“创建”方法的大型类,因为这将是一个糟糕的类 --> 太多的代码行,没有 lisibility,不,谢谢。
  • 我尝试创建扩展 EntityManager 的多个类,但是每个类都有其“nextId”值(它可以知道要赋予新实体的 id)-> 我获得了具有相同 id 的多个实体。
  • 如果我创建多个类并仅引用一个 EntityManager,则无法访问 EntityManager 的 create 方法,因为该方法受到保护。
  • 我尝试的另一个解决方案是仅使用静态方法创建不同的类并引用 EntityManager。但是由于另一个原因(我省略了细节),我的 EntityManagers 需要具有非静态方法。

你有什么可行的解决方案吗?目前没有太多关于这个框架的文档,所以它有点复杂!

谢谢,

0 投票
1 回答
104 浏览

libgdx - Libgdx 项目中与 Artemis 相关的 NPE

更新: WorldConfiguration 和 World 还是一样的,

出于清晰的原因决定发布完整的代码,实际上无法解释问题出在哪里,即使我遇到了指向我的错误

此方法中使用的 ModelComponent

此方法中使用的 BulletComponent

当然还有这个项目中使用的 BulletSystem

考虑到所有这些,我知道我找不到任何解决方案,也许对于任何希望提供帮助的人来说会更清楚谢谢无论如何。