Space Engineers

Space Engineers

Not enough ratings
RPA Guide: Robot Printing Automation Guide Version: V 4.1.3 - 8/11/2024
By Reckless
A guide about my Automatic Print script, in order to print your ships in a faster and smoother way
   
Award
Favorite
Favorited
Unfavorite
Agenda:
  1. Gentle Introduction
  2. Setup
    [**]Station
    [**]Drone
  3. Under the Hood: Running Conditions
  4. How to start process
  5. Tuning and Best Practice
  6. TO DO LIST
  7. Example
  8. Outtro and last words
  9. Too Lazyy, didn't read
  10. Troubleshooting
0.1) Changelog >= V: 3.5.0
-------------Changelog 4.1.3 (8/11/2024)----------------------------------
-was trying to push the work from my best man Cristhophuck, but between me and Keen,
RPA is dead.. for now, i'm work on it, have patience;

-the only new change is to make RPA usable in sigma draconis expanse server,
where welders have changed type of item (nothing different from end user)
-change the link to both scripts, cause couldn't update the older one
-------------Changelog 4.1.2 (8/11/2023)----------------------------------
-skip command now turns off welders and fancy group;
-Improved start command to avoid overheating;
-------------Changelog 4.1.1 (5/11/2023)----------------------------------
-Small improvement to the performance;
-------------Changelog 4.1.0 (4/11/2023)----------------------------------
-skip command now is "skip -print", to start printing after
movement, or "skip" to not start printing after movement;
-Only hydro tanks are now considered for drone's tanks;
-Better and more consistent storage of printing variables;
-Precise drone movement added! Now DroneMovementDistance is the wanted one;
-Fix a bug with untag commands;
-Added an allert for low tank level on log LCD;
-Added allert for high runtime on log LCD;
-Fixed some visual minor bugs;
-Fixed a bug that prevented to send setup;
-Fixed(?) a bug that stops, sometimes, the rotor;
-Added a QoL command: motion_print, to toggle printwhilemoving variable;
-Improved runtime of script;
-------------Changelog 4.0.3 (23/10/2023)----------------------------------
-Fixed a bug with "weldWhileMoving";
-------------Changelog 4.0.2 (19/10/2023)----------------------------------
-Improved Runtime check logic;
-Improved some logics to initial check on version and init;
-Fixed a crash if [RPA-Fancy] group is not present;
-------------Changelog 4.0.1 (15/10/2023)----------------------------------
-Bug fix on init of the drone;
-Bug fix on setup command;
-------------Changelog 4.0.0 (11/10/2023)----------------------------------
-Fixed some init bugs;
-Deleted "Slow mode";
-Huge rework of some logics of the scripts, to slow them down when runtime exceeds some threshold;
-Added an automatic way to store some variables to calculate ETA, to persist between recompiles;
-------------Changelog 3.6.0 (06/10/2023)----------------------------------
-Check for drone's initialization done (otherwise, you can't start printing);
-Some checks here and there to avoid exceptions;
-Added some extra logs;
-Slow Mode improved
-Added the max Runtime variable (for the server);
-Added the stop command from Drone too;
-------------Changelog 3.5.4 (04/10/2023)------------------------------------
-Some minor bugs fix;
-Fix start -toggle command;
-------------Changelog V 3.5.3 (02/10/2023)----------------------------------
-Recompiling the Drone' script will now check for blocks setup, rather than initializing it;
-To initialize the drone, you have to run "init_d" from the station or the drone's PB;
-If the drone is connected when try to initialize it, an exception is risen;
-------------Changelog V 3.5.2 (28/09/2023)----------------------------------
-Rename the command "update", with the more intuitive "ignore_all";
-Added the command "ignore1" to skip only the active block welded (like a mini version of "ignore_all");
-You can now run the command "init_d" as well from the drone as from the station;
-Fixed the ETA (again);
-During Initialization of the drone, if you have 1 (and only 1) tank of hydrogen, the tag will be added automatically, otherwise, tag them;
Changed the links for scripts: the guide has been updated with the new ones (19/09/2023).
V 3.5.1 (18/09/2023)
-Added the option to turn off the welders during the drone's movement
V 3.5.0 (09/09/2023)
-Slow mode added: reduce tick rate and disabled alignment;
-Fixed the printing extimated time on the "ACTIVE WELDING" LCD;
-Added the QoL command: "untag_d", to easily delete the wanted tag from the drone;
-Added the QoL command: "untag_s", to easily delete the wanted tag from the station;
-Added the QoL command: "init_d", to easily read the Custom Data of the drone and tag it;
-Fixed some bugs in case you don't have tagged the STATUS LCD;
-Improved the rotor's speed function for a faster printing;
0.2)Changelog < V: 3.4.0
V 3.4.0 (09/08/2023)
-Added the Rotol Control
V 3.3.0 (07/08/2023)
-Heavy clean up of the code from useless computations in order to improve performance;
-Rework of start and toggle commands. See Chapter 4;
-Add an oprional LCD called .ACTIVE to print infos about active welded block and printing in general (See Chapter 4.1, Station setup);
V 3.2.5 (03/08/2023)
-Improved the Logics to handle the rotor's Speed;
-Added a "stuck" status to check when rotor will move backward to weld some missed blocks
V 3.2.4 (31/07/2023)
-Polished the code;
-Add several verbose checks, to catch more exceptions,\n point out when you have to run setup\n or have different versions of script;
-Add a changelog command. Run changelog -off to delete it from the Status LCD;
V 3.2.3 (30/07/2023)
-Added security check if you don't have run setup before starting the print;
-Added several report in case setup is not completed correctly;
-caught several exceptions;
-send to LOG lcd all main problems regarding uncompleted setup;
V 3.2.2 (30/07/2023)
-If the tug is tilted more than 25 degrees, it won't auto align;
-During the Active Printing, the time will stop, until not a single block is being printed;
-Wait variable during the printing will blink to point out that printing is in progress;
-Add a random music to play if sound block is present;
-Add command "music" to play random music; Add " -off" to turn it off;
V 3.2.1 (20/07/2023):
-Fixed and tuned the aligning part of the script;
-Add a check for the version of the 2 scripts, displaying an error if they are different;
-Add a changelog recap once recompiling the station print, to the STATUS lcd
V 3.2.0 (28/07/2023):
-Several bug fixed;
-Add a safety check on auto alignment;
-Add a check on printed block: if a Functional block is being printed, the rotor will stop;
V 3.1.0 (27/07/2023):
-Several Bugs fixed;
-Added an automatic alignment between the tug and the drone for the entire duration of the print;
-Added a new command "align" to force the alignment
-DRONE ONLY: COCKPIT FORWARD direction must be perpendicular to printers!!!; See Drone Setup section!!!!!!
-DRONE ONLY: BACKWARD thrusters only used!!
V 3.0.5 (25/07/2023):
-Fixed the group welders setup, now properly works
V 3.0.4 (24/07/2023):
-To better track the tag's fuel level, add the tag to the Hydro tank (see 2.2 Drone setup)
V 3.0.3 (23/07/2023):
-"Toggle" commands, now set on off tools and projectors too.
V 3.0.2 (19/07/2023)
-Added Projectioin status, Tug's H2 level and printing percentage
V 3.0.1 (19/07/2023)
-Fixed some typos and formattings
V 3.0.0 (17/07/2023)
  • Change the name of log LCD. You have to add ".LOG";
  • Added a second lcd for the station. Tag it as usual and add ".STATUS"
  • Redesigned the hud;
  • Added hudlcd functionalitites;
  • Added "guide" command for easy reference in game
