1. sayfa
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.
Profiler aç neden sorun oluyor bak. Endless oyunlarda Pooling çok önemli asla ve asla Instantiate yapmıcaksın. |
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. |
Gölgeler acayip kasıyor :( |
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 |
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? |
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 |
Arka arkaya instantiate 30FPS falan düşürür ortalama bir cihazda. 60 yerine 20-25 oynarsın. |
|
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. |
|
Hayır engel dediğim şey zeminin farklı renklisi. https://eksiup.com/p/541251685p6z |
oyunu 2d yapmayı deneyebilirsin, hiç olmadı prototipini yapabilirsin. |
Biraz daha ugraşsan kendi kendine singleton object pooler çıkaracaktın. Tebrik ederim. Tam olarak aradığın şey Object Pooler yapısı. |
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: |
1. sayfa
Bu mesajda bahsedilenler: @LityumİyonPil