Manual
Manual
md 6/24/2023
Overview
The goal of this project was initially to write a flight system capable of working as what is known as a shaft-
less space elevator. i.e. vertical movement around a predefined path. The chosen design does however
allow for more than just that and is capable of movement in any direction, within limits of the construct it
operates. The original target of only vertical movement along the gravity vector was thus surpassed and it
is possible to go in a straight line at an angle from the vertical gravity vector. Further, it also allows you to
do up-and-over maneuvers where the construct parks itself on a space platform from whichever direction
you desire.
1 / 17
Manual.md 6/24/2023
Routes is an important concept for this flight system as they are what guides the construct between
positions. A route consists of two or more waypoints, a start, an end, and any number of waypoints in-
between. A waypoint specifies a position in the world. When added to a route a waypoint is associated with
other attributes, such as alignment direction and maximum speed. A route can also contain anonymous
waypoints; these exists only in one route and can't be reused. When traveling along a route, the next
waypoint dictates the direction the constructs forward should point in. Normally this is towards the
waypoint itself, but it can be locked to another direction. When a route is run in reverse, the previous
waypoint determines the alignment direction so that the the construct performs each movement in reverse
along the entire route.
By default, the screen will show two buttons for the start and end of each available route. Pressing either
will active the route. Below the two buttons, there's a button named "Waypoints" that shows the individual
waypoints in the route. If you would rather have a specific route shown as a list of waypoints to select from
at startup, i.e. floor-mode, use the command set -showFloor 'nameOfYourRoute'. To revert to the
default behavior, type set -showFloor '-'. Only waypoints that have not been marked as unselectable
via the route editor are shown.
Waypoint alignment
The construct will align towards the next point in the route (see setting yawAlignmentThrustLimiter),
unless that point has a locked alignment direction, in which case the construct will keep that direction while
approaching the waypoint. The construct will also automatically lock and hold the direction if the next
target point is nearly straight up or down from its current position, also when issued a move command.
Skippable waypoints
You can mark a waypoint in the route as skippable. Doing so makes the system ignore that point when
calculating the path to travel to the selected waypoint. However, even if a waypoint is marked as such, it is
still used to find the closest point on the complete path when a route is activated. In other words, a
skippable point is only considered as such while traveling, not when determining what point to first move
to to get back onto the path. This may result in that when activating a route while you're currently traveling
between two points, the system may tell you you are too far from the route. A shorter description of this
behavior is that paths resulting from skipped points are not used for evaluating distance to the route on
activation.
2 / 17
Manual.md 6/24/2023
Enclosures
If you intend to build an enclosure for the construct remember that physics in Dual Universe creates a hit
box around constructs in the shape of a box, not the visual contours. As such your enclosure must be able
to fit a box the size of the extreme distances of the construct on all three axes. Leave a margin at least a
full voxel (moving vertices does not count, the entire voxel must be deleted)
Due to Dual Universe's slightly wonky physics, when creating floors for any dynamic construct, ensure that
the floor fully encompasses the dynamic construct and it does NOT cross core boundaries or it might clip
through and fall, or worse, explode.
The cargo mass ratings given for constructs are given in raw mass values, i.e. not taking mass reduction
talents into account. As such, do not blindly look at the mass shown in the inventory interface of DU.
Instead, inspect the item/stack and look at the actual mass of the stack - the DU interface show only 75% of
the actual mass when the construct is fully boosted.
From the above it should be understood that taking off from lower atmosphere (such as from a higher
point, or a low-atmosphere planet) makes a big difference in capacity. Likewise, coming into atmosphere
and stopping at higher up/in low atmosphere is also subject to the same altered performance.
Automatic shutdown
When the last point in the route is reached, and the telemeter reports a distance less than the one
configured, the script will automatically shutdown.
Fuel gauges
The screen shows up to four fuel tanks of each of the atmospheric and space types. It chooses the ones to
display based on the lowest percentage and as such you can always see how close you are to run out of
fuel, regardless of how many fuel tanks you have.
To get a near-perfect alignment of the elevator to your ground construct, follow these steps.
1. Place a Programming Board on the construct that will contain the dock/cradle/landing pad of the
elevator.
3 / 17
Manual.md 6/24/2023
3. Select the direction you want to align to and paste one of the four code snippets below into unit -
> start, whichever is appropriate.
4. Start the Programming Board and copy the command from the screen (CTRL-L to to open editor
while pointing to the screen).
4 / 17
Manual.md 6/24/2023
The command is the part in the text = .... line of the screen code. Do not copy the
quotation marks.
5. Start the elevator, enter manual control mode and raise it up slightly using the move command.
Manual mode is needed to prevent it to shutdown automatically.
6. Paste the command into Lua-chat and press enter to perform the alignment.
Showing the widgets (show-widgets 1) and looking in the "Rotation" widget, under
"Axis/Yaw", at the offset value will show 0 when it is aligned.
7. Once aligned, either hold C or use the move command to set it down again.
Creating a route
1. Decide on what distance above (not height above sea level) you want the route to stop at.
2. Decide on a name for the route. You can use spaces in it, but you must surround it with single quotes,
like so: 'a name'. Double quotes do currently not work due to a bug in DU. Keep the name at 14
characters or less so it fits on the screen.
3. Activate the elevator.
4. In Lua chat, type: create-vertical-route 'route name' -distance 12345, replacing values
as appropriate.
If this isn't your first elevator, and you want this one to run parallel to the first one, add the -
distance, -x, -y, and -z arguments you get using the instructions in the "Travel vector for
additional elevators" section.
The screen will now show the name of your route with two buttons, one for the start (ground) and end
(space). Simply clicking these buttons will make the elevator move to those respective locations.
You can now expand on this route by adding additional points to it (see Key-bindings, Manual Controls and
Lua console commands), do do up-and-over maneuvers, sideways movements etc., to fit your exact needs.
Needless to say, any additional movement increases fuel consumption. This is especially true in atmosphere
where gravity generally is higher.
Route editor
The on-screen route editor (accessible from the main screen) allows you to perform the following
operations on a route.
5 / 17
Manual.md 6/24/2023
If there are more waypoints that fit on a single screen, use the arrows below the list to switch to another
page.
To ensure that elevators end up at the same relative distances in space as they have on the ground, you
need to make them use the same travel direction. To do so, follow these instructions:
Note: This only looks at the two first points in the route. If you want to use other points, you can use
the sub-pos command.
3. Choose the route you want to use as a reference and type the following command in Lua chat,
replacing with your route name.
get-parallel-from-route YOUR_ROUTE_NAME
4. Copy this from the chat (right click on the Lua chat tab to access menu) and paste it into your favorite
text editor and extract the relevant parts after the [I], you'll find it at the very end of the text.
Ensure that you get all the decimals.
Hint: To activate snapping mode, point into empty space, then click middle mouse button, then left click on
the elevator to select it as a reference construct and move the new core/construct using normal
adjustment keys. If you're doing it alone, the ECU must be holding the elevator in place, you can't actively
run the remote controller while deploying a core/construct.
Key bindings
Key Description
6 / 17
Manual.md 6/24/2023
Key Description
A Turn left
S Move backwards
W Move forward
D Turn right
C Move down
Space Move up
Note: Manual control of heavy constructs are much less accurate (especially during vertical
movements). Don't expect the same maneuverability as a tiny 1.5t construct.
7 / 17
Manual.md 6/24/2023
8 / 17
Manual.md 6/24/2023
route-
name of route N Deletes the named route
delete
route-
Renames a route
rename
route-
Removes the point at index
delete- index of waypoint number N
from the route.
pos
route-
Moves the position at the given
move-pos- position index, 1..n number N
index one step forward.
forward
route-
Moves the position at the given
move-pos- position index, 1..n number N
index one step backward.
back
route-
add- Adds the current position to the
current- current route
pos
9 / 17
Manual.md 6/24/2023
route-
add-
named-
pos
route-set-
Sets margin on all points in the
all- meter N
route to the provided value
margins
route-set-
Sets max speed on all points in
all-max- km/h N
the route to get provided value
speeds
10 / 17
Manual.md 6/24/2023
pos-
Creates a waypoint relative to
create-
name of waypoint the constructs position along
along-
the gravity vector.
gravity
If specified automatically
created a waypoint by name
-auto Y
WPnnn, such as WP001. Takes
precedence over -auto
11 / 17
Manual.md 6/24/2023
pos-
Deletes a waypoint.
delete
12 / 17
Manual.md 6/24/2023
13 / 17
Manual.md 6/24/2023
14 / 17
Manual.md 6/24/2023
Please note that deleting named waypoints do not update routes that reference them. You can create a
new one with the same name as the one deleted, but until you do, any route that referenced it will not be
usable.
Mass Overload
Each construct has a max cargo mass it is rated for. If you load the construct with more then one or more of
the following may happen:
When taking off from planet, it will Too little brake force to counter gravity for the current mass,
start, brake, start repeatedly. which causes the math to say max speed of 0 km/h.
Should you end up in these situations, it is easiest to just disable the controller (and the ECU), and let it fall
back down a bit then activate it again. It will then attempt to hold the position it was at when it was
started, i.e. brake and activate engines to counter the fall. You can repeat this until you're at an height the
engines work again. Having said that, an overloaded ship is still overloaded and bad things are likely to
happen.
Accuracy
15 / 17
Manual.md 6/24/2023
The aim is 0.1m accuracy and this is also the default for the all movements. However, depending on various
factors such as engine choice, mass (and thus acceleration), the construct may go off the path slightly.
There is a failsafe that triggers if the nearest point on the path too far off (see setting
minimumPathCheckOffset, or as defined by the next waypoint), in which case the construct will brake
and return to the point at which it went off the path before continuing the route. If you want to override
this behavior, you can reactivate the route again which will make the construct move to the closest point on
the path from where where it is when you reactivate the route.
You may also increase the margin on specific waypoints to allow more wiggle room during travel, this may
be especially useful on waypoints towards which the acceleration/speed is high or the path is diagonal
relative to the gravity vector. Alternatively, you can set a maximum speed to reduce acceleration duration
and speed.
The further the distance is between the reference elevator and any additional one, the harder it is to stay
exactly on the desired path, especially during strong (de)acceleration. The script will attempt to bring the
elevator back to the path in time for the end position, but if this becomes a problem you can add an
additional point in the route to force it back to the path prior to reaching the final point.
While it is possible to make routes that are not gravity aligned work, they may be somewhat unreliable.
These are the main reasons:
Atmospheric brakes
Quote from NQ-support: The speed is projected on the horizontal plane of the construct. And
we add a brake force in that plane in the opposite direction of that projected speed, which
induces a vertical force when the ship has a pitch.
It is this horizontal force that causes the construct to be pushed off the path. The easiest way to
work around this is to ensure that the entry to the planet is aligned with the gravity vector by adding
an extra point in the route in space directly above the point inside the atmosphere (see pos-
create-along-gravity). The downside is that this will be a position the construct has to stop at,
which prolongs the travel time and increases fuel consumption due to extra acceleration.
Strong acceleration
Sideways engines are generally weaker than the main downward pointing engines so when
accelerating, the weaker ones may have difficulties to keep the construct on the path.
16 / 17
Manual.md 6/24/2023
This means that a route starting at the surface of Thades and ending among the moonlets will have
different alignment directions along the travel path. As such, a space construct placed based on the
elevator's alignment in space will not point exactly away from Thades, but clearly be at an angle to the
planet. Please keep all this in mind when building your space construct.
A way to work around this is to add an extra point in the route within the distance of
pathAlignmentDistanceLimit so that you force the alignment to be along gravity for the duration of
the travel between the points.
The requirements for linking are the same as for when running on a controller.
Thanks
Special thanks goes out to these players:
17 / 17