FAQ
FAQ

Read this FAQ in English

Sık sorulan sorular

Genel sorular

Q: Defold gerçekten ücretsiz mi?

A: Evet, Defold motoru ve düzenleyicisi tüm işlevleriyle tamamen ücretsizdir. Gizli maliyet, ücret veya telif ücreti yoktur. Tamamen ücretsizdir.

Q: Defold Foundation Defold’u neden ücretsiz dağıtıyor?

A: Defold Foundation kuruluşunun amaçlarından biri, Defold yazılımının dünyanın her yerindeki geliştiricilere sunulmasını ve kaynak kodunun ücretsiz olarak erişilebilir olmasını sağlamaktır.

Q: Defold’u ne kadar süre destekleyeceksiniz?

A: Defold’a güçlü bir bağlılık duyuyoruz. Defold Foundation, Defold’un sorumlu sahibi olarak uzun yıllar varlığını sürdürmesi güvence altına alınacak şekilde kurulmuştur. Varlığını sürdürecektir.

Q: Profesyonel geliştirme için Defold’a güvenebilir miyim?

A: Kesinlikle. Defold’u kullanan profesyonel oyun geliştiricilerinin ve oyun stüdyolarının sayısı giderek artıyor. Defold ile oluşturulmuş oyun örnekleri için oyun vitrinine göz atın.

Q: Ne tür kullanıcı takibi yapıyorsunuz?

A: Hizmetlerimizi ve ürünümüzü iyileştirmek için web sitelerimizden ve Defold düzenleyicisinden anonim kullanım verileri kaydediyoruz. Oluşturduğunuz oyunlarda kullanıcı takibi yoktur (kendiniz bir analiz hizmeti eklemediğiniz sürece). Bu konuda daha fazla bilgiyi Gizlilik Politikamızda bulabilirsiniz.

Q: Defold’u kim yaptı?

A: Defold, Ragnar Svensson ve Christian Murray tarafından oluşturuldu. Motor, düzenleyici ve sunucular üzerinde çalışmaya 2009’da başladılar. King ve Defold 2013’te bir ortaklık başlattı, King ise 2014’te Defold’u satın aldı. Hikâyenin tamamını buradan okuyabilirsiniz.

Oyun geliştirme soruları

Q: Defold’da 3B oyunlar yapabilir miyim?

A: Kesinlikle! Motor, tam donanımlı bir 3B motordur. Ancak araç seti 2B için hazırlanmıştır, bu nedenle pek çok zahmetli işi kendiniz yapmanız gerekir. Daha iyi 3B desteği planlanmaktadır.

Programlama dili soruları

Q: Defold’da hangi programlama diliyle çalışırım?

A: Defold projenizdeki oyun mantığı öncelikle Lua diliyle yazılır (özellikle Lua 5.1/LuaJIT; ayrıntılar için Lua kılavuzuna bakın). Lua, hızlı ve çok güçlü, hafif bir dinamik dildir. Defold, Lua kodu üreten kaynak koddan kaynak koda derleyicileri (transpiler) destekler. Böyle bir derleyici eklentisi kurulduğunda, statik olarak denetlenen Lua yazmak için Teal gibi alternatif diller kullanabilirsiniz. Ayrıca Defold motorunu yeni işlevlerle genişletmek için yerel kod (native code; platforma bağlı olarak C/C++, Objective-C, Java ve JavaScript) kullanabilirsiniz. Özel materyaller (material) oluştururken köşe ve parça gölgelendiricileri (vertex shader ve fragment shader) yazmak için OpenGL ES SL gölgelendirici dili kullanılır.

Q: Oyun mantığını yazmak için C++ kullanabilir miyim?

A: Defold’daki C++ desteği esas olarak üçüncü taraf yazılım geliştirme kitleriyle (SDK) veya platforma özgü API’lerle iletişim kuran yerel kod eklentileri (native extension) yazmak için vardır. dmSDK (yerel kod eklentilerinde kullanılan Defold C++ API’si), isteyen bir geliştiricinin tüm oyun mantığını C++ ile yazabilmesini sağlayacak şekilde zamanla daha fazla işlevle genişletilecektir. Lua, oyun mantığı için kullanılan ana dil olmaya devam edecek, ancak genişletilen C++ API’siyle oyun mantığını C++ kullanarak yazmak da mümkün olacaktır. C++ API’sini genişletme çalışmaları esas olarak mevcut özel başlık dosyalarını herkese açık bölüme taşımayı ve API’leri genel kullanıma uygun hâle getirmeyi kapsar.

Q: Defold ile TypeScript kullanabilir miyim?

A: TypeScript resmî olarak desteklenmez. Topluluk, TypeScript yazmak ve doğrudan VSCode içinden Lua koduna dönüştürmek için ts-defold araç setini geliştirmeye devam ediyor.

