Major Fixes & Changes

Initial Azure Support

This release includes a new Terraform module you can use to create a cloud infrastructure on Azure to run a Genvid cluster. We also added support in the Toolbox to interact with an Azure environment.

At this time, we only support the basic cluster module on Azure. We will add support for the load balancer and Twitch sample in a future release.

Cluster ID via an Environment Variable

The cluster ID is usually supplied as a command-line argument or takes the default value of local in the toolbox. You can now set the value with the environment variable GENVID_CLUSTER_ID. You can also use a profile to set the environment variable.

Note: Some commands require specifying the cluster ID in the command line. In these cases, it will default to local if the cluster ID is missing.

Hashicorp Suite Version Upgrade

We upgraded the included Hashicorp Suite of programs to the following versions:

  • Nomad 0.10.0

  • Vault 1.2.3

  • Consul 1.6.1

  • Terraform 0.12.19

Note: Because we have upgraded the Genvid SDK version of Terraform from 0.11 to 0.12, you will also need to upgrade any custom Terraform modules used with the platform. See the upgrade notes for more information.

The Terraform upgrade also required us to change how we load the Bastion-UI/Terraform/Cluster/Settings page. Because the page now takes longer to load, we added a spinner to indicate the loading time.

NATS is Now a System Job

NATS now runs on all nodes once a cluster is set up, instead of being started by the services job. This makes it possible to balance the load better under high number of clients.

Note: This means the Cluster UI no longer displays NATS in the list of jobs and can only be accessed through the Hashi UI.

