FAQ
FAQ

Read this FAQ in English

よくある質問

一般的な質問

Q: Defold は本当に無料ですか?

A: はい、Defold のエンジンとエディターは、すべての機能を完全に無料で利用できます。隠れた費用、手数料、ロイヤリティはありません。純粋に無料です。

Q: Defold Foundation が Defold を無料で提供するのはなぜですか?

A: Defold Foundation の目的の1つは、世界中の開発者が Defold ソフトウェアを利用でき、ソースコードを無料で入手できるようにすることです。

Q: Defold はいつまでサポートされますか?

A: Defold の支援に強く取り組んでいます。Defold Foundation は、今後長年にわたり Defold の責任ある所有者として存続することが保証されるように設立されています。なくなることはありません。

Q: Defold はプロの開発業務でも信頼して使えますか?

A: はい。Defold を使うプロのゲーム開発者やゲームスタジオは増え続けています。Defold で制作されたゲームの例は、ゲームショーケース をご覧ください。

Q: どのようなユーザー追跡を行っていますか?

A: サービスと製品を改善するため、ウェブサイトと Defold エディターから匿名の利用データを記録しています。制作したゲームでは、ユーザー追跡は行われません(自分で分析サービスを追加した場合を除きます)。詳しくは、プライバシーポリシー をご覧ください。

Q: Defold を作ったのは誰ですか?

A: Defold は Ragnar Svensson と Christian Murray によって作られました。2人は2009年にエンジン、エディター、サーバーの開発を始めました。2013年に King と Defold が提携し、2014年に King が Defold を買収しました。詳しい経緯は こちら をご覧ください。

ゲーム開発に関する質問

Q: Defold で 3D ゲームを作れますか?

A: はい!エンジンは本格的な 3D エンジンです。ただし、ツールセットは 2D 向けに作られているため、多くの作業を自分で行う必要があります。3D サポートの強化を予定しています。

プログラミング言語に関する質問

Q: Defold ではどのプログラミング言語を使いますか?

A: Defold プロジェクトのゲームロジックは、主に Lua 言語で記述します(具体的には Lua 5.1/LuaJIT です。詳しくは Lua マニュアル を参照してください)。Lua は軽量な動的言語で、高速かつ非常に強力です。Defold は、Lua コードを出力するトランスパイラーをサポートしています。トランスパイラー拡張をインストールすると、Teal などの別の言語を使って、静的な検査を受ける Lua コードを記述できます。また、ネイティブコード(プラットフォームに応じて C/C++、Objective-C、Java、JavaScript)を使って、Defold エンジンを拡張して新しい機能を追加する こともできます。カスタムマテリアル(material) を作成する場合は、OpenGL ES SL シェーダー言語を使って頂点シェーダーとフラグメントシェーダーを記述します。

Q: C++ でゲームロジックを記述できますか?

A: Defold の C++ サポートは、主にサードパーティーの SDK やプラットフォーム固有の API と連携するネイティブ拡張(native extension)を記述するためのものです。dmSDK(ネイティブ拡張で使用する Defold の C++ API)には段階的に機能を追加し、開発者が希望すればゲームロジック全体を C++ で記述できるようにする予定です。ゲームロジックに使う主な言語は引き続き Lua ですが、C++ API の拡充により、C++ でもゲームロジックを記述できるようになります。C++ API を拡充する作業は、主に既存の非公開ヘッダーファイルを公開部分に移し、公開利用に向けて API を整理することです。

Q: Defold で TypeScript を使えますか?

A: TypeScript は公式にはサポートされていません。コミュニティが、TypeScript を記述して VSCode から直接 Lua にトランスパイルするためのツールキット ts-defold を保守しています。

Q: Defold で Haxe を使えますか?

A: Haxe は公式にはサポートされていません。コミュニティが、Haxe を記述して Lua にトランスパイルするための hxdefold を保守しています。

Q: Defold で C# を使えますか?

A: Defold Foundation は C# サポートを追加し、ライブラリへの依存関係として利用できるようにしました。C# は広く採用されているプログラミング言語であり、C# に多くの投資をしてきたスタジオや開発者の Defold への移行に役立ちます。

