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

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

一般的な更新方法

Genvid SDK のアップグレード

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

  1. 新規 SDK をインストールする。
  2. 新しい SDK から install-toolbox.py スクリプトを実行する。
  3. genvid-bastion reinstall --reconfigure -b mybastion -uml を実行してお使いの bastion をアップグレード。

配信ウェブサイトのアップデート

プロジェクトで弊社提供のサンプルのコードを使用する際に、サンプルで 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.21.2 から 1.22.0 への更新。

Genvid SDK Prefab for Unity

連番可能なオブジェクトを提供する場合は、 SubmitGameData ではなく、 Streams プレハブ関数 SubmitGameDataJSON を呼び出す必要があります。文字列やバイト配列などの連番化されたペイロードや raw のペイロードが既にある場合は、 SubmitGameData メソッドを呼び出す必要があります。」object 」 型の SubmitGameData オーバーロードは非推奨となりました。

具体的な使い方については samples/unity/package/Assets/Genvid/Scripts/GenvidStreams.cs を参照してください。

Unity Sample の構築と設定

Unity Sample build.cs ファイルを更新し、Assets および ProjectSettings と同レベルの Build ディレクトリにプロジェクトを生成するようにしました。以前のバージョンの config/game.hcl を使用している場合、 unity.binary.unity.path を更新して、新しいプロジェクトの場所を反映させる必要があります。

例: \app\*Build*\ProjectName.exe

SDK.upload_images* メソッドのデフォルト値の変更

upload_images() および upload_images_sdk() メソッドの update_config パラメータを変更し、デフォルトでは設定を更新 しない ようにしました。同じ処理を update_images_config() で行うこともできます。

コマンドラインの動作では、デフォルトで設定が更新されます。

Terraform 0.12 アップグレード

Terraform をバージョン 0.12 にアップグレードしましたが、以前のバージョンの Terraform モジュールとの下位互換性はありません。Genvid SDK のストックモジュールを新バージョンと互換性のあるものに更新しました。

重要

既存のクラスタはデフォルトでは新しいモジュールを使用しないため、クラスタ上で実行される Terraform コマンドが失敗します。クラスタを新規作成しないで既存のクラスタを使用する場合は、Terraform 0.12 と互換性のあるストックモジュールやカスタムモジュールを使用するように更新を行う必要があります。

Genvid のストックモジュールを使用して既存のクラスタを更新する方法については、 upgrade procedure を参照してください。

カスタムモジュールを使用している場合は、Terraform 0.12 と互換性を保つためアップグレードを行う必要があります。

詳細は Terraform の公式解説書を参照してください。

カスタムモジュールのアップグレード

重要

カスタムモジュールのアップグレードは試行錯誤を繰り返すプロセスであり、実際に使用するクラスタでは実行すべきではありません。Terraform モジュールをアップグレードしている間に、実際に使用するクラスタのコピーを作成して作業することをお勧めします。すべてが期待通りに動作している場合にのみ、アップグレードされたモジュールを実際に使用するクラスタで使用してください。以下の手順では、開発用クラスタを使って作業する例を説明しています。

Terraform モジュール定義を含むリポジトリの一覧は、 Bastion-UI で確認できます。

  1. Bastion UI のページを開きます。

  2. Settings をクリックします。

  3. Modules をクリックします。

    注釈

    フォーマット SDK-#.##.# を使用したモジュール名は、Genvid のストックモジュールであり、このバージョンの SDK でアップグレードされたものです。使用しているカスタムモジュールのみ、手動でアップグレードする必要があります。

  4. アップグレードするカスタムモジュールを選択します。

  5. モジュールのローカルフォルダのパスをコピーします。

    フォルダパスがローカルでない場合は、モジュールをローカルディレクトリにコピーしてアップグレードを実行する必要があります。

  6. Windows エクスプローラでローカルフォルダを開きます。

  7. バックアップとしてモジュールリポジトリを別の場所にコピーします。

    アップグレード処理により、モジュールの定義が変更されます。アップグレードで問題が発生した場合に備えて、オリジナルのコピーを作成することをお勧めします。

  8. コマンドプロンプトを開きます。

  9. レポジトリフォルダに移動します。

  10. Terraform モジュールをアップグレードします。

    Terraform モジュールファイル (.tf) を含むレポジトリの各フォルダに対して:

    1. コマンドプロンプトでフォルダを開きます。

    2. アップグレードコマンドを実行します。

      コマンドはローカルの Genvid SDK インストールディレクトリにあるため、Terraform のパスを適宜調整します。たとえば、インストールディレクトが C:\genvid の場合:

      C:\genvid\bin\terraform init
      C:\genvid\bin\terraform 0.12upgrade
      

      アップグレードコマンドの出力でエラーが返ってくることがあります。必要に応じて修正してコマンドを再実行してください。

    3. コマンドで作成された .terraform フォルダを削除します。

    Terraform 0.12 用にアップグレードされたモジュールは、冗長でない構文となります。例えば:

    • 文字列補間をせずに直接変数を使用したもの。変数のみを含む文字列の場合、Terraform 0.12 で警告がでます:

      $"{var.value1}" => var.value1

    • コレクションのインデックスの値へのアクセスが変更されました:

      values.0.resource => values[0].resource

  11. モジュールがローカルに保存されていなかった場合は、アップグレードされたファイルを元の場所にプッシュされます。

  12. Bastion-UI Modules ページに戻ります。

  13. Refresh をクリックします。

    これにより、更新されたファイルが bastion に送られ、クラスタで使用できるようになります。

  14. Terraform ページに移動します。

  15. アップグレードするクラスタを選択します。

  16. REIMPORT MODULE をクリックします。

  17. 正しいモジュールが選択されていることを確認します。

  18. IMPORT MODULE をクリックします。

  19. Terraform 出力で報告されたエラーを解決します。

    0.12upgrade コマンドは、モジュールを Terraform 0.12 と互換性のあるものにするために必要な変更をすべて網羅しているわけではありません。エラーメッセージを参照して、モジュールファイルに必要な変更を行ってください。

    Genvid のストックモジュールに手動で変更を加える必要があるものには、以下のようなものがあります:

    • 配列を返す式についている不要な角括弧 [] を削除する。
    • モジュールはこれまで ignore_changes = true という設定を使用していましたが、これはブール値ではなくプロパティの配列を取るようになりました。キーワード all は、代替として使用する必要がありましたが、構成されたプロバイダのバージョンではサポートされていませんでした。 aws プロバイダのバージョンは、 vpc モジュールと同様に最新バージョンに更新されました。
    • formatlist メソッドを使用するには、文字列のリストをリストに適切にキャストする必要がありました。

    カスタムモジュールが Genvid モジュールをベースにしている場合は、アップグレードされたバージョンを参照して、新しい Terraform バージョン用にどのような変更されているかを確認してください。

  20. エラーの対応後、 Refresh をクリックして再度インポートしてみてください。

  21. PLAN APPLY をクリックします。

  22. 出力をチェックして、クラスタの変更が必要かどうかを確認します。

    • ほとんどの場合、 No changes. Infrastructure is up to date. で終了します。
    • 変更が必要な場合は、慎重に確認してください。リストされた変更が正しいと思われる場合は、 APPLY をクリックします。
    • エラーが発生している場合は、 Terraform モジュールの修正が必要です。ソースファイルで修正してから、もう一度試してみてください。