V 2.9 (17/07/2023)
  • Add sound blocks to Fancy blocks;
  • Add Antenna block check;
  • Add new QoL commands;
  • Add hudlcd auto added to LCD, and "hudlcd:toggle -reset" as command
V 2.8 (10/07/2023):
  • QoL Changes:
    • All commands are now case insensitive;
    • If the script is used for no "SIGMA DRACONIS EXPANSE Server" there should be no more errors;
    • If you use the standard configuration for the drone (using backward thrusters to move away from the welders, 1 cockpit, 1 projector), you don't need to add the tag [RPA];
    • If you use the standard configuration for the station (only 1 rotor and all welders for printing), you have to put the tag [RPA] only for the other needed blocks;
V 2.7 (01/07/2023):
  • Add a new command "toggle", in order to toggle on every blocks of the printed ship (that is the tug's grid, so, before you cut the sprue) except for Epstein drivers
    V 2.6 (29/06/2023):
    • Add a check to the block's integrity: now, every block has to reach 100% integrity before the scripts move the Drone back
    V 2.5 (18/06/2023):
    • Deleted static printing;
    • Fixed bug that didn't allow to change distance movement of the drone after have finished the section;
    V 2.4 (01/06/2023):
    • Fixed a bug with Safety Distance that was not calculated;
    • Added the "DroneMovementDistance(meters)" in customData, in order to set the meters the tug thrusts in every iteration (stopping distance is more or less 1/3 of the thrusting distance); See Chapter 2.1
    V 2.3 (31/05/2023):
    • Added the "update" command, to set to ignore remaning unwelded blocks, in order to continue the welding (See Chapter 4)
    • Added a "forced stop" if the drone goes too far from starting point (See Chapter 3)
    • Added the optional group with [RPA-Fancy] to toggle on/off lcd,lights and welders during start and stop (see Chapter 2.1)
    • Fixed some minor bugs
    • List of commands always visible in the Station's PB;
    V 2.2 (05/05/2023):
    • After several ships printed, i fixed some minor bugs and tuned some numbers;
    • Change the Torque value of the rotor to 40 MN to have a better acceleration;
    • Finally understood how to update scripts instead to delete-reupload. From now on, this shouldn't happen anymore;
    V 2.1 (27/04/2023):
    • Fix bug for Drone's moving distance (it moves twice the wanted distance)
    V 2.0 (26/04/2023):
    • Fix some bugs with rotor speed and dynamic rotor;
    • Added Rotor speed in both log and LCD;
    • Fix bug when setup command was ran, that forced the drone to start the process;
    • Get rid of naming conventio, and add tag requirment to the blocks/groups. Default is [RPA], but you can always change it in CustomData of the Station's script;
    • All logs should be now polished, meaning, if you forgot any tag or block, you'll see in the PB log or the station's LCD panel; In general, more informations are printed;
    • All variables that can be changed in CustomData of the Drone, have been moved in the Station's PB CustomData, so, if you want to change any of them, youu don't need anymore to reach the Drone's PB (Engineers are lazy!);
    • Station's PB CustomData have more variables: RotorSpeed; DynamicRotorCheck; DynamicSpeed (see Station Setup chapter);
    • A new configuration is possible: DynamicRotorCheck, to have better chance to cover all blocks (See Tuning Chapter);
    • Added list of commands in the Station's PB log;
1)Gentle Introduction
    Are you a fan of automation? Do you want to experience Peak performance of my Printing Industry? Or you are just too lazy to weld ships manually? You come in the right place.This guide will help you setting up the script right and prevent, for most, problems. The goal of the script (actually, 2 scripts), is to set up an automatic printer to weld your ships. Your RPA thinks to print your ship, while you can enjoy the process from a control room, like should be. The script is made for Sigma Draconis Expanse Server, but should work in every server or SP. Just remember that you could have problem if the radius of the welders you are using is less than 5-6 meters. Download both scripts:Drone script: https://steamproxy.net/sharedfiles/filedetails/?id=3362185782Station script: https://steamproxy.net/sharedfiles/filedetails/?id=3362185968Or this is the link to the collection: https://steamproxy.net/sharedfiles/filedetails/?id=2967268240Because it uses IGC (Inter grid communication), you need an antenna broadcasting from the Tug (the grid/little ship/drone, with a projector on it, as we'll say later) to a Station with the printer, in order to control the status of the welding and slowly move the Tug back when conditions are reached (As we'll see later, you have to load both scripts in the right PB). After all blocks are been welded, the script stops. When i'll speak about "printing section" it means a section high 2.5 meters - 4 meters (1-2 blocks).
  • QOL tips: for the best experience, i suggest you to use 2 plugins:
  • HudLCD by Jawastew in order to print on your screen the status of the welding (see later on required blocks in Station section);
  • Projector Highlighter by BDCarillo in order to intercept blocks not welded in time