Q: C# サポートの追加が Defold に悪影響を与えないか気になります。心配する必要はありますか?

Defold は、主なスクリプト言語としての Lua から離れることはありません。C# サポートは、拡張機能のための新しい言語として追加されます。プロジェクトで C# 拡張を使うことを選ばない限り、エンジンに影響はありません。

C# サポートには代償(実行ファイルのサイズ、実行時のパフォーマンスなど)が伴いますが、採用するかどうかは個々の開発者やスタジオが判断することです。

C# 自体については、拡張システムがすでに多くの言語(C/C++/Java/Objective-C/Zig)をサポートしているため、比較的小さな変更です。C# バインディングを生成することで、SDK 間の同期を保ちます。これにより、最小限の作業でバインディングを最新の状態に保てます。

Defold Foundation は以前、Defold への C# サポートの追加に反対していましたが、いくつかの理由から考えを変えました。

  • スタジオや開発者から、C# サポートへの要望が引き続き寄せられています。
  • C# サポートの対象を拡張機能のみに絞りました(つまり、必要な作業量が少なくなりました)。
  • コアエンジンには影響しません。
  • C# API を生成すれば、最小限の作業で同期を保てます。
  • C# サポートは NativeAOT を使う DotNet 9 を基盤とし、既存のビルドパイプラインでリンクできる静的ライブラリを生成します(ほかの Defold 拡張と同様です)。

プラットフォームに関する質問

Q: Defold はどのプラットフォームで動作しますか?

A: 次のプラットフォームをサポートしています。

エディターとツール

システム バージョン アーキテクチャ
macOS 11 Big Sur x86-64, arm-64
Windows 10 x86-64
Ubuntu (1) 22.04 LTS x86-64

(1 エディターは 64-bit の Ubuntu 向けにビルドし、テストしています。ほかのディストリビューションでも動作するはずですが、保証はしていません。)

エンジンのランタイム

システム バージョン アーキテクチャ
macOS 11 Big Sur x86-64, arm-64
Windows Vista x86-64
Linux (2) 任意 x86-64, arm-64
iOS 15.0 arm-64
Android 5.0 (API レベル 21) arm-32, arm-64, x86-64
HTML5   wasm-web, wasm_pthread-web

(2 エンジンのランタイムは、グラフィックスドライバーが最新であれば、ほとんどの 64-bit Linux ディストリビューションで動作するはずです。グラフィックス API について詳しくは、以下を参照してください。)

Q: Defold では、どのプラットフォーム向けにゲームを開発できますか?

A: ワンクリックで、PS4™、PS5™、Nintendo Switch、iOS(64-bit)、Android(32-bit と 64-bit)、HTML5 に加え、macOS(x86-64 と arm64)、Windows(64-bit)、Linux(x86-64 と arm64)向けに公開できます。1つのコードベースで複数のプラットフォームをサポートできます。

Q: Defold はどのレンダリング API を使っていますか?

A: 開発者は、すべてをスクリプトで制御できるレンダリングパイプライン を使う、単一のレンダリング API だけを扱えば十分です。Defold のレンダースクリプト(render script)API は、描画操作を次のグラフィックス API に変換します。

システム グラフィックス API 備考
macOS Metal、OpenGL 3.3 または Vulkan Defold 1.14.0 以降の既定値は Metal。Vulkan は MoltenVK 経由
Windows OpenGL 3.3 または Vulkan 1.1  
Linux x86-64 OpenGL 3.3 または Vulkan 1.1  
Linux ARM64 OpenGL ES または Vulkan 1.1 デフォルトは EGL/GLES
Android OpenGLES 3.0 または Vulkan 1.1 OpenGLES 2.0 にフォールバック
iOS 実機 OpenGLES 3.0、Metal または Vulkan 既定値は OpenGLES。Vulkan は MoltenVK 経由
iOS シミュレーター Metal Defold 1.14.0 以降は常に Metal
HTML5 WebGL 2.0 または WebGPU WebGL 1.0 にフォールバック

Q: 使用中のバージョンを確認する方法はありますか?

A: はい、Help メニューの「About」を選択します。ポップアップには、Defold のベータバージョンと、さらに重要な、そのリリース固有の SHA1 が明示されます。ランタイムのバージョンを調べるには、sys.get_engine_info() を使います。

