Libgdx'de bir terraryum klon üzerinde çalışmaya başladım ve fayans üretimine başladım. Fayanslar 16x16 parçalar halinde ayrılır, ancak tüm parçalar yumurtlanırsa çok uzun sürer. Şu anda 400 parça (102400 fayans) üretiyorum. Dobiş sınıfının içindekiLibgdx Terraria klon dünyasının yaratılması çok uzun sürüyor
data = new int[width][height];
for(int y = 0; y < height; y++){
for(int x = 0; x < width; x++){
data[x][y] = 1;
}
}
chunks = new Chunk[chunks_x][chunks_y];
for(int y = 0; y < chunks_y; y++){
for(int x = 0; x < chunks_x; x++){
chunks[x][y] = new Chunk(x, y, this);
}
}
Çini yumurtlama kodu: Burada i parçalarını yumurtlamaya nasıl
tiles = new Block[World.chunkSize][World.chunkSize];
for(int vy = 0; vy < World.chunkSize; vy++){
for(int vx = 0; vx < World.chunkSize; vx++){
if(world.GetTile(vx + x * World.chunkSize, vy + y * World.chunkSize) >= 1)
tiles[vx][vy] = new Block(vx * 16 + x * World.chunkSize * 16, vy * 16 + y * World.chunkSize * 16, world.data[x * World.chunkSize + vx][y * World.chunkSize + vy]);
}
}
o boyutta bir dünya yaklaşık 2+ dakika sürer oluşturuluyor. Bunun çok büyük bir sayı olduğunu biliyorum, ama terraria'nın (ya da herhangi bir başka klonun) bu zamanı nasıl daha küçük hale getirdiğini merak ediyorum. Teşekkürler!
DÜZENLEME: İşte blok sınıfı (http://pastebin.com/SFCkJKur) ve varlık sınıfı (http://pastebin.com/w3ay2nkb).
You emin yaklaşık 102.400 fayans için bir göz here almak?Test amaçlı bir milyondan fazla fayansla çok daha büyük haritalar ürettim, birkaç saniye içinde yüklenecekti. Sanırım 16x16x400 yapıyorsunuz yani 102400 olacak. Şu anda gönderdiğiniz kodda tuhaf bir şey göremiyorum, bu karolar bayt cinsinden ne kadar büyük? Tam kiremit sınıfını gösterebilir misin? İçinde doku verileri gibi şeyler saklıyorsanız, bu bir darboğaz olacaktır. – Madmenyo
Bellekte 102400 doku oluşturuyorsunuz, bu opengl'in aynı dokuyu yükleme ve yeniden yükleme işlemine geçmesini sağlamaya çalıştığınızda, sadece [sarılı bir doku] kullanın (https://github.com/libgdx/libgdx/wiki/Textures, -textureregion-ve-spritebatch) kullanarak bir [varlık yöneticisi] (https://github.com/libgdx/libgdx/wiki/Managing-your-assets) ve varlık sadece render için bir TextureRegion kullanın, ayrıca bir fallout_shelter oluşturma/terraria/cüce kale klonu, bir saniyeden daha az yüklü bir milyon çini (https://qls.pw/C0P) var, GPU olmadan bir bilgisayarda sabit 60 fps ile render yapmak için culling yapıyor .. – Hllink