Skip to content

Overview

FileBeam is a Python application that lets you upload your games files in appropriate repositories.

New repository versions are only created when one or more new files you uploaded in them have changed. In other words if your language pack or if your DLC files haven’t changed, no new repository versions will be created.

Quick setup

Setting up the SSN upload

  1. Copy the repository ID that you want to use by clicking on the copy icon.
  2. Create a .json (the name isn’t relevant, but we will refer to it as repo_config.json) file with the following structure:
[
    {
        "repositoryName": "WINCOREGf7c6c76f-d9c7-4056-8563-xxxxxxxxxxxxx",
        "source": "C:/UltraGames/YourGame/"
    }
]
  1. Replace the repositoryName with the repository ID you copied earlier and the source path with the path to the folder containing the content you wish to upload.

Pro tips:

Pay attention to these details, otherwise, the upload will fail.

  • Make sure to have an executable file.
  • Use only forward slashes in the file path.
  • Include a slash at the end of the file path, before the quotation marks.
  • Include a comma at the end of each line if the next line also has text.
  • If you’re uploading to several repositories at once, include a comma after the closing curly bracket of each repository, except after the last repository.

Getting filebeam

The dependencies necessary to upload files to a repository can be found below, separated by environment:

Running filebeam

To do this, you need to use an account that is either the company owner or has Admin permissions within the company. Other accounts will see an error message when trying to execute the filebeam script.

  1. On the CMD tool of your choice, navigate to the following folder within the downloaded archive:
cd {download_location}\sdk-direct6\DIRECT6\deploy\
  1. Then run this command to start the upload:
..\..\setup\python38\python.exe filebeam.py --email=your_account@email.com --repositories_config={file_location}\repo_config.json
  1. Enter your password, which won't be visible. image
    • If your game's executables haven't been signed and protected with Ultra's DRM, you will be prompted to define if the repository should be flagged as protected or unprotected.
      • If your game is F2P and doesn't require any DRM protection, you can mark it as unprotected.
      • If your game is paid and it hasn't been signed, please contact developers@ultra.io for assistance.
  2. Wait for the upload to complete, then refresh the page in the GDC. A new version of the repository should be added, and you can verify that IDs are identical. imageasdasd

Congratulations, your first file has been uploaded on Ultra!

Detailed configuration

Creating the repositories_config.json file

The repositories_config.json (name can be changed) file is used to list all the repositories to deploy with their sources and their filters.

  • repositoryName: the repository name to deploy. This field is required
  • source: the path to the content of the repository to deploy. This field is required
  • exclude: folders and files to exclude during deployment. This field is optional
  • include: folders and files to include during deployment. This field is optional
[
    {
        "repositoryName": "WINCOREGbc2d6283-f9f5-4be8-840a-7ea46c156760",
        "source": "C:/tools/DIRECT6/samples/source/",
        "exclude": "subfolder/*;!subfolder/test.txt"
    },
    {
        "repositoryName": "WINDLC2d6ca298-dd0d-48f9-bfc7-6ee54c6d6003",
        "source": "C:/tools/DIRECT6/samples/source_dcl1/",
        "include": "subfolder*;!*.txt"
    },
    {
        "repositoryName": "WINDLC61949bbf-b7a6-4a99-a4aa-a3cf81b96aa0",
        "source": "C:/tools/DIRECT6/samples/source_dcl2/"
    }
]

Configuring Exclude and Include Filters

This functionality allows you to deploy a specified set of files and folders from a source directory containing a larger set of files or, on the contrary, exclude a set of files.

Arguments and Information:

  • Wildcard character: *
  • Wildcard negation character: !
  • Files and folders are separated by a semicolon: ;
  • Path to files and folders are relative to the specified source path
  • In case of a conflict, files in the exclude filter will override those in the in include filter

The script filebeam.py relies on the Solid State Networks Direct 6 SDK to deploy on the Ultra platform. This SDK does NOT scan through your entire source paths in search of all the files that you have included or excluded in your filter list, therefore they will not display an error when files or folders are missing. The missing files or folders will be ignored so deployment continues uninterrupted by incorrect filters.

Examples

Exclude Folder Sample

This filter will exclude the languages directory, but include every other file and folder

exclude=languages/*

Exclude All Files in Folder Except for One Specified File

This filter will exclude all files in the languages directory except for en-us.json.

exclude=languages/*;!languages/en-us.json

Include only files with a specific extension

This filter will include ONLY files that end with the .jpg extension, regardless of which folder they are found in Include Specified Folders and a Specifed Filename Format

include=*.jpg

Include Specified Folders and a Specifed Filename Format

This filter will include ONLY the named folders, and files whose name begin with "file"

include="dedicated server/*;dlc/*;file*"

Include Specified Folder but Exclude a Specified Subdirectory of that Folder

This filter will include the named folder, its files and subdirectories except for the the "gotham" subdirectory

include=dlc/* --exclude=dlc/gotham/*

Another method for accomplishing the same filter using wildcard negation:

include=dlc/*;!dlc/gotham/*

Checking Filter Output

To check the contents of the files in your release and whether your filters worked the way you expected them to, open the metafile associated with your release. A copy of the last metafile created is stored under %HOMEPATH%\AppData\Local\Ultra\sdkdirect6\metafiles\repositoryName. In this example the repositoryName=llama-game o we will get the meatfile.json under %HOMEPATH%\AppData\Local\Ultra\sdk-direct6\metafiles\llama-game

Executing Filebeam

ParameterType/UsageDescription
emailstringemail of the ultra user
repositories_configpathPath to the repositories configuration file
--cicdbooleanIf added, automatically set to true. The script will get the password of the ultra user directly in the file ultra_auth.json. Convenient for CICD pipeline. Cannot be used if your otp device is active
--drmbooleanIf added, automatically set to true. Then the script will get the password of the ultra user directly in the file ultra_auth.json. Convenient for CICD pipeline. Cannot be used if your otp device is active