UE4 / C++

"bir yazılımcının not defteri.."

15 Ağustos 2020 Cumartesi

Content Browser - Asset - Paket (Chunk) - 1

UE4 Projeler


UE4 için bir "proje" demek, tüm içeriği (content) ve kodu barındıran kendi kendine yeten bir ünite demektir. 

bir proje, belli bir folder (dizin) organizasyonunda gruplanarak kaydedilmiş dosyalardan oluşur.

Örneğin aşağıdaki resimde proje dizini içinde Content Browser in hiyerarşik dizin yapısı görülmektedir:



yukarıdaki resim projenin Content / StarterContent  dizin yapısı.


.uproject 
Projemizin Root  klasöründe ise proje ile aynı adı taşıyan,  tüm projeyi simgeleyen .uproject  adında bir dosya görünür; 

bir  .uproject dosyasında o projedeki tüm dosyalar ve dizinlerin kaydı ve ila proje hakkında detaylı bilgiler tutulur.

Siz bir dosyayı açarken, kaydederken veya yeni bir dosya yaratırken de yine  .uproject  in referansı (sağladığı bilgileri) kullanılır. 

.uproject bir anlamda bir referans dosyasıdır, varlıkların (assets), dosya ve klasörlerin tüm yerlerinin detaylı bilgisi buradadır; buradan ilgili bilgi okunarak tüm o varlıklara erişim yapılır.

Paralel olarak bakımı ve geliştirilmesi mümkün olan çok sayıda farklı Proje oluşturabilirsiniz. Hem Motor (hem de Editör) aralarında kolayca geçiş yapabilir; bu da aynı anda birden fazla oyun üzerinde çalışmanıza veya ana oyun Projenize ek olarak birkaç test projesine sahip olmanızı sağlar; yani UE4 de aynı anda çok sayıda farklı / ayrık proje yaratabilirsiniz. Hepsi de kendi ayrı proje dizinine ve kendi ayrı içerik dosyalarına sahip olur.

UE4 editörü projeleriniz arasında kolayca geçiş yapabilir. Böylece birden fazla projede tek seferde çalışabilirsiniz.


Asset lerin İsmini Değiştime ve Taşıma
asset in ismini değiştirme işini content browser sağ tık ile açılan context menü den "Rename" diyerek veya doğrudan F2 ye basarak yapabiliriz.

asset ler yine content browser üzerinden önce seçilip, sonra mouse ile sürüklenerek başka folder lara taşınabilir veya kopyalanabilir.

asset lerin isimleri bu şekilde değiştirildiğinde veya taşındığında onları referans etmiş olan diğer Asset ler de uygun şekilde güncellenirler; 

işlem gören Asset in olduğu yere görünmez bir yönlendirici (Redirector) konur;

yönlendiriciler (redirectors) Content Brwser a sağ tıklanıp "Fix Up Redirectors in Folder" denilerek temizlenebilir;

bu işlem, bu yönlendiriciye (redirector) referans etmiş olan tüm Asset leri doğrudan yeni konumdaki Asset e işaret etmelerini sağlayacak ve ardından yönlendiriciyi (redirector) kaldıracaktır; tabi Asset lerin yenien kaydedilmesi gerektiğini unutmayın.



Content Browser in Source Panel i içinde bir folder a ya da herhangi bir yere sağ tıklamak “Fix Up Redirectors” seçeneğine erişmemizi sağlayacaktır.

sonuç olarak yineleyelim ki Asset leri taşıma (moving) ya da isim değiştirme (renaming) işlemleri content browser içinde yapılmalıdır.


eğer bir asset işletim sisteminin file explorer penceresinden taşınır (moved), silinir (deleted), veya yeniden isimlendirilir (renamed) ise etkilenen asset in referansı artık onu bulmada başarısız olacaktır; o asset halen projede olsa bile...



Asset Dosyaları

bir Asset, UE4 projesi için bir parça "içerik" demektir, 

ve bir dosyaya serileştirilmiş (binary data olarak yazılmış) bir UObject olarak düşünülebilir.

Asset listeleri Content Browser içinde organize bir ağaç (tree) yapısı olarak düzenlenmiştir; 
ve herhangi bir dizin içine bakarsak, Asset ler ve (muhtemelen) yine alt dizinler (subfolders) görürüz.

