<?xml version="1.0"?>
<rss version="2.0"><channel><title>Importing your own watercrafts Latest Topics</title><link>https://www.virtualtechart.com/home/forum/41-importing-your-own-watercrafts/</link><description>Importing your own watercrafts Latest Topics</description><language>en</language><item><title>Encrypted Ship Export</title><link>https://www.virtualtechart.com/home/topic/930-encrypted-ship-export/</link><description><![CDATA[<p>
	<u><strong>Exporting your ship</strong></u>
</p>

<p>
	1. Keep your original FBX, textures and authoring files in a separate working folder.<br>
	2. Open your original FBX-based ship in **Ship Setup**.<br>
	3. Finish your changes and click **Save JSON**. Unsaved settings must be saved before export.<br>
	4. Choose the export setting:<br>
	   - **Export settings: editable** (default): recipients can adjust the ship configuration, including equipment placement and handling.<br>
	   - **Export settings: locked**: the game uses an authenticated copy of the exported settings inside the protected model. Changes to the external JSON do not replace those settings, and Ship Setup cannot save them.<br>
	5. Click **Export protected ship**.<br>
	6. Read the status message for the new export folder. Share that complete folder, rather than your original authoring folder.
</p>

<p>
	 
</p>

<p>
	Exports are created in: &lt;game project directory&gt;/Saved/ShipExports/&lt;ship-id&gt;-export-&lt;unique-id&gt;/
</p>

<p>
	Every export creates a new directory. The original FBX ship and earlier exports are preserved.
</p>

<p>
	 
</p>

<p>
	<u><strong>What to distribute</strong></u>
</p>

<p>
	A typical export contains:
</p>

<p>
	```text<br>
	my-ship-export-.../<br>
	    boat.json<br>
	    model.atsship<br>
	    preview.png       (if present)<br>
	    Sideview.png      (if present)<br>
	    Audio/...         (only configured audio files, if present)<br>
	```
</p>

<p>
	The exporter copies the configured preview, sideview and audio files. These supplementary files remain ordinary files. The original FBX and loose model textures are not copied; texture pixels needed by the model are embedded in the encrypted model.
</p>

<p>
	Do not add the original FBX or source textures to the export folder yourself if you want to keep them private. Review any other personal information in your ship configuration before sharing it.
</p>

<p>
	 
</p>

<p>
	<u><strong>Installing a protected ship</strong></u>
</p>

<p>
	Recipients place the complete exported folder under:
</p>

<p>
	```text<br>
	Mods/Boats/&lt;ship-folder&gt;/<br>
	```
</p>

<p>
	The folder must contain `boat.json` directly, alongside `model.atsship`. Reload the custom ship list or restart the game as usual. The JSON references the local protected model:
</p>

<p>
	```json<br>
	"model": "model.atsship"<br>
	```
</p>

<p>
	Do not rename that model file without rebuilding the export. Keep the exported ship ID. A source version and its protected export share the same ID, so install one version at a time to avoid duplicate-ID conflicts.
</p>

<p>
	Recipients need a game build that supports `.atsship`. Older builds that accept only FBX cannot load these exports.
</p>

<p>
	 
</p>

<p>
	<u><strong>Equipment and controls</strong></u>
</p>

<p>
	The format preserves the static geometry's object names, hierarchy, pivots, material sections, vertices, triangles, normals, UVs, vertex colours and tangents. Object-name assignments for propellers, rudders, radar antennas, lamp lenses and bridge controls continue to use those names.
</p>

<p>
	With editable settings, recipients can use the existing ship editor and save JSON changes. The protected model remains protected. The game does not provide an FBX export or a protected-model re-export command.
</p>

<p>
	With locked settings, Ship Setup is for viewing the model and placements. The creator needs the original FBX authoring version to change settings and create a new release. The lock is enforced by the game; it is not a guarantee against a modified game or reverse engineering.
</p>

<p>
	 
</p>

<p>
	<u><strong>Updating a protected ship</strong></u>
</p>

<p>
	Edit the original FBX-based version, update its configuration/version, save it and export a new protected copy. Distribute the complete new folder. Keep backups of your original project: the protected distribution is not an editable source backup.
</p>

<p>
	 
</p>

<p>
	<u><strong>Format and limits</strong></u>
</p>

<p>
	- Static imported ships only; skeletal models are not supported by this export format.<br>
	- Maximum 2,000,000 section vertices and 6,000,000 triangle indices per model.<br>
	- Maximum 8,192 nodes and 8,192 material sections overall, with up to 512 sections per node.<br>
	- Maximum texture dimensions: 8,192 × 8,192 pixels.<br>
	- Prepared model data and expanded texture references have memory limits of 512 MiB. Very large or heavily repeated textures can exceed these limits even when the source FBX is small.<br>
	- The model uses a versioned binary format, compression and authenticated AES-256-GCM encryption. Damaged or modified encrypted data is rejected.<br>
	- Geometry is decrypted in memory. The loader does not write a temporary plaintext FBX or an unencrypted model cache.<br>
	- Existing FBX import remains unchanged for creators who choose not to use protected export.
