Genvid MILE SDK 1.34.0

Welcome to Genvid MILE SDK 1.34.0. This release is ready and stable for integration and can be used for local development and limited cloud deployment. We are still missing some features for a complete production deployment which can be provided through other software. Please contact us at if you’re planning a production deployment.

We are still committed to a regular pace for our releases until we get all the features done for a comfortable production deployment. We always work to ensure a smooth upgrade between releases and provide as much backward compatibility support as possible. A complete list of our Known Issues and Workarounds is available to you on our AnswerHub pages. Please contact us if you have any issues.

Current Functionalities

Here is a summary of our current functionalities. See Major Fixes and Changes below for the list of new features in this release.

  • Automatic synchronization between video and game-data streams.
  • Video streaming to YouTube and Twitch.
  • JavaScript SDK for embedded webpage.
  • Multiple distributed sources of A/V and Data.
  • Streaming additional arbitrary game events and notifications.
  • Scalable event messaging system.
  • Windows C++ API with a C# wrapper.
  • Video encoding (H264 + AAC).
  • Unity3D integration (Game and Management).
  • Unreal Engine integration (Game and Management).
  • D3D11 or raw frame video capture.
  • WASAPI audio capture.
  • Tools and scripts for managing your local and remote clusters, with example scripts for AWS and Azure.
  • Live video editing and basic composition effects (beta).
  • RTMP Ingest server (beta).
  • REST API to control the services (beta).
  • Metrics feed (beta).
  • Load-testing library.
  • Multiple integration samples.
  • Extensive documentation.

Major Fixes and Changes

Upgraded HashiCorp Stack

We upgraded the complete HashiCorp stack to their newest versions. See the upgrade notes for more information.

  • [terraform] Upgraded Terraform from 0.14.7 to 1.1.5.
  • [consul] Upgraded Consul from v1.9.3 to v1.11.2
  • [nomad] Upgraded Nomad from v0.12.1 to v1.2.4
  • [vault] Upgraded Vault from v1.2.4 to v1.9.3.
  • [hashi-ui] Upgraded Hashi UI from v1.0.0 to v1.3.8

Upgraded AWS Default Instances

  • [aws] Improved AWS instances EBS drives by using the gp3 volume type instead of the default.
  • [aws] Upgraded AWS T2 instances to T3 by default.
  • [aws] Upgraded the default game instance type from g4dn.xlarge to g5.xlarge.
  • [aws] Improved AMI build by using the T3 instance type instead of the T2 and g4dn.

