Unity (3D) kullanırken oyun performansında 12.04 düşüşüne karşı ne yapmalı?


9

Yeni Ubuntu kurulumumdan bu yana oyun performansında büyük bir düşüş yaşıyorum 12.04

Bilgisayarım Nvidia Geforce GTX 460, AMD Phenom II X4 965 CPU ve 4GB RAM'den oluşuyor ve nvidias'a özel sürücü kullanıyorum.

Ben esas olarak linux müşterilerini kullanarak Heroes of Newerth oynuyorum. Bunu ubuntu 9.10'dan beri yapıyorum ve tescilli nvidia sürücüsünü kullanırken hiçbir performans sorunu yaşamamıştım. Fps'im her zaman 60'ın vsync çerçeve kapağına kadar çıkarıldı.

Ben ubuntu 12.04 çalıştırmak beri yaklaşık 30-45 fps olsun ve genel olarak oyun deneyimi çok laggy. Ben ubuntu 12.04 varsayılan olarak ne yazık ki yüklü nvidias 295.40 sürücü ile sorunları olan bir sürü insan olduğunu biliyorum. Bu yüzden el ile en son kararlı 295.49, en son beta 302.07 ve hatta ubuntu 11.10'da kullanılan eski sürüm 295.33'ü (performansla ilgili hiç sorun yaşamadım) manuel olarak kurdum. 4 sürücü sürümüyle aynı performans sorunlarını yaşadığım için zaman kaybıydı.

Unity 2D'yi kullandığımda fps'im 60'a geri döndü ve genel oyun performansı harika. Bu yüzden sadece ubuntu 12.04'ün Unity sürümünü çalıştırırken bu sorunları yaşıyorum.

Ayrıca ana dizindeki .config ve .compiz-1 klasörlerimi silmeye çalıştım, ancak birlik kullanırken hala oyun performansı bir karışıklık.

Bundan sonra ne yapacağımı bilmiyorum ... Sorunu nasıl daha fazla hata ayıklayabileceğimi bilen var mı? Belki sorunu daha iyi analiz etmek için nasıl daha fazla veri sağlayabilirim? Belki bazı compiz ayarları ile uğraşmaya çalışın?

Bu performans gerilemesi gerçekten sinir bozucu ve sadece Heroes of Newerth'in windows istemcisini indirmeyi ve çift önyüklemeye geri dönmeyi düşünüyorum çünkü bu kabul edilemez.

Herhangi bir yardım takdir.

Yanıtlar:


3

Bu gerçek bir çözüm değil, ama en azından (umarım) kullanışlı bir çözüm olabilir (sadece Unity 2D kullanmak dışında).

Bir oyuna başlamadan önce Nautilus'u (dosya yöneticisi) açın ve adresine gidin /usr/share/application. Bir terminal açın, yazın metacity --replaceve enter tuşuna basın. Panik yapma, Unity arayüzü kaybolacak, ama bu benim niyetim. Oyunu dosya yöneticisinden başlatın (oyunun başlatıcısı bahsettiğim klasörde olmalıdır). Oyununuzu oynamayı bitirdikten sonra unity --replaceterminal penceresini yazın ve enter tuşuna basın. Masaüstünüz şimdi nasıl geri yüklendi.
Bu muhtemelen sorun yaratan arka planda çalışan Birlik olduğu gibi çalışmalıdır.

Ayrıca, bunu bir hata olarak rapor ederdim. Kesinlikle düzeltilmesi gereken bir şey. Bir hata raporu gönderirseniz, bu sorunu yaşayan diğer kişilerin bunu "onları etkileyen" olarak işaretleyebilmeleri için bir bağlantı bıraktığınızdan emin olun.


Cevabın için teşekkürler. Bu geçici çözümü deneyeceğim ve rapor vereceğim. Elbette güzel değil ama en azından her zaman birlik 2d ile çıkış yapmaktan daha iyi ... Hatayı bildirmeme yardımcı olabilir misiniz? Sürecin açıklandığı bir kaynağa veya bir şeye bağlantı zaten çok yardımcı olacaktır. Teşekkürler.
dong

