<?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=Grimwar%2FAddons</id>
	<title>Grimwar/Addons - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://developer.vellocetsoftware.com/index.php?action=history&amp;feed=atom&amp;title=Grimwar%2FAddons"/>
	<link rel="alternate" type="text/html" href="https://developer.vellocetsoftware.com/w/index.php?title=Grimwar/Addons&amp;action=history"/>
	<updated>2026-10-21T20:42:56Z</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=Grimwar/Addons&amp;diff=277&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=Grimwar/Addons&amp;diff=277&amp;oldid=prev"/>
		<updated>2026-10-04T16:29:51Z</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:29, 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-l27&quot;&gt;Line 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 27:&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;|}&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;|}&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;br&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;br&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;For example, the installed manifest for &amp;lt;code&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;my_arena&lt;/del&gt;&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;addons/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;my_arena&lt;/del&gt;/addon.json&amp;lt;/code&amp;gt;. Choose the parent add-on library as a build output root, not the package&#039;s child 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;For example, the installed manifest for &amp;lt;code&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;arena_mycustommap&lt;/ins&gt;&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;addons/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;arena_mycustommap&lt;/ins&gt;/addon.json&amp;lt;/code&amp;gt;. Choose the parent add-on library as a build output root, not the package&#039;s child 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;br&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;br&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;A separate test library can be supplied with &amp;lt;code&amp;gt;--addon-root&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;GRIMWAR_ADDON_ROOT&amp;lt;/code&amp;gt;. Vertex&amp;#039;s Play in Game supplies the configured library. A custom data root changes the normal user-library location; server operators can use &amp;lt;code&amp;gt;vmod_runtime_paths&amp;lt;/code&amp;gt; to find it.&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;A separate test library can be supplied with &amp;lt;code&amp;gt;--addon-root&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;GRIMWAR_ADDON_ROOT&amp;lt;/code&amp;gt;. Vertex&amp;#039;s Play in Game supplies the configured library. A custom data root changes the normal user-library location; server operators can use &amp;lt;code&amp;gt;vmod_runtime_paths&amp;lt;/code&amp;gt; to find it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key vellocet_wiki:diff:1.41:old-138:rev-277:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>DocumentationBot</name></author>
	</entry>
	<entry>
		<id>https://developer.vellocetsoftware.com/w/index.php?title=Grimwar/Addons&amp;diff=138&amp;oldid=prev</id>
		<title>DocumentationBot: Version 1</title>
		<link rel="alternate" type="text/html" href="https://developer.vellocetsoftware.com/w/index.php?title=Grimwar/Addons&amp;diff=138&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;{{GameNav}}&lt;br /&gt;
