<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://developer.vellocetsoftware.com/index.php?action=history&amp;feed=atom&amp;title=Vertex%2FIntegrating_your_game</id>
	<title>Vertex/Integrating your game - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://developer.vellocetsoftware.com/index.php?action=history&amp;feed=atom&amp;title=Vertex%2FIntegrating_your_game"/>
	<link rel="alternate" type="text/html" href="https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;action=history"/>
	<updated>2026-10-21T20:39:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;diff=294&amp;oldid=prev</id>
		<title>DocumentationBot: Expand game integration guide with step-by-step build, content, and SDK instructions</title>
		<link rel="alternate" type="text/html" href="https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;diff=294&amp;oldid=prev"/>
		<updated>2026-10-09T20:38:00Z</updated>

		<summary type="html">&lt;p&gt;Expand game integration guide with step-by-step build, content, and SDK instructions&lt;/p&gt;
&lt;a href=&quot;https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;amp;diff=294&amp;amp;oldid=291&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>DocumentationBot</name></author>
	</entry>
	<entry>
		<id>https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;diff=291&amp;oldid=prev</id>
		<title>DocumentationBot: Explain creating a Vertex game connection step by step</title>
		<link rel="alternate" type="text/html" href="https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;diff=291&amp;oldid=prev"/>
		<updated>2026-10-09T18:28:20Z</updated>

		<summary type="html">&lt;p&gt;Explain creating a Vertex game connection step by step&lt;/p&gt;
&lt;a href=&quot;https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;amp;diff=291&amp;amp;oldid=290&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>DocumentationBot</name></author>
	</entry>
	<entry>
		<id>https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;diff=290&amp;oldid=prev</id>
		<title>DocumentationBot: Clarify custom content navigation and standardize asset examples</title>
		<link rel="alternate" type="text/html" href="https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;diff=290&amp;oldid=prev"/>
		<updated>2026-10-04T16:30:18Z</updated>

		<summary type="html">&lt;p&gt;Clarify custom content navigation and standardize asset examples&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:30, 4 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add the Vertex package through &amp;#039;&amp;#039;&amp;#039;Window → Package Manager → Add package from disk…&amp;#039;&amp;#039;&amp;#039; and select its &amp;lt;code&amp;gt;package.json&amp;lt;/code&amp;gt;. Keep the package folder available to the project.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add the Vertex package through &amp;#039;&amp;#039;&amp;#039;Window → Package Manager → Add package from disk…&amp;#039;&amp;#039;&amp;#039; and select its &amp;lt;code&amp;gt;package.json&amp;lt;/code&amp;gt;. Keep the package folder available to the project.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Create a small map in Vertex without a game connection. Use plain brush geometry for the first import.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Create a small map in Vertex without a game connection. Use plain brush geometry for the first import.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Choose &#039;&#039;&#039;File → Export compiled meshes…&#039;&#039;&#039; and save a &amp;lt;code&amp;gt;.vertexmesh&amp;lt;/code&amp;gt; under your Unity project&#039;s &amp;lt;code&amp;gt;Assets/GameContent/Maps/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;my_arena&lt;/del&gt;/&amp;lt;/code&amp;gt; folder.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Choose &#039;&#039;&#039;File → Export compiled meshes…&#039;&#039;&#039; and save a &amp;lt;code&amp;gt;.vertexmesh&amp;lt;/code&amp;gt; under your Unity project&#039;s &amp;lt;code&amp;gt;Assets/GameContent/Maps/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;arena_mycustommap&lt;/ins&gt;/&amp;lt;/code&amp;gt; folder.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Unity imports it as a prefab. Place it in a scene and assign material bindings on the imported asset where needed. Enable the placed root if it is inactive.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Unity imports it as a prefab. Place it in a scene and assign material bindings on the imported asset where needed. Enable the placed root if it is inactive.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add your game&amp;#039;s player, camera, and startup objects, then test movement and collision.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Add your game&amp;#039;s player, camera, and startup objects, then test movement and collision.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key vellocet_wiki:diff:1.41:old-148:rev-290:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>DocumentationBot</name></author>
	</entry>
	<entry>
		<id>https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;diff=148&amp;oldid=prev</id>
		<title>DocumentationBot: Version 1</title>
		<link rel="alternate" type="text/html" href="https://developer.vellocetsoftware.com/w/index.php?title=Vertex/Integrating_your_game&amp;diff=148&amp;oldid=prev"/>
		<updated>2026-10-01T04:13:05Z</updated>

		<summary type="html">&lt;p&gt;Version 1&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{VertexNav}}&lt;br /&gt;