Q: Defold ile Haxe kullanabilir miyim?

A: Haxe resmî olarak desteklenmez. Topluluk, Haxe yazmak ve Lua koduna dönüştürmek için hxdefold projesini geliştirmeye devam ediyor.

Q: Defold ile C# kullanabilir miyim?

A: Defold Foundation, C# desteğini ekledi ve bir kütüphane bağımlılığı olarak kullanıma sundu. C#, yaygın olarak benimsenmiş bir programlama dilidir ve C# diline büyük yatırım yapmış stüdyoların ve geliştiricilerin Defold’a geçişine yardımcı olacaktır.

Q: C# desteği eklenmesinin Defold’u olumsuz etkileyeceğinden endişeleniyorum. Endişelenmeli miyim?

Defold, ana betik dili olarak Lua’dan UZAKLAŞMIYOR. C# desteği, eklentiler için yeni bir dil olarak ekleniyor. Projenizde C# eklentilerini kullanmayı seçmediğiniz sürece motoru etkilemeyecektir.

C# desteğinin bazı maliyetleri (yürütülebilir dosya boyutu, çalışma zamanı performansı vb.) olacaktır, ancak buna her geliştirici veya stüdyo kendisi karar verecektir.

C# dilinin kendisine gelince, eklenti sistemi zaten birçok dili (C/C++/Java/Objective-C/Zig) desteklediğinden bu nispeten küçük bir değişikliktir. C# bağlamaları üretilerek SDK’lerin birbiriyle uyumu korunacaktır. Böylece bağlamalar en az çabayla güncel tutulacaktır.

Defold Foundation daha önce Defold’a C# desteği eklenmesine karşıydı, ancak çeşitli nedenlerle görüşünü değiştirdi:

  • Stüdyolar ve geliştiriciler C# desteği istemeye devam ediyor.
  • C# desteğinin kapsamı yalnızca eklentilerle sınırlı tutuldu (yani az çaba gerektiriyor).
  • Çekirdek motor etkilenmeyecek.
  • C# API’leri üretilirse en az çabayla birbiriyle uyumlu tutulabilir.
  • C# desteği, NativeAOT ile DotNet 9 üzerine kurulacak; böylece mevcut derleme hattının bağlayabileceği statik kütüphaneler üretilecek (diğer tüm Defold eklentileri gibi).

Platform soruları

Q: Defold hangi platformlarda çalışır?

A: Aşağıdaki platformlar desteklenir:

Düzenleyici ve araçlar

Sistem Sürüm Mimariler
macOS 11 Big Sur x86-64, arm-64
Windows 10 x86-64
Ubuntu (1) 22.04 LTS x86-64

(1 Düzenleyici, 64 bit Ubuntu için derlenir ve test edilir. Diğer dağıtımlarda da çalışması beklenir, ancak bunu garanti etmiyoruz.)

Motorun çalışma zamanı ortamı

Sistem Sürüm Mimariler
macOS 11 Big Sur x86-64, arm-64
Windows Vista x86-64
Linux (2) Herhangi biri x86-64, arm-64
iOS 15.0 arm-64
Android 5.0 (API düzeyi 21) arm-32, arm-64, x86-64
HTML5   wasm-web, wasm_pthread-web

(2 Grafik sürücüleri güncel olduğu sürece motorun çalışma zamanı ortamının çoğu 64 bit Linux dağıtımında çalışması beklenir; grafik API’leri hakkında daha fazla bilgi için aşağıya bakın)

Q: Defold ile hangi hedef platformlar için oyun geliştirebilirim?

A: Tek tıklamayla PS4™, PS5™, Nintendo Switch, iOS (64 bit), Android (32 bit ve 64 bit) ve HTML5 için; ayrıca macOS (x86-64 ve arm64), Windows (64 bit) ve Linux (x86-64 ve arm64) için yayımlayabilirsiniz. Gerçekten de tek bir kod tabanı birden çok platformu destekler.

Q: Defold hangi işleme API’sini kullanır?

A: Geliştirici olarak, tamamen betiklerle yönetilebilen bir işleme hattı kullanan tek bir işleme (rendering) API’siyle ilgilenmeniz yeterlidir. Defold’un işleme betiği API’si, işleme işlemlerini aşağıdaki grafik API’lerine dönüştürür:

