Unity'de oyun geliştirmeyi kullanmaya başlayın

Bu kılavuzda, tipik bir oyun geliştirme döngüsü özetlenmektedir. Bu kılavuzu okuduktan sonra referans olarak da kullanabilirsiniz.

Unity ile çalışırken geliştirme yaşam döngüsü üç aşamadan oluşur:

  • Planlama ve tasarım
  • Geliştirme ve test etme
  • Yayınlama ve sürdürme

Planlama ve tasarım

Planlama ve tasarım aşamasında oyununuzu nasıl oluşturacağınızı belirlersiniz. Mobil cihazlar için geliştirme yaparken karşılaşılan zorlukları nasıl ele alacağınıza karar verir ve geliştirmede kullanılacak araçları ve süreçleri belirlersiniz.

Tüm ekip üyelerinden geri bildirim alma

Uygulama görevlerini belirlemek ve kaydetmek için sanat, mühendislik, tasarım, ses ve prodüksiyon ekiplerinizle birlikte çalışın. Örneğin:

  • Sanat ekipleri, karakterler ve ortamlar için öğe dokusu ve ağ bütçeleri oluşturabilir.
  • Mühendislik ekibi, her platforma karşı profilleme için bellek ve performans kontrol noktalarını belirleyebilir.
  • Tasarım ekibi, deneyimi mümkün kılan oyun mekaniklerini planlayabilir.
  • Ses uzmanları, kullanıcı arayüzü, 2D ve 3D üç boyutlu sesler arasındaki ses sürekliliğiyle ilgili koşulları inceleyebilir.
  • Üretim ekibi, lansman şartlarını iletebilir ve ekibin uyumlu bir şekilde ilerlemesini sağlayabilir.

Mobil cihazlar için tasarım

Mobil platformlar için uygulama geliştirirken aşağıdaki gibi belirli noktaları göz önünde bulundurmanız gerekir:

  • Değişken ekran en boy oranları
  • Güç tüketimi
  • Termal ve işlemci kısıtlaması
  • Dokunmatik giriş
  • Platformlar arası geliştirme
  • Grafik API'leri (Vulkan veya OpenGL ES)

Mobil cihazlar için tasarıma özgü hususlarla ilgili ayrıntılı bilgi için Unity'nin Android development in Unity (Unity'de Android geliştirme) ve Google Play Akademisi'ne göz atın.

Geliştirme ve test etme

Geliştirme ve test aşamasında oyununuzu oluşturur, test eder ve ön lansman hazırlıklarını yaparsınız. Google Play'de, lansman şartlarını karşılamaya hazırlanmak için sınırlı bir dahili test yaparsınız. Play Asset Delivery ve Unity Addressables sistemlerine göre dağıtım stratejinizi iyileştirir ve öğeleri Unity'de düzenlersiniz.

Aşağıdaki bölümlerde, Android için geliştirme yapmanıza yardımcı olmak üzere tasarlanmış Unity araçları ve teknikleri açıklanmaktadır.

Oluşturma

Oluşturma, Unity sahnenizdeki 3D ve 2D öğelerin ekranda çizilme işlemidir. Unity motoru oluşturma işlemini gerçekleştirse de Android platformu için birkaç faktörü göz önünde bulundurmanız önemlidir.

Dokular

Hedef cihazlarınıza göre en büyük doku boyutlarına ihtiyacınız olup olmadığını belirleyin. Bellek ayırma işlemini profillerken hedef doku boyutunu değiştirmenin potansiyel tasarruflarını inceleyin.

Kare süresi

Android cihazlarda aşırı ısınmayı önlemek için ortalama 21 milisaniyeden kısa hedef kare süresi değerleri kullanın. Bazen, örneğin yükleme sırasında veya kısa sinematik deneyimlerde kare süreleriniz 21 milisaniyeyi aşabilir ancak temel oyun deneyimi için 21 milisaniye eşiğinin altında kalmanız gerekir.

Mobil platformlarda, minimum hedefi karşılamadığınız takdirde zorunlu VSync, kare hızını kısıtlar. Örneğin, 60 Hz ekran güncellemesinde 60 FPS'ye ulaşmazsanız oyununuz 30 FPS'ye, 30 FPS'ye ulaşmazsanız 15 FPS'ye düşürülür.

