【问题标题】:Gremlin Cosmos DB - How to structure events from a FPS game?Gremlin Cosmos DB - 如何从 FPS 游戏中构建事件?
【发布时间】:2021-04-03 17:46:33
【问题描述】:

所以,我对图形和 gremlin API 完全陌生,所以我希望这里的人能指出我正确的方向。

我计划在 FPS 游戏中创建所有事件的概览图。这意味着我有一个球员、回合以及每回合中发生的所有事件的列表。一个事件可能是;

  • 玩家 1 -> 射击(武器、伤害量等附加属性将是 必需)-> 玩家 2
  • 玩家 2 -> 被杀 -> 玩家 3

等等……

我不太确定应该以哪种方式构建它。事件是否应该只是一个边缘,指向另一个玩家(顶点)?这意味着边缘需要额外的属性,并且需要与游戏回合相关,不确定这是否可能..?

任何帮助将不胜感激。

为了更详细一点,这是一个典型的事件。

{
    "attackId": 587204688,
    "attacker": {
        "name": "Danielsol13",
        "teamId": 10,
        "health": 56.031158447265625,
        "location": {
            "x": 218720.15625,
            "y": 467373.53125,
            "z": 13599.349609375
        },
        "ranking": 0,
        "accountId": "account.46118b5fe1954e97a6af47cb6e9506af",
        "isInBlueZone": false,
        "isInRedZone": false,
        "zone": []
    },
    "victim": {
        "name": "BUTTZN",
        "teamId": 3,
        "health": 45.600002288818359,
        "location": {
            "x": 217836.6875,
            "y": 464758.8125,
            "z": 13499.73046875
        },
        "ranking": 0,
        "accountId": "account.308db6ede78048d1aa372f6ee7b87eed",
        "isInBlueZone": false,
        "isInRedZone": false,
        "zone": []
    },
    "damageTypeCategory": "Damage_Gun",
    "damageReason": "HeadShot",
    "damage": 45.600002288818359,
    "damageCauserName": "WeapHK416_C",
    "isThroughPenetrableWall": false,
    "common": {
        "isGame": 1.5
    },
    "_D": "2021-03-15T20:46:24.063Z",
    "_T": "LogPlayerTakeDamage"
}

【问题讨论】:

    标签: graph azure-cosmosdb gremlin azure-cosmosdb-gremlinapi


    【解决方案1】:

    在决定 Event 是顶点还是边时,您需要问自己的主要问题是:事件是否需要连接到 From player 顶点和 To player 顶点以外的任何顶点?

    您是说活动需要连接到回合。所以可能事件需要是一个顶点。除非您永远不需要在遍历中使用这种关系。

    如果您永远不需要遍历 Round 和 Event 之间的这种关系,那么您可以只在 Event 边缘设置一个标量属性“RoundId”。

    但是,如果您需要编写诸如“基于谓词过滤轮次,然后遍历轮次事件”之类的遍历,那么您可能需要将事件作为顶点。

    此外,如果您希望编写大量从事件开始的遍历,例如g.V().has('event', ...)g.E().has('event', ...),那么您可能希望事件是顶点,而不是边。因为我相信(而且我不是 100% 确定这一点),在大多数图形数据库中,搜索顶点比搜索边更有效。

    【讨论】:

    • 非常感谢您的见解@Bassem!我最终让事件暂时成为边缘,并带有与它们相关的回合的 ID,以及作为顶点的玩家。我会看看结果如何,以及性能是否令人满意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    相关资源
    最近更新 更多