Share

Golaem Digital Asset (.gda)

The Golaem Digital Asset (.gda) file is a JSON file which stores a nodal representation of one or more Golaem simulations and references all the resources they need to run in the Golaem Engine. The Golaem Engine allows to run Golaem simulations and interact with them from any DCC.

The GDA file contains all the information to run a Golaem simulation:

  • Entity types definitions and referenced Golaem Character files (.gcha)
  • Population definitions
  • Environment definitions (terrain, physics, flock, perception, traffic)
  • Behaviors and triggers for each entity type

GDA File format structure

A GDA file can be represented using the following structure:

  • GDANode: a GDA node can represent any Golaem node. It has a name, a type and a list of attributes (GDAAttrribute)
  • GDAContainer: a GDA container is a special kind of GDANode that contains other GDANodes
  • GDAAttribute: represents an attribute on a node. It has a name, a type and a value. Attributes can also be public. Public attributes can be overridden in DCCs
  • GDAConnection: represents a connection between two GDA attributes

Gda file example

Here's an example of a GDA file exported from Maya. The Maya scene consists of 5 characters playing a motion.

    {
        "version": "8.0.1",
        "licenseHashKey": 2775867834,
        "updateFramerate": 24.0,
        "name": "gdaSample",
        "type": "Container",
        "attributes": [
            {
                "name": "rngSeed",
                "type": "uint32",
                "value": 0
            }
        ],
        "nodes": [
            {
                "name": "crowdField1",
                "type": "Simulation",
                "attributes": [
                    {
                        "name": "inTerrain",
                        "type": "Terrain"
                    },
                    {
                        "name": "inPopulationTools",
                        "type": "PopulationTool",
                        "dimension": 1
                    },
                    {
                        "name": "inPhysics",
                        "type": "Physics"
                    },
                    {
                        "name": "inFlock",
                        "type": "Flock"
                    },
                    {
                        "name": "inTraffic",
                        "type": "Traffic"
                    },
                    {
                        "name": "startTime",
                        "type": "float",
                        "value": 0.0416666679084301
                    },
                    {
                        "name": "simulEntityPercent",
                        "type": "float",
                        "value": 1.0
                    },
                    {
                        "name": "drawEntityPercent",
                        "type": "float",
                        "value": 1.0
                    },
                    {
                        "name": "simulationScale",
                        "type": "float",
                        "value": 1.0
                    },
                    {
                        "name": "kbEntryName",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "kbEntryType",
                        "type": "uint32Array"
                    },
                    {
                        "name": "kbEntryPerEntity",
                        "type": "uint32Array"
                    },
                    {
                        "name": "kbEntryInitValue",
                        "type": "vec3Array"
                    },
                    {
                        "name": "kbInitialStateEntryNames",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "expSCAdditionalGlmAttrs",
                        "type": "string",
                        "value": ""
                    }
                ]
            },
            {
                "name": "popToolShape1",
                "type": "PopulationTool",
                "attributes": [
                    {
                        "name": "positions",
                        "type": "vec3Array",
                        "dataType": "distance",
                        "value": [
                            [
                                -1.001000165939331,
                                0.0,
                                1.001000165939331
                            ],
                            [
                                2.002000093460083,
                                0.0,
                                -2.002000093460083
                            ],
                            [
                                -2.002000093460083,
                                0.0,
                                -1.000999927520752
                            ],
                            [
                                2.002000093460083,
                                0.0,
                                2.002000093460083
                            ],
                            [
                                -5.960464477539063e-08,
                                0.0,
                                2.002000093460083
                            ]
                        ]
                    },
                    {
                        "name": "orientations",
                        "type": "vec3Array",
                        "dataType": "angle",
                        "value": [
                            [
                                -0.0,
                                5.008955213270383e-06,
                                0.0
                            ],
                            [
                                -0.0,
                                5.008955213270383e-06,
                                0.0
                            ],
                            [
                                -0.0,
                                5.008955213270383e-06,
                                0.0
                            ],
                            [
                                -0.0,
                                5.008955213270383e-06,
                                0.0
                            ],
                            [
                                -0.0,
                                5.008955213270383e-06,
                                0.0
                            ]
                        ]
                    },
                    {
                        "name": "inEntityTypes",
                        "type": "EntityType",
                        "dimension": 1
                    },
                    {
                        "name": "entityTypeWeights",
                        "type": "floatArray",
                        "value": [
                            50.0
                        ]
                    },
                    {
                        "name": "radius",
                        "type": "float",
                        "dataType": "distance",
                        "value": 0.30000001192092896
                    },
                    {
                        "name": "height",
                        "type": "float",
                        "dataType": "distance",
                        "value": 1.75
                    },
                    {
                        "name": "inGroupTypes",
                        "type": "GroupType"
                    },
                    {
                        "name": "groupTypeWeights",
                        "type": "floatArray"
                    },
                    {
                        "name": "groupMinSize",
                        "type": "uint32",
                        "value": 1
                    },
                    {
                        "name": "groupMaxSize",
                        "type": "uint32",
                        "value": 1
                    }
                ]
            },
            {
                "name": "entityTypeShape1",
                "type": "EntityType",
                "attributes": [
                    {
                        "name": "entityTypeId",
                        "type": "uint32",
                        "value": 1
                    },
                    {
                        "name": "characterFile",
                        "type": "string",
                        "value": "./resources/character/CasualMan_Light_vpShaders.gcha"
                    },
                    {
                        "name": "specificAnimationBlindDataMode",
                        "type": "uint32",
                        "value": 0
                    },
                    {
                        "name": "rollExtractionBaseOffset",
                        "type": "float",
                        "value": 0.0
                    },
                    {
                        "name": "inBeContainer",
                        "type": "BehaviorContainer"
                    },
                    {
                        "name": "scaleMin",
                        "type": "float",
                        "value": 0.8999999761581421
                    },
                    {
                        "name": "scaleMax",
                        "type": "float",
                        "value": 1.100000023841858
                    },
                    {
                        "name": "renderingTypeIds",
                        "type": "uint32Array",
                        "value": [
                            0
                        ]
                    },
                    {
                        "name": "renderingTypeWeights",
                        "type": "uint32Array",
                        "value": [
                            50
                        ]
                    },
                    {
                        "name": "skeletonPelvisHeightRatio",
                        "type": "float",
                        "value": 1.0
                    },
                    {
                        "name": "updateOrder",
                        "type": "uint32",
                        "value": 0
                    },
                    {
                        "name": "displayColor",
                        "type": "vec4",
                        "dataType": "color",
                        "value": [
                            0.0,
                            1.0,
                            0.0,
                            1.0
                        ]
                    },
                    {
                        "name": "radius",
                        "type": "float",
                        "dataType": "distance",
                        "value": 0.30000001192092896
                    },
                    {
                        "name": "radiusToHeightRatio",
                        "type": "float",
                        "value": 6.0
                    },
                    {
                        "name": "personalSpace",
                        "type": "float",
                        "dataType": "distance",
                        "value": 0.10000000149011612
                    },
                    {
                        "name": "radiusToLengthRatio",
                        "type": "float",
                        "value": 6.0
                    },
                    {
                        "name": "radiusToWidthRatio",
                        "type": "float",
                        "value": 2.0
                    },
                    {
                        "name": "kbEntryName",
                        "type": "string",
                        "value": ""
                    },
                    {
                        "name": "kbEntryType",
                        "type": "uint32Array"
                    },
                    {
                        "name": "kbEntryInitValue",
                        "type": "vec3Array"
                    },
                    {
                        "name": "defaultGroundAdaptation",
                        "type": "uint32",
                        "value": 1
                    }
                ]
            },
            {
                "name": "entityTypeContainerShape1",
                "type": "BehaviorContainer",
                "attributes": [
                    {
                        "name": "nextBehaviors",
                        "type": "Behavior"
                    },
                    {
                        "name": "initialBehavior",
                        "type": "Behavior"
                    }
                ],
                "nodes": [
                    {
                        "name": "beMotionShape1",
                        "type": "PlayAnimationBehavior",
                        "attributes": [
                            {
                                "name": "nextBehaviors",
                                "type": "Behavior",
                                "dimension": 1
                            },
                            {
                                "name": "inStartTrigger",
                                "type": "TriggerContainer"
                            },
                            {
                                "name": "inStopTriggers",
                                "type": "TriggerContainer",
                                "dimension": 1
                            },
                            {
                                "name": "startingDurationMin",
                                "type": "float",
                                "value": 0.4000000059604645
                            },
                            {
                                "name": "startingDurationMax",
                                "type": "float",
                                "value": 0.4000000059604645
                            },
                            {
                                "name": "stoppingDurationMin",
                                "type": "float",
                                "value": 0.4000000059604645
                            },
                            {
                                "name": "stoppingDurationMax",
                                "type": "float",
                                "value": 0.4000000059604645
                            },
                            {
                                "name": "startPercentMin",
                                "type": "float",
                                "value": 0.0
                            },
                            {
                                "name": "startPercentMax",
                                "type": "float",
                                "value": 1.0
                            },
                            {
                                "name": "animationPriority",
                                "type": "uint32",
                                "value": 2
                            },
                            {
                                "name": "animationWeightMin",
                                "type": "float",
                                "value": 0.5
                            },
                            {
                                "name": "animationWeightMax",
                                "type": "float",
                                "value": 0.5
                            },
                            {
                                "name": "inMotionClips",
                                "type": "MotionClip",
                                "dimension": 1
                            },
                            {
                                "name": "motionMirrors",
                                "type": "uint32Array",
                                "value": [
                                    0
                                ]
                            },
                            {
                                "name": "motionEnable",
                                "type": "uint32Array",
                                "value": [
                                    1
                                ]
                            },
                            {
                                "name": "maskPelvis",
                                "type": "uint32",
                                "value": 1
                            },
                            {
                                "name": "maskSpines",
                                "type": "string",
                                "value": "*"
                            },
                            {
                                "name": "maskChannelLimbs",
                                "type": "string",
                                "value": "*"
                            },
                            {
                                "name": "maskChannelEffectors",
                                "type": "string",
                                "value": "*"
                            },
                            {
                                "name": "maskBlindDataGroups",
                                "type": "string",
                                "value": "*"
                            },
                            {
                                "name": "maskBlindData",
                                "type": "string",
                                "value": "*"
                            },
                            {
                                "name": "loop",
                                "type": "uint32",
                                "value": 1
                            },
                            {
                                "name": "speedRatioMin",
                                "type": "float",
                                "value": 0.800000011920929
                            },
                            {
                                "name": "speedRatioMax",
                                "type": "float",
                                "value": 1.2000000476837158
                            },
                            {
                                "name": "blendMode",
                                "type": "uint32",
                                "value": 0
                            },
                            {
                                "name": "additiveBlendRatioMin",
                                "type": "float",
                                "value": 1.0
                            },
                            {
                                "name": "additiveBlendRatioMax",
                                "type": "float",
                                "value": 1.0
                            },
                            {
                                "name": "motionMappingMode",
                                "type": "uint32",
                                "value": 0
                            }
                        ]
                    },
                    {
                        "name": "beMotion1StartTriggerShape",
                        "type": "TriggerContainer",
                        "attributes": [
                            {
                                "name": "rootTrigger",
                                "type": "Trigger"
                            }
                        ],
                        "nodes": [
                            {
                                "name": "beMotion1TrueTriggerShape",
                                "type": "BooleanTrigger",
                                "attributes": [
                                    {
                                        "name": "inPreviousTriggers",
                                        "type": "Trigger"
                                    },
                                    {
                                        "name": "value",
                                        "type": "uint32",
                                        "value": 1
                                    }
                                ]
                            }
                        ],
                        "connections": [
                            [
                                "rootTrigger",
                                "beMotion1TrueTriggerShape.self"
                            ]
                        ]
                    },
                    {
                        "name": "beMotion1StopTriggerShape1",
                        "type": "TriggerContainer",
                        "attributes": [
                            {
                                "name": "rootTrigger",
                                "type": "Trigger"
                            }
                        ],
                        "nodes": [
                            {
                                "name": "beMotion1FalseTriggerShape1",
                                "type": "BooleanTrigger",
                                "attributes": [
                                    {
                                        "name": "inPreviousTriggers",
                                        "type": "Trigger"
                                    },
                                    {
                                        "name": "value",
                                        "type": "uint32",
                                        "value": 0
                                    }
                                ]
                            }
                        ],
                        "connections": [
                            [
                                "rootTrigger",
                                "beMotion1FalseTriggerShape1.self"
                            ]
                        ]
                    }
                ],
                "connections": [
                    [
                        "initialBehavior",
                        "beMotionShape1.self"
                    ],
                    [
                        "beMotionShape1.nextBehaviors[0]",
                        "self"
                    ],
                    [
                        "beMotion1StartTriggerShape.self",
                        "beMotionShape1.inStartTrigger"
                    ],
                    [
                        "beMotion1StopTriggerShape1.self",
                        "beMotionShape1.inStopTriggers[0]"
                    ]
                ]
            },
            {
                "name": "Casual_StandRaisingArms_Shape11",
                "type": "MotionClip",
                "attributes": [
                    {
                        "name": "motionFile",
                        "type": "string",
                        "value": "./resources/motion/Casual_StandRaisingArms_1.gmo"
                    },
                    {
                        "name": "forceFlatGround",
                        "type": "uint32",
                        "value": 1
                    },
                    {
                        "name": "locomotionChannel",
                        "type": "int32",
                        "value": -1
                    },
                    {
                        "name": "cropMotion",
                        "type": "uint32",
                        "value": 0
                    },
                    {
                        "name": "cropStartFrame",
                        "type": "uint32",
                        "value": 0
                    },
                    {
                        "name": "cropStopFrame",
                        "type": "uint32",
                        "value": 0
                    },
                    {
                        "name": "editMotion",
                        "type": "uint32",
                        "value": 0
                    },
                    {
                        "name": "editedFrameRate",
                        "type": "float",
                        "value": 30.0
                    },
                    {
                        "name": "editedRootTranslation",
                        "type": "vec3",
                        "dataType": "distance",
                        "value": [
                            0.0,
                            0.0,
                            0.0
                        ]
                    },
                    {
                        "name": "editedRootHeadingRotation",
                        "type": "float",
                        "dataType": "angle",
                        "value": 0.0877668634057045
                    },
                    {
                        "name": "editedHeadingDirection",
                        "type": "vec3",
                        "dataType": "direction",
                        "value": [
                            0.0,
                            0.0,
                            0.0
                        ]
                    }
                ]
            }
        ],
        "connections": [
            [
                "popToolShape1.self",
                "crowdField1.inPopulationTools[0]"
            ],
            [
                "entityTypeShape1.self",
                "popToolShape1.inEntityTypes[0]"
            ],
            [
                "entityTypeContainerShape1.self",
                "entityTypeShape1.inBeContainer"
            ],
            [
                "Casual_StandRaisingArms_Shape11.self",
                "entityTypeContainerShape1.beMotionShape1.inMotionClips[0]"
            ]
        ]
    }
    ​​

Was this information helpful?