önemli olan nokta şu, dizinlerde göreceğimiz bu Asset lerin her biri ".uasset" uzantılı birer dosya olarak karşımıza gelir; yani her Asset bir .uasset dosyası olarak tutulur. 

İçerikler arasında sadece harita (map), yani level ler bir istisna olarak  .umap uzantılı dosyalarda saklanır; ama (Content Browser da göreceğimiz) diğer tüm içerikler tipi ne olursa olsun bir .uasset uzantısındadır;

yani level ler .umap, diğer tüm assetler .uasset


önemli başka bir nokta ise bu Asset lerin (.uasset dosyalarının) UE4 editörü dışında, işletim sistemi pencerelerinde kopyalanması / taşınması hatalara neden olur; çünkü bu şekilde onların referansları, yani onları kullanan diğer object lerin kullandığı path yolları bozulmuş olur. 

burada Asset referanları dediğimiz şey Asset in full path i bilgisini içerdiğinden ve eğer bir Asset i bu şekilde (pencerelerden) taşırsanız, onun path i değişir, ama UE4 sistemi içindeki kayıtlı path i değişmediğinden bu artık hatalı bir durumdur. 

Bu yüzden tüm bu kopyalama taşıma silme işlemlerinin Content Browser içinden yapılması gerekir. Çünkü Content Browser her bir işlem ile birlikte asset lerin içindeki (referans path lerini de içeren) Meta Data bilgilerini de sürekli olarak günceller.

Yine sadece level, yani .umap uzantılı dosyalar ise bu kısıtlamadan etkilenmezler.


Asset isimlendirme
bir Asset i editörümüze import ettiğinizde veya doğrudan yarattığınızda, Asset kullanıcı tarafından isimlendirilir.

örneğin,

Content/Characters/MyCharacter 

yolundaki bir asset şu şekilde kaydedilecektir:

/UE4/MyProject/Content/Characters/MyCharacter.MyCharacter.uasset


Asset in path i (yolu), import edildiği veya yaratıldığı folder dan otomatik olarak alınır; bu projenin disk üzerindeki yoluna göre farklılık gösterebilir; örneğin content browser da 

Content/Characters/MyCharacter 

bu yolda yaratılan bir asset in path i :

/UE4/MyProject/Content/Characters/MyCharacter.MyCharacter.uasset

olabilir.


Asset Yönetimi (Asset Management)
Oyun esnasında (runtime) asset ler genellikle motor tarafından otomatik olarak yüklenir (loaded) ve hafızadan silinir (unloaded).

fakat, süreçler üzerinde direkt kontrolü alarak kayda değer performans artışları sağlayabilecek durumlar vardır; örneğin gereksiz yükleme sürelerinin azaltılması veya tamamen ortadan kaldırılması, oyun sırasında aksama / donmaların giderilmesi gibi…

bir proje tamamlandığında ve dağıtım, yani deployment aşamasına gelindiğinde asset ler cooking işleminde geçirilir yani asset ler asset tiplerine ve hedef platforma göre binary, yani ikili dosya formatına dönüşrürülür; ve birden çok .pak dosyasına bölünebilir. 

bu oldukça detaylı bir konu; burada teorik özetler ile geçiştiriyoruz..

Kaynak Kontrolü Çakışmalarını En Aza İndirme:

tek bir iş akışı için her biri birkaç asset içeren paketler kullanıldığında, bu kaynak kontrolü çakışmasına sebebiyet verebilir;

bunun yerine çok sayıda bireysel asset dosyası yaratmayı destekleyen ve teşvik eden bir iş akışı her bir asset in kendini bağımsız şekilde denetleyebilmesi anlamına gelir;

bu, kaynak kontrolü çekişmesini ve iş akışındaki darboğazları azaltır;

ayrıca, içerik yönetim sistemlerinin (content management systems) senkronizasyon süresi, tekil / bireysel Asset dosyalarında birden çok Asset içeren paket dosyalarına göre daha hızlıdır; çünkü tek bir Asset deki değişiklik yalnızca bir dosya güncellemesi gerektirir;

Unreal Editörü içinde Asset lerin her biri genellikle tek bir Asset içeren .uasset dosyalarında depolanır;

her asset referansı oyundaki herhangi bir asset i benzersiz olarak tanımlayan dizin tarzında bir path içerir;

Asset ler Content Browser içinde yaratılır veya content browser içinde dışarıdan import edilir;


Asset Referansları