Birçok Android cihazda 60 Hz ve 120 Hz görüntü yenileme hızları bulunur. Daha yüksek oluşturma hızları için termal kısma ve pil tüketimi riskini almadan çok daha kısa kare sürelerini (60 Hz güncelleme için 10 ms hedef, 120 Hz için 5 ms) hedeflemenin avantajlarını değerlendirin.

Unity'de oyununuzda belirli bir kare hızı ayarlamak için Application.targetFrameRate'i kullanın.

Android Frame Pacing kitaplığı, uygulamanız bir sonraki kareyi sunmak için ekran yenileme hızının gerektirdiğinden daha uzun sürdüğünde sorunsuz şekilde oluşturmanıza yardımcı olur. Unity'nin 2021 ve sonraki sürümlerinde Android kare hızını ayarlama etkinleştirildiğinde ekran yenileme hızı, hedef kare hızıyla en iyi eşleşecek şekilde ayarlanır. Bu sayede oyunun gereksiz ekran güncellemeleri için pil gücünü boşa harcamaması sağlanır.

Kitaplığı etkinleştirmek için Proje Ayarları > Oynatıcı'da Android Ayarları bölümünde Optimize Edilmiş Kare Hızı onay kutusunu işaretleyin.

Proje Ayarları > Oynatıcı Ayarları > Optimize Edilmiş Kare Hızı Ayarı'nı gösteren iletişim kutusu
1. şekil. Optimize edilmiş Frame Pacing, Unity 2019.2 ve sonraki sürümlerde Player Settings (Oynatıcı Ayarları) altında kullanılabilir.

Vulkan API'si

Vulkan, platformlar arası, yüksek performanslı bir 3D grafik API'sidir ve OpenGL ES'ye kıyasla düşük ek yüke sahiptir. Unity, Vulkan'ı iki farklı şekilde kullanabilir.

Auto Graphics API

Otomatik Grafik API'sini Vulkan ile kullanabilirsiniz ancak bu, yüklü Unity sürümüne bağlı olarak farklı davranışlara neden olabilir. Bu ayarı Proje Ayarları > Oynatıcı > Oluşturma'ya giderek seçebilirsiniz.

Kullanılacak Unity sürümünü seçerken aşağıdaki hususları göz önünde bulundurun:

  • Unity 2021.1 ve önceki sürümler, Auto Graphics API ile Vulkan'ı desteklemez. Unity, OpenGL ES 3.2'yi kullanmaya çalışır. Cihaz OpenGL ES 3.2'yi desteklemiyorsa Unity sırasıyla OpenGL ES 3.1, 3.0 veya 2.0'a geri döner.
  • Unity 2021.2 ve sonraki sürümlerde öncelikle Vulkan kullanılır. Cihaz Vulkan'ı desteklemiyorsa Unity, OpenGL ES 3.2, 3.1, 3.0 veya 2.0'a geri döner.