2)Setup
We have 2 grids: the first one is the station itself with the rotating printer, the second one is the tug, with the projector. If you don't know what a rotating printer is, you can find some guides online. Here: https://steamproxy.net/sharedfiles/filedetails/?id=2965579505

Then you need a Drone, that is, a Tug who will move back the new printed grid. To have an idea about what should look like, go here https://steamproxy.net/sharedfiles/filedetails/?id=2965623132

From now on, i'll refere to the Tug with Drone or Projector. Are just the same thing, because you have to place the projector on the Drone and the printer on you station.
2.1)Station setup
The station is where your printer is placed.
The default configuration is the following (and should be set up before Drone's):
  • Broadcasting antenna with enough radius;
  • A LOG LCD panel: [RPA].LOG (where [RPA] is the custom tag, but not .LOG, that is required); if you use HUDLCD plugin, you can print it on the screen, for easy reference while watching your printer in action. Here you'll see the printing status (See Chapter 3)
  • OPTIONAL: A Status LCD panel: [RPA].STATUS (where [RPA] is the custom tag, but not .STATUS, that is required). You can see every block in welding status and their integrity percentage;
  • OPTIONAL: A general infos LCD panel: [RPA].ACTIVE (where [RPA] is the custom tag, but not .ACTIVE, that is required). You will see several infos/stats about the printing
  • An Advanced Rotor;
  • All welders for the printers;
  • Any numbers of LCD/sound blocks/lights groupped togheter and adding the tag "[RPA-Fancy]" (no quotes).
  • Programmable block (of course) where you'll load the Statioin script. In the custom data you'll see this

    • TAG= name of tag to retrieve all blocks for drone and station (and for welders, lights and lcds, use [RPA-Fancy] instead);
    • WeldWhileMoving = true if you want the welders been active during the drone's movement; false otherwise (if false, it will help stability of the server, cause it won't have to check the printing of moving blocks);
    • Wait= check timing for TB;
    • DroneMovementDistance(meters)= since V 4.1.0, this is the exact distance you want the drone moves backward;
    • RotorSpeed= working rotor speed;
    • DynamicSpeed(RPM)= speed of the first few seconds of each section;
    • MaxDistance(meters)= safety distance from the rotor (for automatic stopping purpose)
    • MaxServerRuntime(ms)= max available milliseconds for players (information from the server); default for SIGMA DRACONIS EXPANSE is 0.5 ms; Used to auto slow down the script;