Sistem Grafik API’si Not
macOS Metal, OpenGL 3.3 veya Vulkan Defold 1.14.0’dan itibaren varsayılan Metal’dir; MoltenVK aracılığıyla Vulkan
Windows OpenGL 3.3 veya Vulkan 1.1  
Linux x86-64 OpenGL 3.3 veya Vulkan 1.1  
Linux ARM64 OpenGL ES veya Vulkan 1.1 Varsayılan EGL/GLES’tir
Android OpenGLES 3.0 veya Vulkan 1.1 OpenGLES 2.0’a geri dönüş
iOS cihazları OpenGLES 3.0, Metal veya Vulkan Varsayılan OpenGLES’tir; MoltenVK aracılığıyla Vulkan
iOS simülatörü Metal Defold 1.14.0’dan itibaren her zaman Metal
HTML5 WebGL 2.0 veya WebGPU WebGL 1.0’a geri dönüş

Q: Hangi sürümü çalıştırdığımı öğrenmenin bir yolu var mı?

A: Evet, Help menüsündeki “About” seçeneğini seçin. Açılır pencere, Defold beta sürümünü ve daha da önemlisi, ilgili sürümün SHA1 değerini açıkça gösterir. Çalışma sırasında sürümü sorgulamak için sys.get_engine_info() işlevini kullanın.

http://d.defold.com/beta adresinden indirilebilen en son beta sürümünü, http://d.defold.com/beta/info.json adresini açarak kontrol edebilirsiniz (aynı dosya kararlı sürümler için de vardır: http://d.defold.com/stable/info.json).

Q: Oyunun çalışma sırasında hangi platformda çalıştığını öğrenmenin bir yolu var mı?

A: Evet, sys.get_sys_info() işlevine göz atın.

Düzenleyici soruları

Q: Düzenleyicinin sistem gereksinimleri nelerdir?

A: Düzenleyici (editor), sistemde kullanılabilir belleğin %75’ine kadarını kullanır. 4 GB RAM bulunan bir bilgisayarda bunun küçük Defold projeleri için yeterli olması beklenir. Orta büyüklükteki veya büyük projeler için 6 GB veya daha fazla RAM kullanılması önerilir.

Q: Defold’un beta sürümleri otomatik olarak güncelleniyor mu?

A: Evet. Defold’un beta düzenleyicisi, kararlı sürümde olduğu gibi başlangıçta güncellemeleri kontrol eder.

Q: Düzenleyiciyi başlatırken neden java.awt.AWTError: Assistive Technology not found hatasını alıyorum?

A: Bu hata, NVDA ekran okuyucusu gibi Java yardımcı teknolojileriyle ilgili sorunlardan kaynaklanır. Muhtemelen kullanıcı klasörünüzde bir .accessibility.properties dosyası vardır. Dosyayı kaldırın ve düzenleyiciyi yeniden başlatmayı deneyin. (Not: Herhangi bir yardımcı teknoloji kullanıyorsanız ve bu dosyanın bulunması gerekiyorsa alternatif çözümleri görüşmek için lütfen info@defold.se adresinden bizimle iletişime geçin).

Bu konu Defold forumunda burada ele alınmıştır.

Q: Düzenleyiciyi başlatırken neden sun.security.validator.ValidatorException: PKIX path building failed hatasını alıyorum?

A: Bu istisna, düzenleyici bir https bağlantısı kurmaya çalıştığında sunucunun sağladığı sertifika zinciri doğrulanamıyorsa ortaya çıkar.

Bu hata hakkında ayrıntılı bilgi için bu bağlantıya bakın.

Q: Belirli işlemleri gerçekleştirirken neden java.lang.OutOfMemoryError: Java heap space hatasını alıyorum?

A: Defold düzenleyicisi Java kullanılarak geliştirilmiştir ve bazı durumlarda Java’nın varsayılan bellek yapılandırması yeterli olmayabilir. Bu durumda düzenleyicinin yapılandırma dosyasını düzenleyerek daha fazla bellek ayırmasını elle yapılandırabilirsiniz. config adlı yapılandırma dosyası, macOS’te Defold.app/Contents/Resources/ klasöründe bulunur. Windows’ta Defold.exe yürütülebilir dosyasının, Linux’ta ise Defold yürütülebilir dosyasının yanında bulunur. config dosyasını açın ve -Xmx6gb seçeneğini vmargs ile başlayan satıra ekleyin. -Xmx6gb eklemek, en büyük öbek (heap) boyutunu 6 gigabayt olarak ayarlar (varsayılan değer genellikle 4Gb’dir). Şuna benzer bir görünüm elde etmelisiniz:

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 soruları

Q: Defold düzenleyicisi 4k veya HiDPI monitörde çalıştırıldığında neden çok küçük görünüyor?

A: GNOME kullanıyorsanız Defold’u çalıştırmadan önce ölçekleme katsayısını değiştirebilirsiniz. kaynak

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

A: Özellikle kesirli bir katsayıyla büyütmek istediğinizde kullanabileceğiniz alternatif bir çözüm, Defold/config dosyasını değiştirip vmargs satırına glass.gtk.uiScale eklemektir: kaynak

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,...