bir asset referansının ne olduğunu anlamak için, Content Browser içinden bir asset e sağ tıklayıp Copy Reference dediğimizde hafızaya ne aldığına bakalım:



StaticMesh'/Game/Geometry/Meshes/1M_Cube_Chamfer.1M_Cube_Chamfer'

yani Asset in tipi (burada Static Mesh) ve gerektiğinde bulunabileceği konumu olarak görünüyor. 

Tam fiziksel yolu ise bundan biraz daha farklı birşey, şöyleki bir alttaki Copy File Path seçildiğinde hafızaya aldığı şeyin: 

C:/Users/user/Documents/Unreal Projects/testCpp12/Content/Geometry/Meshes/1M_Cube_Chamfer.uasset

bilgisayardaki tam fiziksel yolu olduğu görünüyor. 

Oysaki referans dan bahsederken onu herhangi bir bilgisayardan bağımsız, UE4 ün her zaman bulabileceği asset bilgilerini sembolize ettiğini görebiliriz.

Peki bir asset in başka bir asset i referansta bulunması nedir?
bir asset in başka bir asset i kullanmasıdır; 
ona ihtiyacı olması, yani artık ona bağımlı olması (dependency) dir.

ve Content Browser içinde asset ler kullanıldıkça asset lerin birbirine olan bağımlılıkları giderek artar, ve editör de bu durumu sıkı takip etmek için her biri için bir referans listesi oluşturur;

ve bu referanslarla nasıl çalışacağımızı bilmek önemlidir..

eğer ki bir asset i silemiyor veya başka bir dizine taşıyamıyorsanız, o asset başka bir object tarafından referans edilmiş yani bir şekilde kullanılmış demektir.

Silme İşlemi:
mesela editör ortmından bir asset i silmek çok kolaydır; silmek istediğiniz asset e mouse ile sağ tıklarsınız ve context menüden "Delete" dersiniz:




bu talep, silme işlemini onaylamanızı isteyen bir penceresini önünüze getirir:



eğer zaten level içinde kullanılan bir asset i silmeye kalkarsanız,, veyahutta, diğer asset lerden silmeye çalıştığımız asset i kullanan (ona bağımlılığı olan) veya onu referans eden var ise, silme işlemini engellemek için bir uyarı penceresi bizi karşılar:




burada soldaki kırmızı button (Replace References) a basarak aynı tipte başka bir asset seçip yerine onun referansını koyabiliriz, veya doğrudan sağdaki button ile (Force Delete) diyip silmeye zorlayabiliriz; ama bunu yaparsak projemizde içi boş asset referansları kalır. Yani falanca asset in adı ve yolu geçiyor ama ortada öyle bir asset yok. Runtime anında bu malumunuz çakılmalara sebebiyet verecektir. 

Bu gibi araçlar bu referans takiplerini kolayca yapmamızı ve bu referans bağlantılarını kaldırabilmemize yardımcı olurlar.


Content Browser içinde bir asset e mouse ile sağ tıkladığımızda açılan context menü de "References" kısmı vardır, burada bir asset in konumuyla ilgili iki yardımcı komut görülebilir:


bunlardan biri az önce yukarıda anlatılan "Copy Reference", diğer ise hemen yukarıdaki resimde zaten seçili olan ve yine daha önce sözü edilen "Copy File Path"  dir.


"Copy Reference" komutu seçili asset in referanslarını clipboard a kopyalar; bu, bir asset in path ini metinsel olarak elde etmek istediğimiz zaman, veya bir dış listeye ihtiyaç duyduğumuz zaman faydalıdır. Oyun içerisindeki programlamalarda buradaki path i kullanırız; çünkü buradaki path evrensel bir path dir. 

"Copy File Path"  ise gerçek fiziksel yani iştetim sisteminin o asset i tam oalrak nere de tuttuğunu bilmek istersen yine bu bilgiyi clipboard a kopyalar. Bu bilgi bilgisayardan bilgisayara farkedebilir. Evrensel değildir. 


Referanslar konusunda başka güzel bir araç ise

"Reference Viewer"  aracı (tool) dır,



bu araç, seçili olan asset in referanslarını, yani o asset in kullandığı diğer assset leri ve de onu kullanan (referans etmiş olan) diğer asset leri görüntüler; 

bu komut bir dizine sağ tıklanarak toplu halde de uygulanabilir; yani o folder içindeki asset ler nerelerde kullanılmış ? başka hangi object ler bu folderdaki asset leri çağırmış (refere etmiş); toplamda ne kadar hafıza tüketmiş sorularına yanıt verir. 