If you have more than 1 rotor, put the tag on the one you'll use; if you have welders not used for printing, grouped them and add the tag (don't add the tag to individual welders otherwise the script will tag them all first and then use them).
2.1.1) Change Station TAG
Since Version 3.5.0, you can now delete all certain tags at once, from the station's blocks (say [RPA] for example) with the command "untag_s [RPA]" sent by the station, as usual.
So, because i've received several questions about changing the TAG, that's the best practice:
1)Change the TAG in the custom data with the wanted one;
2)recompile the script ---> you should see the tag added automatically if the configuration is the standard one;
3)if you are not using the standard config or for LOG, STATUS and ACTIVE LCDs, just add the tag and create the welder group;
4)run "untag_s [RPA]" or "untag_s [whatever_was_the_TAG]" to delete all the old tag;
5)Done!

IF YOU HAVE TO CHANGE BOTH STATION AND DRONE TAGS, START WITH STATION!
2.2)Drone Setup
The default setting for the Drone is the following:

  • Broadcasting antenna with enough radius;
  • A Cockpit or Console or helm, with the forward direction facing the welders layer;
  • A Projector ;
  • Balance thruster in all direction, and use the backwards to create space from the drone and the welder's floor. That is, the drone will move backwards in order to create space for new section og blocks to be printed.
  • 1 fuel tank;
  • A PB where you'll load the Drone script. You'll find this in custom data just the tag, in case you want to change it.
If you have this configuration, unconnect the drone first, then run "init_d" from the station's PB or drone's PB, in order to initialize the drone, and the script will add the tag for you, otherwise you have to add it manually (for cockpit and projector and if you have more than one tank.). If you have more than 1 fuel tanks, just tag them. If you don't have grouped Backward Thrusters, the script will tag individual ones for you . If you have grouped another orientation, the script will raise an exception for your information. If you have both a group and individual tagged thrusters, an error will raise!
When recompile the script, now, it will check if the drone setup is correct instead to initialize it. This will avoid adding unwanted tag during the printing to newborn ships if recompiling.
The drone's custom data will be like this:
2.2.1) Change Drone TAG
Since Version 3.5.0, you can now delete all certain tags at once, from the drone's blocks (say [RPA] for example) with the command "untag_d [RPA]" sent by the station, as usual. And for the drone, you can use "init_d" from the station's PB (As usual) to read the drone's CD and tag all drone's blocks.
So, because i've received several questions about changing the TAG, that's the best practice:
1)Change the TAG in the custom data with the wanted one;
2)recompile the drone's script or use the "init_d" command from the station PB or use the "init_d" from the drone's PB (the only command used on the drone)---> you should see the tag added automatically if the configuration is the standard one;
3)if you are not using the standard config you have to add the tag manually;
4)run "untag_d [RPA]" or "untag_d [whatever_was_the_TAG]" from station's to delete all the old tag;
5)Done!
3)Under the Hood: Running Conditions
Now we'll se how it works.
IMPORTANT: first thing to remember is that RPA could have high runtime spikes. Toggle off ALL other scripts during the print.
Having the drone facing frontally the layers (and thus, the welders) means you have your projection going forward. And this is the configuration you have to mantain! Now, after the tug's movement, the script will check the orientation with the welder arm's rotor, and in case is no more aligned correctly, it will do so (using all gyros in the grid). I suggest you to use "align" commands before running "start". When you start printing, and blocks are welded, the script will give you status of the process (from the LCD.LOG on the station), like the one we saw in Station setup:

