1.6.0 から 1.7.0 への更新。

このリリースで local.pycloud.py を非推奨とし、新しいツールに変更しています。

  • Bastion API : クラスタの管理と terraform スクリプトの実行を行う Web API
  • genvid-clusters : ローカルの bastion とクラスタの開始に使用するコンソールアプリケーション
  • genvid-clusters : クラスタの管理に使用するコンソールアプリケーション
  • genvid-clusters : クラスタの設定に使用するコンソールアプリケーション
  • directx.py : DirectX サンプルのサンプルスクリプト
  • unity.py : unity サンプルのサンプルスクリプト
  • ut4.py : ut4 サンプルのサンプルスクリプト

新しい構造体の動作をサンプルで確認することができます。それぞれのサンプルには、専用のスクリプトと設定ファイルがあります。 genvid.hcl のコンテンツは、複数のファイルに分割して、設定フォルダ内に存在します。そのため、すべての設定が同じフォルダにあることになります。

プロジェクトを更新する

プロジェクトをアップグレードするには、まず基本スクリプトとして directx.py を使用します。このスクリプトを使用することで、更新作業を簡略化することができます。

初めに、作業フォルダに directx.py をコピーして、 mygame.py といった適当な名前に変更します。

プロジェクトを構築する

アプリケーションや Web サイトを構築するために、前のステップでコピーした mygame.py スクリプトの buildbuild_cloud の関数を編集します。カスタマイズしたスクリプトがある場合は、この手順はスキップ可能です。

def build(self, targets: List[str]):
    if "game" in targets:
        self.pyrun(os.path.join(self.base_dir, "run.py"), "build")
    if "web" in targets:
        self.pyrun(os.path.join(self.base_dir, "web", "build.py"), "build")

def build_cloud(self, targets: List[str]):
    if "game" in targets:
        self.pyrun(os.path.join(self.base_dir, "run.py"), "all")
    if "web" in targets:
        self.pyrun(os.path.join(self.base_dir, "web", "build-docker.py"), "all")

py mygame.py build を実行して、動作を確認します。

genvid.hcl を移動して、ファイルを編集する

今回の更新により、設定を複数のファイルに分割できるようになりました。ゲームと Web を分離させることができます。

genvid.hcl をスクリプトに関連する設定フォルダに移動します。必要に応じて、このファイルを分割させることもできます。バージョン 1.7.0 に更新するために、 genvid.hcl ファイルにいくつかの変更を行う必要があります。

  1. version 番号を 1.7.0 に変更する。

  2. name セクションを削除する (現在、 settings info セクションに含まれています)。

  3. ジョブの depends_ondependencies に変更する。

  4. event セクションを削除する (現在、設定ディレクトリの events.json ファイルで処理を行っています)。

  5. ログは、さまざまな変更を行っています。 stdoutlogfilename は、 fileName という 1 つのフィールドに変更。 logfilename があれば、同じ値を fileName に設定します。 stdout が True の場合、 fileName「stdout」 に設定します。False の場合は、 fileName「stderr」 に設定します。

  6. プロジェクトのビデオ encode (入出力) と info は、このファイルに追加されています。

    settings {
      encode {
        input {
          width  = 1280
          height = 720
        }
        output {
          width  = 1280
          height = 720
        }
      }
      info {
        description = "Genvid Technologies Unity3D Sample"
        game        = "unitySample"
        name        = "unity sample"
      }
    }
    
  7. script セクションをすべて削除します。build コマンドは、Python スクリプトで直接処理できるようになっています。

プロジェクトで作成した mygame.py スクリプト内の CONFIG_FILES 変数を編集します。スクリプトが読み込む設定ファイルと、読み込む順番を指定します。

CONFIG_FILES = [
    dict(name="genvid", required=True), // The file you just moved
    dict(name="stream", required=True),
    dict(name="events", required=True),
]
"The configuration files to load in order. The order is important "
    "as later files may override values from previous files."

config/stream.example.hcl を編集して stream.hcl に名前を変更するか、stream.hcl を直接作成します。ここに、設定とシークレットを記述していきます。

version = "1.7.0"

settings {
  encode {
    stream {
      enable  = true
      addr    = "a.rtmp.youtube.com/live2"
      // YOU MUST CHANGE THE CHANNEL AND KEY VALUE
      service = "youtube"
      channel = ""
      key     = ""
    }
  }
}
secrets {
  disco {
    GENVID_DISCO_SECRET = "discosecret"
  }
  command {
    GENVID_COMMAND_SECRET = "commandsecret"
  }
}

Nomad テンプレート

テンプレートを templates/local および templates/cloud 内に移動します。スクリプトは、この場所にテンプレートを探しに行きます。テンプレートファイルの名前が、ジョブ名と一致していることを確認してください。

イメージのアップロード

スクリプトからイメージを直接アップロードすることができます。クラウドにアップロードする IMAGES のリストを編集します。

IMAGES = dict(game="my_game_dev_", web="my_web_dev_")
"The list of images to upload"

イベント定義を設定に移動する

config/events.json を作成して編集します。 mr.json ファイルの中身を game 要素にコピーします。

{
  "version": "1.7.0",
  "event": {
    "game": {} // Copy mr.json contents inside the braces
  }
}

オプション: 設定を複数のファイルに分割する

設定は複数のファイルに分割することができます。これは、Web サイトとゲームとで、別のチームが作業を行っている場合などに便利です。分割するには、別の設定ファイルを作成して、そのファイルに含める項目を移動させます。 genvid-sdkload-config コマンドも参照してください。