Reference Viewer


burada bir numaralı kısım asset imizi referans eden (onu kullanan) diğer asset lerdir;

iki numaralı kısım bizim asset tir, bilgilerine baktığımız asset;

üç numaralı kısım ise bizim asset tarafından referans edilmiş (kullanılmış) diğer asset lerdir.

saü üst köşede şunun gibi ayar seçenekleri vardır:

Search Options

Search Depth Limit
Motorun referansları arayacağı derinlik. Örneğin, 2 değeri, grafiğin yalnızca seçili asset ile ilgili asset leri değil,, aynı zamanda ilgili asset ler ile ilgili varlıkları da (!) görüntüleyeceği anlamına gelir.


Search Breadth Limit
Belirli bir sütunda listelenen referans sayısı (referans veya referans alan). Örneğin, bir asset 20 öğeye referansta bulunuyorsa, ancak Arama Genişliği Sınırının değeri 10 olarak ayarlanmışsa, bu sütunda yalnızca 10 öğe görüntülenir.



bunların dışında, 
Content Browser a sağ mouse ile tıklarsak açılan context menüsü içinde:

New Asset
yaratılabilecek asset lerin bir listesini görüntüleyen bir alt menü açar,

Show in Explorer 
sağ tıkladığınız alanın gerçek fiziksel yolunu gösteren windows penceresini açar.

Rename
öğenin adını değiştirme

Set Color 
dizine özel (organizasyonel amacınıza uygun) bir renk vermek isterseniz diye, böylece işlemlerinizi daha iyi organize eder ve aradığınızı daha kolay bulur karmaşayı azaltabilirsiniz. 

Save All 
Tüm yeni veya değiştirilmiş Asset leri ve tüm yeni klasörleri kaydeder. Değişiklik yaparken bunu sık sık yapmayı unutmayın.

Delete
ilgili klasörü ve tüm içeriğini siler


Size Map
o folderdaki asset ler ve referans ettikleri herşey tarafından kullanılan yaklaşık hafıza (memory) nın interaktif (etkileşimli) haritasını verir; komut tek bir asset e de uygulanabilir. 





Fixed Up Redirectors in Folder 
dizine veirlen bir komuttur; Asset yeniden yönlendirme yamalarına (redirectors) olan tüm referansları bulur ve eğer yapabiliyorsa onları tekrar kaydeder, ve sonra tüm referansları onarılmış olan rediretor ler silinir.


şimdi gelelim bana göre en önemli araca...

Migrate
bir Asset in (ve ona bağlı Asset lerin) başka bir projede kullanılmak üzere bir kopyasını çıkarmak için Content Browser daki Migrate aracını kullanabilirsiniz;

bu folder daki asset leri ve onların tüm bağımlıklarını (their dependencies) (bu asset lere bağlı diğer asset ler ile birlikte) bir oyun projesinden diğerine (diğerinin content folder ine) kopyalar; 

örneğin bir materyal içinde texture ler kullanılmış olsun, siz bu materyal dosyasını migrate etmek istediğinizde material dosyası ile birlikte içinde kullanılan texture dosyaları da kopyalanır.

Migrate kullanımına hemen bir örnek verelim:

Content Browser içinde migrate etmek istediğiniz asset leri seçin:



seçtiğiniz asset lere sağ tıklayın ve Context menü den Asset Actions ve ardından da Migrate deyin.



Ardından gelecek olan bir Asset Report dialog penceresi bize Migrate edilecek olan Asset lerin ve de varsa onlara bağımlı olan (mecburen migrete listesine katılmış) olan diğer asset leri gösterecek ve bizden onay isteyecek. Ok deyin geçin,



şimdi artık istediğimiz UE4 projesin in content folder ini seçebiliriz. Bu seçtiğimiz migrate işleminin hedef lokasyonu olacak.





Eğer birleştirme (migration) başarılı ise, hangi asset lerin hedef lokasyona kopyalandığını gösteren  aşağıdaki onay ekranını göreceğiz:


eğerkine oyun içeriğindne başka bir şeylerin olduğu bir folder i migrate etmeye kalkışırsanız aşağıdaki uyarıyı alırsınız; size o içeriğin oyun ile ilgili olmadığını söylüyor, emin misiniz diye soruyor...