Minor Changes and Other Fixes

  • [documentation] Corrected documentation where it referred to the wrong version of consul-template.

  • [toolbox] Fixed an issue where some file handles remain open after some Python API returns.

  • [toolbox] Fixed an issue preventing connecting to Consul when some environment variables are set improperly. See the upgrade notes for more information.

  • [toolbox] Fixed an issue where the script environment changed after calling ConsulTemplateTool.load_config_template.

  • [toolbox] Improved genvid.toolbox.SDK.setup() method by using the update_images() code.

  • [toolbox] Removed low-value debugging logs from output generated when running genvid-ami delete.

  • [toolbox] Fixed an issue where genvid.toolbox.RolesPathNotFoundError didn’t report the faulty path correctly when printed out.

  • [toolbox] Improved genvid.toolbox.DockerTool by setting the timeout parameter through the GENVID_DOCKER_API_TIMEOUT environment variable.

  • [toolbox] Improved genvid-bastion reinstall by clearing the previous jobs on the bastion before reloading the definition from the disks. This makes for a cleaner upgrade path.

  • [toolbox] Improved the reliability of the upgrade instructions by adding updating your local cluster during the upgrade process.

  • [aws,azure] Fixed an invalid link for the Documentation

  • shortcut during the VM images setup.

  • [terraform] Marked all sensitive variables and outputs as sensitive explicitly in the Genvid MILE SDK modules.

  • [bins] Improved bins by making the binsd job install along with the SDK config instead of a setup job.

  • [cluster-api] Fixed an issue where the cluster-api was using the static/vault-assets folder during a remote cluster setup, instead of the ROOTDIR/cloud-services folder.

  • [sdk] Fixed an issue where the unity editor would crash when stopping the scene.

  • [composed] Improved composition rendering during an unplanned disconnection by validating the source availability.

  • [gvencode] Fixed an issue where the result of game-data cropping is not as expected when a source disconnects or reconnects.

  • [gvencode] Fixed an issue where using standalone mode in a cloud cluster causes an audio/video freeze.

  • [gvencode] Fixed an issue where GVEncode crashed when a transition is applied.

  • [studio] Updated Studio clients to keep track of audio and video unique IDs.

  • [studio] Fixed an issue where the audio auto-follow setting toggled when changing audio settings or when switching scenes.

  • [ingest] Fixed an issue where the Ingest sample repeated connection attempts when no streams are present.

  • [nats] Upgraded nats-server from 2.2.6 to 2.7.2.

  • [nats] Improved NATS bootstrap configuration by using any server class nodes instead of only server-0.

  • [nats] Improved NATS visibility by moving it from a setup job to a cluster job.

    NATS now appears in your Cluster UI list of jobs and is started and stopped like any other configurable job.

  • [rootd,leafd] Fixed a potential memory leak that could occur in either rootD or leafD.

  • [web-sdk] Fixed an issue where Twitch’s setStreamInfo function isn’t called when a leaf change occurs.

  • [twitch extension] Fixed an issue where the web job wasn’t starting due to duplicate environment variables (SSL and ENDPOINT) in cloud deployment.

  • [twitch extension] Added setting endpoint documentation to avoid CSP issues with the latest Twitch Extension Policies update.

  • [twitch extension] Fixed an issue causing the overlay to freeze or disappear when using PiP (Picture-in-Picture).

  • [samples] Improved samples scripts by checking if the MSBUILD environment variable is set before looking for the path in the registry.

  • [ue4 cube sample] Updated the top UE4 version supported for the Cube Sample in the documentation.

  • [loadtester] Fixed the loadtester cloud job template incorrectly setting a force_pull to true.

  • [ue4 plugin] Fixed compilation errors which occurred with projects using the IWYU (Include-What-You-Use) model.

  • [ue4 plugin] Fixed an issue causing a crash while building a UE4 project in debug mode.

  • [ue4 plugin, unity plugin, sdk] Fixed an issue causing the SDK to not properly destroy all its resources when the scene is stopped in the editor.

Known Issues

Only one application with the Genvid MILE SDK integrated may run at a time if not launched using Nomad.

If an application using the Genvid MILE SDK is launched without Nomad, a default session name is assigned to it. This is useful when testing your application in the Unity engine, Unreal engine, or booting your application manually.

Currently, the Genvid MILE SDK is unable to support multiple applications launched this way unless you change the environment variable GENVID_SESSION_NAME to a unique name. You can also launch your applications via Nomad to avoid this issue.

Azure reports requested instance size not available.

On Azure, we are using a compute instance type Standard_NV6 for the game machine. For some accounts, only the promo version of this instance type is available (Standard_NV6_Promo).

When doing the Terraform setup on the Azure module, you may encounter the error:

The requested size for resource 'XXXX-game-1' is currently not available in location 'XXXX'

As a workaround:

  1. Go to your Terraform Settings page.
  2. Change the instance_game_type to Standard_NV6_Promo.
  3. Go to the Commands page.
  4. Run Plan apply -> Apply again.

Streaming to an iOS device with the Standalone player is currently not functional.

Streaming to an iOS device (iPhones and iPads) with the Standalone player is currently not functional. This issue will be fixed in a future release.

When changing Availability Zones in Azure, resources need to be destroyed and rebuilt.

When changing AZs in Azure, deleting the public IP might fail due to it not being detached from the virtual machine. This is a bug in the Terraform provider. See the issue on the HashiCorp GitHub for more information.

As a workaround, manually detach the offending public IPs from the virtual machines in the Azure portal.

genvid-sdk upload-images-sdk command fails to upload the Docker image on Azure Cloud.

