この記事では、Apple の Game Center と連携させるための Godot 公式プラグインをプロジェクトに追加する方法について説明していくで。

ちなみに、今までの記事は「である」調で書いてたんやけど、ちょっと堅苦しくて偉そうやったから、今回から、口語調というか、おもいっきり普段のタメ語の関西弁で書いていくことにしたんやわ。今までの記事を読んでくれてたみんなにはビビらせてしまうかもしれんけど、まあ、普通の文章書くんなら ChatGPT のほうが上手に書きよるから、ちょっと人間らしさ出してこや、って感じやねん。関西弁アレルギーの人はほんまゴメンやで。

そもそも Game Center って何?って人がいるかもしれへんから、簡単に説明しとくわな。iPhone とか iPad なんかの iOS デバイス上で Apple ID で Game Center にサインインしておくと、Game Center 対応のゲームをプレイしたときに、何らかの達成項目を更新した記録が残せたり、リーダーボードで世界中のプレイヤーとスコアを競ったりできるねん。ゲーム開発者は、その達成項目を何にするか、それらのクリア条件をどうするか、リーダーボードで何を競わせるか、とかそういうのを設定できるってわけや。

ほんで、Godot で作ったゲームでも、Godot 公式の iOS プラグインに含まれてる Game Center プラグインを使えば、割と簡単に Game Center 機能を組み込めるってわけやねんな。最高やろ。

ちなみに、公式のドキュメントとソースコードが Godot iOS プラグイン リポジトリ にあるから、まずはそっち見てみてな。それで、ちょっとよくわからんところがあったらまたこの記事に戻ってきて。

記事作成当時の筆者の環境
Godot のバージョン: 4.2.1
コンピュータのモデル: MacBook Air M1, 2020
OS: macOS 14.4.1



プラグインのリポジトリをクローンしよう

基本的には、この Github の Readme の手順に従えばええんやけど、あんまり詳しく書いてなくってスムーズにいかへん部分があるから、この記事でちょっと細かいところを説明していこかなと思ったのよ。

最初は GitHub リポジトリとそのサブモジュールをクローンするところからやで。ターミナル(Mac)かコマンドプロンプト(Windows)を立ち上げたら、まずはリポジトリをクローンしたい場所に移動しとこな。これはゲームのプロジェクトとは別のフォルダでも大丈夫やで。むしろ、今後いろんなプロジェクトで Game Center プラグインを使いまわしたかったら、プロジェクト外のほうがええんとちゃうかな。

今回は ~/Godot/Plugins ってフォルダを作って、そこに移動することにしよか。移動するときは cd コマンドやね。

cd ~/Godot/Plugins

Change Directory の略らしいよ。ちなみに、僕は「何の略かわからないと覚えられない」派なもんで、こういうのありがた迷惑かもしれんけど、いちいち言っていくわ。

移動できたら、そこで GitHub リポジトリとそのサブモジュールをクローンするコマンド git clone を実行しよ。--recursive のオプションは日本語で「再帰的」っていう聞き慣れへん言葉なんやけど、中まで全部、って意味っぽいで。ここではリポジトリの中にさらにサブモジュールっていう別のリポジトリがあって、それも含めてクローンするって意味やと思うわ。

クローンっていうのは、SF映画とかの『クローン人間』みたいに、同じものを複製するって意味やから、要するにコピーするってことやねんな。見た目だけじゃなくて、内臓まで全部そのままコピーしたクローン人間を作ると思っとけばええんちゃうかな、知らんけど。

インターネット上のリポジトリは、リモートリポジトリっていうねんけど、ゲームやらアプリやら今回みたいなプラグインやらのプロジェクトのデータをまとめて置いている場所みたいなもんやで。これをまるごとローカル(自分の PC)にコピーしよって話や。このコピーしてできたローカルのリポジトリをローカルリポジトリってみんな言うてるわ。そのまんまかい、って思うやんな、わかるで。

git clone --recursive https://github.com/godotengine/godot-ios-plugins.git

もし submodule のクローンに失敗してエラーが表示されたら、次の手順を試してみてや。
とりあえず cd コマンドでクローンしたばかりのローカルリポジトリに移動するで。