&lt;br /&gt;
An add-on is a complete package folder containing &amp;lt;code&amp;gt;addon.json&amp;lt;/code&amp;gt; and its declared files. It can provide a map, a VMod, audio, other media, or a supported combination. Install the whole folder; a loose &amp;lt;code&amp;gt;.vertex&amp;lt;/code&amp;gt;, scene, script, or resource manifest is not an installed add-on.&lt;br /&gt;
&lt;br /&gt;
== Install from Workshop ==&lt;br /&gt;
&lt;br /&gt;
# Launch Grimwar through Steam.&lt;br /&gt;
# Open &amp;#039;&amp;#039;&amp;#039;Addons → Browse Steam Workshop&amp;#039;&amp;#039;&amp;#039;, or visit [https://steamcommunity.com/app/4219460/workshop/ Grimwar Workshop].&lt;br /&gt;
# Subscribe to the item and wait for Steam to finish installing it.&lt;br /&gt;
# Return to Addons and confirm the package is valid and enabled.&lt;br /&gt;
# Install and enable its required packages too. For a map, open Host and select it.&lt;br /&gt;
&lt;br /&gt;
Steam manages subscribed files. Keep your own editable source outside those folders. When joining a server, Grimwar checks the required add-on IDs and exact build IDs before completing the join.&lt;br /&gt;
&lt;br /&gt;
== Install a local package ==&lt;br /&gt;
&lt;br /&gt;
Copy the built package folder into the user add-on library, or build there directly from Vertex/VSDK:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Platform !! Default library&lt;br /&gt;
|-&lt;br /&gt;
| Windows || &amp;lt;code&amp;gt;%LOCALAPPDATA%/Vellocet/Grimwar/addons&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| macOS || &amp;lt;code&amp;gt;~/Library/Application Support/Vellocet/Grimwar/addons&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Linux || &amp;lt;code&amp;gt;$XDG_DATA_HOME/Vellocet/Grimwar/addons&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;~/.local/share/Vellocet/Grimwar/addons&amp;lt;/code&amp;gt; when XDG_DATA_HOME is unset.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For example, the installed manifest for &amp;lt;code&amp;gt;my_arena&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;addons/my_arena/addon.json&amp;lt;/code&amp;gt;. Choose the parent add-on library as a build output root, not the package&amp;#039;s child folder.&lt;br /&gt;
&lt;br /&gt;
A separate test library can be supplied with &amp;lt;code&amp;gt;--addon-root&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;GRIMWAR_ADDON_ROOT&amp;lt;/code&amp;gt;. Vertex&amp;#039;s Play in Game supplies the configured library. A custom data root changes the normal user-library location; server operators can use &amp;lt;code&amp;gt;vmod_runtime_paths&amp;lt;/code&amp;gt; to find it.&lt;br /&gt;
&lt;br /&gt;
== Use the Addons screen ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Action !! Result&lt;br /&gt;
|-&lt;br /&gt;
| Enable / Disable || Allow or prevent mounting the package.&lt;br /&gt;
|-&lt;br /&gt;
| Use This Copy || Select a particular local or Workshop copy with the same add-on ID.&lt;br /&gt;
|-&lt;br /&gt;
| Open Folder || Find an installed disk-backed package.&lt;br /&gt;
|-&lt;br /&gt;
| Download/Update || Request the current Workshop build.&lt;br /&gt;
|-&lt;br /&gt;
| View on Steam || Open its Workshop page.&lt;br /&gt;
|-&lt;br /&gt;
| Publish / Update || Publish an eligible local Release package.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Grimwar groups copies by the stable add-on ID. An external test folder normally takes priority over Workshop, which takes priority over the manual library. Use This Copy overrides that choice. Only one copy of an ID is mounted.&lt;br /&gt;
&lt;br /&gt;
If your latest edit does not appear, check which copy is selected. Built-in map IDs cannot be replaced by an add-on. Give a new map its own readable filename and ID.&lt;br /&gt;
&lt;br /&gt;
== Test an unpublished map ==&lt;br /&gt;
&lt;br /&gt;
Build Preview in Vertex and select &amp;#039;&amp;#039;&amp;#039;Play in Game&amp;#039;&amp;#039;&amp;#039;. In Grimwar, confirm the local package is selected, then open &amp;#039;&amp;#039;&amp;#039;Host&amp;#039;&amp;#039;&amp;#039;. Returning to Host rescans the folders.&lt;br /&gt;
&lt;br /&gt;
An unpublished map has no guest download source. Grimwar uses &amp;#039;&amp;#039;&amp;#039;Local&amp;#039;&amp;#039;&amp;#039; access and &amp;#039;&amp;#039;&amp;#039;Test Map&amp;#039;&amp;#039;&amp;#039; for that session. Publish a Release package to Workshop before inviting players who need to acquire it.&lt;br /&gt;
&lt;br /&gt;
== Dependencies and shared assets ==&lt;br /&gt;
&lt;br /&gt;
A package&amp;#039;s &amp;lt;code&amp;gt;requires&amp;lt;/code&amp;gt; entries are stable add-on IDs. The required providers must be installed, valid, and enabled. Missing packages, dependency cycles, and conflicting copies prevent loading.&lt;br /&gt;
&lt;br /&gt;
Use Content in Vertex or VSDK to select an installed asset and choose &amp;#039;&amp;#039;&amp;#039;Use this package&amp;#039;&amp;#039;&amp;#039;. It records the requirement and keeps the provider&amp;#039;s media in that provider. See [[Grimwar/Custom content#Make a reusable media pack|reusable media packs]].&lt;br /&gt;
&lt;br /&gt;
In a VMod manifest, &amp;lt;code&amp;gt;requires&amp;lt;/code&amp;gt; means add-on content dependencies. &amp;lt;code&amp;gt;dependencies&amp;lt;/code&amp;gt; means VMod load order. Neither field takes Steam Workshop numbers or generated build IDs.&lt;br /&gt;
&lt;br /&gt;
== Browse reusable content ==&lt;br /&gt;
&lt;br /&gt;
Use the Content window while authoring. In Grimwar, the console command &amp;lt;code&amp;gt;audio_browser&amp;lt;/code&amp;gt; opens the mounted audio catalog. &amp;lt;code&amp;gt;content_browser audio&amp;lt;/code&amp;gt; opens the same view.&lt;br /&gt;
&lt;br /&gt;
Use KIND, FILTER, and SOURCE to find a cue. Select it to inspect the provider, version, build, and source; Preview plays supported audio. Copy reference gives its cue/event reference, and Copy dependency gives its provider add-on ID. Refresh after changing mounted packages.&lt;br /&gt;
&lt;br /&gt;
This game browser shows mounted content. It does not import files. Use Vertex/VSDK Content to import your own files. Base-game &amp;lt;code&amp;gt;Play_amb...&amp;lt;/code&amp;gt; events can be used by ambient entities; internal &amp;lt;code&amp;gt;Play_User_...&amp;lt;/code&amp;gt; routes are not custom cue IDs.&lt;br /&gt;
&lt;br /&gt;
== VMods and dedicated servers ==&lt;br /&gt;
&lt;br /&gt;
Standalone VMods run for the server session. Attached VMods load and unload with their map. Both execute on the server, even when a client carries the source in a Workshop download.&lt;br /&gt;
&lt;br /&gt;
For a manual server install, copy the complete package into the server&amp;#039;s add-on directory. Restart, or use &amp;lt;code&amp;gt;vmod_runtime_reload&amp;lt;/code&amp;gt; after unloading map-bound scripts and leaving scripted game modes. Check &amp;lt;code&amp;gt;vmod_runtime_list&amp;lt;/code&amp;gt; for failures.&lt;br /&gt;
&lt;br /&gt;
Dedicated servers acquire Workshop items through &amp;lt;code&amp;gt;config/server-addons.json&amp;lt;/code&amp;gt;. Use &amp;lt;code&amp;gt;items&amp;lt;/code&amp;gt; for direct item IDs, &amp;lt;code&amp;gt;collections&amp;lt;/code&amp;gt; for Workshop collections, and &amp;lt;code&amp;gt;manualItems&amp;lt;/code&amp;gt; only for manually staged packages that need a matching Workshop identity. See [[Grimwar/Dedicated servers#Install Workshop add-ons|server setup]].&lt;br /&gt;
&lt;br /&gt;
== Package errors ==&lt;br /&gt;
&lt;br /&gt;
Keep the build output intact. Generated manifests record file sizes, hashes, and platform artifacts. If a package was edited, partially copied, or built for an unsupported version, rebuild or reinstall it.&lt;br /&gt;
&lt;br /&gt;
For a local map, check the chosen copy, required packages, and target platform first. [[Grimwar/Troubleshooting]] covers build and runtime failures.&lt;br /&gt;
&lt;br /&gt;
[[Category:Grimwar]] [[Category:Addons]]&lt;/div&gt;</summary>
		<author><name>DocumentationBot</name></author>
	</entry>
</feed>