http://d.defold.com/beta からダウンロードできる最新のベータ版は、http://d.defold.com/beta/info.json を開いて確認できます(安定版にも同じファイルがあります: http://d.defold.com/stable/info.json)。

Q: 実行時に、ゲームが動作しているプラットフォームを確認する方法はありますか?

A: はい、sys.get_sys_info() を参照してください。

エディターに関する質問

Q: エディターのシステム要件は何ですか?

A: エディターはシステムで利用可能なメモリの最大75%を使用します。RAM が 4 GB のコンピューターでも、小規模な Defold プロジェクトには十分なはずです。中規模または大規模なプロジェクトでは、6 GB 以上の RAM を推奨します。

Q: Defold のベータ版は自動更新されますか?

A: はい。Defold のベータ版エディターは、安定版と同様に起動時に更新を確認します。

Q: エディターの起動時に java.awt.AWTError: Assistive Technology not found というエラーが表示されるのはなぜですか?

A: このエラーは、NVDA スクリーンリーダーなどの Java の支援技術の問題に関連しています。おそらくホームフォルダーに .accessibility.properties ファイルがあります。そのファイルを削除して、エディターを再度起動してみてください。(注: 支援技術を使用していて、このファイルが必要な場合は、代替の解決策を相談するために info@defold.se までご連絡ください)。

Defold フォーラムのこちらのトピックで議論されています。

Q: エディターの起動時に sun.security.validator.ValidatorException: PKIX path building failed というエラーが表示されるのはなぜですか?

A: この例外は、エディターが https 接続を試みたときに、サーバーから提供された証明書チェーンを検証できない場合に発生します。

このエラーの詳細は、こちらのリンクを参照してください。

Q: 特定の操作を行うと java.lang.OutOfMemoryError: Java heap space が発生するのはなぜですか?

A: Defold エディターは Java で作られており、Java の既定のメモリ設定では不十分な場合があります。その場合は、エディターの設定ファイルを編集して、より多くのメモリを割り当てるよう手動で設定できます。config という名前の設定ファイルは、macOS では Defold.app/Contents/Resources/ フォルダーにあります。Windows では実行ファイル Defold.exe と同じ場所、Linux では実行ファイル Defold と同じ場所にあります。config ファイルを開き、vmargs で始まる行に -Xmx6gb を追加します。-Xmx6gb を追加すると、ヒープサイズの上限が6ギガバイトに設定されます(既定値は通常 4Gb です)。次のようになります。

vmargs = -Xmx6gb,-Dfile.encoding=UTF-8,-Djna.nosys=true,-Ddefold.launcherpath=${bootstrap.launcherpath},-Ddefold.resourcespath=${bootstrap.resourcespath},-Ddefold.version=${build.version},-Ddefold.editor.sha1=${build.editor_sha1},-Ddefold.engine.sha1=${build.engine_sha1},-Ddefold.buildtime=${build.time},-Ddefold.channel=${build.channel},-Ddefold.archive.domain=${build.archive_domain},-Djava.net.preferIPv4Stack=true,-Dsun.net.client.defaultConnectTimeout=30000,-Dsun.net.client.defaultReadTimeout=30000,-Djogl.texture.notexrect=true,-Dglass.accessible.force=false,--illegal-access=warn,--add-opens=java.base/java.lang=ALL-UNNAMED,--add-opens=java.desktop/sun.awt=ALL-UNNAMED,--add-opens=java.desktop/sun.java2d.opengl=ALL-UNNAMED,--add-opens=java.xml/com.sun.org.apache.xerces.internal.jaxp=ALL-UNNAMED

Linux に関する質問

Q: 4k または HiDPI モニターで実行すると、Defold エディターが極端に小さく表示されるのはなぜですか?

A: GNOME を使用している場合は、Defold を実行する前に表示倍率を変更できます。出典

$ gsettings set org.gnome.desktop.interface scaling-factor 2
$ ./Defold

A: 別の解決方法として、特に小数を含む倍率で拡大したい場合は、Defold/config ファイルの vmargs 行に glass.gtk.uiScale を追加します。出典