cd godot-ios-plugins

そしたら、次のコマンドを実行してみて。

git submodule update --init

ほんで次な。リポジトリの中の godot サブモジュールのアップデートをやってくで。まずは godot フォルダに移動してな。

cd godot

次にサブモジュールをフェッチする(サーバから取ってくる)から、ターミナル(コマンドプロンプト)で以下のコマンドを実行しとこ。とくにレスポンスがなくて不安になるかもしれんけど、気にせんといて。エラーが出えへんかったらそれでオッケーやし。

git fetch

ほんで仕上げは、godot リポジトリ のブランチから自分が使う Godot のバージョンと同じブランチ名を確認して、git の checkout ってサブコマンドで、ローカルのサブモジュールをそのバージョンのブランチと同じ状態にするんやで。

# 雛形
git checkout origin/<branch you want to use>
# 例えば 4.2 のバージョンがよかったらこんな感じ
git checkout origin/4.2

ちなみに、「ブランチ」って日本語で「枝」って意味やで。リポジトリにおいているプロジェクトにはいくつかのバージョンがある場合が多いけど、別バージョンを作るときにメインの幹から枝分かれしてるイメージやねん。ちょっとややこしいけども。



Godot header を作ろう

次に Godot header っていうのを作っていくで。何ソレ、おいしいの?とか言わんといてや。iOS のアプリって Objective-C とか Swift っていうプログラミング言語で作られてるんやけど、Godot の機能をそれらの言語に対応させるために必要なものなんやって。何ソレ、おいしいの?

じゃあ、改めて godot フォルダの中に移動しよか。

cd godot-ios-plugins/godot/

次に実行するコマンドがちょっとクセモノやねん。Readme の手順には次のように書いてあるんやけど…

scons platform=ios target=debug

target=debug の書き方が(たぶん古くて)使えへんねんな。実際には次の様な形に修正してコマンド叩いてみてや。

scons platform=ios target=editor

ちなみに、この Readme の説明どおりにいかない問題については、このページ が最終的に参考になったから、シェアしとくわ。

次に .a の静的ライブラリっていうのを作ってくで。いったん、メインのリポジトリにまた移動しといてな。

cd godot-ios-plugins

移動できたら、次のコマンドを説明していくで。

最初の行にあるコマンドは Readme に書いてあるテンプレート(雛形)で、その下に僕の PC の場合のコマンドを例として書いてるから参考にしてな。

僕の PC は MacBook Air の M1 チップ(Apple Silicon)やから arch オプションは arm64 になるねんな。このへんは使ってる PC によって変わるから、ググるなり、ChatGPTに聞いてみたらええわ。あと、今回は Game Center プラグインを追加したいわけやから plugin=gamecenter になるで。最後に、今自分が使ってる Godot のバージョンを指定するんやけど、最近はみんな 4.x 系やろ(違ったらゴメンやけど)。なら version=4.0 にすれば OK やで。

# 雛形
scons target=<debug|release|release_debug> arch=<arch> simulator=<no|yes> plugin=<plugin_name> version=<3.x|4.0>
# 例えばこんな感じ
scons target=release_debug arch=arm64 simulator=yes plugin=gamecenter version=4.0

じゃあ .a ライブラリをビルドしていくで。完了したら、メインのリポジトリの中にある bin フォルダ内に爆誕するで。

# 雛形
./scripts/generate_static_library.sh <plugin_name> <debug|release|release_debug> <godot_version>
# 例えばこんな感じ
./scripts/generate_static_library.sh gamecenter release_debug 4.0

次のコマンドで、.xcframework ライブラリっていうのをビルドするで。完了したら、さっきと同じく bin フォルダ内に .a ファイルを含む .xcframework フォルダが爆誕するで。

# 雛形
./scripts/generate_xcframework.sh <plugin_name> <debug|release|release_debug> <godot_version>
# 例えばこんな感じ
./scripts/generate_xcframework.sh gamecenter release_debug 4.0