Bu değer hakkında daha fazla bilgi için Arch Linux HiDPI wiki yazısına bakın.

A: KDE kullanıyorsanız GDK_SCALE değerini ayarlayabilirsiniz:

$ GDK_SCALE=2 ./Defold

Q: Elementary OS üzerinde fare tıklamaları neden düzenleyicinin içinden geçip altındaki öğelere ulaşıyor?

A: Düzenleyiciyi şu şekilde başlatın:

$ GTK_CSD=0 ./Defold

Q: Defold düzenleyicisi bir koleksiyon veya oyun nesnesi açarken çöküyor ve çökme iletisinde com.jogamp.opengl geçiyor

A: Bazı dağıtımlarda (Ubuntu 18 gibi), Defold’un kullandığı jogamp/jogl sürümü ile sistemdeki Mesa sürümü arasında bir sorun vardır. MESA_GL_VERSION_OVERRIDE değerini 2.1 veya daha yüksek, ancak sürücünüzün sürümünü aşmayan bir değere ayarlayarak glGetString(GL_VERSION) çağrıldığında bildirilen GL sürümünü değiştirebilirsiniz. Sürücünüzün desteklediği en yüksek OpenGL sürümünü glxinfo kullanarak kontrol edebilirsiniz:

glxinfo | grep version

Örnek çıktı (“OpenGL version string: x.y” satırını arayın):

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 sürümünü veya grafik sürücünüzle eşleşen sürümü kullanın:

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

Q: Defold’u başlatırken neden “com.jogamp.opengl.GLException: Graphics configuration failed” hatasını alıyorum?

A: Bazı dağıtımlarda (örneğin Ubuntu 20.04), Defold çalıştırılırken yeni Mesa sürücüleriyle (Iris) ilgili bir sorun yaşanır. Defold’u çalıştırırken daha eski bir sürücü sürümü kullanmayı deneyebilirsiniz:

$ MESA_LOADER_DRIVER_OVERRIDE=i965 ./Defold

Q: Defold düzenleyicisi bir koleksiyon veya oyun nesnesi açarken çöküyor ve çökme iletisinde libffi.so geçiyor

A: Dağıtımınızın libffi sürümü ile Defold’un gerektirdiği sürüm (6 veya 7) eşleşmiyor. libffi.so.6 veya libffi.so.7 dosyasının /usr/lib/x86_64-linux-gnu altında kurulu olduğundan emin olun. libffi.so.7 dosyasını şu şekilde indirebilirsiniz:

$ 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

Ardından Defold’u çalıştırırken bu sürümün yolunu LD_PRELOAD ortam değişkeninde belirtin:

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

Q: OpenGL sürücülerim güncelliğini yitirmiş. Defold kullanmaya devam edebilir miyim?

A: Evet, yazılımla işlemeyi (software rendering) etkinleştirirseniz Defold’u kullanmanız mümkün olabilir. LIBGL_ALWAYS_SOFTWARE ortam değişkenini 1 yaparak yazılımla işlemeyi etkinleştirebilirsiniz:

$ LIBGL_ALWAYS_SOFTWARE=1 ./Defold

Q: Linux’ta çalıştırmayı denediğimde Defold oyunum neden başlamıyor?

A: Düzenleyicideki konsol çıktısını kontrol edin. Şu iletiyi alıyorsanız:

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

libopenal1 paketini kurmanız gerekir. Paket adı dağıtımlar arasında farklılık gösterir ve bazı durumlarda openal ile openal-dev veya openal-devel paketlerini kurmanız gerekebilir.

$ apt-get install libopenal-dev

Q: Üst menü neden bir şey seçemeden kapanıyor?

A: Bunun nedeni büyük olasılıkla kullanılan pencere yöneticisidir (örneğin Qtile veya i3). Bu, JavaFX’te bilinen bir sorundur ve GDK_DISPLAY ortam değişkenini 1 yaparak çözülebilir:¨

$ GDK_DISPLAY=1 ./Defold

D=2

Veya Defold/config dosyasını değiştirip vmargs satırına -Djdk.gtk.version=2 ekleyerek çözebilirsiniz:

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

Q: Open From Disk seçeneğini seçtiğimde neden mevcut tüm dosya konumlarına göz atamıyorum?

A: Defold’u Flatpak kullanan Steam üzerinden çalıştırıyorsanız Steam’e diğer sürücülerinize erişme izni vermeniz gerekir. Flatpak uygulamalarınızın izinlerini Flatseal veya benzer bir araçla değiştirebilirsiniz.

Q: Web profil çıkarıcısını veya tarayıcı gerektiren diğer menü seçeneklerini neden açamıyorum?

A: Büyük olasılıkla Gnome dışındaki sistemlerde tarayıcı algılanmadığı için dahili Desktop.getDesktop().browse(new URI(url)); çağrısı başarısız oluyordur. libgnome kurmayı deneyin.

