Manuals
Manuals




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

Yapı taşları

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.

Yapı taşları

Bir Defold oyunu oluştururken kullandığınız üç temel yapı taşı türü vardır:

Koleksiyon
Koleksiyon (collection), oyununuzu yapılandırmak için kullanılan bir dosyadır. Koleksiyonlarda oyun nesnelerinden ve diğer koleksiyonlardan oluşan hiyerarşiler oluşturursunuz. Bunlar genellikle oyun bölümlerini, düşman gruplarını veya birden fazla oyun nesnesinden oluşan karakterleri yapılandırmak için kullanılır.
Oyun nesnesi
Oyun nesnesi (game object), bir tanımlayıcıya, konuma, dönme değerine ve ölçeğe sahip bir kapsayıcıdır. Bileşenleri barındırmak için kullanılır. Oyun nesneleri genellikle oyuncu karakterlerini, mermileri, oyunun kural sistemini veya bir bölüm yükleyicisini oluşturmak için kullanılır.
Bileşen
Bileşenler (component), oyun nesnelerine oyunda görsel, işitsel ve/veya mantıksal bir karşılık kazandırmak için bu nesnelerin içine yerleştirilen öğelerdir. Bunlar genellikle karakter sprite bileşenleri ve betik dosyaları oluşturmak, ses efektleri veya parçacık efektleri eklemek için kullanılır.

Koleksiyonlar

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

Koleksiyon

“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:

Bean koleksiyonu

“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

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

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:

Bileşenler

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:

  • Betik (Script)
  • GUI
  • Parçacık efekti (Particle FX)
  • Karo haritası (Tile Map)

Kullanılabilir tüm bileşen türlerinin listesi için bileşenlere genel bakış sayfasına bakın.

Yerinde veya başvuru yoluyla eklenen nesneler

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:

  1. “bean” alt koleksiyonu.
  2. “bean” alt koleksiyonundaki “bean” oyun nesnesinde bulunan “bean” betik bileşeni.
  3. “can” oyun nesnesindeki “can” betik bileşeni.

Örnek

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:

Oyun nesnesi örnekleri

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

Oyun nesnesi prototipini değiştirme

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

Güncellenen oyun nesnesi örnekleri

Oyun nesnelerini alt nesne olarak bağlama

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:

Oyun nesnelerini alt nesne olarak bağlama

Ü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:

Alt nesnenin dönüşümü

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.