← All message topics  ·  schema PyGLFoVAgent/fov.json

header

FieldTypeRequiredAllowed valuesDescription
timestamp string
message_type string observation
version string The message format version

msg

FieldTypeRequiredAllowed valuesDescription
experiment_id string
trial_id string
timestamp string
source string
sub_type string FoV
version string
replay_parent_type string|null TRIAL REPLAY null
replay_parent_id string|null
replay_id string|null

data

FieldTypeRequiredAllowed valuesDescription
observation integer
name string
blocks array<object>
blocks[].location array
blocks[].type string
blocks[].number_pixels integer
blocks[].playername string
blocks[].bounding_box object
blocks[].bounding_box.x array
blocks[].bounding_box.y array

Example message

{
"header": {
    "timestamp": "2020-07-10T14:48:52.041004Z",
    "message_type": "observation", 
    "version": "0.5" 
    }, 
"msg": {
    "experiment_id": "3a99e95e-11ab-4668-932a-55c645579ea4", 
    "trial_id": "f955eed1-8a82-4919-86d7-3c5652977470", 
    "timestamp": "2020-07-10T14:48:52.041004Z",
    "source": "PyGL_FoV_Agent", 
    "sub_type": "FoV", 
    "version": "0.5"
    }, 
"data": {
	"playername": "Player18", 
	"observation": 10797, 
	"blocks": [
		    { "location": [-2168, 51, 174], 
		      "type": "block_victim_1", 
		      "number_pixels": 600, 
		      "bounding_box": { "x": [69, 95], 
		                        "y": [280, 302]
		                      }
    		}, 
		    { "location": [-2168, 51, 175], 
		      "type": "gravel", 
		      "number_pixels": 541, 
		      "bounding_box": { "x": [96, 120], 
		                        "y": [278, 300]
                              }
            }
        ]
    }
}
Raw JSON Schema (resolved)
{
  "$id": "http://asist.aptima.com/schemas/pygl_fov.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "block": {
      "$id": "#/properties/block",
      "properties": {
        "bounding_box": {
          "$id": "#/properties/block/properties/bounding_box",
          "properties": {
            "x": {
              "$id": "#/properties/block/properties/bounding_box/properties/x",
              "examples": [
                [
                  52,
                  83
                ]
              ],
              "items": [
                {
                  "$id": "#/properties/block/properties/bounding_box/properties/x/properties/xmin",
                  "examples": [
                    50
                  ],
                  "minimum": 0,
                  "title": "The PyGL FoV Block Bounding Box x_min Schema",
                  "type": "integer"
                },
                {
                  "$id": "#/properties/block/properties/bounding_box/properties/x/properties/xmax",
                  "examples": [
                    72
                  ],
                  "minimum": 0,
                  "title": "The PyGL FoV Block Bounding Box x_max Schema",
                  "type": "integer"
                }
              ],
              "title": "The PyGL FoV Block X Bounding Box Schema",
              "type": "array"
            },
            "y": {
              "$id": "#/properties/block/properties/bounding_box/properties/y",
              "examples": [
                [
                  128,
                  423
                ]
              ],
              "items": [
                {
                  "$id": "#/properties/block/properties/bounding_box/properties/x/properties/ymin",
                  "examples": [
                    83
                  ],
                  "minimum": 0,
                  "title": "The PyGL FoV Block Bounding Box y_min Schema",
                  "type": "integer"
                },
                {
                  "$id": "#/properties/block/properties/bounding_box/properties/y/properties/ymax",
                  "examples": [
                    120
                  ],
                  "minimum": 0,
                  "title": "The PyGL FoV Block Bounding Box y_max Schema",
                  "type": "integer"
                }
              ],
              "title": "The PyGL FoV Block Y Bounding Box Schema",
              "type": "array"
            }
          },
          "required": [
            "x",
            "y"
          ],
          "title": "The PyGL FoV Block Bounding Box Schema",
          "type": "object"
        },
        "location": {
          "$id": "#/properties/block/properties/location",
          "items": [
            {
              "$id": "#/properties/block/properties/location/properties/x",
              "default": 0,
              "examples": [
                -1324
              ],
              "title": "The PyGL FoV Block Location X Schema",
              "type": "number"
            },
            {
              "$id": "#/properties/block/properties/location/properties/y",
              "default": 0,
              "examples": [
                54
              ],
              "maximum": 255,
              "minimum": 0,
              "title": "The PyGL FoV Block Location Y Schema",
              "type": "number"
            },
            {
              "$id": "#/properties/block/properties/location/properties/z",
              "default": 0,
              "examples": [
                160
              ],
              "title": "The PyGL FoV Block Location Z Schema",
              "type": "number"
            }
          ],
          "title": "The PyGL FoV Block Location Schema",
          "type": "array"
        },
        "number_pixels": {
          "$id": "#/properties/block/properties/number_pixels",
          "examples": [
            1543
          ],
          "minimum": 1,
          "title": "The PyGL FoV Block Pixel Count Schema",
          "type": "integer"
        },
        "playername": {
          "$id": "#/properties/block/properties/playername",
          "examples": [
            "McSillypants"
          ],
          "pattern": "^(.*)$",
          "title": "The PyGL FoV Block Playername Schema",
          "type": "string"
        },
        "type": {
          "$id": "#/properties/block/properties/type",
          "examples": [
            "clay"
          ],
          "pattern": "^(.*)$",
          "title": "The PyGL FoV Block Type Schema",
          "type": "string"
        }
      },
      "required": [
        "location",
        "type"
      ],
      "title": "The PyGL FoV Block Schema",
      "type": "object"
    }
  },
  "properties": {
    "data": {
      "$id": "#/properties/data",
      "properties": {
        "blocks": {
          "$id": "#/properties/data/properties/blocks",
          "default": [],
          "items": {
            "$id": "#/properties/block",
            "properties": {
              "bounding_box": {
                "$id": "#/properties/block/properties/bounding_box",
                "properties": {
                  "x": {
                    "$id": "#/properties/block/properties/bounding_box/properties/x",
                    "examples": [
                      [
                        52,
                        83
                      ]
                    ],
                    "items": [
                      {
                        "$id": "#/properties/block/properties/bounding_box/properties/x/properties/xmin",
                        "examples": [
                          50
                        ],
                        "minimum": 0,
                        "title": "The PyGL FoV Block Bounding Box x_min Schema",
                        "type": "integer"
                      },
                      {
                        "$id": "#/properties/block/properties/bounding_box/properties/x/properties/xmax",
                        "examples": [
                          72
                        ],
                        "minimum": 0,
                        "title": "The PyGL FoV Block Bounding Box x_max Schema",
                        "type": "integer"
                      }
                    ],
                    "title": "The PyGL FoV Block X Bounding Box Schema",
                    "type": "array"
                  },
                  "y": {
                    "$id": "#/properties/block/properties/bounding_box/properties/y",
                    "examples": [
                      [
                        128,
                        423
                      ]
                    ],
                    "items": [
                      {
                        "$id": "#/properties/block/properties/bounding_box/properties/x/properties/ymin",
                        "examples": [
                          83
                        ],
                        "minimum": 0,
                        "title": "The PyGL FoV Block Bounding Box y_min Schema",
                        "type": "integer"
                      },
                      {
                        "$id": "#/properties/block/properties/bounding_box/properties/y/properties/ymax",
                        "examples": [
                          120
                        ],
                        "minimum": 0,
                        "title": "The PyGL FoV Block Bounding Box y_max Schema",
                        "type": "integer"
                      }
                    ],
                    "title": "The PyGL FoV Block Y Bounding Box Schema",
                    "type": "array"
                  }
                },
                "required": [
                  "x",
                  "y"
                ],
                "title": "The PyGL FoV Block Bounding Box Schema",
                "type": "object"
              },
              "location": {
                "$id": "#/properties/block/properties/location",
                "items": [
                  {
                    "$id": "#/properties/block/properties/location/properties/x",
                    "default": 0,
                    "examples": [
                      -1324
                    ],
                    "title": "The PyGL FoV Block Location X Schema",
                    "type": "number"
                  },
                  {
                    "$id": "#/properties/block/properties/location/properties/y",
                    "default": 0,
                    "examples": [
                      54
                    ],
                    "maximum": 255,
                    "minimum": 0,
                    "title": "The PyGL FoV Block Location Y Schema",
                    "type": "number"
                  },
                  {
                    "$id": "#/properties/block/properties/location/properties/z",
                    "default": 0,
                    "examples": [
                      160
                    ],
                    "title": "The PyGL FoV Block Location Z Schema",
                    "type": "number"
                  }
                ],
                "title": "The PyGL FoV Block Location Schema",
                "type": "array"
              },
              "number_pixels": {
                "$id": "#/properties/block/properties/number_pixels",
                "examples": [
                  1543
                ],
                "minimum": 1,
                "title": "The PyGL FoV Block Pixel Count Schema",
                "type": "integer"
              },
              "playername": {
                "$id": "#/properties/block/properties/playername",
                "examples": [
                  "McSillypants"
                ],
                "pattern": "^(.*)$",
                "title": "The PyGL FoV Block Playername Schema",
                "type": "string"
              },
              "type": {
                "$id": "#/properties/block/properties/type",
                "examples": [
                  "clay"
                ],
                "pattern": "^(.*)$",
                "title": "The PyGL FoV Block Type Schema",
                "type": "string"
              }
            },
            "required": [
              "location",
              "type"
            ],
            "title": "The PyGL FoV Block Schema",
            "type": "object"
          },
          "title": "The Block List Schema",
          "type": "array"
        },
        "name": {
          "$id": "#/properties/data/properties/playername",
          "default": "",
          "examples": [
            "Ed"
          ],
          "pattern": "^(.*)$",
          "title": "The Name Schema",
          "type": "string"
        },
        "observation": {
          "$id": "#/properties/data/properties/observation",
          "default": 0,
          "examples": [
            6857
          ],
          "title": "The Observation Number Schema",
          "type": "integer"
        }
      },
      "required": [
        "observation",
        "playername",
        "blocks"
      ],
      "title": "The PyGL FoV Data Schema",
      "type": "object"
    },
    "header": {
      "$id": "http://asist.aptima.com/schemas/common_header.json",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "definitions": {},
      "properties": {
        "message_type": {
          "$id": "#/properties/message_type",
          "const": "observation",
          "enum": [
            "control",
            "observation",
            "chat",
            "status",
            "trial",
            "event",
            "groundtruth",
            "experiment",
            "metadata",
            "agent"
          ],
          "examples": [
            "observation"
          ],
          "pattern": "^([a-z_]*?)$",
          "title": "The Message_type Schema",
          "type": "string"
        },
        "timestamp": {
          "$id": "#/properties/timestamp",
          "examples": [
            "2019-12-26T12:47:23.1234Z"
          ],
          "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[.]?[0-9]{0,}?Z",
          "title": "The Timestamp Schema",
          "type": "string"
        },
        "version": {
          "$id": "#/properties/version",
          "examples": [
            "1.0",
            "2.3.1"
          ],
          "pattern": "^([0-9]+\\.)?([0-9]+\\.)?([0-9]+)$",
          "title": "The message format version",
          "type": "string"
        }
      },
      "required": [
        "timestamp",
        "message_type",
        "version"
      ],
      "title": "ASIST message common header Schema",
      "type": "object",
      "version": "0.3"
    },
    "msg": {
      "$id": "http://asist.aptima.com/schemas/event_message.json",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "definitions": {},
      "properties": {
        "experiment_id": {
          "$id": "#/properties/experiment_id",
          "default": "",
          "examples": [
            "123e4567-e89b-12d3-a456-426655440000"
          ],
          "pattern": "(([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|Not Set|Null|null)",
          "title": "The Experiment Id Schema",
          "type": "string"
        },
        "replay_id": {
          "$id": "#/properties/replay_id",
          "default": "",
          "examples": [
            "123e4567-e89b-12d3-a456-426655440000"
          ],
          "pattern": "(([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|Not Set|null|Null)",
          "title": "The Replay Id Schema",
          "type": [
            "string",
            "null"
          ]
        },
        "replay_parent_id": {
          "$id": "#/properties/replay_parent_id",
          "default": "",
          "examples": [
            "123e4567-e89b-12d3-a456-426655440000"
          ],
          "pattern": "(([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|Not Set|null|Null)",
          "title": "The Replay Parent Id Schema",
          "type": [
            "string",
            "null"
          ]
        },
        "replay_parent_type": {
          "$id": "#/properties/replay_parent_type",
          "enum": [
            "TRIAL",
            "REPLAY",
            null
          ],
          "title": "The Replay Parent Type Schema",
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "$id": "#/properties/source",
          "default": "",
          "examples": [
            "simulator"
          ],
          "pattern": "^(.*)$",
          "title": "The Source Schema",
          "type": "string"
        },
        "sub_type": {
          "$id": "#/properties/sub_type",
          "const": "FoV",
          "default": "",
          "examples": [
            "equip",
            "triage"
          ],
          "pattern": "^([a-zA-Z0-9_:]*?)$",
          "title": "The Sub Type Schema",
          "type": "string"
        },
        "timestamp": {
          "$id": "#/properties/timestamp",
          "default": "",
          "examples": [
            "2019-12-26T14:05:02.3412Z"
          ],
          "pattern": "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[.]?[0-9]{0,}?Z",
          "title": "The Timestamp Schema",
          "type": "string"
        },
        "trial_id": {
          "$id": "#/properties/trial_id",
          "default": "",
          "examples": [
            "123e4567-e89b-12d3-a456-426655440000"
          ],
          "pattern": "(([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})|Not Set|null|Null)",
          "title": "The Trial Id Schema",
          "type": "string"
        },
        "version": {
          "$id": "#/properties/version",
          "default": "",
          "examples": [
            "0.1",
            "1.0.1"
          ],
          "pattern": "^([.]*)|(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
          "title": "The Version Schema",
          "type": "string"
        }
      },
      "required": [
        "experiment_id",
        "timestamp",
        "source",
        "sub_type",
        "version"
      ],
      "title": "The Event Message Schema",
      "type": "object",
      "version": "0.5"
    }
  },
  "required": [
    "header",
    "msg",
    "data"
  ],
  "title": "The PyGL FoV Agent Schema",
  "type": "object",
  "version": "0.1"
}
Upstream spec documentation

