概要
この記事は、汎用2D/3Dゲームエンジンの「Godot(Godot Engine)」からエクスポートしたゲームを、IBM Cloud Code Engineで動かすまでの手順をまとめたものです。「Godot」はバージョン4.3を使用しています。
IBM Cloud Code Engineを使う理由
IBM Cloud Code Engineを使うことで、インターネットで公開するためのドメインやSSL/TLSサーバ証明書が自動で付与されるとともに、自動スケール機能があるため、ゲームの公開に大変向いています。
Godot(Godot Engine)
Godot(Godot Engine)は、汎用2D/3Dのゲームエンジンで、WindowsやMac、Linuxで使用することができます。Webブラウザ上で動くゲームや、スマートフォン、タブレット端末、PC向けのゲームを開発することができます。
公式Webサイト:https://godotengine.org/
本記事で使うGodotのサンプル
本記事では、GodotからHTML5エクスポートしたゲームを、コンテナとしてビルドし、IBM Cloud Code Engineで動かすまでを確認するためのなので、Godotのサンプルゲームである「Platformer 3D Demo」を読み込みます。
TLS証明書の上書き設定を行い、Godotからエクスポートする手順
Godotのプロジェクトをそのままエクスポートした場合、IBM Cloud Code EngineのようにSSL/TLSサーバ証明書が自動付与される場合は、SSL/TLSサーバ証明書が上書きされずにエラーが発生します。
したがって、Godot側でエクスポートする際に、SSL/TLSサーバ証明書の上書き設定が必要になります。
TLS証明書の上書き設定
Godotの画面で「プロジェクト」>>「プロジェクト設定」をクリックします。
「一般」タブ内の「設定のフィルター」で「TLS」を入力します。表示された「高度な設定」のトグルをオンにします。
HTML5としてエクスポート
Godotの画面で「プロジェクト」>>「エクスポート」をクリックします。
「追加」をクリックし、表示される「Web」をクリックします。
「エクスポート」画面で、「Web(実行可能)」を選びます。
「リソース」タブ内の「リソース以外のファイル/フォルダをエクスポートするためのフィルター」に、「*.crt」を入力します。
「プロジェクトのエクスポート」をクリックします。「index.html」として保存します。
エクスポートしたファイルのコンテナ作成
次の手順で作業を行います。Godotの公式ドキュメントのHow to Quickly Build, Deploy, and Serve Your HTML5 Gameを参考に実施しましょう。
Dockerfileの作成
Godotで「index.html」を保存したディレクトリ(Windowsで言えばフォルダ)内に、Dockerfileを作成します。
FROM nginx
COPY . /usr/share/nginx/html
Docker Hubにログイン
Docker Hub接続します。Docker Hubのユーザー名は、例として、workuser1 とします。
workuser1の部分を、各自のDocker Hubのユーザー名に読み替えて作業しましょう。
docker login --username workuser1
コンテナをビルド
Godotで「index.html」を保存したディレクトリ(Windowsで言えばフォルダ)内で、次のコマンドを実行します。
docker build -t workuser1/robo .
ビルドしたコンテナのイメージを確認するために、次のコマンドを実行します。
docker images
実行結果例 (IMAGE IDは、docker buildの実行毎に異なります。)
REPOSITORY TAG IMAGE ID CREATED SIZE
workuser1/robo latest 215e5221e3bf 3 minutes ago 298MB
コンテナレジストリにコンテナを登録
次のコマンドを実行し、ビルドしたコンテナを、Docker Hubに登録します。
docker push workuser1/robo:latest
完了すると、次のように表示されます。docker.ioで始まる部分を指定することで、Godotからエクスポートしたゲームを含むコンテナイメージを、IBM Cloud Code Engineをはじめ、コンテナ運用環境で動かすことができます。
The push refers to repository [docker.io/workuser1/robo]
20ac94203423: Pushed
11de3d47036d: Mounted from library/nginx
16907864a2d0: Mounted from library/nginx
2bdf51597158: Mounted from library/nginx
0fc6bb94eec5: Mounted from library/nginx
eda13eb24d4c: Mounted from library/nginx
67796e30ff04: Mounted from library/nginx
8e2ab394fabf: Mounted from library/nginx
IBM Cloud Code Engineでコンテナを動作
IBM Cloudにアクセスします。
IBM Cloud Code Engine にアクセスします。>> https://cloud.ibm.com/codeengine/overview
Project を作成
IBM Cloud Code Engine 上で、「Projects」をクリックします。
「Create」をクリックし、Projectを作成します。Projectは、アプリケーションを管理する場所です。
Project内に、アプリケーションを作成します。
アプリケーションの作成
workuser1の部分を、各自のDocker Hubのユーザー名に読み替えて作業しましょう。
Project画面で、「Applications」をクリックします。その後、「Create」をクリックします。
「Image reference」に、コンテナイメージをプッシュした際に取得した、docker.ioから始まるURLを記述します。
画面下に移動し、「Min number of instances」を0インスタンスにします。「Max number of instances」を2インスタンスにします。
なお、「CPU and memory」を「0.5 vCPU/1GB」でも今回のゲームであれば動かすことができます。
「Optional settings」の「Image start options」を開き、「Listening port」に「80」を入力します。
アプリケーション名の右隣が、「Deploying」から「Ready」になるまで待ちます。
画面右上の「Test application」をクリックします。
Godotからエクスポートしたサンプルゲームが表示されます。実際にプレイできます。
このとおり、ドメインとSSL/TLSサーバ証明書が付与されていることがわかります。
コンテナの稼働状況が表示されます。「Min number of instances」を0インスタンスにしたので、ゲームにアクセスしていないときは、0インスタンスになります。
まとめ
本記事では、Godotからエクスポートしたゲームを、コンテナとしてビルドし、IBM Cloud Code Engineで動かすまでの手順を確認しました。Godot(Godot Engine)で開発したゲームの実行環境として、IBM Cloud Code Engineが選択肢に入ればと思います。