以前のバージョンからのアップグレード

あるバージョンから別のバージョンの Genvid SDK にアップグレードする際には、いくつかの手順があります。このページでは、最後のバージョンからバージョン 1.30.0 にアップデートするために必要な手順を説明します。SDK の以前のバージョンをアップグレードする場合は、 こちら で、ご使用のバージョンのための特別なアップグレード手順から始めてください。

一般的な更新方法

Genvid SDK のアップグレード

新規 SDK をローカルにセットアップする方法

  1. 新規 SDK をインストールする。

  2. Python スクリプトを実行して、Genvid Toolbox をインストールする。

    py install-toolbox.py
    
  3. Genvid Bastion スクリプトを実行して、bastion をアップデートする。

    genvid-bastion reinstall --reconfigure -b {mybastion} -uml
    

配信 Web サイトのアップデート

プロジェクトで弊社提供のサンプルのコードを使用する際に、サンプルで consul を使用してサービスを発見しやすくなりました。サンプルを再度ご確認いただき、必要に応じてプロジェクトを更新してください。URL が健全なサービスを指す可能性が高いため、サービスの URL を取得するには、catalog api ではなく consul health api を使用されることをおすすめします。

ゲームのアップデート

新機能を適用せずにゲームをアップデートするには、以前の SDK の古い genvid.dll を新しい SDK のものに差し替えます。古いプラグインと統合は、そのままで動作しますが、以下の例外があります。

注意

ご使用の Genvid SDK のバージョンのアップグレードの順序に常に省略することなく従ってください。例えば、バージョン 1.6.0 から 1.10.0 にアップグレードする場合、 まず、1.6.0 から 1.7.0 へのアップグレードから始めて各バージョンを進めていってください。

ご使用の特定バージョンに関しては、 アップグレード手順一覧 を参照してください。

Javascript API のアップグレード

Web サイトの Genvid JavaScript API もアップグレードしてください。

クラスタのアップグレード

以前のクラスタはそのまま残し、アップデート用に新たに作成することを推奨します。

新しいクラウドベースのクラスタを作成するには、一般的な指示に従ってください。

  1. 新しいバージョンにマッチする 新規 wingame AMI の設定
  2. 新規クラスタの作成

新しいローカルクラスタを作成するには、ローカルクラスタの初期化 セクションに記載されている一般的な指示に従ってください。

すべてのクラスタの差し替えが完了したら、モジュールセクション ページから古い SDK レポジトリを削除して構いません。

既存クラスタのアップデート

警告

クラスタをアップデートすることで、全てのインスタンスを置き換えたり、現在の設定を削除することができます。ライブクラスタのアップデートは行わないことをお勧めします。ライブクラスタのアップデートを行う場合、プランを適用する前に、変更内容をよく確認してください。

クラスタの構築に使用するモジュールの更新には、クラスタのインフラストラクチャにあるモジュールセクションの Reimport Module をクリックし、新しいバージョンのモジュールを選択してインポートします。最後に、Terraform セクションの適用をクリックします。

注釈

変更の中には、AWS の適用に時間がかかるものが存在します。特に、IAM の役割やポリシーなどがそれにあたり、作成しなおす際に、競合が発生する場合があります。Terraform プランを適用しなおすことで、問題は解決されます。

Genvid SDK サンプルのアップデート

プロジェクトと一緒に、それまでにインストールした Genvid SDK サンプルのアップデート を行ってください。

1.29.0 から 1.30.0 へアップグレード

AWS クラスタで AMI オーナーを設定する。

SDK の以前のバージョンは、AMI オーナーの変更を部分的にしかサポートしません。SDK のこのバージョンはサンプルクラスタのすべてのタイプに game_ami_ownersserver_ami_owners を追加することで、すべてをサポートしています。

以前の AMI 設定ami_owner 変数を使っている場合、今後はリストである game_ami_owners を代わりに使う必要があります。 基本的に置き換えです。

ami_owner = "1234567890"

変更後:

game_ami_owners = ["1234567890"]

これは setup_ami モジュールを使っていても minimal_setup_ami モジュールを使っていても同様です。また、 game/aws サブモジュールを直接使っていても同様です。

genvid.toolbox.SDK.update_archive() は廃止されました。

代わりに genvid.toolbox.PackageArchiver.update_archive() を使うことができます。 このコードはほぼ同一です。

archive = "path/to/package.zip"
packager = PackageArchiver()
chksum = packager.stable_checksum(archive)
packager.update_archive(archive,
                        name="package",
                        version="dev",
                        chksum=chksum,
                        destdir="destination/folder")

ProjectTool.LOGS は廃止されました

ProjectTool.LOGS 属性は廃止されました。この属性は genvid.toolbox.ClusterTool に移動され、デフォルトのログの設定には実際に使われていませんでした。デフォルトのログ構成にアクセスするには genvid.toolbox.SDK.get_sdk_config() あるいは genvid.toolbox.LogsAPI.get_logs() を使用してください。

BastionTool.SETUP_LOGS は削除されました

この属性は使われておらず、コピーは genvid.toolbox.ClusterTool にあります。すべてのログのリストを取得するには genvid.toolbox.LogsAPI.get_logs() を使用します。

PackageFactory は廃止されました。

代わりに genvid.toolbox.PackageArchiver を使用できます。このコードはほぼ同一です。

from pathlib import Path

sources = Path("path/to/source")
archive = Path("path/to/package.zip")

packager = PackageArchiver()

# Use archive name relative to source path.
# For flatten, you can use PackageArchiver.flatten_path instead.
path2name = packager.relative_path(sources)

# Create the archive.
packager.make_archive(archive, sources.rglob("*.*"), path2name)

# Compute a checksum base on filename and content only.
chksum = packager.stable_checksum(archive)

# Update the archives in a destination folder.
packager.update_archive(archive,
                        name="package",
                        version="dev",
                        chksum=chksum,
                        destdir="export/folder")

DockerPackage を廃止しました。

この class は update_image() の明快なラッパーです。代わりにオリジナルのメソッドを直接使用できます。

Genvid Unity RESTCSharp API の Newtonsoft.Json.dll との依存関係を解消しました。

バージョン 2020.3.10f1 以来、Unity は Newtonsoft.Json.dll と依存関係にあります。Genvid Unity RESTCSharp API も Newtonsoft.Json.dll と依存関係がありましたが、 Newtonsoft.Json.dll の依存関係は解消され、Genvid Unity RESTSharp API は現在シリアライズとデシリアライズの部分で完全に非依存の状態です。このソースファイル Assets/Genvid/Editor/Scripts/GenvidWindow.cs は、シリアライズとデシリアライズのために Unity JsonUtility ライブラリを使えるよう、更新されました。その結果、Genvid Editor Unity パッケージにある Newtonsoft.Json.dll ライブラリは削除されました。