Upgrade from Previous Versions

Upgrading the Genvid SDK from one version to another may include some manual steps. This page includes any steps required to update to version 1.23.0 from the last version. If you’re upgrading an older version of the SDK, start with any special upgrade instructions for your version found here.

General Upgrade Instructions

Upgrade the Genvid SDK

As Python environments are becoming more complex due to multiple dependencies, you might encounter cases where one package will conflict with another. A solution is to create virtual environments for different projects, allowing them to install their dependencies without impacting other projects. If you encounter conflicts when installing the toolbox, or if you just want to work in a more contained environment, we suggest you create a virtual environment.

To set up the new SDK locally:

  1. Install the new SDK.
  2. Run the script install-toolbox.py from the new SDK.
  3. Run genvid-bastion reinstall --reconfigure -b mybastion -uml to update your bastion.

Update Your Broadcast Website

If you used code from the samples we provide in your own project, note that we recently enforced a best practice concerning service discovery using consul in those samples. You should check again the samples and update your project accordingly. We invite you to use the consul health api instead of the catalog api to fetch the url of your services, since it is more likely that the url will point to a healthy service.

Update Your Game

To update your game without applying new features, just replace the old genvid.dll from the previous SDK with the one from the new SDK. The old plugins and integration should work as-is, with the exception of the specific upgrade instructions below.

Attention

Always follow the full upgrade path for the Genvid SDK version you’re using. For example: If you’re upgrading from version 1.6.0 to 1.10.0, start by upgrading from 1.6.0 to 1.7.0 then continue with each version.

See the full list of upgrade instructions for your specific version.

Upgrade the Javascript API

You should also upgrade the Genvid JavaScript API on your website.

Update Your Cluster

We strongly recommend keeping your old clusters as-is and creating a new one for the update.

To create a new cloud-based cluster, follow the standard instructions:

  1. Set up a new wingame AMI that matches the new version.
  2. Create new clusters.

To create a new local cluster, follow the standard instructions listed in the Initialize a Local Cluster section.

Once you have replaced all your clusters, you can remove the old SDK repositories from the Modules Section page.

Updating an Existing Cluster

Warning

Updating your cluster can replace all your instances and even erase your current configuration. We recommend not updating a live cluster. If you do, carefully check the changes before applying the plan.

You can update the module used to build your cluster by clicking on Reimport Module in the module section of your cluster infrastructure, then select the module new version and import it. Finally, click apply in the Terraform section.

Note

Some changes can take time to propagate to AWS. This is especially true for IAM roles and policies, which could then create some conflicts when recreated. Re-applying the Terraform plan should fix the problem.

Update Genvid SDK Samples

Along with your own project, make sure you update any of the Genvid SDK samples you’ve previously installed.

Upgrade from 1.22.0 to 1.23.0

Changes to the Cube Samples

The Tutorial sample is now called the DirectX Cube sample.

The DirectX sample, the Unity Cube sample, and the Unreal Engine 4 Cube sample no longer have a web part integrated in them. This function is assumed by the new Web sample. Each engine used to have its own web site included in the same folder. For example for Tutorial it was in /samples/tutorial/web. Now the new Web sample is the web site for any engine and is located in /samples/cube/web.

The new samples DirectX Cube, UE4 Cube, Unity Cube, the Web sample, and Twitch extension are now located in /samples/cube/. You need to build and load the new Web sample as an independent sample on your clusters in order to get a website running. Here’s how:

  1. Go to the /samples/cube/web directory.

  2. Build the website.

    py web.py build
    
  3. Load the website.

    py web.py load
    

The Twitch extension is now just an extension. You can use it with any of the DirectX, Unity, or Unreal samples. You will need the Web sample to run at the same time as it serves as the backend for the Twitch extension.

The plugins for UE4 and Unity are now located in the folder /engine-integration/. The file package.py for Unity is in /engine-integration/unity/ and has to be used from there.

The UT4 sample is now located in /samples/.

Engine Integration

We changed the location of the engine integration plugins. They are now located in the /engine-integration/ folder.

The /engine-integration/ue4/ folder contains a script to help you install the Genvid SDK along with other useful classes and plugins for Unreal Engine 4 projects. How you prepare, build, and load your UE4 project remains the same.

The /engine-integration/unity/ folder contains a script to help you generate the genvid.unitypackage asset package along with the asset package itself. You need to create the Unity package for your project before preparing, building, and loading your project.

py package.py all

See the Engine Integration section for more information.

command Service is Now Named webgateway

We’ve updated the command service, which is now webgateway. You should check your integration backend code and change the Consul discovery queries so that they look for the service webgateway instead of command.

The webgateway secret is now located at genvid/webgateway in Vault. You need to modify your HCL configuration accordingly.

If you modified the Nomad templates for the Genvid services, you may want to pass the secret through the GENVID_WEBGATEWAY_SECRET instead of GENVID_COMMAND_SECRET.

If you don’t want to or can’t modify your existing project, you can also set the Consul key genvid/compatibility/legacy_command to true.

Tick and Studio Sample Changes

We have increased the memory requirement for the rootd process, which can now use a majority of the memory available on the default internal_worker instance type. If you are using the Studio or Tick samples, this could lead to some of the tasks not being able to be allocated if you are running a single instance.

We recommend you add an extra instance on your cluster when running the Tick samples to avoid cases where some services won’t start. See the TICK Stack Metrics and Genvid Studio sample documentation for information on how to do this.

Terraform Modules Changes

We renamed the alb_ssl_cluster and alb_ssl_cluster_vpc to be more consistent with the basic_cluster convention.

Previous Name New Name
alb_ssl_cluster_vpc basic_cluster_alb_ssl
alb_ssl_cluster minimal_cluster_alb_ssl

Twitch Embedded Player and SSL Support

Using the Twitch Embedded Player now requires an SSL protected website. This means you must use SSL clusters with names that terminate in ways that indicate they use SSL (such as _alb_ssl).

When using an SSL module, you need to load its leaf endpoint and a web endpoint in your cluster configuration using the loadEndpoint() method in /samples/cube/web/web.py.

    def loadEndpoint(self):
        leaf_endpoint = self.get_leaf_endpoint()
        web_endpoint = self.get_web_endpoint()
        config = {
            'version': '1.7.0',
            'config': {
                'twitch': {
                    'cloud': {
                        'endpoint': {
                            'leaf' : '',
                            'web' : ''
                        }
                    }
                }
            }
        }
        config['config']['twitch']['cloud']['endpoint']['leaf'] = leaf_endpoint
        config['config']['twitch']['cloud']['endpoint']['web'] = web_endpoint
        return config

If you want to stream Twitch embedded on your website, you need to load twitch.sample.hcl located in samples/streaming_services to ensure that it is populated accordingly. It has a new configuration to allow embedding.

config {
  twitch_embed {
    enabled = true
  }
} // end of config