$ apt-get install libgnome

Android soruları

Q: Android’de gezinme ve durum çubuklarını gizlemek mümkün mü?

A: Evet, game.project dosyasının Android bölümündeki immersive_mode ayarını etkinleştirin. Bu, uygulamanızın ekranın tamamını kaplamasını ve ekrandaki tüm dokunma olaylarını yakalamasını sağlar.

Q: Cihaza bir Defold oyunu kurarken neden “Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]” hatasını alıyorum?

A: Android, uygulamayı yeni bir sertifikayla kurmaya çalıştığınızı algılar. Hata ayıklama derlemeleri (debug build) paketlenirken her derleme geçici bir sertifikayla imzalanır. Yeni sürümü kurmadan önce eski uygulamayı kaldırın:

$ 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: Belirli eklentilerle projeyi derlerken neden AndroidManifest.xml dosyasındaki çakışan özelliklerle ilgili hatalar alıyorum?

A: Bu durum, iki veya daha fazla eklentinin (extension) aynı property etiketini farklı değerlerle içeren bir Android bildirim parçası (Android Manifest stub) sağlaması durumunda ortaya çıkabilir. Örneğin Firebase ve AdMob ile bu sorun yaşanmıştır. Derleme hatası şuna benzer:

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. 

Sorun ve geçici çözümü hakkında daha fazla bilgi için Defold hata bildirimi #9453 ve Google hata bildirimi #327696048 sayfalarını okuyabilirsiniz.

HTML5 soruları

Q: HTML5 uygulamam Chrome’da neden açılış ekranında donuyor?

A: Bazı durumlarda bir oyunu tarayıcıda yerel dosya sisteminden çalıştırmak mümkün değildir. Oyunu düzenleyiciden çalıştırdığınızda oyun yerel bir web sunucusundan sunulur. Örneğin, Python’daki SimpleHTTPServer modülünü kullanabilirsiniz:

$ python -m SimpleHTTPServer [port]

Q: Oyunum yüklenirken neden “Unexpected data size” hatasıyla çöküyor?

A: Bu durum genellikle Windows kullanırken bir derleme çıktısı oluşturup bunu Git’e kaydettiğinizde (commit) ortaya çıkar. Git’teki satır sonu yapılandırmanız yanlışsa Git satır sonlarını ve dolayısıyla veri boyutunu da değiştirir. Sorunu çözmek için şu yönergeleri izleyin: https://docs.github.com/en/free-pro-team@latest/github/using-git/configuring-git-to-handle-line-endings

iOS soruları

Q: Ücretsiz bir Apple Developer hesabıyla Defold oyunumu kuramıyorum.

A: Defold projenizde, mobil sağlama profilini (provisioning profile) oluştururken Xcode projesinde kullandığınız paket tanımlayıcısının (bundle identifier) aynısını kullandığınızdan emin olun.

Q: Paketlenmiş bir uygulamanın yetkilerini (entitlements) nasıl kontrol edebilirim?

A: Derlenmiş bir uygulamanın yetkilerini inceleme bölümünden:

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

Q: Bir sağlama profilinin yetkilerini nasıl kontrol edebilirim

A: Bir profilin yetkilerini inceleme bölümünden:

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

Windows soruları

Q: Dokusu olmayan GUI kutu düğümleri (box node) neden düzenleyicide saydam görünüyor, ancak projeyi derleyip çalıştırdığımda beklendiği gibi görüntüleniyor?

A: Bu hata AMD Radeon GPU kullanan bilgisayarlarda meydana gelebilir. Grafik sürücülerinizi güncellediğinizden emin olun.

Q: Bir atlası veya sahne görünümünü açarken neden com.sun.jna.Native.open.class java.lang.Error: Access is denied hatasını alıyorum?

A: Defold’u yönetici olarak çalıştırmayı deneyin. Defold’un yürütülebilir dosyasına sağ tıklayın ve “Run as Administrator” seçeneğini seçin.

Q: Windows’ta Intel UHD tümleşik GPU kullanırken oyunumda neden görüntü işleme (rendering) düzgün çalışmıyor (oysa HTML5 derleme çıktım çalışıyor)?

A: Sürücünüzü 27.20.100.8280 veya daha yeni bir sürüme güncellediğinizden emin olun. Kontrol etmek için Intel Driver Support Assistant aracını kullanın. Ek bilgi için bu forum gönderisine bakabilirsiniz.

Q: Defold düzenleyicisi çöküyor ve günlükte AWTError: Assistive Technology not found görünüyor

