This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold’un tasarımının temelinde, iyi kavranması çok önemli olan birkaç kavram bulunur. Bu kılavuz, Defold’un yapı taşlarının neler olduğunu açıklar. Bu kılavuzu okuduktan sonra adresleme kılavuzuna ve ileti aktarımı kılavuzuna geçin. Hızla başlamanıza yardımcı olmak için düzenleyicinin içinden de erişebileceğiniz bir dizi öğretici bulunur.

Bir Defold oyunu oluştururken kullandığınız üç temel yapı taşı türü vardır:
Koleksiyonlar, oyun nesnelerini ve diğer koleksiyonları barındıran ağaç yapılarıdır. Bir koleksiyon her zaman bir dosyada saklanır.
Defold motoru başladığında, game.project ayar dosyasında belirtilen tek bir başlangıç koleksiyonunu (bootstrap collection) yükler. Başlangıç koleksiyonu genellikle “main.collection” olarak adlandırılır, ancak istediğiniz adı kullanabilirsiniz.
Bir koleksiyon, istenen derinlikte iç içe yerleştirilmiş oyun nesneleri ve diğer koleksiyonları (alt koleksiyonun dosyasına başvurarak) içerebilir. Aşağıda “main.collection” adlı bir örnek dosya gösterilmektedir. Bu dosya bir oyun nesnesi (tanımlayıcısı “can”) ve bir alt koleksiyon (tanımlayıcısı “bean”) içerir. Alt koleksiyon ise iki oyun nesnesi içerir: “bean” ve “shield”.

“bean” tanımlayıcılı alt koleksiyonun “/main/bean.collection” adlı kendi dosyasında saklandığına ve “main.collection” dosyasında yalnızca bu dosyaya başvurulduğuna dikkat edin:

“main” ve “bean” koleksiyonlarına karşılık gelen çalışma zamanı nesneleri olmadığından koleksiyonların kendilerini adresleyemezsiniz. Ancak bazen bir oyun nesnesine giden yolun parçası olarak koleksiyonun kimliğini kullanmanız gerekir (ayrıntılar için adresleme kılavuzuna bakın):
-- file: can.script
-- get position of the "bean" game object in the "bean" collection
local pos = go.get_position("bean/bean")
Bir koleksiyon, başka bir koleksiyona her zaman bir koleksiyon dosyasına başvuru olarak eklenir:
Outline görünümündeki koleksiyona sağ tıklayın ve Add Collection File seçeneğini seçin.
Oyun nesneleri, oyununuz çalışırken her biri ayrı bir yaşam süresine sahip olan basit nesnelerdir. Oyun nesnelerinin konum, dönme ve ölçek değerleri vardır; bunların her biri çalışma sırasında değiştirilebilir ve her birine animasyon uygulanabilir.
-- animate X position of "can" game object
go.animate("can", "position.x", go.PLAYBACK_LOOP_PINGPONG, 100, go.EASING_LINEAR, 1.0)
Oyun nesneleri boş olarak kullanılabilir (örneğin konum işaretleyicileri olarak), ancak genellikle sprite, ses, betik, model, fabrika ve diğer çeşitli bileşenlerle donatılır. Oyun nesneleri düzenleyicide oluşturulup koleksiyon dosyalarına yerleştirilir veya çalışma sırasında fabrika (factory) bileşenleri aracılığıyla dinamik olarak oluşturulur.
Oyun nesneleri bir koleksiyona yerinde eklenir veya bir oyun nesnesi dosyasına başvuru olarak eklenir:
Outline görünümündeki koleksiyona sağ tıklayın ve Add Game Object (yerinde eklemek için) veya Add Game Object File (dosya başvurusu olarak eklemek için) seçeneğini seçin.
Bileşenler (component), oyun nesnelerine (game object) belirli bir görünüm ve/veya işlev kazandırmak için kullanılır. Bileşenlerin oyun nesnelerinin içinde bulunması gerekir ve bileşeni içeren oyun nesnesinin konumundan, dönmesinden ve ölçeğinden etkilenirler:

