Apa yang harus dilakukan terhadap penurunan kinerja game di 12,04 saat menggunakan unity (3D)?

9

Saya mengalami penurunan performa permainan yang luar biasa sejak saya menginstal Ubuntu 12,04

PC saya terdiri dari Nvidia Geforce GTX 460, CPU AMD Phenom II X4 965 dan 4GB RAM dan saya menggunakan driver khusus nvidia.

Saya terutama memainkan Heroes of Newerth dengan menggunakan klien linux mereka. Saya melakukan ini sejak ubuntu 9.10 dan saya tidak pernah mengalami masalah kinerja ketika menggunakan driver nvidia. Fps saya selalu dimaksimalkan ke bingkai tutup vsync 60.

Sejak saya menjalankan ubuntu 12.04 saya mendapatkan sekitar 30-45 fps dan pengalaman game pada umumnya sangat lamban. Saya tahu bahwa ada banyak orang yang mengalami masalah dengan driver nvidias 295.40, yang sayangnya diinstal secara default di ubuntu 12.04. Jadi saya secara manual menginstal stabil terbaru 295.49, beta terbaru 302.07 dan bahkan versi yang lebih lama 295.33 digunakan di ubuntu 11.10 (di mana saya tidak pernah punya masalah dengan kinerja). Itu buang-buang waktu karena saya mengalami masalah kinerja yang sama dengan semua 4 versi driver.

Ketika saya menggunakan Unity 2D, fps saya kembali ke 60 dan kinerja game secara keseluruhan bagus. Jadi saya hanya punya masalah ketika menjalankan Unity versi ubuntu 12.04.

Saya juga mencoba menghapus folder .config dan .compiz-1 saya di direktori home tetapi kinerja game masih berantakan ketika menggunakan unity.

Saya tidak tahu harus mencoba apa selanjutnya ... Adakah yang tahu bagaimana saya bisa men-debug masalah lebih lanjut? Mungkin bagaimana saya bisa menyediakan lebih banyak data untuk menganalisis masalah dengan lebih baik? Mungkin mencoba mengutak-atik beberapa pengaturan compiz?

Regresi kinerja ini benar-benar membuat frustrasi dan saya berpikir untuk mengunduh klien Windows Heroes of Newerth dan kembali ke dual boot karena ini tidak dapat diterima.

Setiap bantuan dihargai.

dong
sumber

Jawaban:

3

Ini bukan solusi nyata, tapi setidaknya itu mungkin (mudah-mudahan) solusi yang berguna (selain hanya menggunakan Unity 2D).

Sebelum Anda memulai permainan, buka Nautilus (pengelola file) dan buka /usr/share/application. Buka terminal, ketik metacity --replace, dan tekan enter. Jangan panik, antarmuka Unity akan hilang, tapi ini maksud saya. Luncurkan game dari manajer file (peluncur untuk game harus ada di folder yang saya sebutkan). Setelah Anda selesai bermain game, ketikkan unity --replacejendela terminal, dan tekan enter. Desktop Anda sekarang dikembalikan seperti semula.
Ini harusnya berfungsi karena mungkin Unity berjalan di latar belakang yang menyebabkan masalah.

Saya juga akan melaporkan ini sebagai bug. Pasti sesuatu yang perlu diperbaiki. Jika Anda mengirim laporan bug, pastikan untuk meninggalkan tautan di sini sehingga orang lain yang mengalami masalah ini dapat menandainya sebagai "mempengaruhi mereka", yang akan memperbaikinya lebih cepat.

