Source reference
sdk/resource-protocol.json
{
"status": "published-resource-av-1",
"version": 9,
"oggProtocol": 9,
"maxOggStreams": 4,
"maxOggSourceBytes": 2097152,
"maxOggEncodedBytes": 4194304,
"maxOggDecoderBytes": 8388608,
"oggChunkFrames": 1024,
"oggRequestWords": 10,
"stableVersion": 4,
"meshProtocol": 5,
"texturedProtocol": 6,
"alphaProtocol": 7,
"effectProtocol": 8,
"materialEffect": 2,
"blendAlpha": 0,
"blendAdditive": 1,
"materialCutout": 1,
"defaultAlphaCutoff": 128,
"maxAlphaCutoff": 255,
"texturedVertexBytes": 24,
"texturedUvOffset": 16,
"maxTextureCoordinate": 1024,
"kindMaterial": 17,
"kindTexturedMesh": 18,
"addressClamp": 0,
"addressRepeat": 1,
"meshVertexBytes": 16,
"meshIndexBytes": 4,
"maxMeshVertices": 65536,
"maxMeshIndices": 98304,
"maxTrianglesPerCommit": 65536,
"maxVoxelAxis": 32,
"maxVoxelFaces": 16384,
"maxVoxelCellsPerCommit": 131072,
"cameraBytes": 96,
"cameraLightOffset": 64,
"cameraAmbientOffset": 76,
"cameraFogColorOffset": 80,
"cameraFogStartOffset": 84,
"cameraFogEndOffset": 88,
"cameraPaddingOffset": 92,
"meshColorOffset": 12,
"meshSubpixelScale": 256,
"max3dCoordinate": 10000,
"kindMesh": 13,
"kindDepth": 14,
"kindCamera": 15,
"kindVoxel": 16,
"modelBytes": 64,
"depthBytes": 4,
"abi": 2,
"magic": 827348545,
"headerBytes": 64,
"commandBytes": 32,
"descriptorBytes": 32,
"maxCommands": 16384,
"maxPayload": 1048576,
"maxSlots": 1024,
"handleIndexBits": 16,
"handleGenerationBits": 16,
"maxResourceBytes": 67108864,
"audioReasonNatural": 1,
"audioReasonStopped": 2,
"audioReasonCancelled": 3,
"maxImageAxis": 1024,
"minSampleRate": 8000,
"maxSampleRate": 96000,
"graphicsFractionBits": 16,
"paletteEntries": 256,
"maxAffineCoefficient": 16,
"defaultRgbaPipelineId": 4294967293,
"defaultIndexPipelineId": 4294967294,
"invalidPipelineId": 4294967295,
"opcodes": {
"create_texture": 1,
"create_sample": 2,
"write_texture": 3,
"write_sample": 4,
"destroy_texture": 5,
"destroy_sample": 6,
"create_target": 7,
"create_palette": 8,
"create_color_table": 9,
"create_row_table": 10,
"create_pipeline": 11,
"write_buffer": 12,
"destroy_resource": 13,
"begin_pass": 16,
"end_pass": 17,
"clip": 18,
"transform": 19,
"bind": 20,
"rect": 21,
"clear": 22,
"draw": 23,
"copy": 24,
"present": 25,
"readback": 26,
"text": 27,
"sprite": 28,
"audio_bus": 32,
"audio_stream": 33,
"audio_play_sample": 34,
"audio_play_stream": 35,
"audio_stop": 36,
"audio_release": 37,
"audio_voice_control": 38,
"audio_bus_gain": 39,
"audio_stream_write": 40,
"audio_destroy": 41,
"audio_wavetable": 42,
"audio_instrument": 43,
"audio_edit": 44,
"audio_note_on": 45,
"audio_note_off": 46,
"audio_node_control": 47,
"audio_effects": 48,
"audio_destroy_synth": 49,
"audio_source": 50,
"audio_source_destroy": 51,
"audio_ogg_stream": 52,
"audio_stream_end": 53,
"create_mesh": 64,
"create_depth": 65,
"create_camera": 66,
"create_voxel": 67,
"edit_voxel": 68,
"begin_3d": 69,
"draw_mesh": 70,
"create_textured_mesh": 71,
"create_material": 72,
"draw_textured_mesh": 73,
"create_cutout_material": 74,
"create_effect_material": 75
},
"formats": {
"index8": 1,
"rgba8": 2,
"f32": 3,
"stencil8": 4
},
"header": {
"magic": 0,
"abi": 4,
"headerBytes": 8,
"session": 12,
"tick": 16,
"phase": 24,
"sequence": 28,
"count": 32,
"commandsOffset": 36,
"commandsBytes": 40,
"payloadOffset": 44,
"payloadBytes": 48
},
"command": {
"opcode": 0,
"recordBytes": 2,
"flags": 4,
"id": 8,
"argsOffset": 12,
"argsBytes": 16,
"dataOffset": 20,
"dataBytes": 24,
"reserved": 28
},
"descriptor": {
"audio_ogg_stream": ["content", "loop", "loop_start", "loop_end", "reserved", "reserved", "reserved", "reserved"],
"create_texture": [
"format",
"width",
"height",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_sample": [
"format",
"frames",
"channels",
"rate",
"reserved",
"reserved",
"reserved",
"reserved"
],
"write_texture": [
"x",
"y",
"width",
"height",
"offsetBytes",
"strideBytes",
"reserved",
"reserved"
],
"write_sample": [
"firstFrame",
"frames",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"destroy_texture": [],
"destroy_sample": [],
"create_target": [
"format",
"width",
"height",
"stencil",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_palette": [
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_color_table": [
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_row_table": [
"rows",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_pipeline": [
"format",
"blend",
"colorTable",
"writeMask",
"stencilCompare",
"stencilMasks",
"stencilOps",
"transparentIndexPlusOne"
],
"write_buffer": [
"offsetBytes",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"destroy_resource": [],
"begin_pass": [
"pipeline",
"clearEnabled",
"clearColor",
"clearStencilEnabled",
"clearStencil",
"reserved",
"reserved",
"reserved"
],
"end_pass": [],
"clip": [
"x",
"y",
"width",
"height",
"reserved",
"reserved",
"reserved",
"reserved"
],
"transform": [
"aQ16",
"bQ16",
"cQ16",
"dQ16",
"txQ16",
"tyQ16",
"reserved",
"reserved"
],
"bind": [],
"rect": [
"xQ16",
"yQ16",
"widthQ16",
"heightQ16",
"color",
"reserved",
"reserved",
"reserved"
],
"clear": [
"color",
"stencilEnabled",
"stencil",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"draw": [
"srcX",
"srcY",
"srcWidth",
"srcHeight",
"reserved",
"reserved",
"reserved",
"reserved"
],
"copy": [
"destination",
"srcX",
"srcY",
"width",
"height",
"dstX",
"dstY",
"reserved"
],
"present": [
"palette",
"rows",
"repeat",
"background",
"reserved",
"reserved",
"reserved",
"reserved"
],
"readback": [
"source",
"x",
"y",
"width",
"height",
"reserved",
"reserved",
"reserved"
],
"text": [
"xQ16",
"yQ16",
"color",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"sprite": [
"sprite",
"xQ16",
"yQ16",
"widthQ16",
"heightQ16",
"tint",
"reserved",
"reserved"
],
"audio_bus": [
"parent",
"gain",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_stream": [
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_play_sample": [
"atLo",
"atHi",
"sample",
"bus",
"rate",
"gain",
"pan",
"loop"
],
"audio_play_stream": [
"atLo",
"atHi",
"stream",
"bus",
"gain",
"pan",
"reserved",
"reserved"
],
"audio_stop": [
"atLo",
"atHi",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_release": [
"atLo",
"atHi",
"frames",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_voice_control": [
"atLo",
"atHi",
"parameter",
"value",
"rampFrames",
"reserved",
"reserved",
"reserved"
],
"audio_bus_gain": [
"atLo",
"atHi",
"gain",
"rampFrames",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_stream_write": [
"atLo",
"atHi",
"frames",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_destroy": [
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_mesh": [
"vertices",
"indices",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_depth": [
"width",
"height",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_camera": [
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_voxel": [
"width",
"height",
"depth",
"palette",
"reserved",
"reserved",
"reserved",
"reserved"
],
"edit_voxel": [
"x",
"y",
"z",
"width",
"height",
"depth",
"reserved",
"reserved"
],
"begin_3d": [
"camera",
"clearDepth",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"create_textured_mesh": ["vertices", "indices", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved"],
"create_material": ["texture", "addressU", "addressV", "reserved", "reserved", "reserved", "reserved", "reserved"],
"create_effect_material": ["texture", "addressU", "addressV", "blend", "depthTest", "depthWrite", "reserved", "reserved"],
"create_cutout_material": ["texture", "addressU", "addressV", "alphaCutoff", "reserved", "reserved", "reserved", "reserved"],
"draw_textured_mesh": ["material", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved", "reserved"],
"draw_mesh": [
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
]
},
"configuration": {
"exports": {
"game_resource_protocol": "()->u32",
"game_resource_configure": "(session:u32)->u32",
"game_commit": "()->u32",
"game_commit_size": "()->u32",
"game_commit_ack": "(sequence:u32)->u32",
"game_resource_mailbox": "()->u32",
"game_resource_mailbox_capacity": "()->u32",
"game_resource_mailbox_size": "(bytes:u32)->u32",
"game_profile": "()->u32",
"game_required_features": "()->u32"
},
"capabilities": "Fixed resource-av-1 feature mask 7 and limits from profiles/resource-av-1.json; exact SDK/ABI/protocol negotiation before init",
"input": "game_update(buttons:u32,pointerActive:u32,x:f64,y:f64); completion/audio-status mailbox delivered before each update",
"acknowledgement": "accepted packet sequence, synchronous before next callback; failure terminates session"
},
"maxTargets": 8,
"maxReadbacks": 4,
"maxReadbackBytes": 1048576,
"maxCompletionPayload": 1048576,
"maxPixelWork": 16777216,
"drawData": [
"xQ16",
"yQ16",
"widthQ16",
"heightQ16",
"palette",
"tint",
"flags",
"reserved"
],
"mailbox": {
"magic": 827867725,
"headerBytes": 16,
"recordBytes": 32,
"maxRecords": 4,
"record": [
"id",
"format",
"width",
"height",
"offsetBytes",
"lengthBytes",
"reserved",
"reserved"
],
"header": {
"magic": 0,
"count": 4,
"bytes": 8,
"session": 12
}
},
"audioRate": 48000,
"audioChannels": 2,
"audioFramesPerTick": 800,
"maxVoices": 16,
"maxBuses": 8,
"maxStreams": 4,
"maxStreamFrames": 8192,
"maxStreamChunks": 64,
"maxAudioEvents": 4096,
"maxAudioBatches": 8,
"audioLeadFrames": 2400,
"audioHorizonFrames": 96000,
"maxAudioSnapshotBytes": 8388608,
"audioPageFrames": 256,
"maxAudioDeviceBlock": 2048,
"maxAudioCompletions": 64,
"audioMailboxCompletions": 16,
"audioStatusBytes": 448,
"audioMaxExactFrame": 9007199254740991,
"audioPauseFadeFrames": 64,
"maxAudioTransfers": 4,
"maxAudioDeviceRate": 192000,
"audioMetadataReservationBytes": 5242880,
"maxRuntimeBytes": 167772160,
"maxAudioRuntimeBytes": 83886080,
"maxInstruments": 64,
"maxInstrumentNodes": 16,
"maxBusNodes": 8,
"maxActiveNodes": 320,
"maxDelayFrames": 96000,
"minWaveFrames": 32,
"maxWaveFrames": 2048,
"maxWaves": 64,
"graphHeaderBytes": 16,
"graphNodeBytes": 64,
"noNode": 4294967295,
"kindWavetable": 11,
"kindInstrument": 12,
"nodes": {
"input": 1,
"sample": 2,
"wavetable": 3,
"noise": 4,
"constant": 5,
"mix": 6,
"gain": 7,
"adsr": 8,
"lfo": 9,
"filter": 10,
"delay": 11,
"pan": 12,
"output": 13
},
"parameters": {
"frequency": 1,
"phase": 2,
"wave": 3,
"rate": 4,
"gain": 5,
"secondary_gain": 6,
"depth": 7,
"pan": 8,
"cutoff": 9,
"resonance": 10,
"delay_frames": 11,
"feedback": 12,
"wet": 13,
"attack": 14,
"decay": 15,
"sustain": 16,
"release": 17
},
"graph": {
"header": [
"nodes",
"historyFloats",
"reserved",
"reserved"
],
"node": [
"kind",
"inputA",
"inputB",
"source",
"frequencyInput",
"phaseInput",
"gainInput",
"flags",
"p0",
"p1",
"p2",
"p3",
"p4",
"p5",
"p6",
"p7"
],
"indices": "zero-based; inputs must precede their consumer; noNode denotes an absent input"
},
"preparedOnlyOpcodes": [
"audio_source",
"audio_source_destroy"
],
"audio_wavetable": [
"framesPerWave",
"waveCount",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_instrument": [
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_edit": [
"atLow",
"atHigh",
"firstSourceFrame",
"frameCount",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_note_on": [
"atLow",
"atHigh",
"instrument",
"bus",
"frequencyHzBits",
"velocityBits",
"panBits",
"reserved"
],
"audio_note_off": [
"atLow",
"atHigh",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_node_control": [
"atLow",
"atHigh",
"instrumentOrZeroForBus",
"nodeIndex",
"parameter",
"valueBits",
"rampFrames",
"busFlag"
],
"audio_effects": [
"atLow",
"atHigh",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"audio_destroy_synth": [
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
],
"experimental3d": {
"profile": "compact-3d-preview-1",
"protocol": 5,
"status": "experimental",
"vertex": [
"x:f32",
"y:f32",
"z:f32",
"color:rgba8"
],
"indices": "zero-based u32 following vertex bytes",
"matrix": "column-major f32[16]",
"depth": "f32 normalized device depth; strict less-than",
"voxelCells": "index8; x fastest, then y, then z; zero empty"
}
}
Get started