Project Settings (Proje Ayarları) > Player Settings (Oyuncu Ayarları) > Rendering (Oluşturma) > Auto Graphics API (Otomatik Grafik API'si)
Şekil 2. Otomatik Grafik API ayarı.

Manuel grafik API'leri

Alternatif olarak, Otomatik Grafik API'sini devre dışı bırakarak Vulkan'ı manuel olarak etkinleştirebilirsiniz. Unity 2021.1 veya önceki bir sürümü kullanıyorsanız Vulkan'ı kullanmanın tek yolu budur.

Bu listede Vulkan, OpenGL ES'den daha yukarıda sıralanmışsa Unity önce Vulkan'ı kullanmayı dener. Cihaz Vulkan'ı desteklemiyorsa Unity, OpenGL ES ile çalışır. Android'de Vulkan hakkında ayrıntılı bilgi (ör. modern grafik API'lerini kullanma ve oyununuzun performansını optimize etme) için Vulkan'ı kullanmaya başlama başlıklı makaleyi inceleyin.

Proje Ayarları > Oyuncu Ayarları > Oluşturma > Grafik API'leri
3.şekil Otomatik Grafik API'si devre dışı bırakıldığında grafik API'lerini manuel olarak ayarlayın. Vulkan ilk seçenektir. Unity, OpenGL ES 3.0'a geri döner.

Çizim çağrıları

Ekranda gösterilen her şey bir veya daha fazla çizim çağrısıyla ilişkilendirilir. Mobil platformlarda, grafik işleme birimine (GPU) gönderdiğiniz çizim çağrılarının sayısını optimize etmeli ve azaltmalısınız.

Çizim çağrılarını, trafik ışığında bekleyen arabalara benzetebilirsiniz. Işık yeşile döndükten sonra belirli sayıda araç geçebilir. Işık sarıya döndüğünde ideal hedef kare süresine (21 milisaniye), kırmızıya döndüğünde ise 33 milisaniyelik kare süresi sınırına ulaşmışsınızdır. Bu sürenin ötesinde kalan her şey sonraki oluşturma karesini etkiler. Bu nedenle, elde edilen kare hızı hedeflediğiniz 30 FPS'den düşüktür.

Oyununuzdaki çizim çağrısı performansını iyileştirme hakkında bilgi edinmek için Unity Destek Ekibi'nin toplu işleme makalesine bakın.

Gölgeler

Gölge oluşturma çizim çağrıları, en basit ortamlarda bile GPU süresinin çoğunu tüketerek en fazla GPU yoğunluğu gerektiren çağrılar olabilir. Gölge oluşturma çizim çağrılarının maliyetini azaltmak için yumuşak gölgeler yerine sert gölgeler kullanmayı deneyin. Bu, düşük seviye cihazlarda GPU için hâlâ çok maliyetli ise sert gölgeler yerine blob gölgeler kullanmayı düşünebilirsiniz.

Doku

Android'deki RGB ve RGBA dokular için önerilen doku sıkıştırma biçimi ASTC'dir. Unity'de Android'de kullanmanız gereken minimum doku sıkıştırma seçeneği ETC2'dir. Unity Build Settings (Unity Derleme Ayarları) bölümünde ASTC'den ETC2'ye yedek olarak dönebilirsiniz.

Platforma göre desteklenen biçimlerin tam listesini Unity dokümanlarındaki Manual: Recommended, default, and supported texture formats, by platform (Manuel: Platforma göre önerilen, varsayılan ve desteklenen doku biçimleri) başlıklı makalede bulabilirsiniz.

Kullanıcı arayüzü ve en boy oranları

Çeşitli cihaz ekran çözünürlüklerini, yönlerini ve en boy oranlarını doğrudan Unity Editor'da önizlemek için Unity Device Simulator aracını kullanabilirsiniz. Oyun görünümü ile Cihaz Simülatörü görünümü arasında geçiş yapabilirsiniz.

Aracın önizlemesini Simulate your Game with Device Simulator in Unity! (Unity'de Cihaz Simülatörü ile Oyununuzu Simüle Edin) başlıklı makalede bulabilirsiniz.

4.şekil Trivial Kart'ın çalıştığı Cihaz Simülasyon Aracı.

Trivial Kart'ın kaynak kodunu Github'daki games-samples deposunda bulabilirsiniz.

Açılır menüden cihaz seçeneklerini belirleyerek cihaz simülasyonu görünümünde kullanıcı arayüzü tuval öğelerinin düzenini ve doğruluğunu hızlıca doğrulayabilirsiniz:

Project Settings > Player Settings > Optimized Frame Pacing
5.şekil Cihaz Simülatörü, düzenleyicide cihaz değiştirme özelliğini destekler. Böylece tasarım sorunlarını erkenden tespit edebilirsiniz.
Proje Ayarları > Oyuncu Ayarları > Optimize Edilmiş Ün Hızı
6.şekil Cihaz Simülatörü paketini indirmeden önce Enable Pre-release Packages'ı (Erken Erişim Paketlerini Etkinleştir) işaretleyin.

Unity'de kullanıcı arayüzü optimizasyonuyla ilgili daha fazla teknik için Unity'nin Optimizing Unity UI (Unity Kullanıcı Arayüzünü Optimize Etme) başlıklı eğitimine göz atın.

Fizik

Nvidia PhysX motoru Unity'ye yerleşiktir. Varsayılan ayarlar mobil cihazlarda maliyetli olabilir. Bu nedenle, aşağıdaki noktaları göz önünde bulundurun:

  • Hedef kare hızınızı göz önünde bulundurun ve sabit zaman adımını buna göre ayarlayın. Varsayılan değer 0,02 ms veya 50 Hz olarak ayarlanır. 30 FPS hedefi için bu değeri 0,03 veya daha yüksek bir değere çıkarabilirsiniz.
  • Belirli katman türlerindeki oyun nesneleri arasındaki etkileşimleri belirlemek için Mesh Collider'ları basitleştirmeyi ve Layer Collision Matrix'i en aza indirmeyi düşünebilirsiniz.

Fizik ayarları ve mobil oyunlar için optimizasyonlar hakkında bilgi edinmek istiyorsanız Unity'nin Mobil Oyunlarınızı Optimize Etme e-kitabına göz atın.

Profil

Uygulama geliştiriciler, uygulama kritik bir hata noktasına ulaşana kadar genellikle profil oluşturmayı gözden kaçırır veya yoksayar. Sürecinize özel profil oluşturma zamanı planlamanız ve aşağıdaki en iyi uygulamalardan yararlanmanız önerilir:

  • Geliştirme sırasında, profil oluşturma süresini rastgele bir zamana sığdırmak yerine ayırabileceğiniz önemli noktaları belirleyin.
  • Unity Profile Analyzer ile kullanmak için profil anlık görüntülerini kaydedin.
  • Oyununuzun geliştirmenin mevcut aşamasındaki performansıyla ilgili doğru bir fikir edinmek için hedef cihazlarda profilini oluşturun.
  • Oyununuzun farklı bölümlerini profilleme.
  • Oyuncularınızın oyunu nasıl oynadığını profilleme (Oyununuzu yalnızca boşta durumdayken veya duraklatma ekranındayken profillemeyin.)
  • Oyun bir süredir çalıştıktan sonra sürdürülen modda profil oluşturarak mobil cihazlar ısındığında karşılaşabileceğiniz sınırlama sorunlarını bulmanıza yardımcı olur.

Aşağıdaki profilleme araçlarını ayrı ayrı veya birlikte kullanabilirsiniz.

  • Unity Profiler: Unity Profiler, Unity Editor'daki kodunuzda çalıştırılabilen ve geliştirme modu derlemeleri çalıştıran bağımsız Android cihazınıza bağlanabilen, tamamen entegre bir performans analiz aracıdır.

  • Android GPU Inspector Android GPU Inspector (AGI) ile kare düzeyinde hata ayıklama yapabilirsiniz. AGI ayrıca GPU, CPU, bellek, pil ve GPU sayaçları dahil olmak üzere sistem hizmetlerini de analiz eder.

Unity'de oyununuzun profilini oluşturma hakkında ayrıntılı bilgi için Unity'nin Introduction to profiling in Unity (Unity'de profil oluşturmaya giriş) başlıklı videosunu izleyin veya Ultimate guide to profiling Unity games (Unity oyunlarında profil oluşturmayla ilgili nihai kılavuz) başlıklı makalesini okuyun.

Bellek yönetimi

Android işlemleri, hedef cihazdaki kullanılabilir belleği paylaşır. Hedef test cihazında yeterli miktarda boş bellek kaynağı olduğunda bellek kullanımını profillemelisiniz. Oturumları ve bellek kullanımı trendlerini uygun şekilde karşılaştırabilmek için oyununuzda tutarlı bir noktada bellek testleri yapın.

C# ile yazılmış komut dosyalarında çalışırken dizelerin, dize karşılaştırmalarının ve dizeyle ilgili nesnelerin (ör. oyun ayarları için JSON dosyaları) kullanımına dikkat edin. Bunlar sık sık bellek ayırması oluşturur ve parçalanmaya neden olabilir.

Dize birleştirme işlemlerinin yerinde yapılması yerine (ör. "this" + "is" + "a" + "bad" + "idea" ile StringBuilder.Concat() işlev çağrıları karşılaştırması) büyük dize manipülasyonu dizileri için StringBuilder sınıfını kullanmayı düşünebilirsiniz.

Dizeler hakkında daha fazla bilgi için Unity belgelerindeki Dizeler ve metin başlıklı makaleye bakın.

TextAsset ve JSON metin kaynaklarını tercih edilen türe göre değerlendirin.ScriptableObject ScriptableObjects Sahne arası veri depolamayı verimli bir şekilde yönetin ve Editor-to-Play süresinde değişikliklere izin verin.

Mobil optimizasyon için varsayılan JSON işleyicisine alternatifler kullanma hakkında bir tartışma için Hutch'taki The hidden optimization in network games (Ağ oyunlarındaki gizli optimizasyon) makalesine bakın.

Çalışma zamanında bellek kullanımınızın nasıl göründüğünü belirlemek için Memory Advice API'yi kullanın. API, yüksek, normal ve düşük bellek kullanımı için trafik ışığı göstergesi sunar. Güncellemeler için göstergeye abone olabilir veya mevcut durumu öğrenmek için doğrudan yoklama yapabilirsiniz. Kırmızı sinyal aldığınızda oyun nesnesi havuzunuzu veya önbelleğinizi azaltmayı düşünebilirsiniz. Bu bağlamı canlı operasyonlar sırasında oyun telemetrinize ekleyin ve lansmandan sonra performans metriklerini inceleyin.

Android cihazlarda bellek düzeni ve Unity'nin bu düzenle nasıl çalıştığı hakkında daha ayrıntılı bilgi edinmek için Understanding Android memory usage (from Google I/O '18) (Android bellek kullanımını anlama - Google I/O 2018) başlıklı videoyu izleyin. Videoda, bellek sorunlarının türleri ve düşük bellek sonlandırıcı özelliğinin ne zaman devreye gireceği açıklanıyor.

Atık toplama

Yönetilen bellek ortamında çöp toplama işlemi, bir uygulama için geri dönüştürülebilen kullanılmayan bellek parçalarını temizler. Bellek kaynaklarının gereksiz yere ayrılmasını önlemek için çöp toplama ile ilgili en iyi uygulamaları kullanın.

Örneğin, isteğe bağlı ayırmalar kullanmak yerine bir oyun nesnesi havuzu oluşturun (GameObject.Instantiate). Büyük havuzlarda, oyununuzun giriş seviyesi Android cihazlarda yanıt vermeme riskini azaltmak için birden fazla kareye ayırma yapmayı düşünebilirsiniz.

Bir MonoBehaviour'un başından çağrılan basit bir eş yordam için aşağıdaki kod snippet'ini inceleyin:

// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
  while (enabled) {
    yield return new WaitForSeconds(1.0f);
    // Some intermittent function check
  }
}

// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
  while (enabled) {
    yield return waitForSecond;
    // Some other intermittent function
  }
}

Geliştirme sırasında boş işlevleri yanlışlıkla bırakmamak için MonoBehaviour şablon dosyasını Start() ve Update() saplama işlevlerini kaldıracak şekilde düzenleyebilirsiniz.

MonoBehaviour etkinliklerinin yürütülme sırasına genel bakış için Unity belgelerindeki Order of execution for event functions (Etkinlik işlevlerinin yürütülme sırası) başlıklı makaleye bakın. Bellek yönetimi hakkında daha fazla bilgi edinmek için Memory Management in Unity (Unity'de Bellek Yönetimi) kursuna göz atın.

Mobil oyun performansını optimize etme ipuçları için Mobil oyun performansınızı optimize etme: Unity'nin en iyi mühendislerinden profil oluşturma, bellek ve kod mimarisi ile ilgili ipuçları başlıklı makaleyi inceleyin.

Prefab havuzu

CPU kare süresi artışlarının neredeyse tamamı, oyun sırasında Prefab örneği oluşturulmasından kaynaklanır. Başlangıçtaki CPU kullanımındaki ani artışları azaltmak veya ortadan kaldırmak için oyun oynama aşamasına geçmeden önce mermiler, ortaya çıkarılabilir düşmanlar ve görsel efektler için nesne havuzlarını önceden ısıtmayı deneyin. Yükleme veya sahnenizdeki giriş dizileri sırasında ek optimizasyonları birden fazla "başlatma karesine" yayabilirsiniz.

Oyun nesnesi havuzu yönetimiyle ilgili birçok üçüncü taraf havuz öğesini Unity Asset Store'da bulabilirsiniz. Kendiniz de etkileşim oluşturabilirsiniz. Unity Learn'de Nesne Havuzu Oluşturmaya Giriş başlıklı makaleye bakın.

Öğe teslimi

Uygulamanızın Google Play'e ilk kez dağıtıldığında ne kadar büyük olabileceğiyle ilgili sınırlar vardır. Oyununuzun boyutuna ve yapısına bağlı olarak, oyuncuların istediğiniz deneyimi yaşayabilmesi için oyun kaynaklarınızın (karakter modelleri, ortamlar, kullanıcı arayüzü öğeleri vb.) bir kısmına veya tamamına ihtiyacınız olabilir.

Oyununuzun yükleme zamanında, hızlı takipte veya isteğe bağlı olarak ihtiyaç duyduğu öğeleri yönetmek için Play Asset Delivery (PAD) hizmetini kullanabilirsiniz. Unity Asset Bundles, PAD'yi destekleyecek şekilde entegre edilmiştir ve hangi öğelerin yayınlanacağını belirtmek için bu aracı kullanabilirsiniz.

Addressables

Addressables adlandırma sistemini hazırlayıp gözden geçirirseniz çalışma zamanında prefabrikler, dokular ve ses dosyaları gibi dinamik kaynakları ayarlamak artık karmaşık bir işlem değildir. Adreslenebilir öğeler, içeriğinizi nasıl düzenlediğiniz ile nasıl oluşturup yüklediğiniz arasındaki bağlantıyı kaldırır. Addressables sistemi, öğelere nasıl referans vereceğinizi ve bunları çalışma zamanında nasıl yükleyeceğinizi basitleştirmek için Resources klasörlerinin ve AssetBundle'ların yerini alır.

Örnek için GitHub'daki Addressables paketini kullanan demo projesine bakın. Addressables'ın geliştirilmesi hakkında ayrıntılı bilgi için Unity Blog'daki Addressable Asset System başlıklı makaleyi inceleyin.

Adreslenebilir öğe düzeninde, çok az veya çok fazla öğeyi ortak paketlere dahil etmenin avantajları ve dezavantajları vardır. Addressables ile içerik yönetimi hakkında daha fazla bilgi edinmek için Simplify your content management with Addressables (Addressables ile içerik yönetiminizi basitleştirin) başlıklı makaleyi inceleyin.

Bağımsız bir demo oluşturabilir ve Addressables sistemiyle rahat etmek için erişim modlarını deneyebilirsiniz. Ayrıca açık kaynak projesi BuildLayout Explorer for Unity 2019.3 and newer'ı görebilir ve Addressables tarafından oluşturulan buildlayout.txt raporunu inceleyebilirsiniz.

Bir Unity Açık Projesi olan Chop Chop'un öğeleri, tüm yükleme ve kaldırma işlemleri için Addressables sistemi kullanılarak paketlendi. Addressables paketlerinin yapısı ve kurulumuyla ilgili adım adım açıklamalı kılavuz için Packaging content with Addressable Assets | Open Projects Devlog başlıklı makaleyi inceleyin.

Chop Chop projesinde, varsayılan olarak yüklenen tek sahne olan Initialization sahnesi, projedeki öğelere (sahneler, prefabrikler vb.) doğrudan bağlantılar yerine AssetReferences kullanacak şekilde yapılandırıldı.

Unity Open Project: Chop Chop'un kaynak kodunu GitHub'da bulabilirsiniz. Proje artık geliştirilmiyor olsa da git deposu ve dokümanlar hâlâ kullanılabilir.

Üçüncü taraf eklentileri

Unity Asset Store'daki eklentiler gibi üçüncü taraf eklentileri kullanıyorsanız klasörleri incelediğinizden ve gereksiz öğeleri Resources klasörlerinden kaldırdığınızdan emin olun. Unity, derleme işlemi sırasında Resources klasörlerinde bulunan tüm öğeleri toplar ve bunları çalışma zamanında erişilebilen tek bir pakette toplar. Bu, son pakete gereksiz kod ekleyebilir ve genellikle gerekli değildir.

Tüm kaynak klasörlerini hızlıca bulmak için Proje panelinde Kaynaklar'ı arayın. Ardından, her birini seçerek ne içerdiğini ve oyununuz için gerekli olup olmadığını belirleyebilirsiniz.

7.şekil Unity Asset Store'dan indirilen klasörlerde birden fazla Resources klasörü olabilir. Uygulama paketinizde yer almamaları için bunları temizleyin.

Yayınlama ve sürdürme

Mobil oyununuzu yayınlamaya hazır olduğunuzda, oyunu kimlere yayınlamak istediğinize, alfa ve beta testlerini nasıl yapacağınıza, yayınlandıktan sonra performansı nasıl izleyeceğinize ve takip edeceğinize karar verin.

Sınırlı sürümden gelen geri bildirimleri analiz etme

Sınırlı ve hedeflenmiş bir kitleye lansman yapabilir ve daha büyük ölçekli beta testi gerçekleştirebilir ya da oyununuzu tüm pazarlarda tam olarak kullanıma sunabilirsiniz. Sınırlı sürümle, uygulamanızın performansını daha geniş bir canlı kitleye ve cihaz koleksiyonuna göre ayarlayabilirsiniz.

Örneğin, uygulama performansınız ve oyuncu trendleriniz hakkında bilgi edinmek için Android Performance Tuner for Unity ve Google Analytics for Unity'yi kullanabilirsiniz. Bu bilgiler sayesinde geliştirme ekibiniz güncellemeleri ayarlayıp yayınlayabilir. Ayrıca, benzer türde devam oyunları veya ilgili oyunlar planlamak için analiz verilerinizi de kullanabilirsiniz.

Alfa ve beta testi

Uygulama profilinizi Google Play Console'da ayarladıktan sonra, herkese açık alfa ve beta test derlemeleri hazırlayabilir ve bunları sınırlı bir kitleye dağıtarak lansman öncesi incelemeye gönderebilirsiniz. Sınırlı bir kitleye sunarak daha fazla cihazla ilgili son sorunları çözebilir ve küresel bir sürümde kullanıma sunmadan önce yanıtlayabileceğiniz ilk geri bildirimleri toplayabilirsiniz.

Unity derlemeleriniz Android App Bundle'lar aracılığıyla dağıtılır. Bilgi edinmek için Unity'nin Manual: Delivering to Google Play (Manuel: Google Play'e Teslimat) başlıklı makalesini inceleyin. Bu makalede, APK dosyalarından AAB biçimine geçişle ilgili değişiklikler de açıklanmaktadır.

İzleme ve takip

Oyununuzun canlı operasyon ve dağıtım aşamasında, geliştirme ve test sırasında erişiminizin olmadığı cihazlardaki performans sorunlarını tespit etmek için Android Vitals'ı kullanabilirsiniz. Ayrıntılar için Erişim, cihazlar ve Android vitals'daki oyunlarla ilgili yenilikler başlıklı videoyu izleyin.

Genellikle daha büyük geliştirme ekipleri, cihaz performansıyla ilgili metrikler sağlayan benzersiz ve özel oyun telemetri işlem hatlarına sahiptir. Kare hızları, grafik kalitesi, yükleme süresi ve yüklemeden vazgeçme ile ilgili metrikleri ayarlamak için Android Performance Tuner'dan (APT) ve ilgili Unity eklentisinden yararlanmayı unutmayın. Android Performance Tuner'ı Unity oyununuza entegre etme başlıklı makaledeki adım adım kılavuzu uygulayın.

Oyununuzun yaşam döngüsü, yayınlandıktan sonra sona ermez. Performansı ve geri bildirimleri izlemek, sürdürmek ve yanıtlamak; kullanıcıların memnun olması, olumlu yorumlar almanız ve oyununuzun tüm pazarlarda benimsenmesi için çok önemlidir.