vmargs = -Dglass.gtk.uiScale=1.5,-Dfile.encoding=UTF-8,...
vmargs = -Dglass.gtk.uiScale=175%,-Dfile.encoding=UTF-8,...
vmargs = -Dglass.gtk.uiScale=192dpi,-Dfile.encoding=UTF-8,...

この値の詳細は、Arch Linux wiki の HiDPI の記事を参照してください。

A: KDE を使用している場合は、GDK_SCALE を設定できます。

$ GDK_SCALE=2 ./Defold

Q: Elementary OS でマウスのクリックがエディターを通り抜けて、背後にあるものに届くのはなぜですか?

A: 次のようにエディターを起動します。

$ GTK_CSD=0 ./Defold

Q: コレクション(collection)やゲームオブジェクト(game object)を開くと Defold エディターがクラッシュし、クラッシュ時の情報に com.jogamp.opengl が含まれます

A: 一部のディストリビューション(Ubuntu 18 など)では、Defold が使用する jogamp/jogl と、システム上の Mesa のバージョンの組み合わせに問題があります。MESA_GL_VERSION_OVERRIDE を 2.1 以上、かつドライバーが対応するバージョン以下の値に設定すると、glGetString(GL_VERSION) の呼び出し時に報告される GL バージョンを上書きできます。ドライバーが対応する OpenGL の最大バージョンは、glxinfo で確認できます。

glxinfo | grep version

出力例(「OpenGL version string: x.y」を探してください):

server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.2.6
OpenGL core profile shading language version string: 4.60
OpenGL version string: 4.6 (Compatibility Profile) Mesa 20.2.6
OpenGL shading language version string: 4.60
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 20.2.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
GL_EXT_shader_implicit_conversions, GL_EXT_shader_integer_mix,

バージョン 2.1 またはグラフィックスドライバーに対応するバージョンを使用します。

$ MESA_GL_VERSION_OVERRIDE=2.1 ./Defold
$ MESA_GL_VERSION_OVERRIDE=4.6 ./Defold

Q: Defold の起動時に「com.jogamp.opengl.GLException: Graphics configuration failed」と表示されるのはなぜですか?

A: 一部のディストリビューション(Ubuntu 20.04 など)では、Defold の実行時に新しい Mesa ドライバー(Iris)で問題が発生します。Defold の実行時に古いバージョンのドライバーを使用してみてください。

$ MESA_LOADER_DRIVER_OVERRIDE=i965 ./Defold

Q: コレクションやゲームオブジェクトを開くと Defold エディターがクラッシュし、クラッシュ時の情報に libffi.so が含まれます

A: ディストリビューションの libffi のバージョンと、Defold が必要とするバージョン(6 または 7)が一致していません。libffi.so.6 または libffi.so.7 が /usr/lib/x86_64-linux-gnu にインストールされていることを確認してください。libffi.so.7 は次のようにダウンロードできます。

$ wget http://ftp.br.debian.org/debian/pool/main/libf/libffi/libffi7_3.3-6_amd64.deb
$ sudo dpkg -i libffi7_3.3-6_amd64.deb

次に、Defold の実行時に、このバージョンへのパスを環境変数 LD_PRELOAD で指定します。

$ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libffi.so.7 ./Defold

Q: OpenGL ドライバーが古いのですが、Defold を使用できますか?

A: はい、ソフトウェアレンダリングを有効にすると Defold を使用できる可能性があります。環境変数 LIBGL_ALWAYS_SOFTWARE を 1 に設定すると、ソフトウェアレンダリングを有効にできます。

$ LIBGL_ALWAYS_SOFTWARE=1 ./Defold

Q: Linux で実行しようとすると、Defold のゲームが起動しないのはなぜですか?

A: エディターのコンソール出力を確認してください。次のメッセージが表示される場合は、

dmengine: error while loading shared libraries: libopenal.so.1: cannot open shared object file: No such file or directory

libopenal1 をインストールする必要があります。パッケージ名はディストリビューションによって異なり、場合によっては openal と、openal-dev または openal-devel のパッケージをインストールする必要があります。

$ apt-get install libopenal-dev

Q: 項目を選択する前に上部のメニューが閉じてしまうのはなぜですか?