Düzenleyici çöktüğünde günlükte Caused by: java.awt.AWTError: Assistive Technology not found: com.sun.java.accessibility.AccessBridge ifadesi yer alıyorsa şu adımları izleyin:

  • C:\Users\<username> klasörüne gidin
  • .accessibility.properties adlı dosyayı standart bir metin düzenleyicisiyle açın (Notepad uygundur)
  • Yapılandırmada aşağıdaki satırları bulun:
assistive_technologies=com.sun.java.accessibility.AccessBridge
screen_magnifier_present=true
  • Bu satırların başına bir kare işareti (#`) ekleyin
  • Dosyada yaptığınız değişiklikleri kaydedin ve Defold’u yeniden başlatın

Konsol soruları

Q: Konsollara yönelik proje derlemek için ek araçlar kurmam gerekir mi?

A: Düzenleyiciyi ve komut satırı araçlarını kullanarak uygulama dağıtım paketleri (application bundles) oluşturabileceksiniz. İlgili platformlara erişim izni aldığınızda PlayStation®4, PlayStation®5 ve Nintendo Switch donanımlarında nasıl test yapacağınız hakkında size bilgi verilecektir.

Q: Konsolları da hedeflemeye karar verirsem tek bir kod tabanı kullanmak yine kolay olur mu?

A: Evet, standart Defold API işlevlerinin tümü konsol platformlarında da kullanılabilir. Standart işlevlere ek olarak PlayStation®4, PlayStation®5 ve Nintendo Switch’e özgü birkaç işleve de erişebileceksiniz, ancak genel olarak kodun birden çok platformda tamamen aynı kalabilmesi beklenir.

Oyun yayımlama

Q: Oyunumu App Store’da yayımlamaya çalışıyorum. IDFA sorusunu nasıl yanıtlamalıyım?

A: Uygulamayı gönderirken Apple, IDFA’nın üç geçerli kullanım durumu için üç onay kutusu sunar:

  1. Serve ads within the app
  2. Install attribution from ads
  3. User action attribution from ads

1 numaralı seçeneği işaretlerseniz uygulamayı inceleyen kişi uygulamada reklam gösterilip gösterilmediğini kontrol eder. Oyununuz reklam göstermiyorsa reddedilebilir. Defold’un kendisi reklam tanımlayıcısını kullanmaz.

Q: Oyunumdan nasıl gelir elde edebilirim?

A: Defold, uygulama içi satın almaları ve çeşitli reklam çözümlerini destekler. Kullanılabilir gelir elde etme seçeneklerinin güncel listesi için Asset Portal’daki Monetization kategorisine bakın.

Defold kullanırken karşılaşılan hatalar

Q: Oyunu başlatamıyorum ve derleme hatası da yok. Sorun ne?

A: Proje derleme süreci, daha önce karşılaşıp düzelttiğiniz derleme hatalarının ardından, nadiren de olsa dosyaları yeniden derleyemeyebilir. Menüden Project > Rebuild And Launch seçeneğini seçerek tam bir yeniden derlemeyi zorlayın.

Oyun içeriği

Q: Defold, yeniden kullanılabilir nesne tanımları olan prefabları destekliyor mu?

A: Evet, destekliyor. Bunlara koleksiyon (collection) denir. Koleksiyonlar, karmaşık oyun nesnesi (game object) hiyerarşileri oluşturmanızı ve bunları, düzenleyicide veya çalışma sırasında (koleksiyon içeriği oluşturarak) örneklerini oluşturabileceğiniz ayrı yapı taşları olarak saklamanızı sağlar. Grafik kullanıcı arayüzü (GUI) düğümleri için GUI şablonları desteklenir.

Q: Bir oyun nesnesini başka bir oyun nesnesine alt nesne olarak ekleyemiyorum, neden?

A: Büyük olasılıkla oyun nesnesi dosyasında bir alt nesne eklemeye çalışıyorsunuz ve bu mümkün değildir. Bu yalnızca koleksiyon dosyasında yapılabilir. Bunun nedenini anlamak için üst-alt nesne hiyerarşilerinin yalnızca bir sahne grafı (scene graph) dönüşüm hiyerarşisi olduğunu hatırlamanız gerekir. Bir sahneye (koleksiyona) yerleştirilmemiş (veya çalışma sırasında oluşturulmamış) bir oyun nesnesi, sahne grafının parçası değildir ve bu nedenle sahne grafı hiyerarşisinin de parçası olamaz. Oyun nesnesinin üst nesnesinin tanımlayıcısını go.get_parent() işlevini kullanarak alabilirsiniz.

Q: Neden bir oyun nesnesinin tüm alt nesnelerine topluca ileti gönderemiyorum?

A: Üst-alt nesne ilişkileri yalnızca sahne grafındaki dönüşüm ilişkilerini ifade eder ve nesne yönelimli programlamadaki nesne gruplarıyla karıştırılmamalıdır. Oyun verilerinize ve oyununuzun durumu değiştikçe bu verileri en iyi nasıl dönüştürebileceğinize odaklanırsanız, birçok nesneye sürekli durum verisi içeren iletiler gönderme ihtiyacınız muhtemelen azalacaktır. Veri hiyerarşilerine ihtiyaç duyduğunuz durumlarda bunları Lua’da kolayca oluşturabilir ve yönetebilirsiniz.

Q: Sprite bileşenlerimin kenarlarında neden görüntü kusurları oluşuyor?

A: Bu, bir atlastaki komşu piksellerin kenar piksellerinin sprite bileşeninize atanan görüntüye taştığı, “kenar taşması (edge bleeding)” adı verilen bir görüntü kusurudur. Çözüm, atlas görüntülerinizin kenarlarını aynı piksellerden oluşan ek satır ve sütunlarla doldurmaktır. Neyse ki Defold’un atlas düzenleyicisi bunu otomatik olarak yapabilir. Atlasınızı açın ve Extrude Borders değerini 1 olarak ayarlayın.

Q: Sprite bileşenlerime renk çarpanı uygulayabilir veya onları saydam yapabilir miyim, yoksa bunun için kendi gölgelendiricimi mi yazmam gerekir?

A: Tüm sprite bileşenleri için varsayılan olarak kullanılan yerleşik sprite gölgelendiricisinde “tint” adlı bir sabit tanımlıdır:

  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: Bir sprite bileşeninin z koordinatını 100 olarak ayarlarsam çizilmiyor. Neden?

A: Bir oyun nesnesinin Z konumu işleme sırasını belirler. Düşük değerler yüksek değerlerden önce çizilir. Varsayılan işleme betiğinde derinliği -1 ile 1 arasında olan oyun nesneleri çizilir; bu aralığın altında veya üstünde kalanlar çizilmez. İşleme betiği hakkında daha fazla bilgiyi resmî İşleme belgelerinde bulabilirsiniz. GUI düğümlerinde Z değeri yok sayılır ve işleme sırasını hiçbir şekilde etkilemez. Bunun yerine düğümler listelendikleri sırayla ve alt düğüm hiyerarşilerine (ve katmanlara) göre işlenir. GUI işlemesi ve katmanları kullanarak çizim çağrılarını optimize etme hakkında daha fazla bilgiyi resmî GUI belgelerinde bulabilirsiniz.

Q: Görünüm izdüşümünün Z aralığını -100 ile 100 olarak değiştirmek performansı etkiler mi?

A: Hayır. Tek etkisi hassasiyet üzerindedir. Z arabelleği logaritmiktir; 0’a yakın z değerleri için çok yüksek, 0’dan uzak değerler içinse daha düşük çözünürlük sunar. Örneğin, 24 bitlik bir arabellekle 10,0 ve 10,000005 değerleri ayırt edilebilirken 10000 ve 10005 ayırt edilemez.

Q: Açıların gösteriminde neden tutarlılık yok?

A: Aslında tutarlılık var. Düzenleyicide ve oyun API’lerinde açılar her yerde derece cinsinden ifade edilir. Matematik kütüphaneleri radyan kullanır. Şu anda radyan/s cinsinden ifade edilen angular_velocity fizik özelliği bu kuralın dışındadır. Bunun değişmesi beklenmektedir.

Q: Yalnızca renk içeren (dokusu olmayan) bir GUI kutu düğümü oluşturduğumda nasıl işlenir?

A: Bu, yalnızca köşeleri renklendirilmiş bir şekildir. Yine de piksel doldurma hızı açısından bir maliyeti olacağını unutmayın.

Q: Varlıkları çalışma sırasında değiştirirsem motor bunları otomatik olarak bellekten kaldırır mı?

A: Tüm kaynaklar (resource) için motor içinde başvuru sayımı yapılır. Başvuru sayısı sıfıra iner inmez kaynak serbest bırakılır.

Q: Bir oyun nesnesine bağlı ses bileşeni kullanmadan ses oynatmak mümkün mü?

A: Her şey bileşen (component) temellidir. Birden fazla ses içeren, görsel bileşeni olmayan bir oyun nesnesi oluşturabilir ve sesleri denetleyen bu nesneye iletiler göndererek ses oynatabilirsiniz.

Q: Bir ses bileşeniyle ilişkili ses dosyasını çalışma sırasında değiştirmek mümkün mü?

A: Genel olarak tüm kaynaklar statik olarak bildirilir; bunun avantajı, kaynak yönetiminin ek bir çaba gerektirmeden sağlanmasıdır. Bir bileşene atanan kaynağı değiştirmek için kaynak özelliklerini kullanabilirsiniz.

Q: Fizik çarpışma şeklinin özelliklerine erişmenin bir yolu var mı?

A: Evet, fizik API’sine, özellikle de physics.get_shape() ve physics.set_shape() işlevlerine göz atın.

Q: Sahnemdeki çarpışma nesnelerini çizdirmenin hızlı bir yolu var mı? (Box2D’nin hata ayıklama çizimi gibi)

A: Evet, game.project dosyasında physics.debug bayrağını ayarlayın. (Resmî Proje ayarları belgelerine bakın)

Q: Çok sayıda temas/çarpışma olmasının performans maliyetleri nelerdir?

A: Defold arka planda Box2D’nin değiştirilmiş bir sürümünü çalıştırır ve performans maliyetinin oldukça benzer olması beklenir. Profil çıkarıcıyı açarak motorun fizik için ne kadar zaman harcadığını her zaman görebilirsiniz. Kullandığınız çarpışma nesnelerinin türünü de göz önünde bulundurmalısınız. Örneğin, statik nesnelerin performans maliyeti daha düşüktür. Daha fazla ayrıntı için resmî Defold Fizik belgelerine bakın.

Q: Çok sayıda parçacık efekti bileşeni olmasının performansa etkisi nedir?

A: Bu, efektlerin oynatılıp oynatılmadığına bağlıdır. Oynatılmayan bir ParticleFx’in performans maliyeti sıfırdır. Oynatılan bir ParticleFx’in performans etkisi yapılandırmasına bağlı olduğundan profil çıkarıcı kullanılarak değerlendirilmelidir. Çoğu başka şeyde olduğu gibi bellek, game.project dosyasında max_count olarak tanımlanan ParticleFx sayısı için önceden ayrılır.

Q: Bir koleksiyon vekili aracılığıyla yüklenen koleksiyondaki bir oyun nesnesine nasıl girdi alırım?

A: Koleksiyon vekili (collection proxy) aracılığıyla yüklenen her koleksiyonun kendi girdi yığını vardır. Girdi, ana koleksiyonun girdi yığınından vekil bileşeni aracılığıyla koleksiyondaki nesnelere yönlendirilir. Bu, yüklenen koleksiyondaki oyun nesnesinin girdi odağını almasının yeterli olmadığı; vekil bileşenini barındıran oyun nesnesinin de girdi odağını alması gerektiği anlamına gelir. Ayrıntılar için Girdi belgelerine bakın.

Q: Dize türünde betik özellikleri kullanabilir miyim?

A: Hayır. Defold, hash türünde özellikleri destekler. Bunlar türleri, durum tanımlayıcılarını veya her türlü anahtarı belirtmek için kullanılabilir. Karma değerleri oyun nesnesi tanımlayıcılarını (yollarını) saklamak için de kullanılabilir; ancak düzenleyici ilgili URL’leri içeren bir açılır listeyi sizin için otomatik olarak doldurduğundan url özellikleri genellikle daha uygundur. Ayrıntılar için Betik özellikleri belgelerine bakın.

Q: Bir matrisin (vmath.matrix4() veya benzeri bir işlevle oluşturulan) tek tek hücrelerine nasıl erişirim?

A: Hücrelere mymatrix.m11, mymatrix.m12, mymatrix.m21 vb. kullanarak erişebilirsiniz

Q: gui.clone() veya gui.clone_tree() kullanırken Not enough resources to clone the node hatasını alıyorum

A: GUI bileşeninin Max Nodes değerini artırın. Bu değeri, Outline görünümünde bileşenin kökünü seçtiğinizde Properties panelinde bulabilirsiniz.

Forum

Q: Çalışmalarımı tanıttığım bir konu açabilir miyim?

A: Elbette! Bunun için özel bir “Work for hire” kategorimiz var. Topluluğa yarar sağlayan her şeyi her zaman destekleriz; hizmetlerinizi ücret karşılığında olsun ya da olmasın topluluğa sunmanız buna iyi bir örnektir.

Q: Bir konu açıp çalışmalarımı ekledim; daha fazlasını ekleyebilir miyim?

A: “Work for hire” konularının üst sıralara taşınmasını azaltmak için kendi konunuza 14 günde birden fazla gönderi yazamazsınız (konudaki bir yoruma doğrudan yanıt vermeniz dışında; bu durumda yanıt verebilirsiniz). 14 günlük süre içinde konunuza başka çalışmalar eklemek istiyorsanız mevcut gönderilerinizi düzenleyerek yeni içeriği eklemeniz gerekir.

Q: İş ilanı yayımlamak için Work for Hire kategorisini kullanabilir miyim?

A: Tabii, dilediğiniz gibi kullanın! Hem hizmet sunmak hem de hizmet talep etmek için kullanılabilir; örneğin, “2B piksel sanatçısı arayan programcı; zenginim ve iyi ücret ödeyeceğim”.