ゲーム開発の備忘録

趣味のゲーム開発でのノウハウや、技術的に嵌ったポイントを忘れないように書き記しておくブログです。

MobiVMでビルド時にIBAgent-iOS failed to launchが発生した際の対処法

はじめに 今回はMobiVMでCreate IPAを実行した際にIBAgent-iOS failed to launchが発生し、ビルドが失敗した際の対処法について説明します。このエラー自体はMobiVMを利用しないiOSアプリ開発でも発生することがあり、エラーメッセージで検索するとXcodeの再…

MobiVMでビルド時にAssertion Failed: (aliasSectionNum == sectionNum && "alias and its target must be located in the same section")が表示される場合の対処法

はじめに 今回は、MobiVMでビルド時にAssertion Failed: (aliasSectionNum == sectionNum && "alias and its target must be located in the same section")という、アサーションチェックに失敗した旨のエラーメッセージが表示された場合の対処法について共…

1フレーム中にDirectX12の描画とD3D11On12の描画を任意の順序で実行する

はじめに 本題に入る前に、まず、レイヤ分けについての話をします。ゲームを作っていると、通常の3D描画と、UI表示等の2D描画を任意の順序で実行したい場合が出てきます。例えば、ポストエフェクトが良い例で、UIを含めた上からぼかしやモザイクをまとめて掛…

MobiVMでビルドしたアプリがiCloud Driveにアクセスできるようにする

はじめに 今回は、MobiVMでビルドしたアプリが、GKSavedGame等の機能の利用時にiCloud Driveにアクセスできるようにする方法を共有します。 MobiVMについては以下の前回記事をご確認ください。 deep-verdure.hatenablog.comMobiVMでビルドしたアプリが、本記…

libGDXでMobiVMを用いてiOS版アプリを開発する

はじめに 2018年11月に、RoboVMが開発終了し、iOS12が非対応となったため、libGDXのiOSバックエンドをIntel-MOEに変更しなければならなくなった旨について記事を書きました。 deep-verdure.hatenablog.comIntel-MOEも大元のIntel側での開発が終了し、有志に…

DirectWriteで文字列の透過、文字列幅の取得、縁付き文字列の描画を行う

はじめに 今回は、DirectWriteを利用して実現をしたいものの、Web上や書籍で情報が少なく実装に迷った、あるいは時間がかかったものについてまとめました。なお、前回説明したフォントファイルからのフォントデータの読込みは実装済みの前提で話を進めますの…

DirectWriteでフォントファイルからフォントデータを読込む

はじめに 今回は、DirectWriteでttf等のフォントファイルを読みこんで、フォントデータを抽出する方法を説明します。 ゲーム内でDirectWriteで文字列を描画する際、ユーザの環境にその文字列のフォントがインストールされていない場合があります。そのため、…

DirectX12でガンマ補正ありのテクスチャとガンマ補正なしのテクスチャを混在して利用する

はじめに 今回は、DirectX12でガンマ補正ありのテクスチャとガンマ補正なしのテクスチャを混在して利用する方法について説明します。ガンマ補正そのものについては読者がご存知のものとして話を進めます。 プロジェクトによっては利用する全てのテクスチャが…

DirectX12でステンシルテストを実行する

はじめに 本記事では、DirectX12でのステンシルテストの実行方法を解説します。 ステンシルテストはDirectXに昔から備わっている機能ですが、DirectX12での実行方法については書籍、Webサイトはおろか、Microsoft Docsにも解説がありません。また、サンプル…

DirectX12上でDirectWriteを利用して文字列を描画する

はじめに DirectXで文字列描画をしたい時、古来から2つの方法が紹介されてきました。1つは、文字や文字列のテクスチャを用意して、文字コードやその他の変数によってテクスチャ内の描画範囲を特定し、描画する方法です。そしてもう一つは、DirectXが持つ機能…

DirectX12で実際にゲームを制作する際のリソース管理方法について

はじめに DirectX12でゲームを作ろうとすると、リソースをどのように管理するかという問題が巨大な壁として立ちはだかります。私も趣味でDirectX12でゲームを制作しているのですが、リソースの管理方法には1ヶ月くらい頭を悩まされました。DirectX12は近年に…

libGDXでPlay Asset Deliveryに対応する

はじめに Androidアプリをリリースする場合、Google Play Storeにて、AAB(Android App Bundle)を提出する必要があります。しかし、AABにはサイズ制限があり、150MBを超過すると、そのままではアップロードできなくなってしまいます。以前は、APK拡張という方…

libGDXのios-moeプロジェクトのビルドでcompileJavaタスクに失敗する場合の対処法

かなり短いですが、嵌ったのでメモ。Gradleのバージョンを6.7.1にしてから、libGDXのmoeIpaBuildや、moeLaunchといった、ios-moeプロジェクトのビルドを含むタスクが失敗するようになってしまいました。 暫定対処策 一度、手動でios-moeプロジェクトのother…

Appleの審査と格闘した話(NTP編)

Appleの審査で嵌ったので記事にしてみました。 Wi-Fiでインターネットに接続できない問題? 趣味開発のiOSアプリをAppleの審査にかけたのですが、Wi-Fi接続時にインターネットに接続不可のエラーメッセージが出るという理由で却下の判定を受けました。ここで…

libGDXでSpriteの座標が(0, 0)から移動できない場合に確認すべきこと

新年一発目は超絶短い記事ですが、地味に嵌ったのでメモ。libGDXでSpriteの座標の初期位置としてSprite#setPosition()に正方向の十分大きい数を渡し、画面内に描画させないようにすることを考えます。この時、KotlinのFloat.MAX_VALUEを設定すると、なぜか座…

moe-gradle pluginのタスクを実行してIntel MOEプロジェクトのビルドや実行を行う