A: 使用しているウィンドウマネージャー(Qtile や i3 など)が原因と考えられます。これは JavaFX の既知の問題で、環境変数 GDK_DISPLAY を 1 に設定すると解決できます。

$ GDK_DISPLAY=1 ./Defold

D=2

または、Defold/config ファイルの vmargs 行に -Djdk.gtk.version=2 を追加することでも解決できます。

vmargs = -Djdk.gtk.version=2,-Dfile.encoding=UTF-8,...

Q: Open From Disk を選択したときに、利用可能なファイルの場所をすべて参照できないのはなぜですか?

A: Flatpak を使用した Steam から Defold を実行している場合は、他のドライブにアクセスする権限を Steam に付与する必要があります。Flatpak アプリケーションの権限は、Flatseal などのツールで変更できます。

Q: Web プロファイラーや、ブラウザーを必要とする他のメニュー項目を開けないのはなぜですか?

A: Gnome 以外のシステムではブラウザーが検出されないため、内部での Desktop.getDesktop().browse(new URI(url)); の呼び出しが失敗していると考えられます。libgnome をインストールしてみてください。

$ apt-get install libgnome

Android に関する質問

Q: Android でナビゲーションバーとステータスバーを非表示にできますか?

A: はい。game.project ファイルの Android セクションで immersive_mode を設定します。これにより、アプリが画面全体を使用し、画面上のすべてのタッチイベントを取得できます。

Q: デバイスに Defold のゲームをインストールすると、「Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]」と表示されるのはなぜですか?

A: Android が、新しい証明書を使ってアプリをインストールしようとしていることを検出したためです。デバッグビルドのバンドル(bundle)を作成する際は、各ビルドが一時的な証明書で署名されます。新しいバージョンをインストールする前に、古いアプリをアンインストールします。

$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
      pkg: /data/local/tmp/Defold examples.apk
Success

Q: 特定の拡張を使用してビルドすると、AndroidManifest.xml のプロパティの競合に関するエラーが発生するのはなぜですか?

A: 同じプロパティタグに異なる値を指定した Android マニフェストのスタブを、2つ以上の拡張(extension)が提供すると、このエラーが発生することがあります。たとえば、Firebase と AdMob でこの問題が発生しています。ビルドエラーは次のように表示されます。

SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override. 

この問題と回避策の詳細は、Defold に報告された問題 #9453 と Google に報告された問題 #327696048 を参照してください。

HTML5 に関する質問

Q: Chrome で HTML5 アプリがスプラッシュ画面でフリーズするのはなぜですか?

A: ローカルのファイルシステムからブラウザーでゲームを実行できない場合があります。エディターから実行すると、ローカルの Web サーバーからゲームが配信されます。たとえば、Python の SimpleHTTPServer を使用できます。

$ python -m SimpleHTTPServer [port]

Q: 読み込み中にゲームが “Unexpected data size” エラーでクラッシュするのはなぜですか?

A: これは通常、Windows を使用し、ビルドを作成して Git にコミットした場合に発生します。Git の改行コードの設定が正しくないと、Git が改行コードを変更するため、データサイズも変わります。この問題を解決するには、次の手順に従ってください: Git で改行コードを扱うための設定

iOS に関する質問

Q: 無料の Apple Developer アカウントを使って Defold のゲームをインストールできません。

A: Defold プロジェクトで使用しているバンドル識別子(bundle identifier)が、モバイルプロビジョニングプロファイルを生成したときに Xcode プロジェクトで使用したものと同じであることを確認してください。

Q: バンドルを作成したアプリケーションのエンタイトルメントを確認するにはどうすればよいですか?

A: ビルドしたアプリのエンタイトルメントの確認より:

codesign -d --ent :- /path/to/the.app

Q: プロビジョニングプロファイルのエンタイトルメントを確認するにはどうすればよいですか?

A: プロファイルのエンタイトルメントの確認より:

security cms -D -i /path/to/iOSTeamProfile.mobileprovision

Windows に関する質問

Q: テクスチャのない GUI のボックスノード(box node)が、エディターでは透明なのに、ビルドして実行すると想定どおり表示されるのはなぜですか?