bu durumda lokasonu doğrulamanız, dolayısı ile evet veya hayır dan birine basarak işlemi onaylamanız lazım.




Asset Audit Window

Asset Audit penceresini açmak için üst menüden, Windows -> Developer Tools -> Asset audit diyebiliriz.

Add Chunks buttonuna basmak pencereyi projemizde bulunan tüm Chunk ların özetleri ile dolduracaktır.

yukarıdaki örnekte Asset lerin üç farklı chunk a dağılmış olduğunu görebilirsiniz.

bu chunk ların birini denetlemek için o chunk a sağ tıklayın ve Size Map veya Reference Viewer araçlarını seçin.


Size Map

Size Map, bir chunk (öbek) içindeki her bir asset in tipleri ve de büyüklüklerinin görsel (visual) temsili bir grafiğini sağlar.

Assetler kendilerini ifade eden ikonlar ile renkli ve de dosya büyüklüklerine orantılı büyüklükteki kutular içinde gösterilir. 

kutular birbiri içinde olması parent-child referans ilişkisini ifade eder.

örneğin bir texture bir materyal tarafından referans edilirse (kullanılırsa) Materyal in kutusunun içinde gösterilir, çünkü Material in yüklenmesi dolaylı yoldan texture in de yüklenmesine neden olur.

bizim örnek projemizde, Chunks 1 ve 2 oyunun oynanabilir haritalarında kullanılan asset leri içeriyor iken, Chunk 0 oyun menülerini ve oyuna girmek için gerekli olan asset leri içeriyor.

sonuç olarak, Chunk 0 diğer chunk lardan daha küçüktür, ve daha geniş bir asset tipi çeşitliliğine de sahiptir.

burada Chunk 0 ve 1 için Asset dökümünü ve toplam çıktı disk boyutunu görebiliriz:



projenin Chunk 0 ‘ı çok sayıda bağımsız asset içeriyor, ama nispeten küçükler.



resimdeki Chunk 1 ve Chunk 2 kendi ayrı haritaları (map) var.

Size Map” penceresi ayrıca içerdiği Asset lerin hafıza (memory usage) kullanımının (editörde) görüntülenmesini de sağlar.

aynı asset grubunun editör içindeki hafıza büyüklüğü (memory size), esasen çıktı alınmış (shipped) projenin disk kullanım boyutundan (disk space usage) farklı olabilir.



resmin sağ üst köşesindeki drop dan da anlaşılacağı üzere, Chunk 0 hafıza büyüklüğü (memory size) modunda görüntüleniyor.

bu görünüm modunda editördeki Asset lerin kullandığı hafıza büyüklüğüne göre kutu büyüklükleri oranmtılı olarak ölçeklenir.

bireysel Asset lerin kutusunun üzerine mosue ile sağ tıklanarak incelenebilir veya editlenebilir.

orta mouse scroll ünü de büyütme küçültme için kullanabilirsiniz, veya bir Asset e çift tıklayarak kutuyu ekrana oturacak şekilde genişletebilirsiniz.



mesela resimde “loading screen” isimli texture tipindeki asset e sağtıklandığıda açılan menü var.



Reference Viewer

Reference Viewer, Asset ler arasındaki bağlantıları bir ağ gibi temsili olarak gösteren bir grafik oluşturur.

Chunk lar (paketler) ve bireysel asset ler bu araç ile incelenebilir.

bizim örneğimizde, Chunk 1 incelendiğinde, yalnızca doğrudan bağlı iki Asset gösterilmektedir: "Sanctuary" Map, ve Primary Asset Label, Chunk 1 ile bağlantılıdır.



bu resim, Reference Viewer in projedeki Chunk 1 paketi tarafından doğrudan referans edilmiş olan Asset lerin grafiği dir. 

The sanctuary map asset in nod una sağ mouse ile tıklanmıştır. 

Content Browser veya Reference Viewer içinde bir node a sağ tıklarsanız ve "Re-Center Graph" seçeneğini seçerseniz, veyahutta Reference Viewer içinde iken bir noda a çift tıklarsanız, bu işlem o nod un referanslarını görüntüleyecektir.