Minor Changes and Other Fixes

  • [bastion-ui] Error no longer displays when clicking the browser back-button while in Terraform settings.

  • [bastion-ui] UI fixed on resizing the window.

  • [cluster-ui] Users can now see a list of all the S3 images in Cluster-UI that are being used by a cluster.

  • [cluster-ui] Added a spinner to indicate loading while waiting for a stream to start.

  • [cluster-ui] UI fixed for Microsoft Edge.

  • [cluster-ui] Added an ‘Advanced Editor’ toggle button to the cluster settings form. Users can now see/edit the settings in JSON format.

  • [commandd] Fixed issue where empty strings were returned as error descriptions.

  • [composed] Fixed an issue where a stream can replace a previous stream with a different ID under some circumstances.

  • [general] Updated various third party libraries to more recent versions.

  • [general] Updated Python scripts to use proper string comparison operation. (Python 3.8 no longer silently accepts “is” and recommends using “==” by default.)

  • [genvid-ami] Fixed a bug in genvid-ami setup which would prevent a new cluster from being created to setup the AMIs if one didn’t already exist.

  • [gvencode] Fixed a non-monotone increase dts warning in gvencode encoding muxer.

  • [gvencode] Fixed latency issue when composed loses its connection with gvencode and comes back.

  • [leaf] Fixed a bug preventing the metric genvid.leafd.map.processkeyvalues from being collected.

  • [nats] Upgraded the NATS Server to version 2.0.4.

  • [nats] The Genvid SDK is more resilient to eventual NATS failures.

  • [sdk] The composition data-stream bandwidth blueprint has been reduced by a factor of around 5, depending on the streaming context.

  • [sdk] Updated different elements of the communication protocol for future usage.

  • [sdk] The Streams format is now propagated from the SDK to the web client.

  • [sdk] Fixed an issue when the TCP & UDP socket was not properly closed, depending on the socket state.

  • [sdk] Fixed a problem where gamedata are not sent when sending an annotation with the same stream ID.

  • [sdk] Fixed an issue when calling the Genvid_Terminate() function that was taking too much time.

  • [sdk] Fixed the maximum number of in-flight annotations per stream (instead of globally).

  • [sdk] Fixed a problem where the game sends a huge number of Audio/Video/Data Streams when the RTMSP connection has been lost and restored.

  • [sdk] Fixed the swapchain sync-interval that specifies synchronizing the presentation of a frame with the vertical blank.

  • [sdk] Fixed a problem of submitted Audio/Video/Data streams accumulation when the SDK loses its connection with composed.

  • [statsd] The SDK services now connect to the local statsd service by default, rather than the first one found.

  • [statsd] Fixed an issue with the logs when statsd is not connected.

  • [studio] Transitions now queue instead of being discarded when busy.

  • [studio] Fixed the error message from audio-mixer when moving in and out of the editing dashboard.

  • [studio] Fixed Audio/Video desyncs when one source is stopped or crashes with Studio.

  • [studio] Fixed an issue where attempting to create a duplicate dashboard would issue a warning to user.

  • [studio] Added spinner which displays if steam is not yet started or if stream is not running and not paused.

  • [studio] Added string validation in the layout-creation dialog in Studio.

  • [studio] Added an error message to inform user that Studio lost connection with the backend service.

  • [studio] Added a reconnection algorithm when gvencode is disconnected from studio.

  • [studio] Added metric feedback about the web components.

  • [studio] Negative values as input for sliders are not supported in Video Mixer anymore.

  • [studio] Fixed an issue regarding the undo functionality not reverting properly.

  • [studio] Fixed issues regarding the scene selection not updating values properly.

  • [studio] Fixed a source-buffer quota issue on the frontend.

  • [studio] A default scene will be created if there are no scenes. The default scene will behave exactly like any other scene.

  • [studio] The delete icon will be disabled for the last scene left in the list to make sure that there is always at least one scene.

  • [studio] Fixed an issue when saving scenes that would save everything even if some sections were not selected to save.

  • [studio] Slider inputs won’t accept a value lower or higher than the min/max limits anymore.

  • [studio] Fixed the problem of auto streaming a scene if the delete/edit icon was clicked while Auto-cut is enabled.

  • [studio] The audio-follow button now works as intended.

  • [studio] Fixed various stability issues and increased responsiveness.

  • [terraform] Users can now initialize the cluster again by using INIT button on Terraform command page without having to re-import the module.

  • [terraform] Fixed support for boolean in Terraform settings.

  • [terraform] Fixed an issue about obtaining an empty command log when cloning a cluster.

  • [terraform] Tool-tips no longer get cropped when the description is too long.

  • [terraform] Fixed a bug where terraform destroy would fail to destroy a basic cluster.

  • [terraform] Fixed an issue where the variables were not loaded properly.

  • [tick] Upgraded telegraf from 1.3.5 to 1.13.1 to solve performance issues leading telegraf using a lot of CPU.

  • [tick] Added a telegraf task running on the game instance.

  • [toolbox] Reordered health check by severity.

  • [toolbox] Added filtering to genvid-clusters command line.

  • [toolbox] Added BastionAPI.terraform_regenerate_instance which allows regenerating the Terraform working-directory for a specific instance.

  • [toolbox] A UUID is now generated with every new cluster to be used in the backend configuration to create a unique path. This helps avoid name clashes when creating new clusters with the same name as previous clusters with backends like S3.

  • [toolbox] genvid-sdk upload-images no longer requires a cluster to be running to work.

  • [toolbox] upload_images* methods in sdk.py now default to not updating the configuration in all cases for a more consistent behavior.

  • [toolbox] Added a update_images_config method in sdk.py to update the images configuration of a cluster.

  • [toolbox] Introduced a new GENVID_VERBOSE_EXCEPTIONS environment variable which makes the toolbox print the full stack-trace when an exception is raised.

  • [toolbox] Added genvid-sdk package command to Zip files and folders.

  • [toolbox] Added genvid-sdk docker-package command to package Docker images.

  • [toolbox] Improved stability of the toolbox genvid-bastion install command to prevent failover race conditions.

  • [toolbox] Fixed Terraform init function when loading for the first time on a cloned cluster.

  • [toolbox] genvid-sdk load-config now accepts a path to Nomad templates as argument. (Before it only supported a static configuration.)

  • [toolbox] Added a new genvid.toolbox.ConsulTemplate class which is a thin wrapper around consul-template. This new class is now used to reimplement the ConsulTemplateTool mixin for more stability.

  • [toolbox] Endpoint /content is now deprecated from the Bastion API.

  • [toolbox] Clarified various error messages by adding more context.

  • [toolbox] Extended functionality of genvid-sdk load-config to load the tutorial using the command.

  • [toolbox] Introduced an optional arguement --job-template-dir to the genvid-sdk load-config command to specify the path of directory to load the Nomad template jobs.

  • [toolbox] Added a --with-consul-template argument to genvid-sdk load-config to run consul-template on the configuration file prior to loading it.

  • [toolbox] Fixed a bug in genvid-sdk clean-config which prevented using the command to partially remove a configuration.

  • [toolbox] Fixed an issue where genvid-sdk failed silently when using an extra slash for a valid GENVID_BASTION_URL.

  • [toolbox] Updated most dependencies to latest stable version.

  • [toolbox] Replaced consulate with consul-python.

  • [toolbox] Added a cloud provider option to genvid-sdk upload-images and upload-images-sdk.

  • [toolbox] Updated versions of pyyaml and colorama in the Python Toolbox.

  • [ui] The log panel now shows the proper log for the selected log entry, including specific filenames.

  • [ue4] Saving the settings multiple times in a row will no longer open multiple success messages.

  • [ue4] Fixed a bad HTTP URL address used to communicate with Consul in UE 4.22+.

  • [ue4] Added UE4 4.23 and 4.24 compatibility.

  • [unity] Deprecated the SubmitGameData method of the Genvid Unity Plugin and provided a more explicit SubmitGameDataJSON.

  • [vault] Fixed Vault initialization when there is more than one Vault instance.

  • [web sdk] Improved the web SDK synchronization algorithm.

  • [web sdk] The web SDK now logs its version at intialization time.

  • [web sdk] At connection time, the web SDK and the leaf check their mutual compatibility.

  • [web sdk] Removed a warning in the web SDK happening when using non-UTF8 gamedata.

  • [web sdk] Fixed an annotation problem where frames were sometimes cleaned when they shouldn’t be.