Birçok bileşenin, türüne özgü ve değiştirilebilen özellikleri vardır. Ayrıca, çalışma sırasında bileşenlerle etkileşim kurmak için bileşen türüne özgü işlevler bulunur:
-- disable the can "body" sprite
msg.post("can#body", "disable")
-- play "hoohoo" sound on "bean" in 1 second
sound.play("bean#hoohoo", { delay = 1, gain = 0.5 } )
Bileşenler bir oyun nesnesine ya yerinde (in-place) ya da bir bileşen dosyasına başvuru olarak eklenir:
Outline görünümünde oyun nesnesine sağ tıklayın ve Add Component (yerinde ekleme) veya Add Component File (dosya başvurusu olarak ekleme) seçeneğini seçin.
Çoğu durumda bileşenleri yerinde oluşturmak en mantıklısıdır, ancak aşağıdaki bileşen türlerinin, bir oyun nesnesine başvuru yoluyla eklenmeden önce ayrı kaynak dosyalarında oluşturulması gerekir:
Kullanılabilir tüm bileşen türlerinin listesi için bileşenlere genel bakış sayfasına bakın.
Bir koleksiyon, oyun nesnesi veya bileşen dosyası oluşturduğunuzda, prototip (prototype) adını verdiğimiz bir tanım oluşturursunuz (diğer motorlarda “prefabs” veya “blueprints” olarak da bilinir). Bu işlem yalnızca projenin dosya yapısına bir dosya ekler; çalışan oyununuza hiçbir şey eklenmez. Bir prototip dosyasına dayalı koleksiyon, oyun nesnesi veya bileşen örneği (instance) eklemek için koleksiyon dosyalarınızdan birine onun bir örneğini eklersiniz.
Bir nesne örneğinin hangi dosyaya dayandığını Outline görünümünde görebilirsiniz. “main.collection” dosyası, dosyalara dayalı üç örnek içerir:

Bir oyun nesnesinin veya koleksiyonun birden fazla örneğine sahip olduğunuzda ve hepsini değiştirmek istediğinizde prototip dosyaları oluşturmanın yararı ortaya çıkar:

Prototip dosyasını değiştirdiğinizde, o dosyayı kullanan tüm örnekler hemen güncellenir.

Burada prototip dosyasının sprite görüntüsü değiştirilir ve dosyayı kullanan tüm örnekler hemen güncellenir:

Bir koleksiyon dosyasında, bir veya daha fazla oyun nesnesinin tek bir üst oyun nesnesine alt nesne olarak bağlı olduğu oyun nesnesi hiyerarşileri oluşturabilirsiniz. Bir oyun nesnesini sürükleyip diğerinin üzerine bıraktığınızda, sürüklenen oyun nesnesi hedefin alt nesnesi olur:

Üst-alt nesne hiyerarşileri, nesnelerin dönüşümlere nasıl tepki verdiğini etkileyen dinamik ilişkilerdir. Bir nesneye uygulanan her dönüşüm (hareket, döndürme veya ölçekleme), hem düzenleyicide hem de çalışma sırasında o nesnenin alt nesnelerine de uygulanır:

Buna karşılık, bir alt nesnenin ötelemeleri üst nesnenin yerel uzayında yapılır. Düzenleyicide Edit ▸ World Space (varsayılan) veya Edit ▸ Local Space seçeneğini seçerek bir alt oyun nesnesini yerel uzayda veya dünya uzayında düzenleyebilirsiniz.
Bir nesneye set_parent iletisi göndererek çalışma sırasında üst nesnesini değiştirmek de mümkündür.
local parent = go.get_id("bean")
msg.post("child_bean", "set_parent", { parent_id = parent })
Yaygın bir yanlış anlama, bir oyun nesnesinin üst-alt nesne hiyerarşisinin parçası olduğunda koleksiyon hiyerarşisindeki yerinin değiştiğidir. Oysa bunlar birbirinden çok farklı iki kavramdır. Üst-alt nesne hiyerarşileri sahne grafını dinamik olarak değiştirerek nesnelerin görsel olarak birbirine bağlanmasını sağlar. Bir oyun nesnesinin adresini belirleyen tek şey, koleksiyon hiyerarşisindeki yeridir. Adres, nesnenin yaşam süresi boyunca sabit kalır.