A: 예, 모든 기능을 갖춘 Defold 엔진과 에디터는 완전히 무료입니다. 숨겨진 비용, 수수료, 로열티가 없습니다. 그냥 무료입니다.
A: Defold Foundation의 목표 중 하나는 전 세계 개발자가 Defold 소프트웨어를 사용할 수 있고, 소스 코드도 무료로 이용할 수 있도록 하는 것입니다.
A: 저희는 Defold에 깊이 전념하고 있습니다. Defold Foundation은 앞으로 오랫동안 Defold의 책임 있는 소유자로 존재할 수 있도록 설립되었습니다. 사라지지 않습니다.
A: 물론입니다. Defold는 점점 더 많은 전문 게임 개발자와 게임 스튜디오에서 사용하고 있습니다. Defold로 만든 게임 예시는 games showcase를 확인하세요.
A: 서비스와 제품을 개선하기 위해 웹사이트와 Defold 에디터의 익명 사용 데이터를 기록합니다. 사용자가 만드는 게임에는 사용자 추적이 없습니다(직접 분석 서비스를 추가하지 않는 한). 자세한 내용은 Privacy Policy를 읽어보세요.
A: Defold는 Ragnar Svensson과 Christian Murray가 만들었습니다. 두 사람은 2009년에 엔진, 에디터, 서버 작업을 시작했습니다. King과 Defold는 2013년에 파트너십을 시작했고, King은 2014년에 Defold를 인수했습니다. 전체 이야기는 여기에서 읽을 수 있습니다.
A: 물론입니다! 엔진은 완전한 3D 엔진입니다. 하지만 도구 세트는 2D용으로 만들어져 있으므로 많은 부분을 직접 처리해야 합니다. 더 나은 3D 지원은 계획되어 있습니다.
A: Defold 프로젝트의 게임 로직은 주로 Lua 언어로 작성합니다. 구체적으로는 Lua 5.1/LuaJIT를 사용하며, 자세한 내용은 Lua 매뉴얼을 참고하세요. Lua는 가볍고 빠르며 매우 강력한 동적 언어입니다. Defold는 Lua 코드를 생성하는 transpiler를 지원합니다. Transpiler 익스텐션을 설치하면 Teal 같은 대체 언어로 정적 검사를 받는 Lua를 작성할 수 있습니다. 플랫폼에 따라 네이티브 코드(C/C++, Objective-C, Java, JavaScript)를 사용해 Defold 엔진을 새로운 기능으로 확장할 수도 있습니다. 커스텀 메터리얼을 만들 때는 OpenGL ES SL shader language로 버텍스 쉐이더와 프래그먼트 쉐이더를 작성합니다.
A: Defold의 C++ 지원은 주로 서드파티 SDK나 플랫폼별 API와 연동하는 네이티브 익스텐션을 작성하기 위한 것입니다. dmSDK(네이티브 익스텐션에서 사용하는 Defold용 C++ API)는 점진적으로 더 많은 기능이 추가될 예정이며, 개발자가 원한다면 모든 게임 로직을 C++로 작성할 수 있게 하는 것이 목표입니다. Lua는 여전히 게임 로직에 사용하는 주 언어로 남겠지만, 확장된 C++ API를 통해 C++로도 게임 로직을 작성할 수 있게 됩니다. C++ API 확장 작업은 주로 기존 private 헤더 파일을 public 섹션으로 옮기고, public 사용에 맞게 API를 정리하는 작업입니다.
A: TypeScript는 공식적으로 지원되지 않습니다. 커뮤니티에서 ts-defold라는 툴킷을 유지 관리하고 있으며, 이를 사용하면 VSCode에서 바로 TypeScript를 작성하고 Lua로 transpile할 수 있습니다.
A: Haxe는 공식적으로 지원되지 않습니다. 커뮤니티에서 Haxe를 작성하고 Lua로 transpile하기 위한 hxdefold를 유지 관리하고 있습니다.
A: Defold Foundation은 C# 지원을 추가했고 이를 라이브러리 종속성으로 사용할 수 있게 했습니다. C#은 널리 사용되는 프로그래밍 언어이며, C#에 크게 투자한 스튜디오와 개발자가 Defold로 전환하는 데 도움이 됩니다.
A: Defold는 Lua를 기본 스크립팅 언어에서 대체하려는 것이 아닙니다. C# 지원은 익스텐션을 위한 새 언어로 추가됩니다. 프로젝트에서 C# 익스텐션을 사용하기로 선택하지 않는 한 엔진에는 영향을 주지 않습니다.
C# 지원에는 실행 파일 크기, 런타임 성능 같은 비용이 따르지만, 이는 개별 개발자나 스튜디오가 결정할 문제입니다.
C# 자체로 보면 비교적 작은 변경입니다. 익스텐션 시스템은 이미 여러 언어(C/C++/Java/Objective-C/Zig)를 지원하기 때문입니다. C# 바인딩을 생성해 SDK를 동기화 상태로 유지합니다. 이렇게 하면 최소한의 노력으로 바인딩을 최신 상태로 유지할 수 있습니다.
Defold Foundation은 이전에는 Defold에 C# 지원을 추가하는 것에 반대했지만, 여러 이유로 의견을 바꾸었습니다.
A: 에디터/도구와 엔진 런타임은 다음 플랫폼을 지원합니다.
| 시스템 | 버전 | 아키텍처 | 지원 |
|---|---|---|---|
| macOS | 11 Big Sur | x86-64, arm-64 |
에디터와 엔진 |
| Windows | Vista | x86-32, x86-64 |
에디터와 엔진 |
| Ubuntu (1) | 22.04 LTS | x86-64 |
에디터 |
| Linux (2) | Any | x86-64, arm-64 |
엔진 |
| iOS | 15.0 | arm-64 x86_64 |
엔진 |
| Android | 5.0 (API level 21) | arm-32, arm-64 |
엔진 |
| HTML5 | asm.js, wasm |
엔진 |
(1 에디터는 64-bit Ubuntu용으로 빌드되고 테스트됩니다. 다른 배포판에서도 동작할 수 있지만 보장하지는 않습니다.)
(2 엔진 런타임은 그래픽 드라이버가 최신이면 대부분의 64-bit Linux 배포판에서 실행됩니다. 그래픽 API에 대한 자세한 내용은 아래를 참고하세요.)
A: 클릭 한 번으로 PS4™, PS5™, Nintendo Switch, iOS(64-bit), Android(32-bit 및 64-bit), HTML5는 물론 macOS(x86-64 및 arm64), Windows(32-bit 및 64-bit), Linux(x86-64 및 arm64)에 퍼블리시할 수 있습니다. 하나의 코드베이스로 여러 플랫폼을 지원합니다.
A: 개발자는 완전히 스크립팅 가능한 렌더링 파이프라인을 사용하는 단일 렌더 API만 신경 쓰면 됩니다. Defold 렌더 스크립트 API는 렌더 작업을 다음 그래픽 API로 변환합니다.
| 시스템 | 그래픽 API | 참고 |
|---|---|---|
| macOS | OpenGL 3.3 or Metal | MoltenVK를 통한 Vulkan |
| Windows | OpenGL 3.3 or Vulkan 1.1 | |
| Linux | OpenGL 3.3 or Vulkan 1.1 | |
| Android | OpenGLES 3.0 or Vulkan 1.1 | OpenGLES 2.0으로 폴백 |
| iOS | OpenGLES 3.0 or Metal | MoltenVK를 통한 Vulkan |
| HTML5 | WebGL 2.0 or WebGPU | WebGL 1.0으로 폴백 |
A: 예, Help 메뉴에서 “About” 옵션을 선택하세요. 팝업에는 Defold beta 버전과, 더 중요하게는 특정 release SHA1이 명확하게 표시됩니다. 런타임 버전을 조회하려면 sys.get_engine_info()를 사용하세요.
http://d.defold.com/beta에서 다운로드할 수 있는 최신 beta 버전은 http://d.defold.com/beta/info.json을 열어 확인할 수 있습니다. stable 버전에도 같은 파일이 있습니다: http://d.defold.com/stable/info.json.
A: 예, sys.get_sys_info()를 확인하세요.
A: 에디터는 시스템에서 사용 가능한 메모리의 최대 75%를 사용합니다. RAM이 4 GB인 컴퓨터에서는 작은 Defold 프로젝트에 충분합니다. 중간 규모 또는 대형 프로젝트에는 6 GB 이상의 RAM을 사용하는 것이 권장됩니다.
A: 예. Defold stable 버전과 마찬가지로 Defold beta 에디터는 시작할 때 업데이트를 확인합니다.
java.awt.AWTError: Assistive Technology not found 오류가 표시되는 이유는 무엇인가요?
A: 이 오류는 NVDA 스크린 리더 같은 Java 보조 기술 문제와 관련이 있습니다. 홈 폴더에 .accessibility.properties 파일이 있을 가능성이 높습니다. 이 파일을 삭제하고 에디터를 다시 실행해 보세요. (참고: 보조 기술을 사용하고 있어서 해당 파일이 반드시 있어야 한다면 대체 해결 방법을 논의할 수 있도록 info@defold.se로 연락해 주세요).
이 내용은 Defold 포럼의 이 글에서 논의되었습니다.
sun.security.validator.ValidatorException: PKIX path building failed 오류가 표시되는 이유는 무엇인가요?
A: 이 예외는 에디터가 https 연결을 시도하지만 서버에서 제공한 인증서 체인을 확인할 수 없을 때 발생합니다.
이 오류에 대한 자세한 내용은 이 링크를 참조하세요.
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
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 HiDPI wiki 문서를 참고하세요.
A: KDE를 사용 중이라면 GDK_SCALE을 설정할 수 있습니다.
$ GDK_SCALE=2 ./Defold
A: 다음과 같이 에디터를 시작하세요.
$ GTK_CSD=0 ./Defold
com.jogamp.opengl을 참조합니다.
A: 특정 배포판(예: Ubuntu 18)에서는 Defold가 사용하는 jogamp/jogl 버전과 시스템의 Mesa 버전 사이에 문제가 있습니다. MESA_GL_VERSION_OVERRIDE를 2.1 또는 그래픽 드라이버 버전 이하의 더 큰 값으로 설정하여 glGetString(GL_VERSION) 호출 시 보고되는 GL 버전을 재정의할 수 있습니다. glxinfo를 사용해 드라이버가 지원하는 최대 OpenGL 버전을 확인할 수 있습니다.
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
com.jogamp.opengl.GLException: Graphics configuration failed“가 표시되는 이유는 무엇인가요?
A: 특정 배포판(예: Ubuntu 20.04)에서는 Defold를 실행할 때 새로운 Mesa 드라이버(Iris)와 관련된 문제가 있습니다. Defold를 실행할 때 이전 드라이버 버전 사용을 시도할 수 있습니다.
$ MESA_LOADER_DRIVER_OVERRIDE=i965 ./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
A: 예. 소프트웨어 렌더링(software rendering)을 활성화하면 Defold를 사용할 수 있을 수도 있습니다. LIBGL_ALWAYS_SOFTWARE 환경 변수를 1로 설정하여 소프트웨어 렌더링을 활성화할 수 있습니다.
$ LIBGL_ALWAYS_SOFTWARE=1 ./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
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,...
A: Flatpak을 사용해 Steam에서 Defold를 실행 중이라면 Steam에 다른 드라이브에 액세스할 권한을 부여해야 합니다. Flatseal 또는 비슷한 도구를 사용하여 Flatpak 어플리케이션의 권한을 수정할 수 있습니다.
A: Gnome이 아닌 시스템에서 브라우저가 감지되지 않아 Desktop.getDesktop().browse(new URI(url)); 내부 호출이 실패했을 가능성이 큽니다. libgnome 설치를 시도해 보세요.
$ apt-get install libgnome
A: 예, game.project 파일의 Android 섹션에서 immersive_mode 설정값을 설정하세요. 이렇게 하면 앱이 전체 화면을 사용하고 화면의 모든 터치 이벤트를 캡처할 수 있습니다.
A: Android는 새 인증서로 앱을 설치하려고 하는 것을 감지합니다. 디버그 빌드를 번들링할 때는 각 빌드가 임시 인증서로 서명됩니다. 새 버전을 설치하기 전에 이전 앱을 제거하세요:
$ 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
A: 두 개 이상의 익스텐션이 같은 프로퍼티 태그를 포함하지만 서로 다른 값을 가진 Android Manifest stub을 제공할 때 발생할 수 있습니다. 예를 들어 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에서 읽을 수 있습니다.
A: 경우에 따라 파일 시스템에서 로컬로 브라우저에서 게임을 실행할 수 없습니다. 에디터에서 실행하면 로컬 웹 서버에서 게임이 제공됩니다. 예를 들어 Python에서 SimpleHTTPServer를 사용할 수 있습니다:
$ python -m SimpleHTTPServer [port]
A: 이는 보통 Windows를 사용하면서 빌드를 만들고 Git에 커밋할 때 발생합니다. Git의 line-ending 설정이 잘못되어 있으면 줄 끝 문자가 변경되고 그에 따라 데이터 크기도 변경됩니다. 문제를 해결하려면 다음 지침을 따르세요: https://docs.github.com/en/free-pro-team@latest/github/using-git/configuring-git-to-handle-line-endings
A: mobile provisioning profile을 생성할 때 Xcode 프로젝트에서 사용한 bundle identifier와 Defold 프로젝트에서 사용하는 bundle identifier가 같은지 확인하세요.
A: 빌드된 앱의 entitlements 검사에서:
codesign -d --ent :- /path/to/the.app
A: 프로파일의 entitlements 검사에서:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision
A: 이 오류는 AMD Radeon GPU를 사용하는 컴퓨터에서 발생할 수 있습니다. 그래픽 드라이버를 업데이트했는지 확인하세요.
com.sun.jna.Native.open.class java.lang.Error: Access is denied가 표시되는 이유는 무엇인가요?
A: Defold를 관리자 권한으로 실행해 보세요. Defold 실행 파일을 마우스 오른쪽 버튼으로 클릭하고 “Run as Administrator”를 선택합니다.
A: 드라이버를 27.20.100.8280 이상 버전으로 업데이트했는지 확인하세요. Intel Driver Support Assistant에서 확인하세요. 추가 정보는 이 포럼 게시물에서 확인할 수 있습니다.
AWTError: Assistive Technology not found가 표시됩니다
에디터가 크래시하면서 로그에 Caused by: java.awt.AWTError: Assistive Technology not found: com.sun.java.accessibility.AccessBridge가 언급된다면 다음 단계를 따르세요:
C:\Users\<username>로 이동합니다.accessibility.properties 파일을 엽니다(Notepad를 사용해도 됩니다)assistive_technologies=com.sun.java.accessibility.AccessBridge
screen_magnifier_present=true
#)를 추가합니다A: 에디터와 커맨드 라인 도구에서 어플리케이션 번들을 생성할 수 있습니다. PlayStation®4, PlayStation®5 및 Nintendo Switch 하드웨어에서 테스트하는 방법에 대한 정보는 해당 플랫폼에 대한 액세스 권한이 부여될 때 제공됩니다.
A: 예, 모든 표준 Defold API 함수는 콘솔 플랫폼에서도 사용할 수 있습니다. 표준 기능 외에도 PlayStation®4, PlayStation®5 및 Nintendo Switch 전용 함수 몇 가지를 사용할 수 있지만, 일반적으로 여러 플랫폼에서 코드를 그대로 유지할 수 있습니다.
A: 제출할 때 Apple은 IDFA의 세 가지 유효한 사용 사례에 대해 세 개의 체크박스를 제공합니다.
옵션 1을 체크하면 앱 리뷰어는 앱에 광고가 표시되는지 확인합니다. 게임에 광고가 표시되지 않으면 거절될 수 있습니다. Defold 자체는 AD id를 사용하지 않습니다.
A: Defold는 인앱 구매와 여러 광고 솔루션을 지원합니다. 사용 가능한 최신 수익화 옵션 목록은 Asset Portal의 Monetization category를 확인하세요.
A: 빌드 프로세스가 이전에 빌드 오류를 만났고 이를 수정한 뒤에도, 드문 경우 일부 파일을 다시 빌드하지 못할 수 있습니다. 메뉴에서 Project > Rebuild And Launch를 선택해 전체를 강제로 다시 빌드하세요.
A: 예, 지원합니다. Defold에서는 이를 컬렉션이라고 부릅니다. 컬렉션을 사용하면 복잡한 게임 오브젝트 계층구조를 만들고, 이를 에디터나 런타임에서(컬렉션 스폰을 통해) 인스턴스화할 수 있는 별도의 빌딩 블록으로 저장할 수 있습니다. GUI 노드에는 GUI 템플릿 지원이 있습니다.
A: 게임 오브젝트 파일 안에서 자식을 추가하려고 했을 가능성이 큽니다. 이는 불가능합니다. 컬렉션 파일 안에서만 가능합니다. 이유를 이해하려면 부모-자식 계층구조가 엄격히 씬 그래프(scene graph) 변형 계층구조라는 점을 기억해야 합니다. 씬(컬렉션)에 배치되거나 스폰되지 않은 게임 오브젝트는 씬 그래프의 일부가 아니므로 씬 그래프 계층구조의 일부가 될 수 없습니다. go.get_parent()를 사용하면 게임 오브젝트의 부모 id를 얻을 수 있습니다.
A: 부모-자식 관계는 씬 그래프 변형 관계만을 표현하며, 객체지향 집합체와 혼동해서는 안 됩니다. 게임 데이터와 게임 상태가 바뀔 때 이를 가장 잘 변형하는 방법에 집중하면, 여러 오브젝트에 상태 데이터를 담은 메세지를 항상 보내야 할 필요가 줄어들 것입니다. 데이터 계층구조가 필요한 경우에는 Lua에서 쉽게 구성하고 처리할 수 있습니다.
A: 이는 “edge bleeding”이라는 시각적 아티팩트입니다. 아틀라스에서 인접한 이미지의 가장자리 픽셀이 스프라이트에 할당된 이미지 안으로 번져 들어오는 현상입니다. 해결 방법은 아틀라스 이미지의 가장자리를 동일한 픽셀의 추가 행과 열로 패딩하는 것입니다. 다행히 Defold의 아틀라스 에디터가 이를 자동으로 처리할 수 있습니다. 아틀라스를 열고 Extrude Borders 값을 1로 설정하세요.
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))
A: 게임 오브젝트의 Z-position은 렌더링 순서를 제어합니다. 낮은 값이 높은 값보다 먼저 그려집니다. 기본 렌더 스크립트에서는 -1부터 1 사이의 depth 범위에 있는 게임 오브젝트가 그려지며, 그보다 낮거나 높은 값은 그려지지 않습니다. 렌더링 스크립트에 대한 자세한 내용은 공식 Render 문서를 읽어보세요. GUI 노드에서는 Z 값이 무시되며 렌더링 순서에 전혀 영향을 주지 않습니다. 대신 노드는 나열된 순서와 자식 계층구조(및 레이어)에 따라 렌더링됩니다. 레이어를 사용한 GUI 렌더링과 드로우콜 최적화에 대한 자세한 내용은 공식 GUI 문서를 읽어보세요.
A: 아닙니다. 유일한 영향은 정밀도입니다. z-buffer는 logarithmic이며 0에 가까운 z 값에 대해서는 매우 세밀한 해상도를 갖고, 0에서 멀리 떨어진 값에 대해서는 해상도가 낮습니다. 예를 들어 24 bit 버퍼에서는 10.0과 10.000005를 구분할 수 있지만, 10000과 10005는 구분할 수 없습니다.
A: 실제로는 일관성이 있습니다. 에디터와 게임 API에서는 각도가 모두 도(degree)로 표현됩니다. 수학 라이브러리는 라디안(radian)을 사용합니다. 현재 angular_velocity 물리 프로퍼티가 radians/s로 표현되는 부분에서 관례가 깨져 있는데, 이는 변경될 예정입니다.
A: 단순한 버텍스 컬러 shape로 렌더링됩니다. 그래도 fill-rate 비용은 발생한다는 점을 기억하세요.
A: 모든 리소스는 내부적으로 ref-count됩니다. ref-count가 0이 되는 즉시 리소스가 해제됩니다.
A: 모든 것은 컴포넌트 기반입니다. 여러 사운드를 가진 headless 게임 오브젝트를 만들고, 사운드 컨트롤러 오브젝트에 메세지를 보내 사운드를 재생할 수 있습니다.
A: 일반적으로 모든 리소스는 정적으로 선언되며, 그 덕분에 리소스 관리를 무료로 얻을 수 있습니다. 리소스 프로퍼티를 사용하면 컴포넌트에 할당된 리소스를 변경할 수 있습니다.
A: 예, physics API를 확인하세요. 특히 physics.get_shape()와 physics.set_shape()를 참고하세요.
A: 예, game.project에서 physics.debug 플래그를 설정하세요. 공식 Project settings 문서를 참고하세요.
A: Defold는 백그라운드에서 수정된 버전의 Box2D를 실행하며, 성능 비용은 상당히 비슷합니다. 프로파일러를 열면 엔진이 물리에 얼마나 많은 시간을 쓰는지 언제든지 확인할 수 있습니다. 어떤 종류의 충돌 오브젝트를 사용하는지도 고려해야 합니다. 예를 들어 static 오브젝트는 성능 측면에서 더 저렴합니다. 자세한 내용은 Defold의 공식 Physics 문서를 참고하세요.
A: 재생 중인지 아닌지에 따라 다릅니다. 재생 중이 아닌 ParticleFx는 성능 비용이 0입니다. 재생 중인 ParticleFx의 성능 영향은 설정 방식에 따라 달라지므로 프로파일러를 사용해 평가해야 합니다. 대부분의 다른 항목과 마찬가지로 메모리는 game.project에서 max_count로 정의된 ParticleFx 수만큼 미리 할당됩니다.
A: 각 프록시로 로드된 컬렉션은 자체 입력 스택을 가집니다. 입력은 main 컬렉션 입력 스택에서 프록시 컴포넌트를 통해 컬렉션 안의 오브젝트로 라우팅됩니다. 즉, 로드된 컬렉션 안의 게임 오브젝트가 입력 포커스를 획득하는 것만으로는 충분하지 않으며, 프록시 컴포넌트를 가지고 있는 게임 오브젝트도 입력 포커스를 획득해야 합니다. 자세한 내용은 Input 문서를 참고하세요.
A: 아니요. Defold는 hash 타입의 프로퍼티를 지원합니다. 이는 타입, 상태 식별자, 또는 어떤 종류의 키를 나타내는 데 사용할 수 있습니다. Hash는 게임 오브젝트 id(경로)를 저장하는 데도 사용할 수 있지만, 에디터가 관련 URL로 드롭다운을 자동으로 채워주기 때문에 url 프로퍼티가 더 나은 경우가 많습니다. 자세한 내용은 Script properties 문서를 참고하세요.
vmath.matrix4() 등으로 만든 matrix의 개별 cell에는 어떻게 액세스하나요?
A: mymatrix.m11, mymatrix.m12, mymatrix.m21 등을 사용해 cell에 액세스합니다.
Not enough resources to clone the node가 발생합니다.
A: gui 컴포넌트의 Max Nodes 값을 늘리세요. Outline에서 컴포넌트의 root를 선택하면 Properties 패널에서 이 값을 찾을 수 있습니다.
A: 물론입니다! 이를 위한 특별한 “Work for hire” category가 있습니다. 커뮤니티에 도움이 되는 모든 것을 항상 장려하며, 보수를 받든 받지 않든 커뮤니티에 서비스를 제공하는 것은 그 좋은 예입니다.
A: “Work for hire” thread의 bumping을 줄이기 위해, 자신의 thread에는 14일에 한 번보다 자주 게시할 수 없습니다(thread 안의 댓글에 직접 답하는 경우에는 답글을 달 수 있습니다). 14일 기간 안에 thread에 추가 작업물을 넣고 싶다면, 기존 게시물을 편집해 추가 컨텐츠를 넣어야 합니다.
A: 물론입니다. 자유롭게 사용하세요! 구인과 의뢰 모두에 사용할 수 있습니다. 예를 들면 “Programmer looking for 2D pixel artist; I’m rich and I’ll pay you well” 같은 글입니다.