</p>
]]></description><guid isPermaLink="false">930</guid><pubDate>Mon, 26 Oct 2026 19:31:14 +0000</pubDate></item><item><title>Exhaust Smoke</title><link>https://www.virtualtechart.com/home/topic/929-exhaust-smoke/</link><description><![CDATA[<p>
	In <strong>Ship Setup</strong>, add <strong>Bridge Equipment</strong>, then select the type <strong>Exhaust</strong>. Choose <strong>Engine1</strong>, <strong>Engine2 </strong>or <strong>Generator </strong>and set its position, rotation and output values.
</p>

<p>
	The editor's generator selector starts at <strong>1</strong> for convenience. JSON and the Blueprint Generator Index start at <strong>0</strong>.
</p>

<p>
	The editor shows an outlet placement marker, not a live smoke preview. Save JSON and reload the ship to apply your changes. Creator-locked protected ships cannot have their settings edited; configure the original FBX-based version and export a new release.
</p>

<p>
	 
</p>

<p>
	Merge these entries into the existing `bridgeEquipment` array. Keep other entries; do not create a second array with the same key. Every entry needs a unique `id`.
</p>

<p>
	 
</p>

<p>
	```json code<br>
	{<br>
	  "bridgeEquipment": [<br>
	    {<br>
	      "id": "main_engine_exhaust",<br>
	      "type": "Exhaust",<br>
	      "action": "Engine1",<br>
	      "positionCm": [-500, -100, 800],<br>
	      "rotationDeg": [0, 0, 0],<br>
	      "exhaustEnabled": true,<br>
	      "exhaustAutoRPM": true,<br>
	      "exhaustIdleRate": 12,<br>
	      "exhaustFullRate": 70,<br>
	      "exhaustIdleSpeed": 40,<br>
	      "exhaustFullSpeed": 120,<br>
	      "exhaustScale": 1<br>
	    },<br>
	    {<br>
	      "id": "second_engine_exhaust",<br>
	      "type": "Exhaust",<br>
	      "action": "Engine2",<br>
	      "positionCm": [-500, 100, 800],<br>
	      "rotationDeg": [0, 0, 0],<br>
	      "exhaustIdleRate": 12,<br>
	      "exhaustFullRate": 70,<br>
	      "exhaustScale": 1<br>
	    },<br>
	    {<br>
	      "id": "generator_1_exhaust",<br>
	      "type": "Exhaust",<br>
	      "action": "Generator",<br>
	      "generatorIndex": 0,<br>
	      "positionCm": [-700, 0, 900],<br>
	      "rotationDeg": [0, 0, 0],<br>
	      "exhaustAutoRPM": true,<br>
	      "exhaustIdleRate": 3,<br>
	      "exhaustFullRate": 15,<br>
	      "exhaustIdleSpeed": 20,<br>
	      "exhaustFullSpeed": 60,<br>
	      "exhaustScale": 0.6<br>
	    }<br>
	  ]<br>
	}
</p>

<p>
	 
</p>

<p>
	Positions are ship-local centimetres: +X forward, +Y starboard, +Z up. Rotation order is `[pitch, yaw, roll]`, in degrees. Position values above are examples, not automatic funnel detection.
</p>

<p>
	| Field | Default | Meaning / range |<br>
	| --- | --- | --- |<br>
	| `action` | `Engine1` | `Engine1`, `Engine2` or `Generator` |<br>
	| `generatorIndex` | `0` | Generator index, 0–63 |<br>
	| `exhaustEnabled` | `true` | Enables this outlet |<br>
	| `exhaustAutoRPM` | `true` | Uses the assigned machine's RPM range |<br>
	| `exhaustIdleRPM` | `700` | Manual lower RPM, 0–100000 |<br>
	| `exhaustFullRPM` | `4200` | Manual upper RPM, 1–100000; must exceed the lower value |<br>
	| `exhaustIdleRate` | `12` | Lower output, 0–2000 particles/second |<br>
	| `exhaustFullRate` | `70` | Upper output, 0–2000 particles/second |<br>
	| `exhaustIdleSpeed` | `40` | Lower exit speed, 0–10000 cm/s |<br>
	| `exhaustFullSpeed` | `120` | Upper exit speed, 0–10000 cm/s |<br>
	| `exhaustScale` | `1` | Smoke sprite size multiplier, 0.01–100 |
</p>

<p>
	 
</p>

<p>
	Currently the shared `bridgeEquipment` <strong>limit </strong>of 64 entries includes exhaust outlets, instruments, lights, antennas and controls.
</p>
]]></description><guid isPermaLink="false">929</guid><pubDate>Mon, 26 Oct 2026 19:25:44 +0000</pubDate></item><item><title>Heeling</title><link>https://www.virtualtechart.com/home/topic/928-heeling/</link><description><![CDATA[<p>
	The Ship Editor lets you configure the handling of an imported ship without editing its 3D model or writing C++ code. Adjust propulsion, rudder response, turn-induced heeling and water resistance to suit your vessel. Handling settings are stored in the ship's boat.json file and applied when the next voyage starts.
</p>

<p>
	Use the Heeling section to choose whether the vessel leans into a turn, leans away from it, or has no additional turn heel. The effect responds to the ship's actual forward speed and rate of turn. Adjustable strength, an angle limit and separate response and return times let you create a quick banking motion or a slower, more restrained response.
</p>

<p>
	The additional turn heel is combined with the existing wave-induced roll. Turning it off does not stop the ship from rolling in waves. The maximum turn<br>
	heel setting limits this additional contribution, not the vessel's total roll.
</p>

<p>
	 
</p>

<p>
	<u><strong>Ship Editor Workflow</strong></u>
</p>

<p>
	1. Open the imported ship in the Ship Editor.<br>
	2. Select Heeling in the left-hand list.<br>
	3. Enter the required values. Press Enter or leave the numeric field to commit it.<br>
	4. Select Save JSON to save the changes.<br>
	5. Start a new voyage with that ship to test the result.
</p>

<p>
	Use Default next to an individual field to remove its saved override. The<br>
	editor then uses the native default for that setting.
</p>

<p>
	 
</p>

<p>
	<u><strong>Heeling Parameters</strong></u><br>
	Configure the additional turn-induced roll described below.
</p>

<p>
	Editor label                              JSON key                                 Default  Range<br>
	Turn heel direction             TurnHeelMode                             None     See modes<br>
	Turn heel strength              TurnHeelStrength                             1.0      0 to 4<br>
	Maximum turn heel (deg)   MaximumTurnHeelDegrees             6.0      0 to 30<br>
	Heel response time (s)        TurnHeelResponseTime                   1.0      0.01 to 60<br>
	Heel return time (s)             TurnHeelReturnTime                        1.5      0.01 to 60<br>
	Minimum heel speed (kn)   MinimumTurnHeelSpeedKnots        2.0      0 to 200
</p>

<p>
	 
</p>

<p>
	<u><strong>TurnHeelMode</strong></u><br>
	None: disable additional turn-induced heel.<br>
	Inward: lean towards the inside of the turn.<br>
	Outward: lean towards the outside of the turn.<br>
	JSON mode strings are case-sensitive. Use the names, not numeric enum values.
</p>

<p>
	<u><strong>TurnHeelStrength</strong></u><br>
	Multiplies the calculated target angle. Higher values produce more heel for <br>
	the same speed and rate of turn, subject to MaximumTurnHeelDegrees.
</p>

<p>
	<u><strong>MaximumTurnHeelDegrees</strong></u><br>
	Caps the absolute target angle of the additional turn heel. It is a limit,<br>
	not a fixed angle that the vessel will reach in every turn. A value of zero<br>
	produces a zero turn-heel target.
</p>

<p>
	<u><strong>TurnHeelResponseTime</strong></u><br>
	Controls smoothing when heel builds in the same direction. A larger value<br>
	gives a slower response. It is an exponential time constant, not an exact<br>
	delay or the time required to reach the final angle completely.
</p>

<p>
	<strong><u>TurnHeelReturnTime</u></strong><br>
	Controls smoothing when heel decreases, returns towards zero or changes<br>
	direction. Larger values make the motion settle more slowly.
</p>

<p>
	<u><strong>MinimumTurnHeelSpeedKnots</strong></u><br>
	Below this absolute forward-speed threshold, the turn-heel target becomes<br>
	zero and the additional heel fades using the return time. This uses forward<br>
	speed through the vessel's heading, not the total sideways velocity.
</p>

<p>
	 
</p>

<p>
	<u><strong>JSON EXAMPLES</strong></u>
</p>

<p>
	These are partial configuration objects, not complete ship manifests. Merge the fields into the existing root-level handling object in boat.json. Preserve<br>
	other handling fields and the rest of the ship configuration. Do not create two handling objects or replace the complete boat.json with a snippet.
</p>

<p>
	 
</p>

<p>
	<u><strong>Example A — slower outward heel:</strong></u>
</p>

<p>
	{<br>
	  "handling": {<br>
	    "TurnHeelMode": "Outward",<br>
	    "TurnHeelStrength": 0.65,<br>
	    "MaximumTurnHeelDegrees": 4.0,<br>
	    "TurnHeelResponseTime": 3.0,<br>
	    "TurnHeelReturnTime": 5.0,<br>
	    "MinimumTurnHeelSpeedKnots": 1.5<br>
	  }<br>
	}
</p>

<p>
	<u><strong>Example B — quicker inward banking:</strong></u>
</p>

<p>
	{<br>
	  "handling": {<br>
	    "TurnHeelMode": "Inward",<br>
	    "TurnHeelStrength": 1.0,<br>
	    "MaximumTurnHeelDegrees": 8.0,<br>
	    "TurnHeelResponseTime": 0.8,<br>
	    "TurnHeelReturnTime": 1.5,<br>
	    "MinimumTurnHeelSpeedKnots": 3.0<br>
	  }<br>
	}
</p>

<p>
	<u><strong>Example C — disable additional turn heel:</strong></u>
</p>

<p>
	{<br>
	  "handling": {<br>
	    "TurnHeelMode": "None"<br>
	  }<br>
	}
</p>
]]></description><guid isPermaLink="false">928</guid><pubDate>Mon, 26 Oct 2026 19:21:20 +0000</pubDate></item><item><title>Fuel capacity and consumption</title><link>https://www.virtualtechart.com/home/topic/927-fuel-capacity-and-consumption/</link><description><![CDATA[<p>
	The Ship Editor now includes a Fuel section. Set the shared tank capacity,<br>
	initial fuel quantity and consumption rates for the main propulsion engines.<br>
	Save JSON and start a new voyage to apply the settings.
</p>

<p>
	 
</p>

<p>
	Editor setting                                        JSON key<br>
	Tank capacity (L)                                    FuelCapacityLiters<br>
	Initial fuel (L)                                          InitialFuelLiters<br>
	Idle consumption per engine (L/h)        IdleConsumptionLitersPerHour<br>
	Full-throttle consumption per engine   FullThrottleConsumptionLitersPerHour
</p>

<p>
	 
</p>

<p>
	Capacity: 0.01 to 100,000,000 litres.<br>
	Initial quantity: 0 to capacity, with the same 100,000,000 litre upper limit.<br>
	Consumption: 0 to 1,000,000 litres/hour per running engine.<br>
	Full-throttle consumption must be at least the idle consumption.
</p>

<p>
	 
</p>

<p>
	<u><strong>Example</strong></u>
</p>

<p>
	Merge these fields into the existing root-level handling object in boat.json.<br>
	Keep other handling fields and the rest of your manifest. This snippet is not<br>
	a complete ship definition. The values illustrate a large-tank configuration<br>
	and are not a calibrated preset for any real ship.
</p>

<p>
	 
</p>

<p>
	<strong>JSON CODE</strong>
</p>

<p>
	{<br>
	  "handling": {<br>
	    "FuelCapacityLiters": 500000,<br>
	    "InitialFuelLiters": 350000,<br>
	    "IdleConsumptionLitersPerHour": 50,<br>
	    "FullThrottleConsumptionLitersPerHour": 800<br>
	  }<br>
	}
</p>

<p>
	 
</p>

<p>
	<u><strong>How consumption works in Across the Seas</strong></u>
</p>

<p>
	Only running main engines contribute to consumption. For each running engine,<br>
	the rate is interpolated linearly between idle and full throttle using the<br>
	absolute throttle input. Forward and reverse use the same absolute-input rule.
</p>

<p>
	With the example above:<br>
	One engine at idle:             50 L/h<br>
	One engine at 50% input:  425 L/h<br>
	One engine at full input:    800 L/h<br>
	Two engines at full input:  1,600 L/h from the shared tank
</p>

<p>
	Stopped engines consume nothing through this calculation. Refuelling is capped<br>
	at the configured capacity. The existing empty-tank engine-stop behaviour and<br>
	fuel gauges use the configured tank. Fuel-pump electrical demand is configured<br>
	separately through the electrical system's fuelPumpLoadKw setting.
</p>

<p>
	The rates configure the main propulsion engines. Generator fuel use is not<br>
	added by these settings.
</p>
]]></description><guid isPermaLink="false">927</guid><pubDate>Mon, 26 Oct 2026 19:08:43 +0000</pubDate></item><item><title>Radar with rotating mesh antenna</title><link>https://www.virtualtechart.com/home/topic/924-radar-with-rotating-mesh-antenna/</link><description><![CDATA[<p>
	Also new feature would be to add the radar antenna to your watercrafts.
</p>

<p>
	 
</p>

<p>
	<u><strong>Radar display</strong></u>
</p>

<p>
	`type: "Radar"` adds an interactive 3D radar display. Set its size with `widthCm` and `heightCm`, and its local brightness with `brightness` (0–1).
</p>

<p>
	The display's local **+X faces the viewer**, and **+Z is screen up**. Adjust `rotationDeg` to match the console.
</p>

<p>
	Radar needs electrical supply, an enabled radar circuit and the radar device switched on. The UI and 3D instrument provide the device power control and share its state.
</p>

<p>
	 
</p>

<p>
	<u><strong>Rotating radar antennas</strong></u>
</p>

<p>
	`type: "RadarAntenna"` animates an existing FBX object. It does not create antenna geometry or a separate radar sensor.
</p>

<p>
	| Field | Meaning |<br>
	| --- | --- |<br>
	| `mesh` | Unique FBX name of the rotating scanner only |<br>
	| `positionCm` | Rotation pivot in ship-local centimetres |<br>
	| `rotationDeg` | Orientation of the pivot |<br>
	| `axis` | Local rotation axis; `[0, 0, 1]` is vertical for an unrotated pivot |<br>
	| `rotationDegrees` | Rotation speed in **degrees per second**, despite the field name |
</p>

<p>
	`rotationDegrees` defaults to `45` and accepts −720 to 720. Negative values reverse rotation; `0` stops it. `axis` must be nonzero and is normalized automatically.
</p>

<p>
	Assign only the moving scanner, not its stationary base. The pivot must be positioned at the scanner's rotation shaft. Mesh placement is preserved when it is attached to the pivot.
</p>

<p>
	You can add multiple antenna entries with unique IDs and separate meshes. They can rotate at different speeds and in different directions, but all follow the ship's shared radar power state. They stop when the radar device, circuit or supply is off. Meshes already assigned to another moving control, propeller or rudder cannot be assigned again as an antenna.
</p>
]]></description><guid isPermaLink="false">924</guid><pubDate>Sat, 24 Oct 2026 17:26:42 +0000</pubDate></item><item><title>Lighting system quick guide</title><link>https://www.virtualtechart.com/home/topic/925-lighting-system-quick-guide/</link><description><![CDATA[<p>
	With version 0.0.23 different light systems like navlights, anchor lights and towing lights are added to the ship editor. Also now possible to add bridge lights, work lights and exterior lights to your watercraft.
</p>

<p>
	 
</p>

<p>
	Add the entries to the existing top-level `bridgeEquipment` array in your ship configuration. Keep all other ship settings and existing equipment. Do not create a second `bridgeEquipment` key.
</p>

<p>
	The combined example below is an equipment section, not a complete ship configuration. Replace its example positions and FBX object names with those for your ship.
</p>

<p>
	- Each entry needs a unique `id`.<br>
	- Positions use centimetres in ship-local coordinates: **+X forward, +Y starboard, +Z up**.<br>
	- `rotationDeg` is `[pitch, yaw, roll]` in degrees.<br>
	- `mesh` identifies an FBX object by name, not a file path or material name. Use unique object names.<br>
	- The array supports up to **64 entries in total**, including instruments, controls, lights and antennas.<br>
	- Save the configuration and reload the ship to apply changes. The ship editor shows placement markers for lights, rather than a live lighting preview.
</p>

<p>
	 
</p>

<p>
	Merge the entries in this array into your existing `bridgeEquipment` array:
</p>

<p>
	<img alt="twMCyX.png" class="ipsImage" data-ratio="103.31" height="750" width="323" src="https://imagizer.imageshack.com/img924/2832/twMCyX.png">
</p>

<p>
	Use `type: "NavigationLight"` and select the light's role with `action`. With `lightRoleDefaults: true`, the existing navigation light system supplies the role's colour and visibility sector.
</p>

<p>
	 
</p>

<p>
	| Role (`action`) | Purpose |<br>
	| --- | --- |<br>
	| `PortSidelight` | Red port sidelight |<br>
	| `StarboardSidelight` | Green starboard sidelight |<br>
	| `Sternlight` | White sternlight |<br>
	| `ForwardMasthead` | Forward masthead light |<br>
	| `AftMasthead` | Aft masthead light |<br>
	| `ForwardAnchor` | Forward or single anchor light |<br>
	| `AftAnchor` | Aft anchor light |<br>
	| `TowingMastheadSecond` | Second light in the towing masthead group |<br>
	| `TowingMastheadThird` | Third light in the towing masthead group |<br>
	| `TowingYellow` | Yellow towing light |<br>
	| `FishingUpper` | Upper fishing light; colour follows fishing mode |<br>
	| `FishingLower` | Lower fishing light |<br>
	| `FishingAdditionalMasthead` | Additional fishing masthead light |<br>
	| `FishingGearDirection` | Fishing gear direction light |
</p>

<p>
	 
</p>

<p>
	Roles are switched by the existing **Off, Navigation, At Anchor, Towing and Fishing** modes. Some roles depend on vessel length and the native towing/fishing settings. Adding a role does not mean it is enabled in every mode. Imported vessel length is taken from the configured hull length
</p>

<p>
	For example, a larger vessel can add `AftMasthead` and `AftAnchor` entries at appropriate positions.
</p>

<p>
	 
</p>

<p>
	<u><strong>Optional lens mesh</strong></u>
</p>

<p>
	Without `mesh`, a navigation light uses a small sphere as its lens. Set its radius with `lightRadiusCm`.
</p>

<p>
	With `mesh`, the selected FBX material slot is replaced by the supplied lamp material, and the sphere is removed. **Use a dedicated lens material slot, not a slot shared by the lamp housing or the entire ship.** Slot numbering starts at **0**. The source FBX file is unchanged.
</p>

<p>
	Missing or ambiguous mesh names, invalid slots and duplicate mesh/slot assignments are skipped and logged. If a navigation lens assignment cannot be made, the fallback sphere remains.
</p>

<p>
	 
</p>

<p>
	<u><strong>Custom colour and sector</strong></u>
</p>

<p>
	Set `lightRoleDefaults` to `false` to use `color`, `lightArcDegrees` and `lightSectorYaw`. Sector yaw is measured relative to the ship's forward axis; rotating the placement marker alone does not rotate the sector. Fishing mode can override fishing-light colours through the existing native logic.
</p>

<p>
	 
</p>

<p>
	<u><strong>Bridge, work and exterior lights</strong></u>
</p>

<p>
	| Equipment type | Lighting group / radial menu entry |<br>
	| --- | --- |<br>
	| `BridgeLight` | Bridge |<br>
	| `DeckLight` | Deck Work |<br>
	| `ExteriorLight` | Exterior |
</p>

<p>
	These types create point lights that illuminate nearby surfaces. `lightIntensity` is measured in **lumens**, and `lightRangeCm` controls their reach. Shadow casting is optional and disabled by default.
</p>

<p>
	They also support an optional `mesh` and `lightMaterialSlot` to illuminate a lens using `lightEmissive`. This replaces only the selected material slot, just as for navigation lights. Without a lens assignment, the point light still illuminates its surroundings.
</p>

<p>
	 
</p>

<p>
	<u><strong>Light fields</strong></u>
</p>

<p>
	| Field | Default | Allowed values / meaning |<br>
	| --- | --- | --- |<br>
	| `color` | `[1, 1, 1]` | RGB components, each 0–1 |<br>
	| `lightIntensity` | `500` | 0–100000 lumens; group lights only |<br>
	| `lightRangeCm` | `500` | 1–100000 cm; group lights only |<br>
	| `lightRadiusCm` | `3` | 0.1–100 cm; fallback navigation lens radius or point-light source radius |<br>
	| `lightEmissive` | `25` | 0–1000; lens emission strength |<br>
	| `lightCastShadows` | `false` | Point-light shadow casting; group lights only |<br>
	| `lightRoleDefaults` | `true` | Automatic navigation colour and sector |<br>
	| `lightArcDegrees` | `360` | 0.1–360 degrees; custom navigation sector |<br>
	| `lightSectorYaw` | `0` | −180–180 degrees; custom navigation sector centre |<br>
	| `lightMaterialSlot` | `0` | Integer 0–63; must also exist on the assigned mesh |
</p>

<p>
	 
</p>

<p>
	<u><strong>Light controls and power</strong></u>
</p>

<p>
	The radial menu continues to work. Its navigation modes and Bridge / Deck Work / Exterior commands control the same systems as assigned bridge switches.
</p>

<p>
	- Battery-powered ships require the battery master to be on and the battery to have charge.<br>
	- On ships using the ship power network, navigation and bridge lights use UPS supply by default; deck and exterior lights use the main bus by default.<br>
	- Individual imported lamps do not add a separately configured electrical load. Existing electrical-system loads still apply.
</p>
]]></description><guid isPermaLink="false">925</guid><pubDate>Sat, 24 Oct 2026 17:09:51 +0000</pubDate></item><item><title>Bow and wake stern effect</title><link>https://www.virtualtechart.com/home/topic/926-bow-and-wake-stern-effect/</link><description><![CDATA[<p>
	Optional text block for bow- stern wake and bow srpay effect.
</p>

<p>
	 
</p>

<p>
	<img alt="khngeS.png" class="ipsImage" data-ratio="40.55" height="399" width="984" src="https://imagizer.imageshack.com/img924/4678/khngeS.png">
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">926</guid><pubDate>Fri, 23 Oct 2026 10:20:56 +0000</pubDate></item><item><title>Importing your own watercrafts - Quick Guide</title><link>https://www.virtualtechart.com/home/topic/923-importing-your-own-watercrafts-quick-guide/</link><description><![CDATA[<p>
	Ahoy Captains,
</p>

<p>
	 
</p>

<p>
	Here is a quick guide for importing you own created watercraft into the sim. I will improve and expand the docs for importing over the dev time. You can you the small car ferry in the Mods/Boats folder as a template.
</p>

<p>
	 
</p>

<p>
	Structure tree of imported models. Propeller and ruder (needs to renamed to rudder, will come with an update) correct naming is needed in your 3d program.
</p>

<p>
	 
</p>

<p>
	Mods/<br>
	└── Boats/<br>
	    └── MyFishingBoat/<br>
	        ├── boat.json<br>
	        ├── ship.fbx<br>
	        │   ├── Prop1<br>
	        │   ├── Prop2<br>
	        │   ├── Ruder1<br>
	        │   ├── Ruder2 <br>
	        ├── preview.png<br>
	        ├── Textures/<br>
	        │   ├── hull_basecolor.png<br>
	        │   ├── hull_normal.png<br>
	        │   └── hull_roughness.png<br>
	        └── Sounds/<br>
	            ├── engine_idle.wav<br>
	            ├── engine_running.wav<br>
	            └── horn.wav
</p>

<p>
	 
</p>

<p>
	<u><strong>Ship Setup —ingame watercraft editor</strong></u>
</p>

<p>
	If the naming is correct, the imported folder structure would be regcognized by the sim and the boat will be visible in the boat selection menu. For imported ships is the boat editor available in the boat selection menu. Most of the setup can be done in the editor and only a small part is only needed in the json file. 
</p>

<p>
	 
</p>

<p>
	<u>Open and edit</u>
</p>

<p>
	1. Open ship selection, choose a custom ship and press **Ship Setup**.<br>
	2. Right-drag to orbit; middle-drag to pan; wheel to zoom. Click the preview for keyboard focus,<br>
	   then use W/A/S/D and Q/E to move the view. Shift increases the movement step.<br>
	3. Select a point in the left list or click its marker. Drag an axis (red X, green Y, blue Z),<br>
	   or commit a numerical coordinate on the right with Enter or by leaving the field.<br>
	4. **Preview bridge** looks from the configured camera. **Use view as bridge** copies the current<br>
	   preview camera position, rotation and FOV to that point. **Frame ship** returns to orbit.<br>
	5. **Save JSON** writes setup to this package's `boat.json`. It preserves unrelated top-level fields,<br>
	   including the existing physics tuning. Known setup objects/arrays are rewritten. Changes apply<br>
	   on the next voyage, not to a boat already running in the world.<br>
	6. **Close / discard unsaved** discards unsaved configuration changes. It does not undo earlier saves.
</p>

<p>
	The preview has no boat simulation or collision and is destroyed on close. It is currently a standalone/singleplayer authoring tool.<br>
	The source FBX is not changed by this tool.
</p>

<p>
	Before a save, the previous JSON is copied to `Saved/ShipSetupBackups/&lt;id&gt;/boat-&lt;unique-id&gt;.json`.<br>
	If the manifest changed since opening, the save is rejected: close and reopen Ship Setup.<br>
	Read-only installations cannot be edited until the mod directory is writable. Backups are outside<br>
	the Mods directory and therefore are not automatically included in a new package.
</p>

<p>
	 
</p>

<p>
	<u>Propellers and rudders: one FBX, separate objects</u>
</p>

<p>
	Recommended authoring convention:
</p>

<p>
	- Hull/superstructure: ordinary static objects.<br>
	- `Prop1`, optionally `Prop2`: individually selectable propeller mesh objects.<br>
	- `Ruder1`, optionally `Ruder2`: individually selectable rudder mesh objects.
</p>

<p>
	Export the objects **together in the main ship FBX**. Do not combine them into one hull mesh. Each name<br>
	must be unique. Apply export scale/orientation consistently and triangulate. All vertices should remain<br>
	in the ship's assembled positions. Empty helper nodes are not visible propeller/rudder meshes.<br>
	The editor dropdown can map other object names; names are matched case-insensitively. Missing,<br>
	ambiguous or already-used names skip animation rather than preventing the boat from loading.<br>
	Select **None** when no visual model is available. The physical propulsion/rudder points still work.
</p>

<p>
	There is no requirement to supply these meshes immediately. The current ferry can use its existing<br>
	FBX until the propeller/rudder objects are modelled. Separate extra FBX files are not imported by this<br>
	version. They can be supported later, but would also need explicit transforms, scale and material paths.
</p>

<p>
	Each part has two points:
</p>

<p>
	- **Force**: where the existing boat physics applies propulsion/rudder forces.<br>
	- **Pivot**: the rotation centre of the visible object. It need not equal the force point.
</p>

<p>
	`axis` and `direction` control **cosmetic animation**, not an azimuthing thrust direction. The axis is<br>
	in boat coordinates, nonzero and normalised on save; +X is typical for shafts, +Z for rudders.<br>
	Use +1 or -1 for direction. **Toggle animation** tests the pivot and direction without running physics.<br>
	During a voyage, propellers follow engine RPM/drive direction and rudders follow steering input.<br>
	The native propeller animation speed scale remains 0.2. Two engines split `thrustKN` equally;<br>
	adding the second engine does not double the configured total thrust. The normal two-engine UI is reused.
</p>

<p>
	 
</p>

<p>
	<u>Mooring and fenders</u>
</p>

<p>
	**+ Mooring point** creates a station that works with the existing O / Ctrl+O mooring interface.<br>
	Set position, label, rope diameter, maximum length and breaking load. Up to 32 stations are supported.
</p>

<p>
	**+ Fender** adds a standard small rubber-fender representation (an elongated sphere), plus a separate
</p>

<p>
	**rope top** marker. Position the centre alongside the hull and the rope top on the rail/attachment.<br>
	The wire outline in the preview shows the configured size. Port/starboard chooses the control group;<br>
	changing the side button also sets yaw to face outboard. Local +X must face away from the hull, +Z up.<br>
	The runtime component reuses the existing deployment, contact and cosmetic pendulum logic. Its visible<br>
	rope ends at the fixed ship attachment and it adds no separate rigid-body mass. Up to 32 fenders.<br>
	Custom fender mesh files and large quay-fender authoring are not part of this ship-setup extension.
</p>

<p>
	 
</p>

<p>
	<u>Sounds and preview images</u>
</p>

<p>
	Select **Engine sound** or **Horn sound** to edit sound filenames and attenuation. Files are relative<br>
	to the boat folder. Use forward slashes, for example `Sounds/engine.wav`; absolute paths, `..` and<br>
	backslashes are rejected. Empty fields are allowed. A missing/unsupported WAV is skipped with a warning.
</p>

<p>
	- Supported audio: uncompressed PCM16 WAV, mono/stereo, 8–96 kHz, at most 16 MiB and 120 seconds each.<br>
	- Prefer **mono** for spatial localisation. Supply engine start, seamless running loop, engine stop<br>
	  and horn as separate files. The two engines have independent playback cursors but share the configured<br>
	  engine sound position in this version. No sound assets are supplied/generated by the code.<br>
	- Attenuation inner radius and falloff are in centimetres; volume is 0–2.<br>
	- Supported selection image: PNG, at most 2048 × 2048 and 8 MiB. When the `preview` field is missing<br>
	  or empty, `preview.png` beside `boat.json` is used automatically. Explicit filenames take priority;<br>
	  an invalid/missing explicitly selected image does not silently fall back to another file.<br>
	  Reopen ship selection after copying an image into the package folder.<br>
	- **Create preview PNG** captures the current ship-only view without markers to a unique new PNG in<br>
	  the package. Then press **Save JSON** to assign it. Existing images are not overwritten. The generated<br>
	  PNG remains on disk even if you close without saving the configuration; remove unused captures manually.
</p>

<p>
	 
</p>

<p>
	<u>JSON fields (optional extension to schemaVersion 1)</u>
</p>

<p>
	Existing schema-1 manifests still load with one physical propeller and rudder and their legacy points.<br>
	Retain the required legacy `cameraCm`, `propellerCm`, `rudderCm` fields. The editor keeps the latter two<br>
	in sync with the first array entries. New fields can be added to the existing object; this fragment is<br>
	not a complete manifest and its coordinates are examples, not calibrated positions for the ferry
</p>

<p>
	<img alt="vgsVbg.png" class="ipsImage" data-ratio="55.40" height="393" width="1000" src="https://imagizer.imageshack.com/img923/732/vgsVbg.png">
</p>

<p>
	Positions/sizes are boat-local centimetres (+X bow, +Y starboard, +Z up), **after** the presentation<br>
	model's scale/offset/rotation. Rotation arrays are pitch, yaw, roll in degrees. These setup settings do<br>
	not automatically compute hull collision, displacement or stability. Keep the existing tuned values.
</p>

<p>
	 
</p>

<p>
	<u>Imported-ship handling settings</u>
</p>

<p>
	Ship Setup now has four English-language sections: **Performance**, **Rudder**, **Heeling**,<br>
	and **Resistance**. These expose the existing native BoatPawn controls, not a new physics model<br>
	or automatic copying from a Blueprint boat. Save with **Save JSON**, then start a new voyage.<br>
	Blueprint boats and the existing imported-ship buoyancy coefficients are unchanged.
</p>

<p>
	- Performance: total/per-shaft thrust, reverse thrust, RPM response, thrust exponent, optional<br>
	  low-speed boost, engine-start immersion requirement and speed limiting.<br>
	- Rudder: angle, actuator speed, lift/force limits, propeller wash and each rudder's physical area.<br>
	  Length and height are full centimetre dimensions; they do not resize the visible mesh.<br>
	- Heeling: None, Inward or Outward turn heel, strength, maximum angle, response/return times<br>
	  and minimum speed. This is turn-induced heel, not wave damping.<br>
	- Resistance: lateral grip, three-point resistance and its yaw contribution/weights, plus<br>
	  linear/angular damping. Angular damping affects all rotation, including roll and pitch.
</p>

<p>
	An optional `handling` object uses the exact C++ property names shown below each control.<br>
	Only edited overrides are stored. **Default** removes that override and restores the native<br>
	default; per-shaft thrust instead falls back to an equal share of root `thrustKN`.<br>
	Root `thrustKN`, `linearDamping` and `angularDamping` are saved from their own controls.<br>
	Second-shaft/second-rudder settings require two corresponding attachment entries.<br>
	Native force values are Unreal force units: **1 kN = 100,000 UE units**.
</p>

<p>
	Example fragment (illustrative values):
</p>

<p>
	<img alt="QjAtzg.png" class="ipsImage" data-ratio="29.02" height="287" width="989" src="https://imagizer.imageshack.com/img922/6498/QjAtzg.png">
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">923</guid><pubDate>Tue, 29 Sep 2026 17:08:51 +0000</pubDate></item></channel></rss>