&lt;br /&gt;
You can use Vertex to make levels for your own game. Start by importing geometry. Add a game connection when you want your materials, entities, and build commands inside the editor.&lt;br /&gt;
&lt;br /&gt;
Unity has a working integration package. Other engines can read Vertex&amp;#039;s map format, but need their own engine adapter for compilation and playtesting. A game profile alone does not add support for another engine.&lt;br /&gt;
&lt;br /&gt;
== First level in Unity ==&lt;br /&gt;
&lt;br /&gt;
You need a matching Vertex build and the &amp;lt;code&amp;gt;com.vellocet.vertex&amp;lt;/code&amp;gt; Unity package. The Grimwar SDK includes that package under &amp;lt;code&amp;gt;Compiler/Packages/com.vellocet.vertex/&amp;lt;/code&amp;gt;; copy it to a stable location for your project so a Steam update cannot replace it. Use Unity 6.3 for this integration; each finished SDK pins the exact editor version it builds with. Grimwar&amp;#039;s SDK pins &amp;lt;code&amp;gt;6000.3.17f1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
# Add the Vertex package through &amp;#039;&amp;#039;&amp;#039;Window → Package Manager → Add package from disk…&amp;#039;&amp;#039;&amp;#039; and select its &amp;lt;code&amp;gt;package.json&amp;lt;/code&amp;gt;. Keep the package folder available to the project.&lt;br /&gt;
# Create a small map in Vertex without a game connection. Use plain brush geometry for the first import.&lt;br /&gt;
# Choose &amp;#039;&amp;#039;&amp;#039;File → Export compiled meshes…&amp;#039;&amp;#039;&amp;#039; and save a &amp;lt;code&amp;gt;.vertexmesh&amp;lt;/code&amp;gt; under your Unity project&amp;#039;s &amp;lt;code&amp;gt;Assets/GameContent/Maps/my_arena/&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
# Unity imports it as a prefab. Place it in a scene and assign material bindings on the imported asset where needed. Enable the placed root if it is inactive.&lt;br /&gt;
# Add your game&amp;#039;s player, camera, and startup objects, then test movement and collision.&lt;br /&gt;
&lt;br /&gt;
Keep the &amp;lt;code&amp;gt;.vertex&amp;lt;/code&amp;gt; source beside the export. Re-export after editing; preserve the map and object IDs so Unity can retain references to imported objects. OBJ and FBX export are also available when you only need a model, but they omit entity and collision data.&lt;br /&gt;
&lt;br /&gt;
This gives you an editable level and a repeatable import before you build an SDK for other creators.&lt;br /&gt;
&lt;br /&gt;
== Define the game connection ==&lt;br /&gt;
&lt;br /&gt;
Vertex separates the connection into a few files:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! File !! What you supply&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.vertexgame&amp;lt;/code&amp;gt; || Game identity, units, exact engine version, catalog references, and optional build policy.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.vertexassets&amp;lt;/code&amp;gt; || Available materials, models, and other native assets, with previews and ownership.&lt;br /&gt;
|-&lt;br /&gt;
| Entity catalog JSON || Placeable entity types, editable properties, and script inputs and outputs.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;.vertexsdk&amp;lt;/code&amp;gt; || Paths to the game profile and compiler, with an optional local editor connection.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Use your own stable game and catalog IDs. Display names are separate. Vertex uses right-handed, Y-up coordinates; its Unity importer handles the coordinate conversion. Set &amp;lt;code&amp;gt;defaultMetersPerUnit&amp;lt;/code&amp;gt; to your preferred authoring scale. A value of &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; means one map unit per metre; &amp;lt;code&amp;gt;0.0254&amp;lt;/code&amp;gt; means inches.&lt;br /&gt;
&lt;br /&gt;
A minimal profile with no catalogs or build commands is:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;formatVersion&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;id&amp;quot;: &amp;quot;com.example.mygame&amp;quot;,&lt;br /&gt;
  &amp;quot;name&amp;quot;: &amp;quot;My Game&amp;quot;,&lt;br /&gt;
  &amp;quot;version&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
  &amp;quot;engineId&amp;quot;: &amp;quot;unity&amp;quot;,&lt;br /&gt;
  &amp;quot;engineVersion&amp;quot;: &amp;quot;6000.3.17f1&amp;quot;,&lt;br /&gt;
  &amp;quot;coordinates&amp;quot;: &amp;quot;right-handed-y-up&amp;quot;,&lt;br /&gt;
  &amp;quot;defaultMetersPerUnit&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;entityCatalogs&amp;quot;: [],&lt;br /&gt;
  &amp;quot;assetCatalogs&amp;quot;: []&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the exact version of your Unity editor in &amp;lt;code&amp;gt;engineVersion&amp;lt;/code&amp;gt;. For a local connection, this layout keeps paths relative:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
