This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this tutorial in English
Düzenleyiciden açabileceğiniz veya GitHub’dan indirebileceğiniz bu örnek projede, Defold’da çok büyük RPG haritaları oluşturmanın bir yöntemini gösteriyoruz. Tasarım şu varsayımlara dayanır:
Önce örneği çalıştırın ve nasıl yapılandırıldığını anlamak için 3x3 ekran büyüklüğündeki dünyada dolaşın. Karakteri ok tuşlarıyla kontrol edersiniz.
Bu örneğin başlangıç koleksiyonunu (bootstrap collection) görmek için “/main/main.collection” dosyasını açın.

Ana koleksiyon, ok tuşlarıyla 8 yönde kontrol edilen oyuncu karakterinin oyun nesnesini (game object) ve oyunun akışını kontrol eden “game” adlı ikinci bir oyun nesnesini içerir. “game” nesnesi, bir betikten ve oyundaki her ekran için bir koleksiyon fabrikasından (collection factory) oluşur. Fabrikalar, ekran ızgarasının adlandırma şemasına göre adlandırılır.
“/main/game.script” betiği, oyuncunun o anda hangi ekranda olduğunu takip eder. Betik ayrıca “load_screen” adlı özel bir iletiye tepki verir. Bu ileti yeni bir ekran yükler ve kahramanın hareket ettiği yönde bu ekranı geçerli ekranla değiştirir. Başlangıçta bir ekran, görüntünün merkezine yüklenir ve yer değiştirecek başka bir ekran yoktur.
Kahraman, “/main/hero.script” betiğiyle kontrol edilir. Betik, kahramanın oyun nesnesinin ekranın üst, alt, sol veya sağ kenarına yakın bir çizgiyi geçip geçmediğini kontrol eder:

factory.create() çağrılarak oluşturulur. Koleksiyonun içeriği ekranın dışına yerleştirilir.Bütün bunlar bir saniye içinde gerçekleştiğinden geçiş akıcıdır ve oynanışı kesintiye uğratmaz.
Oyun dünyasındaki her ekran, o ekrana özgü karo haritasını, çarpışma nesnesini (collision object) ve diğer oyun nesnelerini içeren ayrı bir koleksiyonun içinde oluşturulur. Ekranların yönetimini ve yüklenmesini kolaylaştırmak için ekran koleksiyonları basit bir şemaya göre adlandırılır:

Her ekran koleksiyonu, dünya ızgarasındaki konumuna göre adlandırılır. İlk sayı ızgaradaki X konumunu, ikinci sayı ise Y konumunu belirtir.
Assets görünümünde, haritanın sol alt köşesindeki ekranı tanımlayan “/main/screens/0-0.collection” koleksiyonunu bulun ve açın:

Ekranın tüm içeriğinin üst nesnesi olan “root” adlı bir oyun nesnesi bulunduğuna dikkat edin. Bu, örnekte kullanılan başka bir düzenleme kuralıdır ve çok önemli bir amaca hizmet eder: bir ekran görüntüye getirildiğinde yalnızca “root” oyun nesnesinin taşınması gerekir. Tüm alt nesneler otomatik olarak kök üst nesneyle birlikte taşınır. Bir ekranda özel oyun nesneleri varsa bunların hareketi kök üst nesneye göre tanımlandığından bu nesnelere serbestçe animasyon da uygulanabilir. Ekran içeri veya dışarı kaydırıldığında bu alt nesneler ekranla birlikte hareket eder. Yalnızca bir nesnenin ekranlar arasında hareket etmesi gerekiyorsa özel kod gerekir.
0-1 ekranındaki arılar bu fikri gösteren basit örneklerdir:

Her ekranın, yerleşik karo haritası düzenleyicisinde düzenlenebilen kendi karo haritası vardır. Ancak her ekranı ayrı olarak düzenlemenin başlıca dezavantajı, komşu ekranlarla nasıl birleştiğinin kolayca görülememesidir. Bu bağlantılar, oyun dünyası boyunca süreklilik sağlamanın önemli bir parçasıdır.
Bu nedenle özel bir koleksiyon oluşturulmuştur. Dünyanın test düzenini içeren bu koleksiyonu görmek için “/main/map/test_layout.collection” dosyasını açın:

Bu koleksiyonun tek amacı, geliştirme sırasında bir düzenleme aracı olarak kullanılmaktır. Belirli bir ekranı test düzeni koleksiyonuyla yan yana düzenlemek, üzerinde çalıştığınız ekranın bağlamını görmenizi sağlar ve düzenleme sürecini çok daha rahat hâle getirir:

Ekranın karo haritasında (burada sağ bölmede) yapılan tüm düzenlemeler, test koleksiyonuna (sol bölmede) anında yansıtılır. Ayrıca test düzeni koleksiyonunun statik hiyerarşiye eklenmediğine, dolayısıyla tüm derlemelerden otomatik olarak çıkarıldığına dikkat edin.
Gördüğünüz gibi bu örnek, oyun dünyası ve kahramanın bu dünyada nasıl ilerlediğiyle ilgili belirli kısıtlamalara göre oluşturulmuştur. Oyununuzun gereksinimleri farklıysa muhtemelen farklı bir çözüm bulmanız gerekir. Örneğin oyununuz kameranın dünya haritası üzerinde kesintisiz biçimde hareket etmesini gerektiriyorsa, içeriğinizi parçalara ayırmak için farklı bir yönteme, farklı bir yükleme mekanizmasına ve oyun dünyanızı oluşturmanıza yardımcı olacak farklı araçlara ihtiyacınız vardır.
RPG haritası örneğinin tanıtımı burada sona eriyor. Her zaman olduğu gibi örneğin içeriğini uygun gördüğünüz şekilde kullanmakta özgürsünüz. Defold hakkında daha fazla bilgi edinmek için daha çok örnek, öğretici, kılavuz ve API belgesi bulabileceğiniz belge sayfalarımıza göz atın.
Bir sorunla karşılaşırsanız veya sorularınız varsa forumumuzu ziyaret edin.
Defold ile keyifli çalışmalar!