Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
15
Cevap
1944
Tıklama
0
Öne Çıkarma
Unity Mobil Oyun Optimizasyonu Önerileri
G
6 yıl
Yüzbaşı
Konu Sahibi

Ben bir endless runner oyunu yapıyorum, top ilerliyor ve ilerisinde hep yol oluşmaya devam ediyor. Batches'lar 23-24 arasında geziniyor hep. Bilgisayarda 1000 civarı fps almama rağmen maalesef mobilde bu fps çok düşüyor ve kasıyor.


Optimizasyon için denediklerim : object pooling, occlusion culling idi. Fakat verim alamadım nedense. Doğru yapamadım galiba.


Optimizasyon önerileriniz var mı acaba böyle bir oyun için ?

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



G
6 yıl
Yarbay

Profiler aç neden sorun oluyor bak.

Endless oyunlarda Pooling çok önemli asla ve asla Instantiate yapmıcaksın.


Bu mesaja 2 cevap geldi.
G
6 yıl
Yüzbaşı
Konu Sahibi

Kamerayı skybox'tan aldım ve solid color yaptım. Ve mobilde fps çok fazla yükseldi akıcı bir şekilde oynanıyor. Fakat yinede object pooling'i araştırdım ve çok önemli bir şey. Object Pooling uygulayıp performansı daha da yükselteceğim.




Bu mesajda bahsedilenler: @Zafer Korkmaz
G
6 yıl
Yarbay

