3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Godotでエクスポートしたプロジェクトを、IBM Cloud Code Engine で動かすまで

Last updated at Posted at 2024-09-17

概要

この記事は、汎用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」を読み込みます。

image.png

TLS証明書の上書き設定を行い、Godotからエクスポートする手順

Godotのプロジェクトをそのままエクスポートした場合、IBM Cloud Code EngineのようにSSL/TLSサーバ証明書が自動付与される場合は、SSL/TLSサーバ証明書が上書きされずにエラーが発生します。
したがって、Godot側でエクスポートする際に、SSL/TLSサーバ証明書の上書き設定が必要になります。

TLS証明書の上書き設定

Godotの画面で「プロジェクト」>>「プロジェクト設定」をクリックします。
image.png

「一般」タブ内の「設定のフィルター」で「TLS」を入力します。表示された「高度な設定」のトグルをオンにします。
image.png

下図のようになれば良いです。
image.png

HTML5としてエクスポート

Godotの画面で「プロジェクト」>>「エクスポート」をクリックします。
image.png

「追加」をクリックし、表示される「Web」をクリックします。
image.png

「エクスポート」画面で、「Web(実行可能)」を選びます。
「リソース」タブ内の「リソース以外のファイル/フォルダをエクスポートするためのフィルター」に、「*.crt」を入力します。
image.png

「プロジェクトのエクスポート」をクリックします。「index.html」として保存します。
image.png

エクスポートしたファイルのコンテナ作成

次の手順で作業を行います。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」をクリックします。
image.png

「Create」をクリックし、Projectを作成します。Projectは、アプリケーションを管理する場所です。
image.png

Project内に、アプリケーションを作成します。

アプリケーションの作成

workuser1の部分を、各自のDocker Hubのユーザー名に読み替えて作業しましょう。
Project画面で、「Applications」をクリックします。その後、「Create」をクリックします。
image.png

「Image reference」に、コンテナイメージをプッシュした際に取得した、docker.ioから始まるURLを記述します。
image.png

画面下に移動し、「Min number of instances」を0インスタンスにします。「Max number of instances」を2インスタンスにします。
なお、「CPU and memory」を「0.5 vCPU/1GB」でも今回のゲームであれば動かすことができます。
image.png

「Optional settings」の「Image start options」を開き、「Listening port」に「80」を入力します。
image.png

「Create」をクリックします。
image.png

アプリケーション名の右隣が、「Deploying」から「Ready」になるまで待ちます。
image.png

画面右上の「Test application」をクリックします。
image.png

「Application URL」をクリックします。
image.png

Godotからエクスポートしたサンプルゲームが表示されます。実際にプレイできます。
image.png

このとおり、ドメインとSSL/TLSサーバ証明書が付与されていることがわかります。
image.png

コンテナの稼働状況が表示されます。「Min number of instances」を0インスタンスにしたので、ゲームにアクセスしていないときは、0インスタンスになります。
image.png

まとめ

本記事では、Godotからエクスポートしたゲームを、コンテナとしてビルドし、IBM Cloud Code Engineで動かすまでの手順を確認しました。Godot(Godot Engine)で開発したゲームの実行環境として、IBM Cloud Code Engineが選択肢に入ればと思います。

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?