A: この問題は、AMD Radeon GPU を使用するコンピューターで発生することがあります。グラフィックスドライバーを更新してください。

Q: アトラス(atlas)やシーンビューを開くと com.sun.jna.Native.open.class java.lang.Error: Access is denied が表示されるのはなぜですか?

A: Defold を管理者として実行してみてください。Defold の実行ファイルを右クリックして、”Run as Administrator” を選択します。

Q: Intel UHD 内蔵 GPU を使用する Windows で、ゲームが正しく描画されないのはなぜですか(HTML5 ビルドは動作します)?

A: ドライバーをバージョン 27.20.100.8280 以降に更新してください。Intel Driver Support Assistantで確認します。詳しくは、こちらのフォーラム投稿を参照してください。

Q: Defold エディターがクラッシュし、ログに AWTError: Assistive Technology not found と表示されます

エディターがクラッシュし、ログに Caused by: java.awt.AWTError: Assistive Technology not found: com.sun.java.accessibility.AccessBridge と記録されている場合は、次の手順に従います。

  • C:\Users\<username> に移動します
  • 標準的なテキストエディター(Notepad でかまいません)で .accessibility.properties というファイルを開きます
  • 設定ファイル内で次の行を探します。
assistive_technologies=com.sun.java.accessibility.AccessBridge
screen_magnifier_present=true
  • これらの行の先頭にハッシュ記号(#`)を追加します
  • ファイルへの変更を保存し、Defold を再起動します

ゲーム機に関する質問

Q: 家庭用ゲーム機向けにビルドするには、追加のツールをインストールする必要がありますか?

A: エディターとコマンドラインツールからアプリケーションのバンドル(bundle)を作成できます。PlayStation®4、PlayStation®5、Nintendo Switch の実機でテストする方法については、それぞれのプラットフォームへのアクセスが許可されたときに案内されます。

Q: 家庭用ゲーム機も対象にする場合でも、単一のコードベースを簡単に使い続けられますか?

A: はい、Defold の標準 API 関数はすべて、家庭用ゲーム機のプラットフォームでも利用できます。標準機能に加えて、PlayStation®4、PlayStation®5、Nintendo Switch 固有の関数もいくつか利用できますが、一般的には、複数のプラットフォームでコードをまったく同じままにできるはずです。

ゲームの公開

Q: ゲームを AppStore で公開しようとしています。IDFA についてはどう回答すればよいですか?

A: 申請時に、Apple は IDFA の3つの有効な用途に対応する3つのチェックボックスを提示します。

  1. アプリ内での広告の配信
  2. 広告経由のインストールのアトリビューション
  3. 広告経由のユーザー行動のアトリビューション

選択肢1をチェックすると、アプリの審査担当者はアプリ内に広告が表示されるかを確認します。ゲームに広告が表示されない場合、却下される可能性があります。Defold 自体は広告 ID を使用しません。

Q: ゲームを収益化するにはどうすればよいですか?

A: Defold は、アプリ内購入やさまざまな広告ソリューションをサポートしています。利用できる収益化の選択肢の最新の一覧は、Asset Portal の Monetization カテゴリ をご覧ください。

Defold 使用時のエラー

Q: ビルドエラーは出ていないのにゲームを起動できません。何が問題ですか?

A: 以前に発生したビルドエラーを修正した後でも、まれにビルド処理でファイルが再ビルドされないことがあります。メニューから Project > Rebuild And Launch を選択して、強制的に全体を再ビルドします。

ゲームのコンテンツ

Q: Defold はプレハブをサポートしていますか?

A: はい、サポートしています。Defold では コレクション(collection) と呼びます。複雑なゲームオブジェクト(game object)の階層を作成し、個別の基本構成要素として保存できます。これらは、エディター内や実行時(コレクションの生成による)にインスタンス化できます。GUI ノード(GUI node)については、GUI テンプレートをサポートしています。

Q: ゲームオブジェクトを別のゲームオブジェクトの子として追加できないのはなぜですか?

A: ゲームオブジェクトファイル内で子を追加しようとしている可能性がありますが、それはできません。子を追加できるのはコレクションファイル内だけです。その理由を理解するには、親子階層が厳密には シーングラフ(scene graph)のトランスフォーム階層であることを思い出してください。シーン(コレクション)に配置(または生成)されていないゲームオブジェクトは、シーングラフの一部ではないため、シーングラフ階層の一部にもなれません。ゲームオブジェクトの親の ID は、go.get_parent() で取得できます。

Q: ゲームオブジェクトのすべての子にメッセージをブロードキャストできないのはなぜですか?

A: 親子関係はシーングラフのトランスフォームの関係だけを表しており、オブジェクト指向の集約と混同しないでください。ゲームのデータと、ゲームの状態が変わるときにそのデータをどう変換するのが最適かに注目すると、状態データを含むメッセージを多数のオブジェクトに常時送る必要性は少なくなるでしょう。データの階層が必要な場合は、Lua で簡単に構築して扱えます。

Q: スプライトの縁に表示の乱れが生じるのはなぜですか?

A: これは「エッジブリーディング(edge bleeding)」と呼ばれる表示の乱れです。アトラス(atlas)内で隣り合うピクセルの縁が、スプライト(sprite)に割り当てられた画像ににじみ込みます。解決するには、アトラス内の画像の縁に、同じピクセルの行と列を追加して余白を設けます。幸い、Defold のアトラスエディターで自動的に行えます。アトラスを開き、Extrude Borders の値を1に設定します。

Q: スプライトの色調を変えたり透明にしたりできますか?そのために独自のシェーダーを記述する必要がありますか?

A: すべてのスプライトでデフォルトで使用される組み込みのスプライトシェーダーには、「tint」という定数が定義されています。

  local red = 1
  local green = 0.3
  local blue = 0.55
  local alpha = 1
  go.set("#sprite", "tint", vmath.vector4(red, green, blue, alpha))

Q: スプライトの z 座標を100に設定すると描画されません。なぜですか?

A: ゲームオブジェクトの Z 位置は、描画順序を制御します。小さい値のものが、大きい値のものより先に描画されます。デフォルトのレンダースクリプトでは、深度が -1 から1の範囲にあるゲームオブジェクトが描画され、それより小さいものや大きいものは描画されません。レンダースクリプトについて詳しくは、公式の レンダリングドキュメント をご覧ください。GUI ノードでは Z 値は無視され、描画順序にまったく影響しません。代わりに、ノードはリストに並んでいる順序と子の階層(およびレイヤー構成)に従って描画されます。GUI の描画と、レイヤーを使ったドローコールの最適化について詳しくは、公式の GUI ドキュメント をご覧ください。

Q: ビュープロジェクションの Z 範囲を -100 から100に変更すると、パフォーマンスに影響しますか?

A: いいえ。影響するのは精度だけです。Z バッファーは対数的で、0に近い z 値の分解能は非常に高く、0から遠くなるほど分解能が低くなります。たとえば、24 bit バッファーでは10.0と10.000005を区別できますが、10000と10005は区別できません。

Q: 角度の表し方に一貫性がないのはなぜですか?

A: 実際には一貫性があります。エディターとゲーム API では、角度はどこでも度で表します。数学ライブラリではラジアンを使います。現在、この規則の例外は物理プロパティの angular_velocity で、ラジアン/秒で表されます。これは変更される予定です。

Q: 色だけを設定した(テクスチャのない)GUI ボックスノードを作成すると、どのように描画されますか?

A: 頂点カラーを使った形状として描画されます。この場合でもフィルレートを消費することに留意してください。

Q: 実行中にアセットを変更すると、エンジンは自動的にアンロードしますか?

A: すべてのリソースは内部で参照カウントにより管理されています。参照カウントが0になるとすぐに、そのリソースは解放されます。

Q: ゲームオブジェクトにアタッチされた音声コンポーネントを使わずに、音声を再生できますか?

A: すべてがコンポーネント(component)を基にしています。複数のサウンドを持ち、画面に表示されないヘッドレスのゲームオブジェクトを作成して、このサウンド制御用オブジェクトにメッセージを送ることでサウンドを再生できます。

Q: 音声コンポーネントに関連付けられた音声ファイルを、実行時に変更できますか?

A: 一般に、すべてのリソースは静的に宣言されているため、リソース管理を自分で行う必要がないという利点があります。リソースプロパティ を使って、コンポーネントに割り当てるリソースを変更できます。

Q: 物理のコリジョン形状のプロパティにアクセスする方法はありますか?

A: はい、物理 API、特に physics.get_shape() と physics.set_shape() を参照してください。

Q: シーン内のコリジョンオブジェクトを手早く描画する方法はありますか?(Box2D のデバッグ描画のように)

A: はい、physics.debug フラグを game.project で設定します。(公式の プロジェクト設定ドキュメント を参照してください。)

Q: 接触や衝突が多い場合、パフォーマンス上の負荷はどの程度ですか?

A: Defold は内部で Box2D の修正版を実行しており、パフォーマンス上の負荷はかなり近いはずです。プロファイラー を開けば、エンジンが物理処理に費やしている時間をいつでも確認できます。使用するコリジョンオブジェクト(collision object)の種類も考慮する必要があります。たとえば、静的オブジェクトはパフォーマンス上の負荷が小さくなります。詳しくは、Defold の公式 物理ドキュメント を参照してください。

Q: パーティクルエフェクトのコンポーネントが多いと、パフォーマンスにどのような影響がありますか?

A: 再生中かどうかによって異なります。再生していない ParticleFx のパフォーマンス上の負荷はゼロです。再生中の ParticleFx がパフォーマンスに与える影響は設定によって異なるため、プロファイラーを使って評価する必要があります。ほとんどのほかの要素と同様に、game.project の max_count で定義された ParticleFx の数だけ、メモリがあらかじめ確保されます。

Q: コレクションプロキシで読み込んだコレクション内のゲームオブジェクトで、入力を受け取るにはどうすればよいですか?

A: コレクションプロキシ(collection proxy)で読み込んだコレクションは、それぞれ独自の入力スタックを持ちます。入力は、メインコレクションの入力スタックからプロキシコンポーネントを経由して、コレクション内のオブジェクトへ送られます。つまり、読み込んだコレクション内のゲームオブジェクトが入力フォーカスを取得するだけでは不十分で、プロキシコンポーネントを 持つ ゲームオブジェクトも入力フォーカスを取得する必要があります。詳しくは、入力ドキュメント をご覧ください。

Q: 文字列型のスクリプトプロパティを使えますか?

A: いいえ。Defold は hash 型のプロパティをサポートしています。これらは、種類、状態の識別子、あらゆる種類のキーを表すために使えます。ハッシュはゲームオブジェクトの ID(パス)の格納にも使えますが、エディターが関連する URL をドロップダウンに自動で列挙するため、url プロパティのほうが適していることがよくあります。詳しくは、スクリプトプロパティのドキュメント をご覧ください。

Q: 行列(vmath.matrix4() などで作成したもの)の個々の要素にアクセスするにはどうすればよいですか?

A: mymatrix.m11、mymatrix.m12、mymatrix.m21 などを使って、要素にアクセスします。

Q: Not enough resources to clone the node というエラーが gui.clone() や gui.clone_tree() を使うと出るのですが?

A: GUI コンポーネントの Max Nodes の値を増やします。Outline でコンポーネントのルートを選択すると、Properties パネルでこの値を確認できます。

フォーラム

Q: 自分の仕事を宣伝するスレッドを投稿してもよいですか?

A: もちろんです!そのための専用の 「Work for hire」カテゴリ があります。コミュニティの役に立つ活動は常に歓迎しており、報酬の有無を問わずコミュニティにサービスを提供することは、そのよい例です。

Q: スレッドを作成して自分の作品を掲載しました。さらに追加してもよいですか?

A: 「Work for hire」スレッドを上位に押し上げる投稿を減らすため、自分のスレッドへの投稿は14日ごとに1回までとします(ただし、スレッド内のコメントへの直接の返信は可能です)。14日間のうちにスレッドへ作品を追加したい場合は、既存の投稿を編集して追加してください。

Q: Work for Hire カテゴリに求人を投稿してもよいですか?

A: はい、ぜひご利用ください!仕事の申し出にも依頼にも使えます。たとえば、「プログラマーです。2D ピクセルアーティストを探しています。資金は豊富なので、十分な報酬をお支払いします」といった投稿ができます。