Geçici çözümünüz için teşekkürler RobinJ. Gerçekten iyi çalışıyor ve oturumu devam ettirebileceğim için birlik 2d ile çıkış yapıp tekrar giriş yapmaktan daha iyi. Klasörü oyun başlatıcısıyla açtım, bir terminal açtım metacity --replace &, oyunu yazmaya başladım ve almayı umduğum harika bir performansa sahip oldum. İşim bittiğinde yazıyorum unity --replaceve her şey normale döndü. Şimdi birliğe karşı bir hata yapacağım ve ne getirdiğini göreceğim.
dong

@dong Ubuntu belgelerindeki hataları bildirmek için bir kılavuz var: help.ubuntu.com/community/ReportingBugs
RobinJ

Bu bir Birlik hatası değil, bir Compiz. Oyunlar benim için compiz ile hiç iyi çalışmadı ...
user55822

Tamam, biraz geç, ama işte hata raporu: birlik hatası-998141 . Eğer bundan da etkileniyorsanız, lütfen hatayı sizi etkiliyor olarak işaretlediğinizden emin olun. Belki biraz dikkat çeker.
dong

1

Her zaman 304.22 Nvidia Beta sürücülerini güncelleyebilir ve ne olduğunu görebilirsiniz. Ubuntu 12.04 LTS ve Nvidia 295.59 sürümü ile büyük performans sorunları yaşıyordum ve 302.07 sürümü bazı küçük şeyleri düzeltiyor gibiydi. Sorunların çoğu en son 304.22 sürücüsünü güncelleyerek çözülmüştür. Şimdi GeForce performansım nihayet Windows XP'ye eşit ancak birkaç uygulamadan hala küçük sorunlar var, ancak durum gerçekten önemli ölçüde geliştirildi. BETA'da olsalar bile en son Nvidia sürücülerini her zaman kullanmalısınız çünkü daha eski kararlı olanların Nvidia'nın ekibi tarafından daha yeni Çekirdek ve Ubuntu haddeleme güncellemeleri üzerinde beklenmedik sorunlara ve sorunlara neden olmadığı test edilmiyor gibi görünüyor.

Bunları http://www.geforce.com/drivers/beta-legacy adresinden edinebilirsiniz.