ということで、ここまでおつかれさん。このあと、ここまでで作ったものを Godot のゲームプロジェクトにぶっ込んでいくけど、もし慣れないコマンド操作で疲れてたら、まあ、お茶でも飲んでちょっと休憩しといてや。



Godotプロジェクトへプラグインを追加しよう

基本的に、Godot 公式の以下の手順に沿ってやればええねんけど、つまずきポイントがあるからそれは伝えとくわ。

Creating iOS plugins

まず最初のつまずきポイントはというと、Godot のプロジェクトの中には iOS のプラグインをぶっ込む場所は最初からは用意されてないってことやね。だから、自分でフォルダをこしらえなあかんねん。自分の Godot プロジェクトのルートフォルダに、ios/plugins フォルダを作ったらええわ。例えばデスクトップに my_game っていうプロジェクトのフォルダがあるんやったら ~/Desktop/my_game/ios/plugins みたいになるってことやで。

プラグインをぶっ込む場所(plugins フォルダ)ができたら、そこに godot-ios-plugins/plugins/gamecenter/gamecenter.gdip っていう最初からリポジトリに入ってるファイルと godot-ios-plugins/bin/gamecenter.release_debug.xcframework ってさっきコマンド叩きまくって作ったフォルダの2つをそれぞれコピペしてぶっ込んだってや。

続いて、つまずきポイントその 2 やで。ひとつ手直しが必要やねん。コレほんまに謎なんやけどね。今さっきコピペした gamecenter.release_debug.xcframework フォルダの名前を gamecenter.xcframework に変えなあかんねん。じゃないと、このあとうまくいかんのよ。うまくいってたら、Godot が追加したプラグインをちゃーんと認識してくれんねん。


Exportの設定をしよう

そろそろプラグイン追加作業の仕上げやで。ここから Export の設定をしていくで。ようやく Godot を触る時が来たな。まず、Godot のプロジェクトを立ち上げたら、Project メニュー > Export… からエクスポートパネルを開いてな。もしまだ iOS 用のエクスポートプリセットを作ってなかったら、パネル上部の Add… から新しく iOS のプリセットを作ってや。

次に iOS のプリセットの Options タブで Plugins セクションまで下にちょーっとスクロールしてみて。そしたら、そこに Game Center の項目が表示されてるはずやから。表示されてへんかったら、残念やけどここまでの手順のどこかで失敗してる可能性大やで。その場合はとりあえずちょっとヘコむけど、適当に目星つけてやり直してみてよ。無事に Game Center の項目があれば、チェック入れて有効にすればオッケーやで。

あと、ついでやねんけど、 Export パネルの上のほうにある Export Path はプロジェクト外の場所を指定したほうがええで。なんでかっていうと、プロジェクトの中に Export したら、なんというか、鏡の中の鏡の中の鏡の中の…みたいな感じになるやん?意味わかる?まあ、Resources タブで Export のときに除外したいファイルの種類とか指定できるからそれでもええっちゃええんやけど、まあこれは気持ちの問題やね。


おわりに

ということで、今回のテーマ『プロジェクトに Game Center プラグインを追加しよう』はこれでおしまいやで。ここまで読んでくれてほんまにありがとう。僕が実際に iOS のゲーム開発してたときにちゃちゃっと書き留めたメモをベースにこの記事書いてるから、途中で何かメモが抜けてたりして、うまくいかんとこがあったりするかもしれんけど、そういうの見つけたら X とかでやさしく教えてくれたらめちゃくちゃ助かるし、よろです。



ゲームの宣伝

最後に、実際に Game Center プラグインを使っている僕のゲームの宣伝だけさせてくれへん?うん、ええよ。

👹 もの切り侍

今あなたの動体視力と反射神経が試される!侍を操作して、空から降ってくるあんな物やこんな物を見事空中で切ることができるか?!簡単片手操作でプレイできる、激ハマり必至の爽快カジュアル・タイミングゲーム!

🃏 ステキなソリティア

「ソリティア(クロンダイク)」と言えば、言わずと知れた定番中の定番、一人遊びカードゲームの王様なわけですが、このたび、モバイルゲーム「ステキなソリティア」が App Store で配信中!