Intel MOEについては以下の記事を参照してください。deep-verdure.hatenablog.comまた、Intel MOEのプロジェクトをGradle 5.1.1でビルドする方法については以下を参照してください。deep-verdure.hatenablog.com はじめに Intel MOEのプロジェクトについてGr…

Intel MOEのプロジェクトをGradle5.1.1でビルドする

Intel MOEについては以下の記事を参照してください。deep-verdure.hatenablog.com はじめに Intel MOEをGradleでビルドする際は、build.gradleのbuildscriptのdependenciesで、moe-gradle pluginをimplementationしておく必要があります。 しかし、このmoe-g…

com.google.android.gms.drive.DriveのScope定数をDeprecatedでない代替手段に置き換える

はじめに 2019年6月に、Google Play Servicesの各種ライブラリがバージョンアップされ、それを契機としてGoogle Drive Android APIの各種クラスに@Deprecatedが付与されました。 もともと、Google Drive Android APIは2019年12月に廃止される告知が2018年12…

libGDXでRoboVMからIntel MOEへの移植を行う エミュレータ上での動作確認編

動作環境構築 絶望のjava.lang.NoClassDefFoundError KotlinコードのJavaコードへの書き直し Retrolambdaとの共存のための対応 バインディングライブラリのリンク おわりに RoboVMやIntel-MOEについてご存知でない方や、RoboVMのコード移植が完了していない…

libGDXでRoboVMからIntel MOEへの移植を行う コーディング編

はじめに -libGDXでのiOSアプリケーションの作成について- 基本的なランチャーコードの移植 RoboVM関連のimport文の修正 メソッド名の変更 ジェネリッククラスインスタンスの共変指定 配列取得コードの変更 NSMutableArrayが必要なコードの対応 特殊なコード…

Kotlinで書いたlibGDX利用プロジェクトをAndroid Studio 3.2でビルド時に"Cannot change attributes of configuration ':[app名]:kapt' after it has been resolved."が出力される場合の対処法

経緯 Android Studio 3.2にアップデートすると、Gradle 4.6未満のプロジェクトは扱えなくなります。私はlibGDXを利用してAndroidアプリケーションをKotlinで書いていたのですが、gdx-setup.jarによるlibGDXプロジェクトセットアップ時のデフォルトのGradleは…

Google Play Games Servicesサインインの実装 コーディング編(2018/08/28時点)

Google Play Servicesの利用可否の確認 サインイン処理の流れ GoogleSignInクラスとGoogleApiClientクラス サインインクライアントの生成 サイレントサインインの実装 インタラクティブサインインの実装 サインイン処理成功後の処理 サインイン処理成功時の…

Google Play Games Servicesサインインの実装 環境構築編(2018/08/28時点)

Google Play Servicesの利用準備 Google Play Servicesとは build.gradleの設定 AndroidManifestへのパーミッション追記 フィンガプリントの生成 準備完了 Google Play Games Servicesの利用準備 Google Play Consoleでの設定 Google API Consoleでの設定 Fi…

Google Play Games Servicesサインインの実装 目次(2018/8/28時点)

前提条件 ゲームエンジンを使わず、フルスクラッチでの開発でGoogle Play Games Servicesを利用したい場合を想定しています。 ただし、今回はlibGDXとは関連性はありませんので、あらゆるライブラリにて参考になるのではないかと思います。 ※環境設定編は、…

libGDXでAndroidのAPK拡張に対応する

はじめに AndroidアプリはAPKのサイズが100MBを超過すると、そのままでは開発者コンソールにアップロードできなくなります。 そこで必要となるのが、アセットファイルの一部または全部をAPKから拡張ファイルとして切り出し、APKそのもののサイズを大きく減ら…

libGDXでモバイルアプリ開発時にタッチ位置が画面内位置とずれる場合の対処法

はじめに libGDXでモバイル端末向けゲームを開発時にチュートリアルや入門記事通りに進めると嵌る可能性が高いのが、画面内のボタンをタッチして押そうとしてもタッチ位置がずれるため、正常に判定ができないという問題です。 私も開発中期の頃に嵌ったので…

libGDX等、RoboVMを利用したプロジェクトでのIPAアップロード時にITMS-90035で却下される場合の対処法

経緯 libGDXを用いて制作したアプリの更新版IPAをApplication Uploaderから、App Storeにアップロードしようとしたところ、ITMS-90035エラーによってアップロードが却下されました。 ググるといろいろ記事は出てくるのですが、なかなか解決策までたどり着け…

libGDXプロジェクトのiPhone実機デバッグで@NotNullなメソッドがnullを返す際の対処法

前提条件 Android Studio for Mac 3.1 RoboVM 2.3.3 Gradle4.4 対象のiOSはiOS11 経緯 libGDXを用いたプロジェクトのiPhone実機デバッグを試みたところ、 @NotNull method org/robovm/idea/running/RoboVmRunProfileState.startProcess must not return null…

libGDXプロジェクトをiOSエミュレータで実行時にGradleが吐くエラーの解決法

前提 Android Studio for Mac 3.1 RoboVM 2.3.3 Gradle4.4 経緯 libGDXを用いてiOSアプリを作成し、いざエミュレータで実行しようとしたら、 Could not run build action using Gradle installation のエラーが発生。 Gradleのバージョンを変えてみても解決…

libGDXプロジェクトビルド時に発生するorg.bouncycastle.jcajceの競合が解決できない場合の対処法

蓋を開けてみたら滅茶苦茶初歩的なミスが原因でしたが、エラー内容から原因を推測できず、ググっても対処法が分からず、時間をかなり浪費したので自戒の意味も込めて記事にしておきます。 経緯 libGDXを用いてAndroidアプリ開発をしていましたが、 Mac, iPho…