C言語で書いたPlaydateのプログラムをビルドする方法。

更新履歴

2023/11/5 初版作成
2023/9/29 命令が抜けていたので更新。あとまたビルドして遊んでるので環境等記載。
2024/2/28 Windows11環境に更新したので、動作を確認。環境変数絡みの情報を補記。また一部表現を見直し。

概要

Playdateが届いたので、即日自作のプログラムを動かすようにしたが、
C言語でプログラム書くのはハードルが高く、かつ環境構築に時間がかかったため、
自分の環境でうまくいった方法をメモするもの。

環境:

Windows11

PlaydateSDK 2.3.1利用(20240228追記)

参考資料

Inside Playdate with C

手順

  1. VisualStudioをインストールする
  2. GNU Arm Embedded Toolchain compilerをインストールする、もしくは以下URLからArm GNU Toolchainをインストールする。
    Arm GNU Toolchain Downloads – Arm Developer
    新しいファイル一式で問題ないことを確認済み。(クロスコンパイラも入ってる)
    このとき環境変数Pathを書き込むこと。そうじゃないとPlaydateファイルのビルドが失敗する。
  3. CMakeをインストールする
    上記と同様に環境変数書き込むのがいい。
  4. 開発者用コマンドプロンプトを起動する・・・と書いてあるが、
    x64 Native Command Prompt toolsを起動すること。(64bitのほう)
    これは、シミュレータが読み込むビルドファイルが64bitじゃないと動かないため。
  5. ソースコードが入ってるフォルダにcdする
  6. コマンド「mkdir build」ディレクトリが作成される。
  7. コマンド「cd build」6.で作ったディレクトリに移動する
  8. ビルド内容によって以下のように実行コマンドを変更する
    ①シミュレータで動かしたい:
      cmake .. -G “NMake Makefiles”
    ②実機で動かしたい:
      cmake .. -G “NMake Makefiles” –toolchain=”<PlaydateSDKをインストールしたパス>\\C_API\\buildsupport\\arm.cmake”
    ①②ともにbuildフォルダの中にコンパイル・アセンブルするための設定ファイルが用意される。
  9. buildフォルダの中でコマンド「nmake」を起動(20230929追記)
    ソースコードを見に行ったり実際にコンパイルしたりして、ソースコードが入ってるフォルダに*.pdxというフォルダとバイナリファイル一式を作成する。
  10. シミュレータ起動、ビルドしたフォルダ(*.pdxフォルダ)を読み込む
  11. 実機に読み込ませる場合、SimulatorからDevice→「Upload Game to Device」を選択
    シミュレータでも動くはずだが、たまに動かないものもある。(SimulatorはC APIのみを使ってる場合動かないときもある。PlaydateがLinuxベースのファイルシステムらしく、Windowsのファイルパス形式を使ってる場合動かないケースを確認している)
    この時は下記の「Playdateにゲームをサイドローディングする」でアップロードする。

情報登録されたソフトを起動して正常動作が確認できれば終了。
異常終了した場合、正常にビルドができてない可能性もあるため環境を見直すこと。
もしくはメモリ違反の可能性があるため、ソースコードの内容を見直すこと。

Tips等

  • シミュレータから実機ビルドに切り替える際(その逆も)は8.→9.を繰り返す形にする(各種オプションを作成しなおすため)
  • ビルドを行う場合、別に名前はbuildじゃなくていい。
    自分はsimulatorフォルダを作って、実機用/シミュレータ用どちらのビルド設定も保管している。
    どちらの環境で使いたいかを選択してnmakeの実行フォルダを変える運用とした
  • 一個プロジェクトファイルのテンプレート作って使い回すと快適(CMakeのファイルが必要なため
  • ときどきリソースのパス周りなのか、シミュレータ上エラーが出るが原因がまだ確認できてない。
    最悪Playdate上に直接ファイルを配置する(データディスクモード)
    Playdateにゲームをサイドローディングする – Playdate Help
  • 最初VisualStudioでコンパイルしてたんだけど、うまくbinファイルを出力できなかった(=実機用のビルドができなかった)ので別途調べて、nmake使う方が確実かと思った。
    最悪VisualStudioで開発→ビルドはnmakeでも構わないと思った。VisualStudio使う場合もCMake必要だし、そもそもVSCode使うことも検討してるし。