RobinJ
sumber
Terimakasih atas balasan anda. Saya akan mencoba solusi ini dan melaporkan kembali. Tentu itu tidak cantik tapi setidaknya lebih baik daripada keluar dan kembali dengan kesatuan 2d sepanjang waktu ... Bisakah Anda membantu saya melaporkan bug? Tautan ke sumber daya atau sesuatu yang menjelaskan prosesnya akan sangat membantu. Terima kasih.
dong
Terima kasih RobinJ atas solusinya. Ini bekerja sangat baik dan lebih baik daripada logout dan kembali dengan unity 2d karena saya bisa menjaga sesi saya. Saya membuka folder dengan peluncur game, membuka terminal, mengetik metacity --replace &memulai permainan dan memiliki kinerja luar biasa yang saya harapkan. Ketika saya selesai saya mengetik unity --replacedan semuanya kembali normal. Sekarang saya akan mengajukan bug terhadap persatuan dan melihat apa yang terjadi.
dong
@dong Ada panduan untuk melaporkan bug dalam dokumentasi Ubuntu: help.ubuntu.com/community/ReportingBugs
RobinJ
Ini bukan bug Persatuan, tetapi Compiz. Game tidak pernah berjalan baik dengan compiz untuk saya ...
user55822
Baiklah, sedikit terlambat, tapi ini laporan bugnya : unity bug-998141 . Pastikan untuk menandai bug sebagai yang memengaruhi Anda, jika Anda juga terpengaruh oleh ini. Mungkin itu mendapat perhatian.
dong
1

Anda selalu dapat memperbarui ke driver Nvidia Beta 304.22 dan melihat apa yang terjadi. Saya mengalami masalah kinerja yang sangat besar dengan Ubuntu 12.04 LTS dan versi Nvidia 295.59 & versi 302.07 sepertinya memperbaiki beberapa hal kecil. Sebagian besar masalah telah diatasi dengan memperbarui driver 304.22 terbaru. Sekarang kinerja GeForce saya akhirnya sama dengan Windows XP tetapi masih ada masalah kecil dari beberapa aplikasi tetapi situasinya benar-benar membaik secara signifikan. Anda harus menggunakan driver Nvidia terbaru setiap saat, bahkan jika mereka berada di BETA karena tampaknya yang lebih tua yang stabil tidak diuji oleh tim Nvidia pada pembaruan bergulir Kernel dan Ubuntu yang lebih baru yang menyebabkan masalah dan masalah yang tidak terduga.

Anda dapat memperolehnya http://www.geforce.com/drivers/beta-legacy

