2025年30週(7月week4)
やったこと
- オンラインゲームの仕組みの本ー第8章をGodotに置き換えながら読む
- 通信機能は今週は触れず、モバイル向け機能の実装中
- Godotでモバイル向けにジョイスティックを実装する
- GodotでCPUParticles2Dを使ってみる
- Godotでモバイル向けのセーフエリア対応
- Godotでモバイル向けの画面サイズ取得
- Godotでモバイル端末のキーボードの高さの取得する
- iOSキーボードの高さの変化を通知するプラグインを作り中
- 久しぶりのF1レースウィーク
- KPOPガールズ! デーモン・ハンターズを見た
- フリクリの1話を見た
- 寝室の掃除
- チョコサプ ガンダムをようやく見つけて買った
- ガンキャノンとガンタンクが出てうれしい。
- Dome Keeper に大ハマり中
- ランニング
料理
朝は相変わらずせいろ。
昔もらったお玉置きのお皿が活躍している。せいろの蓋を開けた時に、サウナ上がり感があってとても気に入っている。
ハイライト
GodotのiOSゲーム開発
最近はずっとオンラインゲームのしくみ-Unityで覚えるネットワークプログラミングの本をGodotに置き換えてオンラインゲームの勉強をしている。
今は8章の置き換えをしているところで、適当に友達とお散歩とチャットができるぐらいのゲームを作ろうとしている。
本自体はあと1章なのでサクッと作って最後の章を読もうと思っていたのだけれど、今週は通信機能に全く触らずじまいだった。代わりに、前回頑張れなかったAssetsやモバイル対応などを頑張っている。
週の初めは、Kenney からアセットをお借りして、TileMapLayer への理解を深めたり、CPUParticles2Dを使って歩くときの砂埃パーティクルをつけてみたりした。
またモバイル向けに、画面タップとドラッグで動作するジョイスティックも実装した。
iPhone 実機でこんな感じで動作している。これだけでもかわいい。 この辺はわりとサクッと実装ができた。
ちゃんとメモも残しているよ。
キーボードの上にテキストフォームを置きたい
週の後半からは iOS のキーボードの上にテキストフォームを置きたくて戦った。
キーボードの高さ取得にあわせて、セーフエリアの勉強もした。
このあたりの調べ物からは、AIもあまり役に立たなくなり、落ちている記事も少なくなり、実際に検証しながら頑張った。
白いバーの部分がちゃんとキーボードの上に表示されるところまではできた。
で、ですよ。
Godot 側でキーボードの高さを取得するために用意されている関数が、DisplayServer.virtual_keyboard_get_height()
というものなんだけど、完全にキーボードが表示されてから数フレーム後にはじめて高さの取得ができるものなんだよね。
でも理想としては、キーボードと追従して、アニメーションされてほしい。
UIKitでは UIResponder.keyboardWillChangeFrameNotification
から duration
を取得してキーボードを表示する直前に高さの取得ができるということは知っている。
Godotだけで実装できないことも、プラグインを作ることでネイティブの機能を使えることは、Udemy のMaster Mobile Game Development with Godot 4コースでアプリ内課金でやれていたので、できるはず。
...そう思って早数日。大大大苦戦中です。
公式ドキュメントの手順だと、Objective-CやらSConsやらなんやら色々大変なものがでてくる。Objective-C++ とかもでてくるのに、さらにSwift で書きたいが故に Bridge Header を用意したり...本当にこんな大変でいいの?っていうぐらい大変で、まだうまくいっていない。だがしかしobjcはかきたくないのだ。
幸いなことに、次週のネタバレをすると、代わりに SwiftGodotというものを使うことで、 SwiftPackageとGDExtensionで動かす方法で無事に成功した。
ただこれもまだ現実的にはどうなの?ってぐらい導入が大変なので、もう少し調査が必要。ちゃんといい感じにできたらブログ記事として書こうと思う。流石にこれは役にたつ。
このiOSプラグインを作る方法のことしか頭にないぐらい、GodotとXcodeと向き合った1週間だった。たのしいね。
Dome Keeperはいいぞ
夜寝る前や作業に疲れたら、Steam DeckでずっとDome Keeperをしていた。
基本は防衛と採掘を繰り返すゲームなのだけれど、「30分間に資源を200個集めよう」ミッションではひたすら採掘をしていいので、それが無限に楽しい。なかなかクリアできないのも楽しい。
いや〜久しぶりに本当に大ヒットですわ。他のゲームもお勉強しに行きたいのについつい掘っちゃう。無心になれて最高。
チョコサプ
チョコサプ ガンダムをネットで見かけてから、スーパー、コンビニをコツコツ探して見当たらず、ようやくドンキにて発見することができた。
ファーストガンダムは、今年ジークアクスの映画を見た後に履修したのでこれは嬉しい。
いいね!!!!!
ガンタンクとガンキャノンはガンプラで買おうとしてたので(売り切れてて買えずじまいだけど)うれしい!
週の終わりに
今週はかなり有益なノートをいくつか書いたと思う。
このブログの記事は、Next.jsに移行してから検索エンジンにインデックスされなくなってしまっているっぽく、せっかくの記事がどこにも引っかからないのは流石にもったいない。直さないとなと思いつつ、Godot側が大変すぎて今週はできなかった。来週にはやりたい。
今週はゲーム画面上の進捗はそこまでないけど、スキルアップはできたんじゃないかな。
7月もあと少し。今月中に終わらせたいこと優先で、来週もまたがんばるぞい。
2025年30週(7月week4) に作成した公開ノート一覧
- CPUParticles2D(Godot)
- DPI
- GPUParticles2D(Godot)
- Godot4.4-TileMapLayerでタイルが存在しない時に出るエラーを解消する
- GodotでCPUParticles2Dを使ってみる
- Godotでモバイル向けにジョイスティックを実装する
- Godotでモバイル向けのセーフエリア対応
- Godotでモバイル向けの画面サイズ取得
- Godotでモバイル端末のキーボードの高さの取得する
- Grok
- RPG
- TileMapLayer
- device-independent pixel
- もずく豆腐
- アドベンチャーゲーム
- イカとキャベツのペペロンチーノ
- ローグライクゲーム
- ローグライトゲーム
- 玉ねぎスープ
- 物理ピクセル(physical pixel)
- 論理ピクセル(logical pixel)
- 鰻丼
