<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://g1r-mp.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Map_scene_deployment</id>
	<title>Map scene deployment - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://g1r-mp.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Map_scene_deployment"/>
	<link rel="alternate" type="text/html" href="https://g1r-mp.com/wiki/index.php?title=Map_scene_deployment&amp;action=history"/>
	<updated>2026-09-29T23:13:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://g1r-mp.com/wiki/index.php?title=Map_scene_deployment&amp;diff=976&amp;oldid=prev</id>
		<title>QCherry: Release 0.1.4 BUILD133 / Protocol 36 and document authenticated event origin</title>
		<link rel="alternate" type="text/html" href="https://g1r-mp.com/wiki/index.php?title=Map_scene_deployment&amp;diff=976&amp;oldid=prev"/>
		<updated>2026-09-21T20:40:42Z</updated>

		<summary type="html">&lt;p&gt;Release 0.1.4 BUILD133 / Protocol 36 and document authenticated event origin&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&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 20:40, 21 September 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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;= Map scene deployment =&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;= Map scene deployment =&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;&#039;&#039;&#039;Since 0.1.4 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(in development; not available in public 0.1.3)&lt;/del&gt;.&#039;&#039;&#039;&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;&#039;&#039;&#039;Since 0.1.4.&#039;&#039;&#039;&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;Use this workflow to display objects exported by [[Map editor]] for players, including late joiners. Save/Open is an editor project workflow; &amp;#039;&amp;#039;&amp;#039;Export Lua + map_scene is deployment&amp;#039;&amp;#039;&amp;#039;.&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;Use this workflow to display objects exported by [[Map editor]] for players, including late joiners. Save/Open is an editor project workflow; &amp;#039;&amp;#039;&amp;#039;Export Lua + map_scene is deployment&amp;#039;&amp;#039;&amp;#039;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>QCherry</name></author>
	</entry>
	<entry>
		<id>https://g1r-mp.com/wiki/index.php?title=Map_scene_deployment&amp;diff=943&amp;oldid=prev</id>
		<title>QCherry: 0.1.4 BUILD124: remove fixed world-object count and request caps; document remaining data/transport bounds</title>
		<link rel="alternate" type="text/html" href="https://g1r-mp.com/wiki/index.php?title=Map_scene_deployment&amp;diff=943&amp;oldid=prev"/>
		<updated>2026-09-20T18:37:33Z</updated>

		<summary type="html">&lt;p&gt;0.1.4 BUILD124: remove fixed world-object count and request caps; document remaining data/transport bounds&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&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 18:37, 20 September 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-l45&quot;&gt;Line 45:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 45:&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;Reopen the saved editor project, make changes, save and export again; replace map_scene/map.lua and restart/reconnect as above. Export is a snapshot, not a live link to the editor save. Stop map_scene while editing the same scene to avoid overlapping local copies.&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;Reopen the saved editor project, make changes, save and export again; replace map_scene/map.lua and restart/reconnect as above. Export is a snapshot, not a live link to the editor save. Stop map_scene while editing the same scene to avoid overlapping local copies.&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 several separately managed static scenes, copy the complete map_scene template to differently named resources and put each export in its own map.lua. Resource names must follow server naming rules. Each owns its instances; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;all still share native client limits (512 instances and &lt;/del&gt;16 owning resources&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&lt;/del&gt;. Splitting a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;scene does &lt;/del&gt;not &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;bypass these limits&lt;/del&gt;.&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 several separately managed static scenes, copy the complete map_scene template to differently named resources and put each export in its own map.lua. Resource names must follow server naming rules. Each owns its instances&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. BUILD124 and updated resource scripts remove the fixed 500/512 object-count caps&lt;/ins&gt;; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;at most &lt;/ins&gt;16 owning resources &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;are still supported&lt;/ins&gt;. Splitting &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;documents avoids &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;single large editor JSON file, &lt;/ins&gt;not &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;the game&#039;s memory/performance constraints. Objects are still created sequentially rather than all in one frame&lt;/ins&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;&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;== Collision and boundaries ==&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;== Collision and boundaries ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>QCherry</name></author>
	</entry>
	<entry>
		<id>https://g1r-mp.com/wiki/index.php?title=Map_scene_deployment&amp;diff=924&amp;oldid=prev</id>
		<title>QCherry: Document Map Editor, saved maps, static scene deployment and Lua APIs since 0.1.4</title>
		<link rel="alternate" type="text/html" href="https://g1r-mp.com/wiki/index.php?title=Map_scene_deployment&amp;diff=924&amp;oldid=prev"/>
		<updated>2026-09-20T18:19:25Z</updated>

		<summary type="html">&lt;p&gt;Document Map Editor, saved maps, static scene deployment and Lua APIs since 0.1.4&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Map scene deployment =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Since 0.1.4 (in development; not available in public 0.1.3).&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Use this workflow to display objects exported by [[Map editor]] for players, including late joiners. Save/Open is an editor project workflow; &amp;#039;&amp;#039;&amp;#039;Export Lua + map_scene is deployment&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Example: deploy untitled ==&lt;br /&gt;
# In the editor, save &amp;lt;code&amp;gt;untitled&amp;lt;/code&amp;gt; (confirm the second click) and wait for the successful save message.&lt;br /&gt;
# Click &amp;#039;&amp;#039;&amp;#039;Export Lua&amp;#039;&amp;#039;&amp;#039;. The server writes &amp;lt;code&amp;gt;resources/map_editor/.storage/data-export_untitled.lua&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Close the editor to remove its private preview copies. If map_scene is already running, stop it before replacing its map file. Back up the previous &amp;lt;code&amp;gt;map.lua&amp;lt;/code&amp;gt; if needed.&lt;br /&gt;
# Install the complete supplied &amp;lt;code&amp;gt;map_scene&amp;lt;/code&amp;gt; resource. Its source example is &amp;lt;code&amp;gt;examples/resources/map_scene&amp;lt;/code&amp;gt;; server packages include it as &amp;lt;code&amp;gt;resources/map_scene&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Copy the exported file to &amp;lt;code&amp;gt;resources/map_scene/map.lua&amp;lt;/code&amp;gt;, replacing the placeholder. Keep &amp;lt;code&amp;gt;client.lua&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;scripts.xml&amp;lt;/code&amp;gt;; do not merely copy the export into an arbitrary resource folder.&lt;br /&gt;
# In the &amp;#039;&amp;#039;&amp;#039;server console&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;refresh&lt;br /&gt;
start map_scene&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the resource is already running and you did not stop it first, use &amp;lt;code&amp;gt;restart map_scene&amp;lt;/code&amp;gt; after replacing the file. Clients that already downloaded older resource files may need to reconnect; reconnect after a map update to verify the current resource catalog. The normal resource startup/download lifecycle delivers the map to joining clients.&lt;br /&gt;
&lt;br /&gt;
Expected layout:&lt;br /&gt;
&amp;lt;pre&amp;gt;resources/&lt;br /&gt;
  map_scene/&lt;br /&gt;
    scripts.xml&lt;br /&gt;
    map.lua       (your exported MapScene data)&lt;br /&gt;
    client.lua    (the supplied loader)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The supplied manifest loads data before the loader:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;scripts&amp;gt;&lt;br /&gt;
  &amp;lt;script src=&amp;quot;map.lua&amp;quot; type=&amp;quot;client&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;script src=&amp;quot;client.lua&amp;quot; type=&amp;quot;client&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/scripts&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Keep &amp;lt;code&amp;gt;map_scene&amp;lt;/code&amp;gt; in your normal server resource startup configuration if it should return after every server restart. Starting it manually does not modify that configuration. You do not need to keep map_editor running for a deployed map.&lt;br /&gt;
&lt;br /&gt;
== What the loader does ==&lt;br /&gt;
* Reads the &amp;lt;code&amp;gt;MapScene&amp;lt;/code&amp;gt; table, validates format/version/units/world and objects, then creates them sequentially using [[WorldObjects.request]].&lt;br /&gt;
* Waits/retries when gameplay or native dependencies are not ready, including before a joining player&amp;#039;s spawn.&lt;br /&gt;
* Handles [[onClientWorldObjectsReset]] by rebuilding after the client world/session resets.&lt;br /&gt;
* Logs non-retryable object failures instead of claiming they loaded. Check client debug output for &amp;lt;code&amp;gt;[Map Scene]&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Resource stop/disconnect removes only its own native instances. &amp;lt;code&amp;gt;stop map_scene&amp;lt;/code&amp;gt; unloads the deployed scene without deleting its saved source files.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This is static scene reconstruction on each client, not server-authoritative dynamic object replication.&amp;#039;&amp;#039;&amp;#039; There is no live collaborative editor or networked object physics in this feature. A successful editor preview does not by itself prove another client&amp;#039;s asset loading or a late-join test; verify with a second player and a fresh join.&lt;br /&gt;
&lt;br /&gt;
== Updating, removing and splitting maps ==&lt;br /&gt;
Reopen the saved editor project, make changes, save and export again; replace map_scene/map.lua and restart/reconnect as above. Export is a snapshot, not a live link to the editor save. Stop map_scene while editing the same scene to avoid overlapping local copies.&lt;br /&gt;
&lt;br /&gt;
For several separately managed static scenes, copy the complete map_scene template to differently named resources and put each export in its own map.lua. Resource names must follow server naming rules. Each owns its instances; all still share native client limits (512 instances and 16 owning resources). Splitting a scene does not bypass these limits.&lt;br /&gt;
&lt;br /&gt;
== Collision and boundaries ==&lt;br /&gt;
Meshes use their own collision data when &amp;lt;code&amp;gt;collision=true&amp;lt;/code&amp;gt;. They do not modify the original packaged map, server navigation/NPC pathfinding or the authoritative anti-cheat world model. Validate movement on custom floors, walls and platforms before using them in gameplay. The loader is not a replacement for server-side gameplay validation. No OBJ files are uploaded or imported: mesh paths refer to assets already installed with the game.&lt;br /&gt;
&lt;br /&gt;
[[Category:Lua API]]&lt;br /&gt;
[[Category:Lua Examples]]&lt;/div&gt;</summary>
		<author><name>QCherry</name></author>
	</entry>
</feed>