Şimdi Ara

Unity Mobil Oyun Optimizasyonu Önerileri

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
18
Cevap
1
Favori
1.911
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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 ?



  • 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 :(

    < Bu ileti DH mobil uygulamasından atıldı >
  • 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 :
    deni2youtube
    I created an new Endless Runner Game Optimization algorithm (Best optimization)
    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 >




  • 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ı >




  • Baxa kullanıcısına yanıt
    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 >
  • Yapay Zeka’dan İlgili Konular
    Yeni Android Oyun Tanıtımı
    7 yıl önce açıldı
    Daha Fazla Göster
  • 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 >
  • 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?
  • Fulton F kullanıcısına yanıt
    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.
  • 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 >




  • Fulton F kullanıcısına yanıt
    Hayır engel dediğim şey zeminin farklı renklisi.
    Eksi Up
    engel - eksi up
    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ı.



    < 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ı >
  • LityumİyonPil kullanıcısına yanıt
    Teşekkürler :D Sonradan anladım zaten object pooler'a ihtiyacım olduğunu araştırarak.
  • 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:
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.