Aşağıdaki görüntüde, Chunk1 deki "Map:/Game/Maps/Sanctuary" noduna yakınlaştırma yapılmıştır, ve görüyoruz ki "Sanctuary" map inin solundaki iki nod (Chunk 1 ve Chunk 1'in Birincil Varlık Etiketi (Primary Asset Label)) tarafından referansta bulunulmuş, yani onlar tarafından refere edilmiş, yani onlar tarafından kullanılmış, ve,  harita sağ tarafına doğru çok sayıda alt nod a referansta bulunuyor.



Chunk 1 in bir parçası olan, oyunun "Sanctuary" Map inin (haritasının) Referans Viewer penceresindeki görüntüsü resimdeki gibidir.

grafiğin tamamı görüntülenmiyor; görüntü, Referans Viewer içindeki ayar seçenekleri tarafından sınırlandırılmıştır.

grafiğin kapsamını sınırlamak motor un (engine) onu oluştururken harcadığı zamanı epeyce azaltır.

bu şekilde referanslar arasında gezinirken, belirli bir Asset in neden başka bir Asset veya Chunk (yığın / paket) ile ilişkilendirildiğini tam olarak görebilirsiniz.

bu, gereksiz Asset referanslarını farketmenize ve kaldırmanıza yardımcı olabilir veya Chunking stratejinizi projenizin ihtiyaçlarına daha iyi uyacak şekilde ayarlamanızı sağlayabilir.


Migrate
Asset paketlerini Launcher aracılığıyla indirdiyseniz, paketin tüm içeriğini projenize açmanıza veya belirli Varlıkları taşımanıza (migrate) gerek kalmadan ekleyebilirsiniz.

bir Asset paketini projemize eklemek için: 

Launcher içindeki Vault (kasa) kısmında Projenize eklemek istediğiniz Asset Paketini bulun, 




"Add to Project"  buttonuna tıklayın;

sonra da gelen listeden eklemek istediğini projenizi seçin:




son olarak "Add to Project"  button una tıklayın; 

Projenizi bir sonraki açışınızda, eklediğiniz Asset paketinin adını taşıyan bir klasörün içinde tüm içerik orada olacaktır.


İçeriği (Content) Derleme ve Dağıtım (Distribution) için .pak Dosyaları Oluşturma

Oyunumuzu nihai çıktı (release) için, veya editör olmayan platformlar için çıktıya derlediğimizde (cook), “Chunking” denen işlem verilerinizi daha sonra bağımsız olarak dağıtılabilen birkaç .pak dosyasına böler.

bir “chunk”, bağımsız olarak dağıtılabilen (deploy) ve indirilebilen (download) bir numaralandırılmış asset ler koleksiyonu / paketidir.


üretilen ilk Chunk sıfırıncı olarak numaralandırılır ve varsayılan (
default) olarak proje tarafından kullanılan tüm içerik (content) dahil edilir.

motorun Paketleme sistemi ile her Chunk için bağımsız bir .pak dosyası oluşturulacak ve daha sonra platforma özgü (platform-specific) bir dağıtım sistemine (deployment system) entegre edilecektir.

chunking, Asset Manager 'a tamamen entegre edilmiştir ve “Primary Asset Label” ler veya kural ezme “Rules Overrides” kullanılarak ayarlanabilir.

meslea iki map (harita) içeren bir oyunun chunk yapısı 3 parçadan oluşabilir:

Chunk1: 1. harita

Chunk2 : 2. harita

ve Chunk 0: tüm diğer veriler 

şeklinde..



Chunk ları ayarlarken özel (custom) bir Asset Manager alt sınıfı (subclass) oluşturmak ve bazı virtual fonksyonlarını override etmek (geçersiz kılmak) yararlı olabilir.

özellikle daha büyük ölçekli oyunlarda bu kesinlikle tavsiye edilir.

örneğin oyuna özel Asset kurallarının belirlenmesi için SetPrimaryAssetRules fonksyonunun override edilmesi gerekebilir; mesela belli bir content i özel bir Chunk a atamak için.

aynı şekilde, hangi Asset lerin Primary Asset ID tarafından yönetilir olduğunu belirlemek için çağrılan ShouldSetManager fonksyonunu da override etmek isteyebilirsin. 

her oyun projesi, kendi proje ihtiyaçlarına bağlı olarak içeriklerin (content) Chunk lara atanması için kendi özel kurallarına sahip olabilir.

Asset Manager in gerektiği kadar/şekilde genişleyebilir ve özelleştirilebilir olması amaçlanmıştır.


evet, şimdilik burada keselim,
bu konunun detaylarına ikinci bölümde devam etmek üzere hoşçakalın,