304.22 sürücüleri tonlarca büyük ölçekli düzeltmeye sahiptir:

  • Aşağıdaki GPU'lar için destek eklendi:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • IncludeImplicitMetaModes Xconfiguration seçeneğinin işlevselliği artırıldı:
  • X başlatıldığında birden çok görüntü aygıtı kullanılıyor olsa bile, birincil görüntüleme aygıtı için örtülü MetaModes eklenecektir.
  • Görüntü aygıtının mod havuzunda bu çözünürlüğe sahip bir mod olmasa bile, ortak çözünürlükler için örtülü MetaModes eklenir.
  • Örneğin,
    örtük MetaModes oluşturmak için hangi görüntüleme aygıtının kullanılacağını denetlemek için IncludeImplicitMetaModes yapılandırma seçeneğinin sözdizimini genişletti.
  • Ayrıntılar için
    README içindeki IncludeImplicitMetaModes X yapılandırma seçeneğinin açıklamasına bakın .

  • RandR 1.0 / 1.1, RRGetScreenInfo ve RRSetScreenConfig (örn., `Xrandr -q --q1` ve` xrandr --size ... 've `xrandr --orientation ...`) isteklerinin işlenmesini, MetaModes. Bu, NVIDIA X sürücü sürümleri 295.xx ve önceki sürümlerdeki davranıştır, ancak 302.xx sürümleri, bu RandR 1.0 / 1.1 isteklerinin tek bir RandR çıkışının modlarında çalışması için işlenmesini değiştirmiştir.
  • IncludeImplicitMetaModes ve RandR 1.0 / 1.1 işleme için yukarıdaki değişikliklerle, tam ekran uygulamaları (örn. SDL tabanlı uygulamalar, Wine) daha fazla çözünürlüğe sahip olmalı ve birden çok monitör yapılandırmasıyla daha iyi etkileşime girmelidir.
  • Askıya alındıktan sonra G8x, G9x ve GT2xx GPU'ların siyah bir ekran göstermesine veya bozulmasına neden olabilecek bir hata düzeltildi.
  • Çatal çağrılırken bazı OpenGL programlarının askıda kalmasına neden olabilecek birkaç hata düzeltildi (3).
  • --Display-device-string seçeneğiyle yapılan ProbeDisplays sorgularının sonuçlarının yanlış biçimlendirilmesine neden olan bir nvidia ayarları hatası düzeltildi.
  • Ekranlar çalışırken takıldığında nvidia ayarları kontrol panelindeki güncellemelerin duyarlılığı geliştirildi.
  • Bazı dönüştürmeleri ayarlarken, özellikle de dönüştürülmüş bir ekranı kaydırırken ekranın bozulmasına neden olan bir hata düzeltildi.
  • Bir ekran ilk kez takıldığında ekstra RandR olaylarının oluşturulmasına neden olan bir hata düzeltildi.
  • Adlarında '@' bulunan X11 modellerinin reddedilmesine neden olan bir hata düzeltildi.
  • Grafik kartındaki tek bir DisplayPort konektörüne birden çok ekran bağlanmasına izin veren DisplayPort 1.2 şube cihazları için destek eklendi.
  • Bağlam bir RGB yer paylaşımına çekilebilir hale getirildiğinde çoğu OpenGL doku yüklemesinin yavaş olmasına neden olan bir hata düzeltildi.
  • Bazı MCP7x (IGP) GPU'larda X sunucusunu yeniden başlattıktan sonra HDMI üzerinden sesin çalışmamasına neden olan bir hata düzeltildi.
  • Herhangi bir GPU'da "none" değerini onaylamak için X yapılandırma seçeneği "UseDisplayDevice" güncellendi.
  • Nvidia-installer'da DKMS desteği eklendi. Çekirdek modülünü DKMS aracılığıyla kurmak, farklı bir Linux çekirdeğine geçerken modülün otomatik olarak yeniden oluşturulmasına olanak tanır. README ve nvidia-installer yardım metnine veya "--dkms" seçeneğine bakın.
  • RandR çıkış özellikleri _ConnectorLocation, ConnectorNumber, ConnectorType, EDID, _GUID ve SignalFormat eklendi. Bu özelliklerle ilgili ayrıntılar için README'ye bakın.
  • Base Mosaic için üç ekrana kadar tüm G80 + SLI yapılandırmalarına genişletilmiş destek.
  • Bir GPU'ya birden fazla DisplayPort monitörü takıldığında bazı monitörlerin DPMS askıya alma modundan çıkamamasına neden olan bir hata düzeltildi.
  • XVideo öznitelikleri için denetimler, nvidia ayarları kontrol panelinin "X Sunucusu XVideo Ayarları" sayfasından kaldırıldı. XVideo öznitelikleri XVideo oynatıcı uygulamalarında veya xvattr gibi yardımcı programlar aracılığıyla yapılandırılabilir.
  • XVideo adaptöründeki tüm bağlantı noktalarının renk düzeltme ayarlarını paylaşmasına neden olan bir hata düzeltildi.
  • Aşağıdaki X yapılandırma seçenekleri için destek kaldırıldı:
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh
    Benzer kontrol NVIDIA HorizSync ve VertRefresh X yapılandırma seçeneklerinde de mevcuttur. Ayrıntılar için lütfen NVIDIA sürücüsü README'ye bakın.
  • Farklı VT'lerde X sunucuları arasında geçiş yaparken NVIDIA 3D Vision Pro'nun düzgün çalışmasını engelleyen bir hata düzeltildi.
  • Bir görüntüleme aygıtına döndürme, yansıtma veya dönüştürme uygulandığında masaüstü kaydırma desteği eklendi (RandR veya MetaMode sözdizimi aracılığıyla); bu durumda kaydırma daha önce yok sayılır.

  • Ciddi yeni sürücüleri denemek gerekir, nihayet Windows neredeyse ne performans var ...

    Ben genellikle benim çalışma sistemine hala beta aşamasında olan her şeyi kullanarak sevmediğim çok fazla. Olduğu söyleniyor, en son beta sürücülerinin varsayılan hassas 12.04 tescilli nvidia sürücüleri ile yaşadığım bir sürü sorunu düzelttiğini teyit edebilirim. Her şey tersine döndü - sözde 'kararlı' sürücüler bana beta deneyimi gibiydi, güncellenen sürücüler daha da kötüydü (örneğin askıya alma durumundan uyanma yok) ve en son beta sürücüleri (304.30) kusursuz çalışıyor Irak. Bu yararlı ve ayrıntılı cevap için benden + 1'leyin! Çok teşekkür ederim!
    FuzzyQ

    304.30 sürücüleri nihayet sistemimi Windows XP ve Windows 7 Nvidia performans seviyelerine yakın bir düzeye getirdi. Hem Windows hem de Linux'ta Nvidia ile her zaman kanama kenarında kalmanız ve her zaman en iyi deneyim için sürücüleri doğrudan onlardan almanız gerekir ... sizin için

    1

    EDIT: X şimdi xscreensaver ile kilitlenebilir

    Selam! Bunu deneyin, çoğunlukla oyunlar için kullanarak harika sonuçlar elde ediyorum! Unity tarafından yönetilmeyeceğinden, harika sonuçlar da alabilirsiniz!

    Yeni bir X oturumu oluşturan ve bir komut çalıştıran veya orada çalıştırabilirsiniz bir terminal açmak bu komut dosyası oluşturduk.

    openNewX.sh

    #!/bin/bash
    
    function FUNCisX1running {
      ps -A -o command |grep -v "grep" |grep -q -x "X :1"
    }
    
    useJWM=true
    useKbd=true
    while [[ ${1:0:2} == "--" ]]; do
      if [[ "$1" == "--no-wm" ]]; then #opt SKIP WINDOW MANAGER (run pure X alone)
        useJWM=false
        shift
      elif [[ "$1" == "--no-kbd" ]]; then #opt SKIP Keyboard setup
        useKbd=false
        shift
      elif [[ "$1" == "--isRunning" ]]; then #opt check if new X :1 is already running
        if FUNCisX1running; then
          exit 0
        else
          exit 1
        fi
      elif [[ "$1" == "--help" ]]; then #opt show help info
        echo "usage: options runCommand"
    
        # this sed only cleans lines that have extended options with "--" prefixed
        sedCleanHelpLine='s"\(.*\"\)\(--.*\)\".*#opt" \2"' #helpskip
        grep "#opt" $0 |grep -v "#helpskip" |sed "$sedCleanHelpLine"
    
        exit 0
      else
        #echoc -p "invalid option $1"
        echo "PROBLEM: invalid option $1"
        $0 --help
        exit 1
      fi
    done
    #echo "going to execute: $@"
    #runCmd="$1" #this command must be simple, if need complex put on a script file and call it!
    runCmd="$@" #this command must be simple, if need complex put on a script file and call it!
    
    #if ! echoc -q -t 2 "use JWM window manager@Dy"; then
    #  useJWM=false
    #fi
    
    # run in a thread, prevents I from ctrl+c here what breaks THIS X instace and locks keyb
    if ! FUNCisX1running; then
      xterm -e "\
      echo \"INFO: hit CTRL+C to exit the other X session and close this window\";\
      echo \"INFO: running in a thread (child proccess) to prevent ctrl+c from freezing this X session and the machine!\";\
      echo \"INFO: hit ctrl+alt+f7 to get back to this X session (f7, f8 etc, may vary..)\";\
      echo ;\
      echo \"Going to execute on another X session: $runCmd\";\
      sudo X :1"&
    fi
    #sudo chvt 8 # this line to force go to X :1 terminal
    
    # wait for X to start
    while ! FUNCisX1running; do
      sleep 1
    done
    
    # run in a thread, prevents I from ctrl+c here what breaks THIS X instace and locks keyb
    if $useJWM; then
      if [[ ! -f "$HOME/.jwmrc" ]]; then
        echo '<?xml version="1.0"?><JWM><Key mask="4" key="L">exec:xscreensaver-command --lock</Key></JWM>' \
          >$HOME/.jwmrc
        #if ! jwm -p; then
        #  rm $HOME/.jwmrc
        #  echo ".jwmrc is invalid"
        #else
          echo "see http://joewing.net/programs/jwm/config.shtml#keys"
          echo "with Super+L you can lock the screen now"
        #fi
      fi
    
      jwm -display :1&
    fi
    
    kbdSetup="echo \"SKIP: kbd setup\""
    if $useKbd; then
      kbdSetup="setxkbmap -layout us"
    fi
    
    sleep 2
    
    xscreensaver -display :1&
    
    # setxkbmap is good for games that have console access!; bash is to keep console open!
    
    # nothing
    #xterm -display :1&
    
    # dead keys
    #xterm -display :1 -e "setxkbmap -layout us -variant intl; bash"&
    
    # good for games!
    xterm -display :1 -e "$kbdSetup; bash -c \"$runCmd\"; bash"&
    #xterm -display :1 -e "$kbdSetup; bash -c \"$@\"; bash"&
    

    Ayrıca şunu ekleyin: compiz yapılandırma ayarları yöneticisi -> pencere kuralları -> kapatılamayan pencereler:

    (class=XTerm) & (title=sudo X :1) & (name=xterm)
    

    Bu, o terminali kapatmanızı önler (diğer X oturumunu ve ayrıca terminali kapatmak için ctrl + c kullanın), çünkü "pencereyi" kapatırsanız mevcut X oturumunuzu dondurur!

    Alt + tam ekran sorunlarına sahip olmamanız, ayrıca Alt + TAB tam ekran sorunlarınız olmaması avantajına sahiptir; Urban Terror'dan (linux native) Wine ile oynanan oyunlara kadar herhangi bir 3D oyunu daha kararlılıkla çalıştırabilirsiniz! Quake ile Firefox gibi 3D oyunlar çalıştıran bazı tarayıcılar bile!

    Obs .: gerekli olmayan jwm paketini kurmak isteyebilirsiniz, ancak orada herhangi bir pencere yönetimi yapmanız gerekiyorsa bir fark yaratacaktır.

    PS .: Tabii ki geliştirilebilir, planım klavye kurulumunu bir seçeneğe eklemektir, ancak çok yavaş yaparım;), birisi iyileştirirse / temizlerse, benimkini güncelleyebilirim :)


    0

    Unity 3D kullanırken, birçok 3D efektiniz ve benzerleriniz etkin mi? (küp, masaüstü animasyonları, menü efektleri vb.) Bunlar iyi bir makinede bile performansı düşürebilir.

    Nvidia ayarlarınızı kontrol etmeye değer olabilir, sadece tire 'nvidia' için arama yapın ve bulacaksınız. Ben herhangi bir gecikme alamadım önce nvidia ayarlarını biraz tweak zorunda biliyorum.

    Oyun ayarlarınızı kontrol edin, biraz değiştirin ve fps'nizin ne kadar değiştiğini görün.

    Ubuntu için en son güncellemeleri aldığınızdan emin olun, bu bazen sorunları çözebilir, ancak durumunuzda yardımcı olacağını düşünmüyorum.


    Cevabın için teşekkürler. Bu kurulumdaki herhangi bir compiz ayarını değiştirmedim (yüklü ccsm bile yok), bu yüzden kurulumumla ilgili her şey yeni bir kurulumdan sonra aldığınız stok Unity 3D'dir. Küp yok, yanan pencere yok, hiçbir şey yok. Oyun içi ayarlarım hakkında: Şu anda sahip olduğum ayarlarla Ubuntu 11.10 (ve daha eski) Heroes of Newerth'de her şeyin sorunsuz çalıştığını biliyorum. Amacım bunu tekrar başarmak. Hayal ettiğiniz gibi, zaten ubuntu için en son güncellemelere sahibim (resmi depolardan; başka ppas eklenmedi).
    dong

    Nvidia ayarlarında tam olarak neyi değiştirebilirim? Performansı artırmak için neleri değiştirebileceğimi görmüyorum.
    dong

    Vsync, AA ve AF ve diğer çeşitli şeyler için ayarlar vardır, ayrıca ayar alanlarından birinin altında bir grafik performans kaydırıcısı vardır, o @dong
    nisshh
    Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
    Licensed under cc by-sa 3.0 with attribution required.