World model removal: Difference between revisions

From Wiki G1R-MP G1 Remake Multiplayer
Jump to navigation Jump to search
Complete upcoming 0.1.9 documentation: weather, crafting UI, world removal, doors and ladders; preserve release status
 
Release 0.1.9 / BUILD264 / Protocol42: availability and download setup; preserve experimental limits
 
Line 1: Line 1:
= World model removal =
= World model removal =
'''Available from 0.1.9 (upcoming; not yet publicly released).''' The [[Map editor]] can inspect and reversibly hide supported original world objects, then publish a saved removal set to players. This does not destructively edit the installed map.
'''Available from 0.1.9.''' The [[Map editor]] can inspect and reversibly hide supported original world objects, then publish a saved removal set to players. This does not destructively edit the installed map.


== Inspect and select ==
== Inspect and select ==

Latest revision as of 13:30, 20 October 2026

World model removal

Available from 0.1.9. The Map editor can inspect and reversibly hide supported original world objects, then publish a saved removal set to players. This does not destructively edit the installed map.

Inspect and select

  1. Open your authorized editor session and scroll to Original world objects. Click Inspect world / edit objects, then click the model in the viewport.
  2. The inspector shows the object/component class, model, position/transform when available, provenance, selection status and persistent placement ID. The ID field can be selected/copied.
  3. If several models overlap, select the exact candidate from the list. Use Nearby (50 m) for loaded models that cannot be reached by a collision trace, including some bushes/decorations. Allow the initial bounded scan to finish, then refresh if needed.
  4. Click Hide model (preview) and confirm. It affects your local preview only. Use Undo/Redo or the removed-model list to restore it.

Supported adapters cover eligible standalone environment models, individual grouped decoration/foliage instances, authored doors, lights, interactive objects and ladders. A ladder is selected as one whole object, not separate rungs. A successful group selection does not authorize hiding all its neighbours. Group highlighting is deliberately limited to avoid highlighting unrelated models.

Characters, terrain, world controllers and baked distant HLOD aggregates remain protected. An unresolved/ambiguous target must be inspected or selected more precisely; the editor does not guess a nearby replacement. This is not a promise that every engine object can safely be deleted.

Preview, save and apply

Action Effect
Hide/restore preview Only this editor's local presentation changes; other players keep their current live state.
Save / Open Stores/loads the draft and removal IDs. Save alone does not publish anything.
Apply removals + doors LIVE Replaces the editor resource's entire saved live removal list and placed-door set for everyone, then closes the local editor. Static additions are not deployed by this button.
Clear live removals + doors Releases this resource's live removals and removes its placed doors. Other resources' objects/claims are not cleared.
Export Lua / map_scene Deploys supported saved data using the complete updated map_scene resource. Do not run the same map through both live editor deployment and map_scene.

Save first and wait for acknowledgement before Apply LIVE. Applying another saved map replaces the current editor-owned live set rather than merging it. Concurrent stale revisions are rejected; refresh and deliberately reconfirm. A map containing non-door interactive prefabs cannot be deployed through this live door path: seats, lights and placed ladders still have local native tests only.

Closing the editor releases preview, not the saved live set. If an object remains hidden after local restoration, another preview/live owner may still request its removal. Owners combine; releasing one does not override another.

Identity, restart and streaming

Placement IDs are derived from the authored world placement and validated model/layout, not a transient runtime index. Generated world-cell names displayed in the inspector are not names you should invent or rename. IDs are intended to survive unload/reload and restart with the same supported game data.

Version-3 documents store catalog and removals separately from newly placed objects. Catalog/layout mismatches after game-data changes are rejected rather than silently hiding a different model. Reinspect and migrate deliberately after such an update; persistence is not a guarantee across arbitrary game versions.

Server storage under resources/map_editor/.storage includes data-map_NAME.json for drafts and data-world_applied.json for the saved live removal/door set. Atomic writes retain a previous backup generation. Back up this directory before replacing resources. Starting the editor resource again reapplies its saved live set. Door placements return, but door open/closed state starts closed after resource/server restart; that transient state is not a durable door-state journal.

Only matching loaded world cells are altered. The system does not force distant cells to load or keep the whole world resident. The desired removal remains recorded and is applied when the placement is encountered again; joining clients receive the live list. This still requires representative streaming/late-join tests on your map.

Collision, interactions and performance

Removal hides the selected object's supported visuals and its own collision. Authored interactive adapters also suppress the associated interaction and relevant light/fire/audio presentation. Busy interactions wait for native release and a short exit-settle period rather than interrupting an occupied object. Restoration respects previously disabled states and current synchronized fire state.

Grouped models may require rebuilding their shared render/collision component when the removal set changes. This is not a rebuild every frame, but a large group can still hitch. First-use asset loading and bounded nearby scanning also have costs. Check adjacent models, collision and restoration when using a new group type.

The server NPC/monster obstacle map is intentionally not changed. Server authors must update their own obstacle/navigation data if their layout needs it. Baked lighting/shadows and distant HLOD representations are not regenerated, so a distant baked representation can remain visible. No map-file deletion, mesh-wide replacement or arbitrary runtime-object destruction API is provided.

Developer API and diagnostics

The editor uses the existing client WorldObjects.request channel with these additional commands:

op Additional fields / behavior
world_pick None; inspect the original world under the cursor.
world_nearby x,y,z,offset; finite metre coordinates in +/-100000 and integer pagination offset 0..1000000. Lists loaded nearby candidates.
world_select id; approved placement ID, or empty string to deselect.
world_set id,catalog,layer,hidden; exact compatible catalog, approved placement ID, layer preview or live, boolean hidden. No transform or arbitrary class/path is accepted.
world_restore_all layer; release the calling resource's claims in that layer only.

The layer name live is local native bookkeeping, not server permission or automatic replication. Use the supplied trusted server/resource workflow for global changes. Do not accept arbitrary client-provided removal sets, identities or permission claims.

Request IDs mean queued. Match onClientWorldObjectResult; its JSON can describe accepted/pending reconciliation, not necessarily already invisible geometry. Handle onClientWorldObjectsReset and reapply authoritative state. Missing, unsafe or changed native contracts fail instead of reporting completed removal.

Repeated selected grouped-object hide/restore has been confirmed in game; all object classes, occupied cases, collision, streaming and two-client combinations have not been individually certified. Test your actual map, save/restart, restore and a late join before production use.