MyGame/&lt;br /&gt;
  MyGame.local.vertexsdk&lt;br /&gt;
  Authoring/MyGame.vertexgame&lt;br /&gt;
  UnityProject/Assets/&lt;br /&gt;
  UnityProject/Packages/&lt;br /&gt;
  UnityProject/ProjectSettings/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;MyGame.local.vertexsdk&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;formatVersion&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;game&amp;quot;: {&lt;br /&gt;
    &amp;quot;id&amp;quot;: &amp;quot;com.example.mygame&amp;quot;,&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;path&amp;quot;: &amp;quot;Authoring/MyGame.vertexgame&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;compilerProject&amp;quot;: &amp;quot;UnityProject&amp;quot;,&lt;br /&gt;
  &amp;quot;editorProject&amp;quot;: &amp;quot;UnityProject&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open this connection with &amp;#039;&amp;#039;&amp;#039;File → Open game SDK…&amp;#039;&amp;#039;&amp;#039;. This identifies the game and local project. Build and save actions still need the implementations described below. Keep local connections out of a public SDK.&lt;br /&gt;
&lt;br /&gt;
== Expose materials and models ==&lt;br /&gt;
&lt;br /&gt;
# In Unity, create a &amp;#039;&amp;#039;&amp;#039;Vertex → Asset catalog profile&amp;#039;&amp;#039;&amp;#039; asset.&lt;br /&gt;
# Set a stable catalog ID and version, such as &amp;lt;code&amp;gt;mygame.base&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Add folder rules for the assets creators can use. Mark installed game assets as &amp;lt;code&amp;gt;base&amp;lt;/code&amp;gt; and creator-owned assets that may ship in add-ons as &amp;lt;code&amp;gt;custom&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Export the profile with &amp;lt;code&amp;gt;VertexAssetCatalogExporter.Export&amp;lt;/code&amp;gt;, or publish it together with the game profile using &amp;lt;code&amp;gt;VertexGameProfileExporter.Export&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Distribute the exported catalog and its preview folder. Reload resources in Vertex after publishing an update.&lt;br /&gt;
&lt;br /&gt;
For example, an editor script can publish an existing profile asset:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
using UnityEditor;&lt;br /&gt;
using Vertex.Unity.Editor;&lt;br /&gt;
&lt;br /&gt;
var assets = AssetDatabase.LoadAssetAtPath&amp;lt;VertexAssetCatalogProfile&amp;gt;(&lt;br /&gt;
    &amp;quot;Assets/Editor/VertexAssets.asset&amp;quot;);&lt;br /&gt;
VertexAssetCatalogExporter.Export(assets, catalogOutputPath);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is code for your exporter; &amp;lt;code&amp;gt;catalogOutputPath&amp;lt;/code&amp;gt; is its destination outside &amp;lt;code&amp;gt;Assets&amp;lt;/code&amp;gt;. Add the exported catalog&amp;#039;s ID, version, and relative path to the game profile&amp;#039;s &amp;lt;code&amp;gt;assetCatalogs&amp;lt;/code&amp;gt;, or let the game-profile exporter do it.&lt;br /&gt;
&lt;br /&gt;
Preserve Unity &amp;lt;code&amp;gt;.meta&amp;lt;/code&amp;gt; files when moving assets. Catalog keys use their GUIDs and local file IDs. Previews let Vertex display assets without running their scripts; the compiler resolves the original native assets. Only expose content your SDK is allowed to distribute.&lt;br /&gt;
&lt;br /&gt;
== Add an entity type ==&lt;br /&gt;
&lt;br /&gt;
An entity needs both an editor description and a game implementation. Start with one spawn point or trigger and test the full path before adding the rest.&lt;br /&gt;
&lt;br /&gt;
# Create an &amp;lt;code&amp;gt;EntityCatalog&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;Vertex.Contracts&amp;lt;/code&amp;gt; with your SDK ID and version.&lt;br /&gt;
# Add a type with a stable ID, display name, placement, properties, and signals. Set &amp;lt;code&amp;gt;importable&amp;lt;/code&amp;gt; and its geometry role: &amp;lt;code&amp;gt;none&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bounds&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;brushes&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Register a Unity importer with &amp;lt;code&amp;gt;VertexSdkRegistry.Register(sdkId, importer)&amp;lt;/code&amp;gt; during editor initialization.&lt;br /&gt;
# In that callback, read the validated entity values and add your game&amp;#039;s components to the objects in &amp;lt;code&amp;gt;VertexEntityBuildContext.Objects&amp;lt;/code&amp;gt;. Resolve asset keys through &amp;lt;code&amp;gt;ResolveAsset&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Export the catalog and add it to the game profile&amp;#039;s &amp;lt;code&amp;gt;entityCatalogs&amp;lt;/code&amp;gt;. Place the entity in Vertex, export the map, and verify its runtime behavior.&lt;br /&gt;
&lt;br /&gt;
Property IDs are saved in maps. Keep them stable when changing a display label. Use enum choices, units, bounds, and tooltips so creators can understand a property without reading your source.&lt;br /&gt;
&lt;br /&gt;
Entity signals describe what scripts may call or observe. Declaring &amp;lt;code&amp;gt;open&amp;lt;/code&amp;gt; in a catalog does not make a door move; your runtime must implement it. Keep editor metadata and runtime bindings in the same SDK release.&lt;br /&gt;
&lt;br /&gt;
== Run map scripts ==&lt;br /&gt;
&lt;br /&gt;
Vertex supplies the VSig parser, compiler, and runtime. Your game supplies entity bindings and any global events beyond &amp;lt;code&amp;gt;map.ready&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Validate scripts against the exported entity and global-event catalogs during compilation. Store the compiled &amp;lt;code&amp;gt;VSigCompiledProgram&amp;lt;/code&amp;gt; in the map. At runtime, initialize &amp;lt;code&amp;gt;VertexScriptHost&amp;lt;/code&amp;gt; with that program and the map&amp;#039;s entity bindings, then call &amp;lt;code&amp;gt;MarkReady&amp;lt;/code&amp;gt; after those bindings are ready.&lt;br /&gt;
&lt;br /&gt;
The host can tick automatically with Unity time. For a game with its own simulation clock, initialize it with &amp;lt;code&amp;gt;automaticTick: false&amp;lt;/code&amp;gt; and call &amp;lt;code&amp;gt;Tick&amp;lt;/code&amp;gt; from that clock. Dispose the host when unloading the map.&lt;br /&gt;
&lt;br /&gt;
In multiplayer, derive script authority from the running server/client roles. A catalog cannot grant permission to run server actions on a client. Expose commands, variables, and global events deliberately; Grimwar&amp;#039;s round events and VMod API do not come with Vertex itself.&lt;br /&gt;
&lt;br /&gt;
== Add build and play actions ==&lt;br /&gt;
&lt;br /&gt;
Register the parts your workflow needs:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! API !! Responsibility&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VertexSdkRegistry.RegisterCompiler(gameId, version, compile)&amp;lt;/code&amp;gt; || Import captured inputs, validate entities and resources, bake required data, and produce a scene or installable package.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VertexEditorBridge.Register(gameId, version, save)&amp;lt;/code&amp;gt; || Save captured sources into the open game project and return a Unity scene path. Honor &amp;lt;code&amp;gt;context.Compile&amp;lt;/code&amp;gt; to distinguish saving from saving and compiling.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;VertexSdkRegistry.RegisterCollisionPolicy(id, resolve)&amp;lt;/code&amp;gt; || Map your game&amp;#039;s collision categories to native layers when you expose collision filters.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The compiler runs through &amp;lt;code&amp;gt;Vertex.Unity.Editor.VertexBuildCompiler.Run&amp;lt;/code&amp;gt;. Its &amp;lt;code&amp;gt;VertexBuildContext&amp;lt;/code&amp;gt; supplies captured files, progress, cancellation, and result handling. Complete the job with the built scene and pass results; package jobs must also return an audited root containing &amp;lt;code&amp;gt;vertex-package.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In the game profile&amp;#039;s &amp;lt;code&amp;gt;build&amp;lt;/code&amp;gt; settings, declare supported profiles and targets, your package format, and launch arguments. Use &amp;lt;code&amp;gt;{addonRoot}&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;{packageRoot}&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;{mapId}&amp;lt;/code&amp;gt; for the supported substitutions. Your game must load that package format and handle those arguments. Set &amp;lt;code&amp;gt;steamAppId&amp;lt;/code&amp;gt; to the game&amp;#039;s app ID if Steam is required.&lt;br /&gt;
&lt;br /&gt;
For base-game authoring, save sources and generated scenes below &amp;lt;code&amp;gt;Assets/GameContent/Maps/&amp;amp;lt;map_id&amp;amp;gt;/&amp;lt;/code&amp;gt;. Saving into the game project does not need a separate platform choice; the game&amp;#039;s player build handles its platforms. Add-on export builds the targets declared by your SDK.&lt;br /&gt;
&lt;br /&gt;
== Custom media and other resource types ==&lt;br /&gt;
&lt;br /&gt;
Declare &amp;lt;code&amp;gt;contentTypes&amp;lt;/code&amp;gt; for file types your game supports, including extensions, size limits, settings, and asset kind. The SDK owns validation, native conversion, packaging, and runtime loading. An entry in the picker does not create a sound player or video surface by itself.&lt;br /&gt;
&lt;br /&gt;
Use &amp;lt;code&amp;gt;resourceTypes&amp;lt;/code&amp;gt; for other source formats, such as game scripts or mission data. Each type names a manifest, its source-file list property, and a starter template. Enable standalone authoring when it also makes sense outside a map.&lt;br /&gt;
&lt;br /&gt;
Ship the resource worker in the SDK and register it under &amp;lt;code&amp;gt;resourceTools&amp;lt;/code&amp;gt; for each supported desktop runtime. VSDK uses it for validate/build/test operations. Unity integrations register map-resource validation with &amp;lt;code&amp;gt;VertexSdkRegistry.RegisterResource&amp;lt;/code&amp;gt;; the game decides when the resource starts and stops.&lt;br /&gt;
&lt;br /&gt;
Keep these formats game-owned. Another game can use the same Content and resource controls without implementing Grimwar entities or VMods.&lt;br /&gt;
&lt;br /&gt;
== Ship an SDK ==&lt;br /&gt;
&lt;br /&gt;
Distribute matching Vertex/VSDK applications, authoring catalogs and previews, engine packages, a compiler project, and any resource workers. A public &amp;lt;code&amp;gt;.vertexsdk&amp;lt;/code&amp;gt; uses &amp;lt;code&amp;gt;compilerInputs&amp;lt;/code&amp;gt; for its verified compiler-file inventory and omits the local &amp;lt;code&amp;gt;editorProject&amp;lt;/code&amp;gt; connection. The compiler project should contain only the authoring and build code you intend to ship.&lt;br /&gt;
&lt;br /&gt;
Test the SDK from a clean installation with no access to your game checkout. Create a map, import custom media, build every required target, install it into the game, and test an SDK update. Check failure and cancellation too: an unsuccessful build must leave the previous package intact.&lt;br /&gt;
&lt;br /&gt;
For another engine, reuse the portable &amp;lt;code&amp;gt;Vertex.Contracts&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Vertex.VSig&amp;lt;/code&amp;gt; contracts and implement &amp;lt;code&amp;gt;IEngineAdapter&amp;lt;/code&amp;gt; in a trusted engine assembly. Convert coordinates and units at that boundary. There is no finished production Godot adapter in the current distribution.&lt;br /&gt;
&lt;br /&gt;
[[Category:Vertex]]&lt;/div&gt;</summary>
		<author><name>DocumentationBot</name></author>
	</entry>
</feed>