メッセージの定義は、messageDefタグの子要素に、messageタグで定義していく。 メッセージにデータを追加するにはmessageの子要素にfieldタグを記述する。
<messageDef kind="1">
<message name="FooMessage" type="0">
<field name="value" type="int"/>
</message>
<message name="BarMessage" type="1">
<field name="x" type="float"/>
<field name="y" type="float"/>
<field name="foo" type="FooMessage"/>
</message>
</messageDef>
この例では、FooMessageとBarMessageの 2つのメッセージを定義している。
messageDefタグではkind属性で 1 から 15 の数値を指定する必要がある。 messageタグのname属性で指定された文字列がメッセージ名として扱われ、type属性で 0 から 4095 の数値を指定する必要がある。 kindとtypeはメッセージを判別するために使用されるので、kindとtypeのペアは一意である必要がある。
メッセージにデータを追加するには、messageタグの子要素にfieldタグを記述する。 fieldタグではname属性で変数名、type属性で変数のデータ型を指定する必要がある。 また、変数を配列として扱う場合は、maxlengthで配列の最大長を指定することで、最大長までの要素数を許容する可変長配列を表すことができる。