Driver 304.22 memiliki banyak perbaikan skala besar seperti:

  • Dukungan tambahan untuk GPU berikut:
    • GeForce GTX 680M
      Quadro K1000M
      Quadro K2000M
  • Peningkatan fungsionalitas opsi konfigurasi IncludeImplicitMetaModes:
  • MetaModes implisit akan ditambahkan untuk perangkat layar utama, bahkan jika beberapa perangkat layar digunakan ketika X diinisialisasi.
  • MetaModes implisit akan ditambahkan untuk resolusi umum, bahkan jika tidak ada mode dengan resolusi itu di kumpulan mode perangkat tampilan.
  • Diperpanjang sintaks dari opsi konfigurasi IncludeImplicitMetaModes, misalnya, untuk mengontrol perangkat tampilan mana yang
    digunakan untuk pembuatan MetaModes implisit.
  • Lihat deskripsi
    opsi konfigurasi IncludeImplicitMetaModes X di README untuk detailnya.

  • Modifikasi penanganan RandR 1.0 / 1.1 meminta RRGetScreenInfo dan RRSetScreenConfig (misalnya, `xrandr -q --q1` dan` xrandr --ukuran ... `dan` xrandr --orientation ... `) sedemikian rupa sehingga mereka beroperasi pada MetaModes. Ini adalah perilaku dalam driver NVIDIA X versi 295.xx dan sebelumnya, tetapi rilis 302.xx mengubah penanganan permintaan RandR 1.0 / 1.1 ini untuk beroperasi pada mode output RandR tunggal.
  • Dengan perubahan di atas untuk penanganan IncludeImplicitMetaModes dan RandR 1.0 / 1.1, aplikasi layar penuh (misalnya, aplikasi berbasis SDL, Wine), harus memiliki lebih banyak resolusi yang tersedia untuk mereka, dan harus berinteraksi lebih baik dengan konfigurasi beberapa monitor.
  • Memperbaiki bug yang dapat menyebabkan GPU G8x, G9x, dan GT2xx untuk menampilkan layar hitam atau korupsi setelah bangun dari penundaan.
  • Memperbaiki beberapa bug yang dapat menyebabkan beberapa program OpenGL hang saat memanggil fork (3).
  • Memperbaiki bug pengaturan-nvidia yang menyebabkan hasil kueri ProbeDisplays yang dibuat dengan opsi --display-device-string diformat secara tidak benar.
  • Peningkatan responsifitas pembaruan ke panel kontrol pengaturan-nvidia saat layar dicolokkan.
  • Memperbaiki bug yang menyebabkan tampilan rusak ketika mengatur beberapa transformasi, terutama saat menggeser tampilan yang diubah.
  • Memperbaiki bug yang menyebabkan peristiwa RandR tambahan dihasilkan saat pertama kali layar dicolokkan.
  • Memperbaiki bug yang menyebabkan pemodelan X11 dengan '@' di namanya ditolak.
  • Dukungan tambahan untuk perangkat cabang DisplayPort 1.2, yang memungkinkan beberapa monitor dihubungkan ke satu konektor DisplayPort pada papan grafis.
  • Memperbaiki bug yang menyebabkan sebagian besar pengunggahan tekstur OpenGL menjadi lambat ketika konteksnya terikat membuat tampilan overlay RGB dapat ditarik.
  • Memperbaiki bug yang menyebabkan audio melalui HDMI tidak berfungsi setelah memulai ulang server X pada beberapa GPU MCP7x (IGP).
  • Memperbarui opsi konfigurasi X "UseDisplayDevice" untuk menghormati nilai "tidak ada" pada GPU apa pun.
  • Menambahkan dukungan untuk DKMS di nvidia-installer. Menginstal modul kernel melalui DKMS memungkinkan modul dibangun kembali secara otomatis ketika mengubah ke kernel Linux yang berbeda. Lihat README dan teks bantuan installer-nvidia atau opsi "--dkms".
  • Menambahkan properti keluaran RandR _ConnectorLocation, ConnectorNumber, ConnectorType, EDID, _GUID, dan SignalFormat. Lihat README untuk detail tentang properti ini.
  • Dukungan tambahan untuk Base Mosaic ke semua konfigurasi G80 + SLI dengan hingga tiga monitor.
  • Memperbaiki bug yang menyebabkan beberapa monitor gagal membangunkan dari mode penundaan DPMS ketika beberapa monitor DisplayPort dilampirkan ke satu GPU.
  • Kontrol yang dihapus untuk atribut XVideo dari halaman "X Server XVideo Settings" pada panel kontrol nvidia-settings. Atribut XVideo dapat dikonfigurasi dalam aplikasi pemutar XVideo, atau melalui utilitas seperti xvattr.
  • Memperbaiki bug yang menyebabkan semua port pada adaptor XVideo berbagi pengaturan koreksi warna.
  • Dukungan yang dihapus untuk opsi konfigurasi X berikut:
    • SecondMonitorHorizSync
      SecondMonitorVertRefresh
    Kontrol serupa tersedia melalui opsi konfigurasi NVIDIA HorizSync dan VertRefresh X. Silakan lihat driver NVIDIA README untuk detailnya.
  • Memperbaiki bug yang mencegah NVIDIA 3D Vision Pro dari bekerja dengan baik ketika beralih antara server X pada VT yang berbeda.
  • Dukungan tambahan untuk panning desktop ketika rotasi, refleksi, atau transformasi diterapkan ke perangkat tampilan (baik melalui RandR atau melalui sintaks MetaMode); panning sebelumnya akan diabaikan dalam kasus itu.

  • sumber
    Serius Anda harus mencoba driver baru, akhirnya mendapatkan kinerja hampir seperti di Windows ...
    Saya biasanya tidak suka menggunakan apa pun yang masih dalam tahap beta pada sistem kerja saya sangat banyak. Yang sedang berkata, saya dapat menegaskan bahwa driver beta terbaru memperbaiki cukup banyak masalah yang saya alami dengan driver nvidia eksklusif 12,04 yang tepat. Ini seperti semuanya berbalik - driver yang disebut 'stable' seperti pengalaman beta bagi saya, driver yang diperbarui bahkan lebih buruk (misalnya tidak ada bangun dari penundaan) dan driver beta terbaru (304,30) bekerja dengan sempurna sehingga jauh. +1 dari saya untuk jawaban yang bermanfaat dan rumit ini! Terima kasih banyak!
    FuzzyQ
    Driver 304.30 akhirnya menempatkan sistem saya pada paritas dekat dekat dengan tingkat kinerja Windows XP dan Windows 7 Nvidia. Dengan Nvidia di Windows dan Linux, Anda harus tetap berada di ujung pendarahan sepanjang waktu sepertinya dan selalu mendapatkan driver langsung dari mereka untuk pengalaman terbaik ... senang itu memperbaikinya untuk Anda ...
    1

    EDIT: X sekarang dapat dikunci melalui xscreensaver

    Hai! coba ini, saya mendapatkan hasil yang bagus menggunakannya, kebanyakan untuk game! Karena tidak akan dikelola oleh Unity, Anda mungkin memiliki hasil yang bagus juga!

    Saya telah membuat skrip ini yang membuat sesi X baru dan menjalankan perintah atau membuka terminal sehingga Anda dapat menjalankannya di sana.

    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"&
    

    juga, tambahkan ini di: compiz config settings manager -> aturan jendela -> jendela yang tidak dapat ditutup:

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

    Ini akan mencegah Anda menutup terminal itu (gunakan ctrl + c untuk menutup sesi X lainnya dan juga terminal), karena jika Anda menutup "jendela" itu akan membekukan sesi X Anda saat ini!

    Ini memiliki keuntungan bahwa Anda tidak memiliki alt + masukkan masalah layar penuh, juga tidak ada Alt + TAB masalah layar penuh; Anda dapat menjalankan dengan lebih stabil game 3D apa saja, dari Urban Terror (asli linux) hingga game yang dijalankan dengan Wine! Bahkan beberapa browser yang menjalankan game 3D seperti Firefox dengan Quake!

    Obs .: Anda mungkin ingin menginstal paket jwm, tidak diperlukan tetapi akan membuat perbedaan jika Anda perlu melakukan manajemen jendela di sana ..

    PS: itu bisa diperbaiki tentu saja, rencana saya adalah menambahkan pengaturan keyboard ke opsi, tapi saya melakukannya dengan sangat lambat;), jika seseorang memperbaiki / membersihkannya, poskan sehingga saya dapat memperbarui skrip tambang :)

    Aquarius Power
    sumber
    0

    Saat menggunakan Unity 3D, apakah Anda memiliki banyak efek 3D dan sejenisnya yang diaktifkan? (kubus, animasi desktop, efek menu, dll) Ini dapat mengurangi kinerja, bahkan pada mesin yang bagus.

    Mungkin perlu memeriksa pengaturan nvidia Anda, cukup cari 'nvidia' di dasbor dan Anda akan menemukannya. Saya tahu saya harus sedikit men-tweak pengaturan nvidia sebelum saya tidak mendapatkan lag.

    Periksa pengaturan permainan Anda, ubah sedikit, dan lihat seberapa banyak perubahan fps Anda.

    Pastikan untuk mengambil pembaruan terbaru untuk Ubuntu, ini kadang-kadang dapat memecahkan masalah, meskipun dalam kasus Anda, saya tidak berharap itu akan membantu.

    nisshh
    sumber
    Terimakasih atas balasan anda. Saya tidak mengubah pengaturan compiz pada instalasi ini (saya bahkan belum menginstal ccsm) sehingga segala sesuatu tentang setup saya adalah stock Unity 3D yang Anda dapatkan setelah instalasi baru. Tidak ada batu, tidak ada jendela yang terbakar, tidak ada. Tentang pengaturan ingame saya: Saya tahu bahwa semuanya berjalan lancar di Ubuntu 11.10 (dan lebih lama) di Heroes of Newerth dengan pengaturan yang persis sama dengan yang saya miliki sekarang. Tujuan saya adalah mencapai ini lagi. Seperti yang Anda bayangkan, saya sudah menginstal semua pembaruan terbaru untuk ubuntu (dari repositori resmi; tidak ada ppas lain yang ditambahkan).
    dong
    Apa sebenarnya yang bisa saya ubah dalam pengaturan nvidia? Saya tidak melihat apa yang bisa saya ubah untuk meningkatkan kinerja.
    dong
    Ada pengaturan untuk vsync, AA dan AF dan berbagai hal lainnya, ada juga slider kinerja grafis di bawah salah satu area pengaturan, mungkin patut dilihat pada @dong
    nisshh