Some Docker images can’t be uploaded to Azure Cloud using the genvid-sdk upload-images-sdk command due to large sizes. (You will get an SSL error and a Max retries exceeded message.)

As a workaround:

  1. Open the Azure UI.
  2. Upload your image manually.
  3. Run genvid-sdk upload-images-sdk again.

Required to manually remove the subdomain NS record when updating the subdomain on an existing AWS cluster.

When creating an AWS cluster using basic_cluster_alb_ssl or minimal_cluster_alb_ssl, the domain and subdomain are provided. When updating an existing cluster’s subdomain, the route53 NS record for the previous subdomain needs to be removed manually from the main domain. This is due to how the NS record is handled within our Terraform.

Unable to delete subnets in cluster basic_cluster_alb_ssl using AWS.

When changing subnet_cidr_block_size in basic_cluster_alb_ssl, decreasing the number of AZs, or reordering existing AZs, the cluster will get stuck trying to delete the subnets.

Reapplying the configuration won’t resolve the issue.

As a workaround, delete and recreate the cluster.

Bastion cluster Settings page modal window not closing.

In the Bastion Settings page for a cluster, the Properties modal window for custom tags doesn’t close when you click outside of it.

As a workaround, click on Properties again to close the modal window.

Studio UI becomes unresponsive.

In a case where bins and/or NATS services became unhealthy, the Studio UI will became unresponsive.

As a workaround, restart the Studio job once the bins and NATS jobs are back to healthy states.


Loading configurations in the incorrect order can overwrite values.

Whether you’re using SSL on a cloud or a local cluster, if you load youtube.sample.hcl before loading the web sample, the web sample will overwrite the value associated with the embed_ssl from the web.hcl file.

Large NTP time offsets will prevent the stream from playing.

If you encounter large NTP time offsets, your stream may stop playing. As a workaround, make sure that the game machine is configured to update its clock automatically. For local configurations, replace the AWS IP address with

See the AWS configuration section for more information.

Studio can’t take inputs of the same control from multiple windows.

If Studio is opened in more than one browser window and inputs are received from different sources to one control, the final value will then bounce between the different inputs instead of updating it to the latest one. For example, in Audio Mixer Widget, if a user changes the slider of Master Gain to 20 db and another user then changes it to 0 db, the slider handle will bounce between 20 db and 0 db instead of being set to 0 db.

Sending input from multiple Studio windows to one control is not recommended until we resolve the issue.

The application doesn’t work properly after Windows comes back from sleep.

Nomad has some difficulties with sleeping jobs, including itself. This is unlikely to get fixed in Nomad, but shouldn’t happen in a production environment. The best workaround at present is to not allow Windows to go to sleep when you are running the service, or simply to restart the service with a genvid-bastion reinstall. (Unfortunately, genvid-bastion restart is not sufficient.)

The SDK clamps framerates under 1.0.

To prevent issues, we raised the lower limit for the framerate to 1.0 for any stream. The SDK will clamp the value to 1.0 FPS if it’s less than 1.0.

Default value for an Azure resource group name may be too long.

If no values are provided for the variable resource_group_name, the value is set to a combination of {bastionid}-{clustername}. This can yield names longer than 64 characters, which is the maximum number of characters allowed for an Azure resource group name.

To avoid this problem, always provide a value of 64 characters or less for the variable resource_group_name.

See the Azure Github for more information on Azure naming conventions.

AWS clusters subnet collision error.

If you reduce the subnet_cidr_block_size and increase the number of AZs for an AWS cluster at the same time, it causes a subnet collision error.

If you encounter this issue, reapply the configuration to resolve it.

No new tags on Azure disk when updating a cluster.

When applying new tags to Azure clusters, tags will not be applied to disk unless the virtual machine instance that owns the disk gets recreated during the apply process.

As a workaround, delete and recreate the cluster to resolve the issue.

Cluster names are limited to 64 characters.

Cluster names are limited to 64 characters due to limitations with the file system in Windows. Things like the system’s username and cluster name factor into the max number of characters of the file directory.

While it is technically possible to go above 64 characters, the results can be unpredictable.