A: Evet, Defold motoru ve düzenleyicisi tüm işlevleriyle tamamen ücretsizdir. Gizli maliyet, ücret veya telif ücreti yoktur. Tamamen ücretsizdir.
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.
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.
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.
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.
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.
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.
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.
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.
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.
A: Haxe resmî olarak desteklenmez. Topluluk, Haxe yazmak ve Lua koduna dönüştürmek için hxdefold projesini geliştirmeye devam ediyor.
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.
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:
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)
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.
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üş |
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).
A: Evet, sys.get_sys_info() işlevine göz atın.
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.
A: Evet. Defold’un beta düzenleyicisi, kararlı sürümde olduğu gibi başlangıçta güncellemeleri kontrol eder.
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.
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.
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
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
A: Düzenleyiciyi şu şekilde başlatın:
$ GTK_CSD=0 ./Defold
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
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
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
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
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
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,...
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.
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
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.
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
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.
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]
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
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.
A: Derlenmiş bir uygulamanın yetkilerini inceleme bölümünden:
codesign -d --ent :- /path/to/the.app
A: Bir profilin yetkilerini inceleme bölümünden:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision
A: Bu hata AMD Radeon GPU kullanan bilgisayarlarda meydana gelebilir. Grafik sürücülerinizi güncellediğinizden emin olun.
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.
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.
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)assistive_technologies=com.sun.java.accessibility.AccessBridge
screen_magnifier_present=true
#`) ekleyinA: 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.
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.
A: Uygulamayı gönderirken Apple, IDFA’nın üç geçerli kullanım durumu için üç onay kutusu sunar:
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.
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.
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.
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.
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.
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.
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.
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))
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.
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.
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.
A: Bu, yalnızca köşeleri renklendirilmiş bir şekildir. Yine de piksel doldurma hızı açısından bir maliyeti olacağını unutmayın.
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.
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.
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.
A: Evet, fizik API’sine, özellikle de physics.get_shape() ve physics.set_shape() işlevlerine göz atın.
A: Evet, game.project dosyasında physics.debug bayrağını ayarlayın. (Resmî Proje ayarları belgelerine bakın)
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.
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.
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.
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.
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
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.
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.
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.
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”.