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.
In This Section
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:
- Install the new SDK.
- Run the script
install-toolbox.py
from the new SDK. - 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:
- Set up a new wingame AMI that matches the new version.
- 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:
Go to the
/samples/cube/web
directory.Build the website.
py web.py build
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
Upgrading from Older Versions¶
Note
If there aren’t specific instructions listed for a version, then there aren’t any special steps for upgrading that version.
- Upgrade from 1.0.0 to 1.1.0
- Upgrade from 1.2.0 to 1.3.0
- Upgrade from 1.3.0 to 1.4.0
- Upgrade from 1.6.0 to 1.7.0
- Upgrade from 1.7.0 to 1.8.0
- Upgrade from 1.8.0 to 1.9.0
- Upgrade from 1.9.0 to 1.10.0
- Upgrade from 1.11.0 to 1.12.0
- Upgrade from 1.12.0 to 1.13.0
- Upgrade from 1.13.0 to 1.14.0
- Upgrade from 1.15.0 to 1.15.1
- Upgrade from 1.16.0 to 1.17.0
- Upgrade from 1.17.0 to 1.18.0
- Upgrade from 1.18.0 to 1.19.0
- Upgrade from 1.19.0 to 1.20.0
- Upgrade from 1.20.1 to 1.21.0
- Upgrade from 1.21.2 to 1.22.0