Skip to content

Python & Blueprint

Everything Ferryman does is available on one editor subsystem, UTAFerrymanSubsystem, from Python and from Editor Utility Blueprints (category ta Ferryman).

import unreal
ferry = unreal.get_editor_subsystem(unreal.TAFerrymanSubsystem)

Paths can be object paths, package names or folders (/Game/Props). Results are structs with success / error fields; check them.

# Pack assets (with what they use) into a parcel file.
result = ferry.pack_parcel(["/Game/Props/SM_Crate"], "C:/Temp/crate.ferry", "for the yard", False)
print(result.success, result.error, len(result.manifest.packages))
# Review plan, then land.
plan = ferry.plan_arrival("C:/Temp/crate.ferry", unreal.TAFerrymanDestination.INTO_FOLDER, "/Game/Incoming")
for i, item in enumerate(plan.items):
if item.state == unreal.TAFerrymanArrivalState.CONFLICT:
plan = ferry.set_arrival_action(plan, i, unreal.TAFerrymanArrivalAction.KEEP_BOTH)
landed = ferry.apply_arrival(plan)
print(landed.written, landed.skipped, landed.backup_folder)
Function What it does
pack_parcel(paths, file, note, for_older_engines) Packs assets with their dependencies into a .ferry file. Unsaved changes are saved first.
read_parcel(file) Reads a parcel’s table of contents.
gather_packages(paths) Lists what a selection would send, without packing.
plan_arrival(file, destination, folder) The review plan: target paths, New/Same/Differs, default actions, missing plugins.
set_arrival_action(plan, index, action) Changes one item’s action and updates the target names.
apply_arrival(plan) Lands a parcel as planned.
import_parcel(file, destination, folder) Plans with the defaults and lands in one step.

Destinations: KEEP_PATHS (Same paths), INTO_FOLDER, HERE (Straight into a folder). Actions: IMPORT, OVERWRITE (Replace), SKIP (Keep mine), KEEP_BOTH.

for peer in ferry.get_peers():
print(peer.project_name, peer.device_name, peer.engine_version, peer.trusted)
transfer = ferry.send_to_editor("OtherProject", ["/Game/Props"], "")
Function What it does
get_peers() Editors found on this machine and on the network.
send_to_editor(editor, paths, note) Packs and sends. editor is an editor id, a project name or a device name.
get_transfers(), get_transfer(id) Transfers of this session and their state.
get_offer_plan(id), accept_offer(id, plan, trust), decline_offer(id) Decide about an incoming parcel.
copy_for_ferry(paths), find_copy_source(paths), paste_from_editor(editor, token, destination, folder) Copy and paste between editors.
get_trusted_devices(), forget_device(device_id) Paired machines.
start_network(), stop_network(), is_network_running(), get_network_port() The network service.
pump_network(seconds) Lets network events run; needed in commandlets and long scripts, where the editor doesn’t tick.
Function What it does
link_to_editor(editor, paths, note) Sends and keeps the assets linked.
get_links() Live links of this project, both directions.
pause_link(id, paused), remove_link(id), sync_link(id) Pause or resume, remove, send now.
Function What it does
put_on_dock(paths, note, lock) Leaves a parcel on the dock; with lock, result.code holds the six-word code.
get_dock_parcels(include_taken, include_own) Parcels on the dock.
plan_from_dock(id, code, destination, folder) Copies a dock parcel here and returns the review plan; land it with apply_arrival, then mark_dock_parcel_taken.
import_from_dock(id, code, destination, folder) Takes a dock parcel and lands it with the defaults.
remove_from_dock(id) Removes a parcel this machine put on the dock.
create_connection_code(address) Makes a code (valid for an hour). Empty address: this machine’s first network address.
send_with_code(code, paths, note) Sends to the editor that made the code.
get_local_addresses(), get_public_address() This machine’s addresses; the public one is asked from a STUN server.
Function What it does
start_listening(), stop_listening(), is_listening() The microphone.
send_ticket_by_sound(paths, profile) Plays a ticket for assets.
send_material_by_sound(path, profile) Plays a material instance’s parent and parameters.
send_placement_by_sound(profile) Plays the placement of the selected static mesh actors.
send_text_by_sound(text, profile) Plays a short text.
start_sound_check(profiles), get_sound_check_results() The sound check.

Profiles: ROBUST, NORMAL, FAST, ULTRASONIC.

Function What it does
open_panel(page) Opens the panel on "Editors", "Transfers", "Dock", "Links", "Code" or "Sound".
open_parcel_review(file, folder) Opens the review for a parcel file.
get_device_id(), get_device_name(), get_editor_id() Who this editor is.
get_sender_info() The engine and package versions written into parcels.
get_work_folder() The project’s Saved/Ferryman folder.