While, on the LCD.STATUS, you'll see:

And finally, on the LCD.ACTIVE, you'll see:

You have these info on LOG:
  • Total blocks: total blocks of the projection;
  • Total remaining blocks: all blocks of the grids to be welded (every single block, included armors and conveyors); the parenthesis are used to remember the "refreshed blocks" (See Chapter 4);
  • Missing terminal blocks: just terminal blocks (TB in short), so no armors, no catwalk, no conveyors...just the blocks you see in "K" menù. This is the condition to override the thrusters and push back the drone; the parenthesis are used to remember the "refreshed blocks" (See Chapter 4);
  • Ignoring TB from start: when you call "start"/"start -toggle" with argument (see chapter 4), you'll see how many blocks you are going to ignore;
  • Seconds till next check: this is tied to the Wait variable in the Drone's PB custom Data. Every "wait" seconds, the script will check for "Missing terminal blocks". If it's 0, it moves, otherwise it stands still untill next check. This is the core of the script, as we'll see in a moment;
  • Distance: is the distance the drone moved last time. Should be around the number of meters of welded area (2-4 meters). It's just an insight, nothing more;
  • Safety Distance Remaining: this will tell you how far from the Printer's rotor the tug is and whence it reaches the max Distance (set in Custom Data) the printing process will stop;
  • Grid total mass: it's the total mass=Drone's+new grid's.
  • Rotor Speed it's just the RPM of the rotor, shown here to monitoring what is happening;
  • Toggle After Start: it tells you if there will be the auto toggle (See command start);
  • Percentage of tug's fuel remaining;
  • Percentage of blocks printed;
On STATUS LCD you have the list of all not IGNORED BLOCKS with their % of health.
On the ACTIVE LCD you'll see:
  • The active welded block with its integrity perc, because the script will aim for one block at time; when this block has reached full integrity, it'll check for next one;
  • Active welding time: the time passed;
  • In the STATUS section, you'll have some basic info of printing time status;
  • ETA is the extimated time to complete the printing, based on math average between = time passed and (my personal experience extimation) and percentage already built. Don't expect nothing accurate, but a basic extimation of the time needed;
  • Drone/Station average RT: the average runtime of both scripts;
First, the script will check condition when countdown reaches 0. Then it checks if any TB is not a 100% integrity. But if a TB has not be printed already (0% integrity) the script won't see it and it will count to the check condition.
Another very important feature from Version 3.2.0 and Version 3.2.2, is that the rotor will stop rotating when a TB is being printed and the Waiting variable (aka, seconds until next check) will be resetted to the full time. This will increase the performance overall.
  • TB more than 0: the drone stands still;
  • No more TB left: the drone will move back for another section
3.1)Under the Hood: Stopping Conditions
You have 3 ways to stop the process:
  • Run the "stop" command (See chapter 4). It's a manual stop;
  • "total remaining blocks" reaches 0. Take care about it, because if you miss even one armor block somewhere, it won't stop. That's why "Projector Highlighter" is handy, because you can intercept the unwelded blocks;
  • Safety distance stop. When the tug goes too far from the Printer's Rotor, it will stop You can change it through Custom Data, via "MaxDistance(meters)"