Gölgeler acayip kasıyor :(



< Bu ileti DH mobil uygulamasından atıldı >

G
6 yıl
Yüzbaşı
Konu Sahibi

Kendim bir algoritma geliştirdim. Başlayışta 20 tane obje oluşturuluyor. Player o objelere deydiği anda obje.transform.position.x + 20 yapıyorum ve sonsuz döngüye giriyor. ve 20 den fazla obje oluşturulmuyor. Her objenin transform.position.x'i 20 ile toplanıyor deyildiği anda ve sona yerleşiyor.


Herkesin anlaması için bir video attım youtube'a :https://www.youtube.com/watch?v=tYZL6_CtN9g&feature=youtu.be





< Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 17 Eylül 2019; 9:53:38 >
Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @Zafer Korkmaz
B
6 yıl
Yüzbaşı

quote:

Orijinalden alıntı: Guest-8F0924900

Kendim bir algoritma geliştirdim. Başlayışta 20 tane obje oluşturuluyor. Player o objelere deydiği anda obje.transform.position.x + 20 yapıyorum ve sonsuz döngüye giriyor. ve 20 den fazla obje oluşturulmuyor. Her objenin transform.position.x'i 20 ile toplanıyor deyildiği anda ve sona yerleşiyor.


Herkesin anlaması için bir video attım youtube'a :https://www.youtube.com/watch?v=tYZL6_CtN9g&feature=youtu.be
Guzel cozum.
20 objenin kordinatlarini oynayarak sonsuz yol yapmissiniz.
Peki prefab instantiate yaparak gecilen yolu silip, one bir yol eklemek ile nekadar fark yaratiyor.?
Bunu test ettiniz mi?



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 2 cevap geldi.
G
6 yıl
Yüzbaşı
Konu Sahibi

Aşırı bir fark yaratmıyor. Sadece öyle yaparken çok fazla obje birikiyordu bu yüzden böyle bir yöntem tercih ettim. Ama ikisinde de fps'ler çok oynamıyor.


Fakat sizin dediğiniz yönteme dönmeye karar verdim çünkü bu şekilde positionlar birbirine giriyor engeller ile





< Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 17 Eylül 2019; 12:29:1 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Baxa
G
6 yıl
Yarbay

quote:

Orijinalden alıntı: Baxa

Guzel cozum.
20 objenin kordinatlarini oynayarak sonsuz yol yapmissiniz.
Peki prefab instantiate yaparak gecilen yolu silip, one bir yol eklemek ile nekadar fark yaratiyor.?
Bunu test ettiniz mi?

Alıntıları Göster
Düşük cihazlarda instantiate aşırı kastırıyor.

Arka arkaya instantiate 30FPS falan düşürür ortalama bir cihazda. 60 yerine 20-25 oynarsın.





< Bu mesaj bu kişi tarafından değiştirildi Guest-E94B9CA23 -- 17 Eylül 2019; 14:12:34 >

F
6 yıl
Yarbay

quote:

Orijinalden alıntı: Guest-8F0924900

Aşırı bir fark yaratmıyor. Sadece öyle yaparken çok fazla obje birikiyordu bu yüzden böyle bir yöntem tercih ettim. Ama ikisinde de fps'ler çok oynamıyor.


Fakat sizin dediğiniz yönteme dönmeye karar verdim çünkü bu şekilde positionlar birbirine giriyor engeller ile
Engeller ile nasıl birbirine giriyor tam anlayamadım?


Bu mesaja 1 cevap geldi.
G
6 yıl
Yüzbaşı
Konu Sahibi

Mesela engelin pozisyonu ile aynı pozisyona düşüyor engel gözükmüyor onun için bir kod yazdım bu sefer pozisyonlar düzgün olarak değişmedi.

Bu kadar sorun çıkarttığından dolayı bir obje destroy edilince yeni 1 tane oluşturuluyor ve en sona yerleşiyor, yeniden sonsuz döngüyü sağlıyorum.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Fulton
F
6 yıl
Yarbay

quote:

Orijinalden alıntı: Guest-8F0924900

Mesela engelin pozisyonu ile aynı pozisyona düşüyor engel gözükmüyor onun için bir kod yazdım bu sefer pozisyonlar düzgün olarak değişmedi.

Bu kadar sorun çıkarttığından dolayı bir obje destroy edilince yeni 1 tane oluşturuluyor ve en sona yerleşiyor, yeniden sonsuz döngüyü sağlıyorum.
Hocam ben tam şunu anlayamadım. Engel dediğiniz şey zaten zeminin üstüne denk gelmiyor mu bu durumda pozisyonu her türlü zeminden farklı olması lazım. Neyi kaçırdım acaba anlamadım da? Sen engel objelerini yere gömülü olarak mı yapıyorsun? Eğer bu tarz bir şeyse sana şöyle bir tavsiyem var, engel objelerinin pivotunu yani ağırlık merkezini orta noktasından üst kenarına getir. Böylece pozisyonları o noktaya göre ayarlanır hani normalde pozisyon merkeze göredir.





< Bu mesaj bu kişi tarafından değiştirildi Fulton -- 18 Eylül 2019; 16:33:26 >
Bu mesaja 1 cevap geldi.
G
6 yıl
Yüzbaşı
Konu Sahibi

Hayır engel dediğim şey zeminin farklı renklisi.
https://eksiup.com/p/541251685p6z




Bu mesajda bahsedilenler: @Fulton
D
6 yıl
Er

oyunu 2d yapmayı deneyebilirsin, hiç olmadı prototipini yapabilirsin.



L
5 yıl
Yüzbaşı

Biraz daha ugraşsan kendi kendine singleton object pooler çıkaracaktın. Tebrik ederim.

Tam olarak aradığın şey Object Pooler yapısı.





< Bu mesaj bu kişi tarafından değiştirildi LityumİyonPil -- 21 Ocak 2020; 15:6:4 >

< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @codforc
G
5 yıl
Yüzbaşı
Konu Sahibi

Teşekkürler :D Sonradan anladım zaten object pooler'a ihtiyacım olduğunu araştırarak.




Bu mesajda bahsedilenler: @LityumİyonPil
T
5 yıl
Yüzbaşı

hocam ben unity bilmiyorum ama. java libgdx kullanıyorum.

basit flappy bird tüp nesnesinden örnek veriyim.

class Tube{

Image img;
float x;
float y;
}


Genelde obje türü ne ise List<Tube>tupListesi=new ArrayList<Tube>();

arrayList yaratırsın .unityde listeleme ile objeni listeye koy.

camera sınırlarına girdiğin zaman objeyi yarat cıktıgın zaman listeden sil
aslında mantık bu

seninde oluşturacağın 3d objeleri böyle bir listeye alman lazım;

List<GameObject>gameobjectListesi=new Array<GameObject>();

ekran boyutu geniislik=400, yükseklik=800;


for(Tube t:tupListesi){

//burda tubenin x posisyonu ve sprite genişliğini geçtiğin anda objeyi sil dersin
if(t.getX+Tube+t.getwitdht)

tuplistesi.remove();


yani senin objeyi yaratıp ekrandan kaybolduğu zaman silmen lazım:



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.