This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
macOS プラットフォーム向けの Defold アプリケーションの開発は、考慮すべき点がごく少なく、手順も簡単です。
macOS 固有のアプリケーション設定は、game.project 設定ファイルの macOS セクションで行います。
macOS ゲームで使うアプリケーションアイコンは .icns 形式である必要があります。複数の .png ファイルを .iconset としてまとめると、簡単に .icns ファイルを作成できます。.icns ファイルを作成するための公式手順に従ってください。手順の概要は次のとおりです。
game.iconset)を作成します。作成したフォルダーにアイコンファイルをコピーします。
icon_16x16.pngicon_16x16@2x.pngicon_32x32.pngicon_32x32@2x.pngicon_128x128.pngicon_128x128@2x.pngicon_256x256.pngicon_256x256@2x.pngicon_512x512.pngicon_512x512@2x.pngiconutil コマンドラインツールを使って、.iconset フォルダーを .icns ファイルに変換します。iconutil -c icns -o game.icns game.iconset
アプリケーションは、Mac App Store、Steam や itch.io などのサードパーティーのストアやポータル、または自身のウェブサイトで公開できます。アプリケーションを公開する前に、提出の準備をする必要があります。アプリケーションの配布方法にかかわらず、次の手順が必要です。
$ chmod +x Game.app/Contents/MacOS/Game
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
</dict>
</plist>
com.apple.security.cs.allow-jit - アプリケーションが MAP_JIT フラグを使って、書き込み可能かつ実行可能なメモリを作成してよいかどうかを示します。com.apple.security.cs.allow-unsigned-executable-memory - アプリケーションが MAP_JIT フラグの使用による制限を受けずに、書き込み可能かつ実行可能なメモリを作成してよいかどうかを示します。com.apple.security.cs.allow-dyld-environment-variables - アプリケーションがダイナミックリンカーの環境変数の影響を受けてよいかどうかを示します。これらの環境変数を使うと、アプリケーションのプロセスにコードを挿入できます。アプリケーションによっては、追加のエンタイトルメントも必要になる場合があります。Steamworks 拡張では、次の追加エンタイトルメントが必要です。
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
com.apple.security.cs.disable-library-validation - アプリケーションがコード署名を要求せずに、任意のプラグインやフレームワークを読み込んでよいかどうかを示します。アプリケーションに付与できるすべてのエンタイトルメントは、公式の Apple 開発者ドキュメントに記載されています。
codesign を使ってゲームに署名します。$ codesign --force --sign "Developer ID Application: Company Name" --options runtime --deep --timestamp --entitlements entitlement.plist Game.app
Apple は、Mac App Store 以外で配布されるすべてのソフトウェアについて、macOS Catalina のデフォルト設定で実行するために Apple による公証を受けることを要求しています。Xcode の外でスクリプトによるビルド環境に公証を追加する方法は、公式ドキュメントを参照してください。手順の概要は次のとおりです。
上記の手順に従って権限を追加し、アプリケーションに署名します。
ゲームを ZIP 形式に圧縮し、altool を使って公証のためにアップロードします。
$ xcrun altool --notarize-app
--primary-bundle-id "com.acme.foobar"
--username "AC_USERNAME"
--password "@keychain:AC_PASSWORD"
--asc-provider <ProviderShortname>
--file Game.zip
altool[16765:378423] No errors uploading 'Game.zip'.
RequestUUID = 2EFE2717-52EF-43A5-96DC-0797E4CA1041
altool --notarize-app の呼び出しから返されたリクエスト UUID を使って、提出したアプリケーションのステータスを確認します。$ xcrun altool --notarization-info 2EFE2717-52EF-43A5-96DC-0797E4CA1041
-u "AC_USERNAME"
success になるまで待ち、公証チケットをゲームに添付します。$ xcrun stapler staple "Game.app"
Mac App Store で公開する手順は、Apple 開発者ドキュメントに詳しく記載されています。提出する前に、上記の説明に従って権限を追加し、codesign でアプリケーションに署名してください。
注意: Mac App Store で公開する場合、ゲームの公証は必要ありません。
プライバシーマニフェスト(privacy manifest)は、アプリまたはサードパーティ SDK が収集するデータの種類と、使用する API のうち理由の宣言が求められるものを記録するプロパティリストです。アプリまたはサードパーティ SDK は、収集するデータの種類ごとに、また、理由の宣言が求められる API を使用する場合はそのカテゴリごとに、理由を同梱のプライバシーマニフェストファイルに記録する必要があります。
Defold では、game.project ファイルの Privacy Manifest フィールドを通じて、デフォルトのプライバシーマニフェストが提供されます。アプリケーションバンドル(application bundle)の作成時に、このプライバシーマニフェストはプロジェクトの依存関係に含まれるすべてのプライバシーマニフェストとマージされ、アプリケーションバンドルに含められます。
プライバシーマニフェストについて詳しくは、Apple の公式ドキュメントを参照してください。