4)Commands
Commands are all sent from the Station (with "stop" and "init_d" that can be run from the drone too):
  • "setup": send some information to the Drone (always first command to run). The torque of the rotor will be set to 40MNm. It's your first command to send! Always!
  • "start x y z ... -toggle": start the script, loading the status on LCD, toggle on the Fancy group;
    • The arguments x y z ...., splitted by ONE space, are optional, in case you want to IGNORE these blocks. IE: "start Reactor"-->the print will start and all blocks that contain the word "Reactor" will be ignored. This doesn't mean that they won't be welded, but simply that the script won't check for their status.
    • -toggle is a parameter that you need to put it if you want the auto toggle of all blocks (Except for epstein drivers if you play on sigma draconis expanse server, tools and non [RPA] projector) at the end of the print if ALL blocks are welded. If you don't add it, it won't happen;
    • IE: "start Tank battery -toggle"-->start the process, ignore all blocks that contain words Tank and battery, and toggle all whence finished;
    • Their numbers is shown in the LOG LCD;
  • "stop": incredibly, it stops the script; but also, save the printing variables (for ACTIVE LCD). Load them when start again;
  • "ignore_all": this will force to ignore any unfinished terminal blocks. When the printing is stopping dued to any unfinished TB (in the case you won't never have enough items to finish it) and you still want to go on, you can run "update", ignoring that block (or blocks). You will see the "remaining TB" set to 0, the "total remaining blocks" diminishing from the same amount and in the parenthesis, will be shown the number of blocks ignored in this way. Take care when using it. It resets when the script is recompiled;
  • "ignore1": this will force to ignore the active block printed. It's like a minor version of ignore_all command.
  • "init_d: read the CD of the drone and add initialize the drone"; (it's the only command that can be run from the drone too)
Utility commands:
  • "align": this will align the drone to the welder's arm rotor. Run "setup" first!
  • "skip -printing": this will force the Drone to move back by DroneMovementDistance(meters) and then start the printing. If "skip" is ran, the printing won't start;
  • "toggle x y z ..": this will toggle on every single block of the new ship, except for Epstein Drivers (if you are playing SIGMA DRACONIS EXPANSE... and you should, if not);
    • Add any number of arguments splitted by ONE space to IGNORE any block that contains these words when you run it, in order to toggle all blocks (Except for epstein drivers if you play on sigma draconis expanse server, tools and non [RPA] projector);
    • IE: "toggle Reactor Gyros"-->toggle all Except for epstein drivers if you play on sigma draconis expanse server, tools and non [RPA] projector, blocks containing word Reactor and Gyros;
  • "projector": toggle on/off the Drone's projector;
  • "hudlcd:toggle": toggle on and off the hudlcd if you're using hudlcd plugin. Run "hudlcd:toggle -reset" if you want to reset to my default settings;
  • "guide -reset": running "guide" only, will write on your STATUS lcd the commands guide; adding "-reset" will clean up the STATUS lcd;
  • "changelog -off" if you want to print on the STATUS LCD the changelog. Add "-off" to clean it from the LCD;
Quality of life commands (use to change variable without change the custom data)
  • "rotor_ws x y": change the rotor speed, where x: DynamiSpeed(RPM); y: RotorSpeed(RPM) (see CD);
  • "drone_move x": changes DroneMovementDistance(meters) to x value;
  • "max_distance x": changes the MaxDistanceStop(meters) to x value;
  • "waiting x": changes the Wait to x value;
  • "music -off: play a random music\nAdd -off if want music to stop";
  • "untag_d x: where x is the tag you\nwant to remove from the drone;"
  • "untag_s x: where x is the tag you\nwant to remove from the station;"
  • "motion_print": toggle on/off "WeldWhileMoving" variable;


So, setup --> start -toggle -->enjoy
5)Tuning and Best Practice
In order to avoid to skip some non TB, you can do some things. Starting with tuning some parameters:
  • Rotor speed: something arounf 2-5.5 RPM based on the integrtiy of the blocks; I generally use 4;
  • "Wait" parameter in Station's PB custom data: if you check too often you can see TB finished too fast and some blocks skipped. Having something around 7-12 seconds should be work for vast majority of the ships. Since the new Rotor Control from V3.0, the wait parameter has lost some importance.
  • For the parameter "DynamicSpeed(RPM)" (it's the speed when a new section is reached and only last fow a small amount of time), you can set it to 20-30 RPM.
  • Designing correctly: avoid putting all TB in one side but spread them, and don't create "U" shape;
  • in creative mode, rotate all "very long blocks", like railgun, perpendicular to the Drone's movement, in this way you don't risk to see it going outside the welder's radius. Ship clam's modded block is expecially a ♥♥♥♥♥♥♥♥
  • Starting condition: left for last, but probably the most important amongs all. You should start from the drivers, cause they are, generally, the longest blocks. If you don't start from those, they will be out from welder's range. Design the ship with a sprues in a way that doesn't interfere with blocks (and weld the sprue, otherwise the blocks will count as total blocks and the script won't never stop), like this (typo in image :O ):
  • Have closeby a welder ship (an utility ship with welders) to intercept unwelded blocks. Maybe you'll need it for 3-5 blocks in all process, but it's better to do it when happens
  • Always run "setup" first, then "start" (the drone will auto align as first thing as well as after every section built).
6)TO DO LIST
  • Re-Write the guide to make it less intimidating; Is it any better? (16/07/2023)
  • Adding auto "hudlcd" setting to the log LCD;
  • Rewrite a better HUD for the printer;
  • automatic alignment between drone and welding surface; Done in V 3.1.0 (27/07/2023);
  • Rotor control based on active welded block; Done in Version 3.2.0 (28/07/2023)
  • A security check on versions of 2 scripts, in case they are not equal Done in Version 3.2.1 (29/07/2023)
  • Improving the rotor control; Done in Version 3.4.0 (09/08/2023)
  • Tag name bug fixed; Done in Version 3.5.0 (09/09/2023)
  • Slow mode for server performance; Done in Version 3.5.0 (09/09/2023)
  • A better format for Status LCD for long names; Done in Version 3.5.0 (09/09/2023)
  • A command to ignore the active welded block; Done in Version 3.5.2 (28/09/2023)
  • A check for a required initialization when recompiling drone; Done in Version 3.5.3(02/10/2023)
  • A check for any drone's connector locked when initializing the drone (to avoid exceptions); Done in Version 3.5.3(02/10/2023)
  • A better slow mode; Done in Version 4.0.0 (11/10/2023)
  • Precise Drone's Movement; Done in Version 4.1.0 (4/11/2023)
  • A workaround to check non terminal blocks;(very low priority dued to latest updates)

