Proton adalah alat untuk digunakan dengan klien Steam yang memungkinkan permainan eksklusif untuk Windows dijalankan di sistem operasi Linux. Ia menggunakan Wine untuk memfasilitasi hal ini.
Sebagian besar pengguna harus menggunakan Proton yang disediakan oleh Steam Client itu sendiri. Lihat postingan Komunitas Steam ini untuk lebih jelasnya.
Kode sumber disediakan untuk memungkinkan pengguna tingkat lanjut kemampuan mengubah Proton. Misalnya, beberapa pengguna mungkin ingin menggunakan versi Wine yang berbeda dengan judul tertentu.
Log perubahan tersedia di wiki kami.
Dapatkan sumber Proton dengan mengkloning https://github.com/ValveSoftware/Proton dan memeriksa cabang yang Anda inginkan.
Anda dapat mengkloning Proton terbaru ke sistem Anda dengan perintah ini:
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
Pastikan untuk memperbarui submodul saat berpindah antar cabang:
git checkout experimental_6.3
git submodule update --init --recursive
Jika Anda ingin mengubah subkomponen apa pun, sekaranglah saatnya melakukannya. Misalnya, jika Anda ingin membuat perubahan pada Wine, Anda dapat menerapkannya pada direktori wine/
.
Sebagian besar Proton dibangun di dalam wadah Proton SDK dengan sedikit ketergantungan pada sisi host.
Anda memerlukan pengaturan Docker atau Podman. Kami sangat merekomendasikan pengaturan Podman tanpa root. Silakan lihat dokumentasi distribusi Anda untuk petunjuk pengaturan (misalnya Arch Podman/Docker, Debian Podman/Docker).
Kami menyediakan Makefile tingkat atas yang akan menjalankan sebagian besar perintah build untuk Anda.
Setelah memeriksa repositori dan memperbarui submodulnya, dengan asumsi Anda memiliki pengaturan Docker atau Podman yang berfungsi, Anda dapat membangun dan menginstal Proton dengan cara sederhana:
make install
Jika sistem build Anda tidak memiliki dependensi, sistem tersebut akan gagal dengan cepat dan menampilkan pesan kesalahan yang jelas.
Setelah build selesai, Anda mungkin perlu memulai ulang klien Steam untuk melihat alat Proton yang baru. Nama alat di klien Steam akan didasarkan pada cabang Proton yang saat ini diperiksa. Anda dapat mengganti nama ini menggunakan variabel build_name
.
Lihat make help
untuk target dan opsi pembangunan lainnya.
mkdir ../build && cd ../build
../proton/configure.sh --enable-ccache --build-name=my_build
Menjalankan configure.sh
akan membuat Makefile
yang memungkinkan Anda membuat Proton. Skrip memeriksa apakah container berfungsi dan menanyakan apakah ada dependensi sisi host yang hilang. Anda harus menjalankan perintah dari direktori yang dibuat khusus untuk build.gradle Anda.
Skrip konfigurasi mencoba menemukan pengaturan Docker atau Podman yang berfungsi untuk digunakan, tetapi Anda dapat memaksa mesin yang kompatibel dengan --container-engine=<executable_name>
.
Anda dapat mengaktifkan ccache dengan tanda --enable-cache
. Ini akan memasang $CCACHE_DIR
atau $HOME/.ccache
Anda di dalam wadah.
--proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version>
dapat digunakan untuk membuat gambar Proton SDK dengan versi khusus.
Periksa --help
untuk opsi konfigurasi lainnya.
CATATAN: Jika SELinux sedang digunakan, kontainer build Proton mungkin gagal mengakses file pengguna Anda. Hal ini disebabkan oleh label sistem file SELinux. Anda dapat meneruskan saklar --relabel-volumes
untuk mengonfigurasi agar mesin kontainer memberi label ulang pada pengikatannya dan mengizinkan akses ke file tersebut dari dalam kontainer. Ini bisa berbahaya bila digunakan dengan direktori sistem. Lanjutkan dengan hati-hati dan rujuk manual mesin kontainer Anda.
make
Pentingnya membuat target:
make install
- instal Proton ke direktori Steam pengguna Anda, lihat bagian instal Proton secara lokal untuk detailnya.
make redist
- membuat build distribusi ulang ( redist/
) yang dapat disalin ke ~/.steam/root/compatibilitytools.d/
.
make deploy
- membuat build penerapan ( deploy/
). Inilah yang kami gunakan untuk menyebarkan Proton ke pengguna Steam melalui Steamworks.
make module=<module> module
- membuat versi 32 dan 64-bit dari modul wine yang ditentukan. Hal ini memungkinkan iterasi cepat pada satu modul. Target ini hanya berguna setelah membangun Proton.
make dxvk
/ make vkd3d-proton
- buat kembali DXVK / vkd3d-proton.
Untuk mencegah penghapusan simbol, tambahkan UNSTRIPPED_BUILD=1
ke pemanggilan make
. Ini harus digunakan hanya dengan direktori build yang bersih.
Misalnya:
mkdir ../debug-proton-build && cd ../debug-proton-build
../proton/configure.sh --enable-ccache --build-name=debug_build
make UNSTRIPPED_BUILD=1 install
Steam dikirimkan dengan beberapa versi Proton, yang mana game akan digunakan secara default atau yang dapat Anda pilih di halaman Steam Play Pengaturan Steam. Steam juga mendukung menjalankan game dengan Proton versi lokal, yang dapat Anda instal di mesin Anda.
Untuk menginstal Proton versi lokal ke dalam Steam, buatlah direktori baru di ~/.steam/root/compatibilitytools.d/
dengan nama alat pilihan Anda dan tempatkan direktori yang berisi versi Anda yang dapat didistribusikan ulang di bawah jalur tersebut.
Target make install
akan melakukan tugas ini untuk Anda, menginstal Proton build ke dalam folder Steam untuk pengguna saat ini. Anda harus memulai ulang klien Steam agar dapat menggunakan alat baru.
Instalasi alat lokal yang benar akan terlihat seperti ini:
compatibilitytools.d/my_proton/
├── compatibilitytool.vdf
├── filelock.py
├── LICENSE
├── proton
├── proton_dist.tar
├── toolmanifest.vdf
├── user_settings.sample.py
└── version
Untuk mengaktifkan build lokal Anda di Steam, buka bagian Steam Play di jendela Pengaturan. Jika build telah diinstal dengan benar, Anda akan melihat "proton-localbuild" di daftar drop-down alat kompatibilitas.
Setiap komponen perangkat lunak ini digunakan berdasarkan ketentuan lisensinya. Lihat file LICENSE
di sini, serta file LICENSE
, COPYING
, dll di setiap submodul dan direktori untuk detailnya. Jika Anda mendistribusikan Proton versi bawaan kepada pengguna lain, Anda harus mematuhi ketentuan lisensi ini.
Simbol rakitan Proton dihilangkan secara default. Anda dapat beralih ke cabang beta "debug" di Steam (cari Proton di perpustakaan Anda, Properties... -> BETAS -> pilih "debug") atau build tanpa stripping (lihat bagian Debug Builds).
Simbol-simbol tersebut disediakan melalui file .debug
yang menyertainya yang mungkin perlu dimuat secara eksplisit oleh alat debugging. Untuk GDB ada skrip pembantu wine/tools/gdbinit.py
(sumbernya) yang menyediakan perintah load-symbol-files
(atau disingkat lsf
) yang memuat simbol untuk semua file yang dipetakan.
Untuk tips tentang debugging, lihat docs/DEBUGGING.md.
compile_commands.json
Untuk digunakan dengan server clangd LSP dan peralatan serupa.
Proyek yang dibangun menggunakan cmake atau meson (misalnya vkd3d-proton) secara otomatis dilengkapi dengan compile_commands.json
. Untuk autotools (misalnya wine) Anda harus mengkonfigurasi build dengan --enable-bear
yang menggunakan bear untuk membuat database kompilasi. Ini tidak diaktifkan secara default karena membuat pembangunan sedikit lebih lambat.
Sistem pembangunan mengumpulkan semua file kompilasi_commands.json yang dibuat dalam subdirektori pembangunan bernama compile_commands/
.
Jalur diterjemahkan untuk menunjuk ke sumber sebenarnya (yaitu bukan salinan yang disinkronkan). Ini mungkin masih bergantung pada direktori build untuk hal-hal seperti config.h
yang dibuat secara otomatis dan untuk wine mungkin bermanfaat untuk menjalankan tools/make_requests
di direktori sumber Anda karena perubahan tersebut tidak dilakukan.
Anda kemudian dapat mengonfigurasi editor Anda untuk menggunakan file tersebut untuk clangd dengan beberapa cara:
compile_commands.json
.clangd
, mis cd src/proton/wine/
cat > .clangd << EOF
CompileFlags:
CompilationDatabase: ../build/current-dev/compile_commands/wine64/
EOF
ln -s ../build/current-dev/compile_commands/wine64/compile_commands.json .
Proton dapat disetel saat runtime untuk membantu menjalankan game tertentu. Klien Steam menetapkan beberapa opsi untuk game yang dikenal menggunakan variabel STEAM_COMPAT_CONFIG
. Anda dapat mengganti opsi ini menggunakan variabel lingkungan yang dijelaskan di bawah.
Cara terbaik untuk menyetel penggantian lingkungan ini untuk semua game adalah dengan mengganti nama user_settings.sample.py
menjadi user_settings.py
dan memodifikasinya dengan tepat. File ini terletak di direktori instalasi Proton di perpustakaan Steam Anda (seringkali ~/.steam/steam/steamapps/common/Proton #.#
).
Jika Anda ingin mengubah konfigurasi runtime untuk game tertentu, Anda dapat menggunakan pengaturan Set Launch Options
di dialog Properties
game di klien Steam. Tetapkan variabel, diikuti oleh %command%
. Misalnya, masukkan " PROTON_USE_WINED3D=1 %command%
" untuk menggunakan perender wined3d berbasis OpenGL dan bukan perender DXVK berbasis Vulkan.
Untuk mengaktifkan opsi, setel variabel ke nilai selain 0
. Untuk menonaktifkan opsi, setel variabel ke 0
. Untuk menggunakan konfigurasi default Steam, jangan tentukan variabel sama sekali.
Semua di bawah ini adalah opsi runtime. Mereka tidak mempengaruhi perubahan permanen pada awalan Wine. Menghapus opsi akan mengembalikan ke perilaku sebelumnya.
String konfigurasi yang kompatibel | Variabel Lingkungan | Keterangan |
---|---|---|
PROTON_LOG | Metode praktis untuk membuang log debug yang berguna ke $PROTON_LOG_DIR/steam-$APPID.log . Setel ke 1 untuk mengaktifkan pencatatan default, atau setel ke string untuk ditambahkan ke saluran WINEDEBUG default. | |
PROTON_LOG_DIR | Keluarkan file log ke direktori yang ditentukan. Default ke direktori home Anda. | |
PROTON_WAIT_ATTACH | Tunggu hingga debugger terpasang ke steam.exe sebelum meluncurkan proses permainan. Untuk melampirkan proses permainan saat startup, debugger harus diatur untuk mengikuti proses anak. | |
PROTON_CRASH_REPORT_DIR | Tulis log kerusakan ke direktori ini. Tidak membersihkan log lama, sehingga mungkin memakan seluruh ruang disk Anda pada akhirnya. | |
wined3d | PROTON_USE_WINED3D | Gunakan wined3d berbasis OpenGL dan bukan DXVK berbasis Vulkan untuk d3d11, d3d10, dan d3d9. |
nod3d11 | PROTON_NO_D3D11 | Nonaktifkan d3d11.dll , untuk game d3d11 yang dapat digunakan kembali dan berjalan lebih baik dengan d3d9. |
nod3d10 | PROTON_NO_D3D10 | Nonaktifkan d3d10.dll dan dxgi.dll , untuk game d3d10 yang dapat digunakan kembali dan berjalan lebih baik dengan d3d9. |
dxvkd3d8 | PROTON_DXVK_D3D8 | Gunakan d3d8.dll DXVK. |
noesync | PROTON_NO_ESYNC | Jangan gunakan primitif sinkronisasi dalam proses berbasis eventfd. |
nofsync | PROTON_NO_FSYNC | Jangan gunakan primitif sinkronisasi dalam proses berbasis futex. (Dinonaktifkan secara otomatis pada sistem tanpa dukungan FUTEX_WAIT_MULTIPLE .) |
noxim | PROTON_NO_XIM | Diaktifkan secara default. Jangan mencoba menggunakan dukungan XIM (X Input Methods). Dukungan XIM diketahui menyebabkan crash pada libx11 yang lebih lama dari versi 1.7. |
disablenvapi | PROTON_DISABLE_NVAPI | Nonaktifkan pustaka dukungan GPU NVAPI NVIDIA. |
nativevulkanloader | Gunakan pemuat Vulkan yang dikirimkan bersama game, bukan pemuat Vulkan bawaan Proton. Ini merusak dukungan VR, tetapi diperlukan oleh beberapa game. | |
forcelgadd | PROTON_FORCE_LARGE_ADDRESS_AWARE | Paksa Wine untuk mengaktifkan tanda LARGE_ADDRESS_AWARE untuk semua executable. Diaktifkan secara default. |
heapdelayfree | PROTON_HEAP_DELAY_FREE | Penundaan mengosongkan sebagian memori, untuk mengatasi bug penggunaan aplikasi setelah bebas. |
gamedrive | PROTON_SET_GAME_DRIVE | Buat drive S: yang menunjuk ke Steam Library yang berisi game tersebut. |
noforcelgadd | Nonaktifkan forcegadd. Jika this dan forcelgadd disetel, diaktifkan menang. | |
oldglstr | PROTON_OLD_GL_STRING | Tetapkan beberapa penggantian driver untuk membatasi panjang string ekstensi GL, untuk game lama yang mogok pada string ekstensi yang sangat panjang. |
vkd3dfl12 | Paksa level fitur Direct3D 12 ke 12, apa pun dukungan drivernya. | |
vkd3dbindlesstb | Masukkan force_bindless_texel_buffer ke dalam VKD3D_CONFIG . | |
nomfdxgiman | WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER | Aktifkan peretasan untuk mengatasi masalah video di beberapa game karena dukungan IMFDXGIDeviceManager yang tidak lengkap. |
noopwr | WINE_DISABLE_VULKAN_OPWR | Aktifkan peretasan untuk menonaktifkan rendering jendela proses Vulkan lainnya yang terkadang menyebabkan masalah di Wayland karena blit tertinggal satu frame. |
hidenvgpu | PROTON_HIDE_NVIDIA_GPU | Paksa GPU Nvidia untuk selalu dilaporkan sebagai GPU AMD. Beberapa game memerlukan ini jika bergantung pada fungsionalitas driver Nvidia khusus Windows. Lihat juga konfigurasi nvapiHack DXVK, yang hanya memengaruhi pelaporan dari Direct3D. |
WINE_FULLSCREEN_INTEGER_SCALING | Aktifkan mode penskalaan bilangan bulat, untuk menghasilkan piksel yang tajam saat melakukan peningkatan. | |
cmdlineappend: | Tambahkan string setelah titik dua sebagai argumen pada perintah game. Dapat ditentukan lebih dari satu kali. Hindari koma dan garis miring terbalik dengan garis miring terbalik. | |
xalia | PROTON_USE_XALIA | Aktifkan Xalia, sebuah program yang dapat menambahkan UI gamepad untuk beberapa antarmuka keyboard/mouse. |
seccomp | PROTON_USE_SECCOMP | Catatan: Usang di Proton 5.13. Di versi yang lebih lama, aktifkan filter seccomp-bpf untuk meniru panggilan sistem asli, yang diperlukan agar beberapa perlindungan DRM berfungsi. |
d9vk | PROTON_USE_D9VK | Catatan: Usang di Proton 5.0. Di versi yang lebih lama, gunakan DXVK berbasis Vulkan, bukan wined3d berbasis OpenGL untuk d3d9. |