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
- Copy the repository ID that you want to use by clicking on the copy icon.
- 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/"
}
]
- 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.
- On the CMD tool of your choice, navigate to the following folder within the downloaded archive:
cd {download_location}\sdk-direct6\DIRECT6\deploy\
- 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
- Enter your password, which won't be visible.
- 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.
- 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.
- 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.
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
Parameter | Type/Usage | Description |
---|---|---|
string | email of the ultra user | |
repositories_config | path | Path to the repositories configuration file |
--cicd | boolean | If 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 |
--drm | boolean | If 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 |