7)Example
VERSION 3.5.1 (Huge hauler, just the first minutes)
Last part of the printing:
Starting my warship:
VERSION 4.0.1 (A better hauler):
8)Outtro and last words
I should have covered everything. If you have suggestions or problems, write in comment. As last words, i'd wish to thanks all people helped me from Draconis Expanse server and from discord's Keen Software House, expecially Digi for his kindness and endless patience. And thanks to Malware and the API, cause without him and the repository, it wouldn't be possible.
And thanks again Malware who saved the scripts when i lost them like an idiot.

PRO TIP: When you finish printing the ship, before cutting the sprue, put some fusion fuel/uranium into the new ship's reactor, to empower it
This was my first big script. So, could be not polished or best of its kind, but it works well enough.
See you through the stars Kopeng.

Here there is an inventory manager script by me (has several functionalities of the ship utility script):
https://steamproxy.net/sharedfiles/filedetails/?id=3045706587
9)TDLR
  • load the station script into the station's PB first; add the [RPA].LOG to one lcd;
  • Load the drone script into the drone's pb, if you use the standard configuration, run "init_d" from drone's PB or station's, and it's done (only backwards thrusters, compared to the cockpit's orientation will be used).
  • Optionally, add the tag [RPA].STATUS to another station's lcd and [RPA].ACTIVE to a third one;
  • check the variable in station's pb custom data;
  • run "setup" into the station's pb;
  • run "start -toggle" into the station's pb;
  • stop the printing with "stop";
  • enjoy;
10)Troubleshooting
PROG BLOCK OVERHEATS
This should happen way less since V 4.1.1 (it's because the runtime exceeds the max value allowed by the server). In order to fix you can try to, as first test, turn off every other script except for RPA. Then, if the problem is still there, reduce the "MaxServerRuntime" in the station's CD. This will slow down more the script, and should avoid overheating problems. On average, RPA uses around 0.3 runtime, but has some spikes difficult to cut;
STATION SETUP NOT COMPLETED
This should occur only if you have both a tagged welder's group and individual welders tagged, or if you put the LCD to a group. Remember: you have to place at least 1 LCD called: [RPA].LOG (case sensitive!!!). Optionally (but higly suggested), another 1 lcd called: [RPA].STATUS (case sensitive!!!), and another 1 called [RPA].ACTIVE.
DRONE SETUP NOT COMPLETED:
First thing is to check the LOG lcd, cause all the important stuff will be written there. So, start loading the station's script. Because station only needs a rotor to be tagged and 3 lcds (or only one, the LOG one) it's kinda straightforward.
The drone has to be set in a specific way: cockpit oriented with the forward direction facing the welder floor. This means that backward thrusters are the only thrusters used by the script. And you have to group them in a single group and TAG THE GROUP! Don't tag them individually! The scripts will tagged them individually if the group is not detected but I still suggest you to group themAll this error are detected and shown in the LOG lcd. More specifically, the errors because of the thrusters can be:
  • Having more than one TAGGED group;
  • Having both a group tagged and individual thrusters tagged (coming for a previous recompile without a group already detected);
  • Having no group TAGGED nor individual thrusters tagged;
  • Having a group TAGGED with NOT BACKWARD thrusters;

DIFFERENT SCRIPT'S VERSION DETECTED

  • Try running setup first...
  • You have run setup but the error is still here---> you have different version of the script for drone or station. Check what script you are using;
  • If it's still there... write in comment.

THE DRONE FAILS TO ALIGN TO THE WELDER'S FLOOR:
This shouldn't happen, but the log will catch the problem. 99% means that the drone is heavily unaliged (more than 25° of pitch or yaw angle). In this case the script will stop. Now you have to correct the orientation manually a little bit. In any case, before start printing, you should run the comand "align" first, in order to check if the alignment is ok.

THE COMMANDS ARE NOT RECOGNIZED/DON'T WORK:

  • First, see if the command is typed correctly.. see this guide, or check in game, on the STATUS lcd, running "guide" (and "guide -off" to delete the text in the lcd).
  • Second: run "setup" first... 90% of problems are fixed by running setup;

RUN SETUP FIRST LOG
If this happens, is not a bug. Is because the script's runtime is exceeding the safe threshold. You can check in drone's PB the average runtime (or in the ACTIVE LCD, and an allert is triggered in the LOG LCD). If this happens, recompile and setup+start.

NEW VERSION DOESN'T WORK
As first check, delete all tags and custom data from both scripts, and initialize again both scripts.

IF YOU FIND ANY BUG, WRITE IN COMMENT
25 Comments
Reckless  [author] 1 Aug, 2024 @ 12:44am 
on the official discord
Braste84 31 Jul, 2024 @ 8:44am 
And wher can we find it?
Reckless  [author] 29 Jul, 2024 @ 4:48pm 
For whom play on SDX, Chrstophuck has released a new update to fix some problems
Braste84 29 Jul, 2024 @ 7:04am 
Encountered the same issue as Dr. Rak. The toolcore welders a basically derived from conveyer sorters, not ship welders, so the script is not able to handle them
So Street Like Elmo 27 Jul, 2024 @ 2:28pm 
Hey friend, SDX added Toolcore to the server a while back and it seems RPA doesn't play nice with it. Any chance you might update the script, or release the source to open the door for a fork?
Maniacal 2 Jul, 2024 @ 5:12pm 
Hey boss, using this on the SDX server I get the error saying RT critical slowing down
Ventox 9 May, 2024 @ 8:58am 
Hey there, I'm encountering an issue where when I attempt to run "setup" from the station PB it does nothing. In my Drone I get "SETUP COMPLETED" with all the custom data.
After that using "align" or "start -toggle", jus logs "RUN SETUP FIRST" on the [RPA].LOG LCD without any movement.
Reckless  [author] 9 May, 2024 @ 4:34am 
Have you load the script into your drone too? Both scripts have to be loaded before running the setup, and thus, the start command
Ohtar 9 May, 2024 @ 3:36am 
Hi. I setup the block names on station. Then load the script and try to run setup command from the programmable block but it says Unknown command. What am I missing? Could you help pls?
Reckless  [author] 22 Feb, 2024 @ 4:35am 
Hi. No, i'm sorry, it can't, because 5° is the tollerance i used for auto alignment. Decreasing it could cause infinite alignment loop where the rotor never stops (expecially in multy player with low simulation speed). So, you should see something around 5°. If is higher (too high), there could be a bug of some sort, but i recalled to have tested it plenty of time, so in case, lemme know