Data Subtype: Field of View Message Format

This data message subtype is used to communicate a summary of blocks in the player's Field of View from the PyGLFoVAgent to any component on the message bus that is interested in it.

TOPIC

agent/pygl_fov/player/3d/summary

Message Fields

Field Name Type Description
header object From Common Header Format section
msg object From the Common Event Message Format section
data.observation integer An observation number that corresponds to that in a PlayerState message
data.playername string The name of the entity whose FoV is summarized
data.blocks list A list consisting of summary information for each block in the Field of View

Blocks Fields

Field Name Type Description
location list The (x,y,z) location of the block in Minecraft coordinates
type str The type of the block
number_pixels int The number of pixels the block occupies in the player's FoV
bounding_box object The boundary (i.e., (x_min, x_max) and (y_min, y_max)) of the block in the player's FoV
playername string (optional) The player's name, if the block type is a player

Message Example

{
"header": {
    "timestamp": "2020-07-10T14:48:52.041004Z",
    "message_type": "observation", 
    "version": "0.5" 
    }, 
"msg": {
    "experiment_id": "3a99e95e-11ab-4668-932a-55c645579ea4", 
    "trial_id": "f955eed1-8a82-4919-86d7-3c5652977470", 
    "timestamp": "2020-07-10T14:48:52.041004Z",
    "source": "PyGL_FoV_Agent", 
    "sub_type": "FoV", 
    "version": "0.5"
    }, 
"data": {
    "playername": "Player18", 
    "observation": 10797, 
    "blocks": [
            { "location": [-2168, 51, 174], 
              "type": "block_victim_1", 
              "number_pixels": 600, 
              "bounding_box": { "x": [69, 95], 
                                "y": [280, 302]
                              }
            }, 
            { "location": [-2168, 51, 175], 
              "type": "gravel", 
              "number_pixels": 541, 
              "bounding_box": { "x": [96, 120], 
                                "y": [278, 300]
                              }
            }
        ]
    }
}