Android cihazlar çeşitli form faktörlerinde ve ekran boyutlarında sunulur. Yaygın kategoriler şunlardır:
- Cep telefonları
- Tabletler
- Televizyonlar ve televizyon set üstü kutular
- Android için Chrome Çalışma Zamanı'na sahip dizüstü bilgisayarlar
Bu çeşitlilik, oyununuzun genellikle farklı en boy oranlarına sahip farklı ekran çözünürlükleriyle karşılaşacağı anlamına gelir. Örneğin:
- 19:9 en boy oranına (2280x1080) sahip yatay yönlü bir telefon
- 20:9 en boy oranına (3200x1400) sahip yatay yönde farklı bir telefon
- 16:9 en boy oranına (1920x1080) sahip 1080p HD TV
- 4:3 en boy oranına sahip bir tablet (2048x1536)
Oyununuzun tasarımında, ekran çözünürlüğünden ve cihazın en boy oranından bağımsız olarak doğru sunumu sağlamak için bu farklılıklar dikkate alınmalıdır.
Projeksiyon modlarını daralt
Defold projesinin yapılandırılabilir temel çözünürlüğü vardır. Bu çözünürlük, game.project
dosyasında Ekran kategorisindeki Genişlik ve Yükseklik alanları kullanılarak ayarlanır.
![Proje görüntüleme ayarlarını geliştir](https://developer.android.com/static/images/games/engines/defold/Resolution_settings.png?authuser=6&hl=tr)
Defold'un varsayılan davranışı, temel çözünürlükte oluşturmak ve ardından elde edilen görüntüyü hedef cihazın gerçek çözünürlüğüne göre ölçeklendirmektir. Katlama, bu modu uzatma projeksiyonu olarak ifade eder. Uzatım projeksiyonu, orijinal en boy oranını korumaz. Bazı oyunlarda bu varsayılan değer görsel olarak kabul edilebilir. Standart Defold oluşturma komut dosyası, temel en boy oranını koruyan iki ek projeksiyon seçeneği içerir: sabit sığdırma projeksiyonu ve sabit projeksiyon.
Aşağıdaki örnekte, 480x272 temel bir çözünürlük temel alınarak tasarlanmış ve Katlama düzenleyicisinde görüntülenen örnek bir proje gösterilmektedir.
Bu örnekte:
- Temel çözünürlüğün kenarlıklarının çevresine bir çerçeve çizmek için karo haritası nesnesi kullanılır.
- Taban çözünürlüğün sınırlarının içinde iki imge nesnesi ve bir metin nesnesi yer alıyor.
- Taban çözünürlüğün sınırlarının dışında, sırasıyla yukarı, aşağı, sol ve sağa konumlandırılmış dört imge nesnesi var.
![Örnek proje nesne düzeni](https://developer.android.com/static/images/games/engines/defold/Resolution_project.png?authuser=6&hl=tr)
960x544 ekran çözünürlüğünde (temel çözünürlüğün tam 2 katı) çalıştırıldığında proje aşağıdaki gibi görüntülenir:
![Varsayılan uzatma projeksiyonu kullanılarak 2 temel çözünürlükte örnek proje](https://developer.android.com/static/images/games/engines/defold/Resolution_base.png?authuser=6&hl=tr)
Projeksiyonu uzatma
Aşağıdaki örneklerde, en boy oranının korunmadığı varsayılan uzatma projeksiyonuyla pencerenin yeniden boyutlandırılmasının sonuçları gösterilmektedir:
![Uzatım projeksiyonu kullanılarak yatay olarak sıkıştırılmış örnek proje](https://developer.android.com/static/images/games/engines/defold/Resolution_stretch_small.png?authuser=6&hl=tr)
![Uzatım projeksiyonu kullanılarak yatay olarak uzatılmış örnek proje](https://developer.android.com/static/images/games/engines/defold/Resolution_stretch_large.png?authuser=6&hl=tr)
Sabit uyumlu projeksiyon
Sabit sığdır projeksiyon modu, temel çözünürlük en boy oranını korur. En boy oranı korunduğundan, ölçeklendirilen temel çözünürlüğün kapsamadığı ek ekran alanı olacaktır. En boy oranı farkının ana eksenine bağlı olarak bu ekstra alan, temel çözünürlüğün üst ve alt kısmında veya sol ve sağında bulunur. Sabit sığdırma projeksiyonu, temel çözünürlüğü bu alanı hesaba katacak şekilde değiştirir. Bu değişiklik, oyun sahnesinde temel çözünürlük bölgesinin dışında ek alanlar oluşturulmasına neden olur. Ortaya çıkan resim daha sonra ekran çözünürlüğüne ölçeklendirilir.
Aşağıdaki örneklerde, 480x272 temel çözünürlüğünden farklı bir en boy oranına sahip bir ekran çözünürlüğüne sabit uyumlu projeksiyon oluşturma gösterilmektedir:
![Sabit sığdırma projeksiyonu kullanarak daha geniş en boy oranında örnek proje](https://developer.android.com/static/images/games/engines/defold/Resolution_fixfit_letterbox.png?authuser=6&hl=tr)
![Sabit sığdırma projeksiyonu kullanılarak daha uzun en boy oranında örnek proje](https://developer.android.com/static/images/games/engines/defold/Resolution_fixfit_pillarbox.png?authuser=6&hl=tr)
Sabit projeksiyon
Sabit projeksiyon modu, temel çözünürlük en boy oranını korur ve temel çözünürlüğü belirtilen bir yakınlaştırma faktörüne göre ölçeklendirir. Ekran çözünürlüğüne ve yakınlaştırma faktörüne bağlı olarak, temel çözünürlük alanının bir alt kümesi veya üst kümesi görüntülenebilir.
Aşağıdaki örneklerde sırasıyla 644x408 ve 2x yakınlaştırma faktörleriyle ekran çözünürlüğü kullanılan sabit projeksiyon modu gösterilmektedir:
![Sabit projeksiyon kullanılarak 644x408 boyutunda 1x yakınlaştırmalı örnek proje](https://developer.android.com/static/images/games/engines/defold/Resolution_fixed_1x.png?authuser=6&hl=tr)
![Sabit projeksiyon kullanılarak 2x yakınlaştırma içeren 644x408 boyutunda örnek proje](https://developer.android.com/static/images/games/engines/defold/Resolution_fixed_2x.png?authuser=6&hl=tr)
Projeksiyon modlarını değiştirme
Etkin projeksiyon modu, oluşturucuya uygun mesaj gönderilerek çalışma zamanında değiştirilebilir. Bu mesajlar, standart Defold mesaj sistemi kullanılarak gönderilir. Tüm projeksiyon modu mesajları, yakın ve uzak düzlem Z değerlerini belirten parametreleri içerir.
-- Change to stretch projection mode
msg.post("@render:", "use_stretch_projection", { near = -1, far = 1 })
-- Change to fixed fit projection mode
msg.post("@render:", "use_fixed_fit_projection", { near = -1, far = 1 })
-- Change to fixed projection mode
msg.post("@render:", "use_fixed_projection", { near = -1, far = 1, zoom = 2 })
Oluşturma komut dosyalarını geliştirme
Defold oluşturma davranışı, oluşturma komut dosyası adı verilen özel bir komut dosyası tarafından kontrol edilir. Diğer Defold Engine komut dosyaları gibi oluşturma komut dosyası da Lua programlama dilinde yazılır. Proje oluşturulurken varsayılan bir oluşturma komut dosyası eklenir, ancak bunu özel bir oluşturma komut dosyasıyla da değiştirebilirsiniz.
Uzatılmış, sabit sığdırma ve sabit projeksiyon modları, varsayılan oluşturma komut dosyasının özellikleridir. Bu modlardan biri kullanılırken, oluşturma komut dosyası oyun nesnelerini oluşturmada kullanılmak üzere bir 2D ortografik projeksiyon matrisi oluşturur. Bu matrisin yapılandırması, kullanılan projeksiyon moduna bağlı olarak değişiklik gösterir.
Projeksiyon matrisinin yapılandırmasını genişletmek veya değiştirmek için özel bir oluşturma komut dosyası kullanabilirsiniz. Özel oluşturma komut dosyalarıyla, farklı en boy oranları için sinemaskoplar veya dikey kenarlıklar gibi varsayılan komut dosyasının desteklemediği işlevler de uygulanabilir.
Açık kaynak geliştiriciler, varsayılan Geliştirme komut dosyalarından daha fazla özellik sunan oluşturma komut dosyası ve kamera paketleri oluşturmuştur. Yaygın olarak kullanılan iki paket RenderCam ve Defold-Orthography'dir.
GUI sistemini geliştirin
Defold, GUI sahne dosyası konseptine dayalı bir GUI sistemi içerir. GUI sahne dosyalarında, resimler veya metin gibi bağımsız kullanıcı arayüzü öğelerini tanımlayan, düğüm adı verilen nesneler bulunur.
GUI sahne dosyaları, Defold oyun nesnesine bileşen olarak eklenebilir. GUI sahneleri ve içerdikleri düğümleri ayrı olarak oluşturulur ve normal oyun nesnelerinden biraz farklı çalışır. Bu farklılıklar nedeniyle, GUI sahneleriyle birden fazla ekran çözünürlüğünün desteklenmesi, GUI sistem koordinatları ve GUI düğüm özetleri ve çapalarıyla ilgili dikkat edilmesi gereken ek noktaları içerir.
GUI sistem koordinatları
Normal Katlanmış oyun nesneleri, dünya uzayında koordinatlarını belirtir. Kamera nesnesi, dünyadaki alanı ekran alanına çevirir ve kameranın o anki sanal görünümü içinde dökülen oyun nesnelerini görüntüler. GUI sistemi kendi ayrı kamerasını kullanır. Bir GUI sahnesine ait olan düğümler, dünya uzay koordinatları yerine ekran alanı koordinatlarını kullanır. Ekran çözünürlüğü, GUI düğümlerini yerleştirmek için kullanılan proje temel çözünürlüğünden farklı olduğunda, bu durum düğümlerin ekran kenarlarına veya bir üst düğümün kenarlarına göre farklı kenar boşluklarına sahip olmasına neden olabilir. Defold, ekran çözünürlüğündeki farklılıkları dikkate almak amacıyla GUI düzeni ayarlamaları yapmak için birden fazla seçeneğe sahiptir.
GUI düğüm ekseni ve çapalar
GUI düğümleri, X Sabitleme ve Y Sabitleme özellikleri kullanılarak dikey ve/veya yatay kenarlara sabitlenebilir.
- Bir düğümün üst düğümü varsa, bağlayıcı üst düğümün kenarlarında yer alır.
- Bir düğümün üst düğümü yoksa, bağlayıcı ekranın kenarlarında yer alır.
Aşağıda, iki GUI düğümü olan örnek bir sahne gösterilmektedir. Sol alt ve sağ üst köşedeki kumanda simgeleri. Her iki düğümde de X Anchor ve Y Anchor None
olarak ayarlanmıştır:
![GUI öğeleri içeren örnek sahne](https://developer.android.com/static/images/games/engines/defold/Resolution_gui_anchor_none.png?authuser=6&hl=tr)
Ekran sabitleyici olmadan yeniden boyutlandırıldığında kumanda simgelerinin konumlarını temel çözünürlüğe göre korur:
![Sabitleri "yok" olarak ayarlanmış GUI öğelerine sahip, yeniden boyutlandırılan örnek sahne](https://developer.android.com/static/images/games/engines/defold/Resolution_gui_anchor_none_stretch.png?authuser=6&hl=tr)
None
olarak ayarlanmış GUI öğelerinin bulunduğu, yeniden boyutlandırılan örnek sahneSol alt düğümün Y Sabitlemesi Bottom
, sağ üst düğümün Y Sabitlemesi ise Top
olarak ayarlandığında GUI düğümleri uygun ekran kenarlarına sabitlenir:
![Sabitlerin kenarlara ayarlandığı GUI öğelerinin bulunduğu, yeniden boyutlandırılan örnek sahne](https://developer.android.com/static/images/games/engines/defold/Resolution_gui_anchor_edge.png?authuser=6&hl=tr)
Edges
olarak ayarlanmış GUI öğelerinin bulunduğu, yeniden boyutlandırılan örnek sahneBir GUI düğümünün Pivot özelliği, düğümün sınır dikdörtgeninde, ekran alanı koordinatı Konum özelliğine karşılık gelen noktayı belirtir. GUI düğümleri varsayılan olarak Center
ayarını kullanır ve Konum noktası, sınırlar dikdörtgeninin tam merkezine yerleştirilir. Diğer olası Pivot ayarları, dört ana yön ve dört köşegeni içerir. Pivot özelliği, X Sabitleme ve Y Sabitleme özellikleriyle birlikte kullanıldığında kenar boşluklarının spesifikasyonunu basitleştirebilir.
Aşağıdaki örnekte, sol alt kısımdaki denetleyici simgesi GUI düğümünün Konumu 0,0
ve Pivot Center
olarak ayarlanmıştır.
![Pivot ekseni Orta olarak ayarlanmış bir GUI düğümü](https://developer.android.com/static/images/games/engines/defold/Resolution_pivot_center.png?authuser=6&hl=tr)
Center
olarak ayarlanmış bir GUI düğümüPivot'u South West
olarak değiştirmek, aşağıdaki düzenlemeyle sonuçlanır:
![Pivot çizgisinin Güneybatı olarak ayarlandığı bir GUI düğümü](https://developer.android.com/static/images/games/engines/defold/Resolution_pivot_southwest.png?authuser=6&hl=tr)
South West
olarak ayarlanmış bir GUI düğümüGUI düğüm ayarlama modları
Ekran çözünürlüğü, temel projenin çözünürlüğünden farklı olduğunda GUI düğümleri yeniden boyutlandırılabilir. Düzenleme Modu özelliği, düğüm içeriğinin ölçekleme davranışını kontrol eder. Ayarlama Modu üç ayara sahiptir: Fit
, Zoom
ve
Stretch
.
Fit
Fit
ayarı, düğüm içeriğinin en boy oranını korur. İçerik, düğümün yeniden boyutlandırılan sınırları dikdörtgeninin genişliği veya yüksekliğiyle eşleşecek şekilde ölçeklendirilir. Seçilen eksen, daha küçük farka sahip olan eksendir. Bu, içeriğin orijinal en boy oranında sınırlar dikdörtgen içine sığmasını sağlar.
Yakınlaştırma
Zoom
ayarı, düğüm içeriğinin en boy oranını da korur. Fit
ayarında olduğu gibi Zoom
, içeriği düğümün yeniden boyutlandırılan sınır dikdörtgeninin genişliği veya yüksekliğiyle eşleşecek şekilde ölçeklendirir. Fit
işlevinin aksine Zoom
, eşleme hedefi olarak orijinal boyuttan daha büyük farka sahip ekseni kullanır. Bu, ölçeklendirilen içeriğin sınırlardaki dikdörtgenden taşabileceği anlamına gelir.
Aşağıda, farklı Düzenleme Modu ayarlarına sahip iki GUI düğümüne örnek gösterilmektedir. Sol alttaki kumanda simgesinde Ayarlama Modu Fit
iken sağ üstteki kumanda simgesinde Ayar Modu Zoom
şeklindedir.
![Farklı Düzenleme Modu ayarlarına sahip iki GUI düğümü](https://developer.android.com/static/images/games/engines/defold/Resolution_adjust_mode_fit_zoom.png?authuser=6&hl=tr)
Esneme
Stretch
ayarı, düğüm içeriğini düğümün yeniden boyutlandırılan dikdörtgeniyle tam olarak eşleşecek şekilde ölçeklendirir. Orijinal en boy oranı korunmaz.
GUI düzenleri
Defold, GUI düzenlerini farklı ekran çözünürlüklerine uyarlamak için alternatif bir yönteme sahiptir: Layouts. Varsayılan GUI düğüm özelliklerini geçersiz kılmak için bir GUI sahnesine düzenler eklenebilir. Düzen, belirli bir ekran çözünürlüğüyle ilişkilendirilir. Birden çok Düzen mevcut olduğunda, Defold gerçek ekran çözünürlüğüne en yakın Düzen'i seçer. Bir GUI düğümü tarafından kullanılan varsayılan konum, boyut, ölçek veya grafik kaynağı, Layout tarafından geçersiz kılınabilir.
Ek kaynaklar
- Kılavuzu Genişletme - Oluşturma ardışık düzeni
- Yapılandırmayı Kaldırma Kılavuzu - GUI Sahneleri
- Yapılandırmayı Kaldırma Kılavuzu - GUI Düzenleri