Proton هي أداة للاستخدام مع عميل Steam والتي تسمح بتشغيل الألعاب الحصرية لنظام التشغيل Windows على نظام التشغيل Linux. ويستخدم النبيذ لتسهيل ذلك.
يجب على معظم المستخدمين استخدام Proton الذي يوفره عميل Steam نفسه. راجع منشور مجتمع Steam هذا لمزيد من التفاصيل.
يتم توفير الكود المصدري لتمكين المستخدمين المتقدمين من القدرة على تغيير بروتون. على سبيل المثال، قد يرغب بعض المستخدمين في استخدام إصدار مختلف من Wine بعنوان معين.
سجل التغيير متاح على الويكي الخاص بنا.
احصل على مصدر Proton عن طريق استنساخ https://github.com/ValveSoftware/Proton والتحقق من الفرع الذي تريده.
يمكنك استنساخ أحدث إصدار من Proton لنظامك باستخدام هذا الأمر:
git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
تأكد من تحديث الوحدات الفرعية عند التبديل بين الفروع:
git checkout experimental_6.3
git submodule update --init --recursive
إذا كنت تريد تغيير أي مكون فرعي، فهذا هو الوقت المناسب للقيام بذلك. على سبيل المثال، إذا كنت ترغب في إجراء تغييرات على Wine، فيمكنك تطبيقها على الدليل wine/
.
يتم إنشاء معظم Proton داخل حاوية Proton SDK مع عدد قليل جدًا من التبعيات على الجانب المضيف.
أنت بحاجة إما إلى إعداد Docker أو Podman. نحن نوصي بشدة بإعداد Podman بدون جذور. يرجى الرجوع إلى وثائق التوزيعة الخاصة بك للحصول على تعليمات الإعداد (مثل Arch Podman / Docker، وDebian Podman / Docker).
نحن نقدم ملف Makefile عالي المستوى والذي سينفذ معظم أوامر الإنشاء نيابةً عنك.
بعد التحقق من المستودع وتحديث وحداته الفرعية، بافتراض أن لديك إعداد Docker أو Podman فعال، يمكنك إنشاء Proton وتثبيته من خلال إجراء بسيط:
make install
إذا كان نظام البناء الخاص بك يفتقد التبعيات، فسوف يفشل بسرعة مع ظهور رسالة خطأ واضحة.
بعد انتهاء الإنشاء، قد تحتاج إلى إعادة تشغيل عميل Steam لرؤية أداة Proton الجديدة. سيعتمد اسم الأداة في عميل Steam على فرع Proton الذي تم التحقق منه حاليًا. يمكنك تجاوز هذا الاسم باستخدام المتغير build_name
.
راجع make help
لأهداف وخيارات البناء الأخرى.
mkdir ../build && cd ../build
../proton/configure.sh --enable-ccache --build-name=my_build
سيؤدي تشغيل configure.sh
إلى إنشاء Makefile
يسمح لك ببناء Proton. تتحقق البرامج النصية مما إذا كانت الحاويات تعمل وتطالبك في حالة فقدان أي تبعيات من جانب المضيف. يجب عليك تشغيل الأمر من دليل تم إنشاؤه خصيصًا للبناء الخاص بك.
يحاول البرنامج النصي للتكوين اكتشاف إعداد Docker أو Podman صالح للاستخدام، ولكن يمكنك فرض محرك متوافق باستخدام --container-engine=<executable_name>
.
يمكنك تمكين ccache باستخدام علامة --enable-cache
. سيؤدي هذا إلى تحميل $CCACHE_DIR
أو $HOME/.ccache
داخل الحاوية.
--proton-sdk-image=registry.gitlab.steamos.cloud/proton/soldier/sdk:<version>
للإنشاء باستخدام إصدار مخصص من صور Proton SDK.
تحقق من --help
لخيارات التكوين الأخرى.
ملاحظة: إذا كان SELinux قيد الاستخدام، فقد تفشل حاوية بناء Proton في الوصول إلى ملفات المستخدم الخاص بك. يحدث هذا بسبب تسميات نظام ملفات SELinux. يمكنك تمرير مفتاح التبديل --relabel-volumes
للتهيئة ليجعل محرك الحاوية يعيد تسمية حوامل الربط الخاصة به ويسمح بالوصول إلى تلك الملفات من داخل الحاوية. قد يكون هذا خطيرًا عند استخدامه مع أدلة النظام. تابع بحذر وارجع إلى دليل محرك الحاوية الخاص بك.
make
أهداف مهمة:
make install
- قم بتثبيت Proton في دليل Steam الخاص بالمستخدم، راجع قسم تثبيت Proton محليًا للحصول على التفاصيل.
make redist
- قم بإنشاء بنية إعادة التوزيع ( redist/
) التي يمكن نسخها إلى ~/.steam/root/compatibilitytools.d/
.
make deploy
- إنشاء بناء نشر ( deploy/
). هذا هو ما نستخدمه لنشر Proton لمستخدمي Steam عبر Steamworks.
make module=<module> module
- قم ببناء الإصدارين 32 و64 بت من وحدة النبيذ المحددة. وهذا يسمح بالتكرار السريع على وحدة واحدة. هذا الهدف مفيد فقط بعد بناء البروتون.
make dxvk
/ make vkd3d-proton
- أعد بناء DXVK / vkd3d-proton.
لمنع تجريد الرمز، أضف UNSTRIPPED_BUILD=1
إلى استدعاء make
. يجب استخدام هذا فقط مع دليل البناء النظيف.
على سبيل المثال:
mkdir ../debug-proton-build && cd ../debug-proton-build
../proton/configure.sh --enable-ccache --build-name=debug_build
make UNSTRIPPED_BUILD=1 install
يأتي Steam مزودًا بإصدارات متعددة من Proton، والتي ستستخدمها الألعاب افتراضيًا أو التي يمكنك تحديدها في صفحة Steam Play الخاصة بإعدادات Steam. يدعم Steam أيضًا تشغيل الألعاب ذات الإصدارات المحلية من Proton، والتي يمكنك تثبيتها على جهازك.
لتثبيت إصدار محلي من Proton في Steam، أنشئ دليلًا جديدًا في ~/.steam/root/compatibilitytools.d/
باسم أداة من اختيارك ثم ضع الدليل الذي يحتوي على بنيتك القابلة لإعادة التوزيع تحت هذا المسار.
سيقوم هدف make install
بتنفيذ هذه المهمة نيابةً عنك، حيث يقوم بتثبيت إصدار Proton في مجلد Steam للمستخدم الحالي. سيتعين عليك إعادة تشغيل عميل Steam حتى يتمكن من استخدام أداة جديدة.
يجب أن يبدو التثبيت المحلي الصحيح للأداة مشابهًا لما يلي:
compatibilitytools.d/my_proton/
├── compatibilitytool.vdf
├── filelock.py
├── LICENSE
├── proton
├── proton_dist.tar
├── toolmanifest.vdf
├── user_settings.sample.py
└── version
لتمكين الإصدار المحلي الخاص بك في Steam، انتقل إلى قسم Steam Play في نافذة الإعدادات. إذا تم تثبيت الإصدار بشكل صحيح، فيجب أن تشاهد "proton-localbuild" في القائمة المنسدلة لأدوات التوافق.
يتم استخدام كل مكون من مكونات هذا البرنامج بموجب شروط التراخيص الخاصة به. راجع ملفات LICENSE
هنا، بالإضافة إلى ملفات LICENSE
و COPYING
وما إلى ذلك في كل وحدة فرعية ودليل للحصول على التفاصيل. إذا قمت بتوزيع إصدار مدمج من Proton على مستخدمين آخرين، فيجب عليك الالتزام بشروط هذه التراخيص.
يتم تجريد رموز تصميمات البروتون افتراضيًا. يمكنك التبديل إلى فرع الإصدار التجريبي "تصحيح الأخطاء" في Steam (ابحث عن Proton في مكتبتك، خصائص... -> BETAS -> حدد "تصحيح") أو البناء بدون تجريد (راجع قسم Debug Builds).
يتم توفير الرموز من خلال ملفات .debug
المصاحبة والتي قد تحتاج إلى تحميلها بشكل صريح بواسطة أدوات تصحيح الأخطاء. بالنسبة إلى GDB، يوجد برنامج نصي مساعد wine/tools/gdbinit.py
(مصدره) يوفر أمر load-symbol-files
(أو lsf
للاختصار) الذي يقوم بتحميل الرموز لجميع الملفات المعينة.
للحصول على نصائح حول تصحيح الأخطاء، راجع docs/DEBUGGING.md.
compile_commands.json
للاستخدام مع خادم clangd LSP والأدوات المشابهة.
المشاريع التي تم إنشاؤها باستخدام cmake أو meson (على سبيل المثال vkd3d-proton) تأتي تلقائيًا مع compile_commands.json
. بالنسبة للأدوات التلقائية (مثل النبيذ) يجب عليك تكوين البنية باستخدام --enable-bear
الذي يستخدم Bear لإنشاء قاعدة بيانات الترجمة. لا يتم تشغيله بشكل افتراضي لأنه يجعل عملية الإنشاء أبطأ قليلاً.
يقوم نظام البناء بتجميع كافة ملفات Compilt_commands.json التي تم إنشاؤها في دليل بناء فرعي يسمى compile_commands/
.
تتم ترجمة المسارات للإشارة إلى المصدر الحقيقي (أي ليس النسخة المتزامنة). لا يزال من الممكن أن يعتمد على دليل البناء لأشياء مثل config.h
الذي تم إنشاؤه تلقائيًا، وبالنسبة للنبيذ، قد يكون من المفيد تشغيل tools/make_requests
في أدلة المصدر الخاصة بك لأن هذه التغييرات غير ملتزم بها.
يمكنك بعد ذلك تكوين المحرر الخاص بك لاستخدام هذا الملف لـ clangd بعدة طرق:
compile_commands.json
.clangd
، على سبيل المثال 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 في وقت التشغيل للمساعدة في تشغيل ألعاب معينة. يقوم عميل Steam بتعيين بعض الخيارات للألعاب المعروفة باستخدام المتغير STEAM_COMPAT_CONFIG
. يمكنك تجاوز هذه الخيارات باستخدام متغيرات البيئة الموضحة أدناه.
أفضل طريقة لتعيين تجاوزات البيئة هذه لجميع الألعاب هي إعادة تسمية user_settings.sample.py
إلى user_settings.py
وتعديله بشكل مناسب. يوجد هذا الملف في دليل تثبيت Proton في مكتبة Steam الخاصة بك (غالبًا ~/.steam/steam/steamapps/common/Proton #.#
).
إذا كنت تريد تغيير تكوين وقت التشغيل للعبة معينة، فيمكنك استخدام إعداد Set Launch Options
في مربع حوار Properties
اللعبة في عميل Steam. قم بتعيين المتغير متبوعًا بـ %command%
. على سبيل المثال، أدخل " PROTON_USE_WINED3D=1 %command%
" لاستخدام عارض wine3d المستند إلى OpenGL بدلاً من عارض DXVK المستند إلى Vulkan.
لتمكين أحد الخيارات، قم بتعيين المتغير إلى قيمة غير 0
. لتعطيل أحد الخيارات، قم بتعيين المتغير إلى 0
. لاستخدام التكوين الافتراضي لـ Steam، لا تحدد المتغير على الإطلاق.
كل ما يلي هو خيارات وقت التشغيل. ولا تؤثر على تغييرات دائمة على بادئة Wine. ستؤدي إزالة الخيار إلى العودة إلى السلوك السابق.
سلسلة التكوين المتوافقة | متغير البيئة | وصف |
---|---|---|
PROTON_LOG | طريقة ملائمة لتفريغ سجل تصحيح مفيد إلى $PROTON_LOG_DIR/steam-$APPID.log . اضبط على 1 لتمكين التسجيل الافتراضي، أو اضبط على سلسلة ليتم إلحاقها بقنوات WINEDEBUG الافتراضية. | |
PROTON_LOG_DIR | ملفات سجل الإخراج إلى الدليل المحدد. الإعدادات الافتراضية إلى الدليل الرئيسي الخاص بك. | |
PROTON_WAIT_ATTACH | انتظر حتى يتم إرفاق مصحح الأخطاء بـ steam.exe قبل بدء عملية اللعبة. لإرفاق عملية اللعبة عند بدء التشغيل، يجب ضبط مصححات الأخطاء لمتابعة العمليات الفرعية. | |
PROTON_CRASH_REPORT_DIR | اكتب سجلات الأعطال في هذا الدليل. لا يقوم بتنظيف السجلات القديمة، لذلك قد يستهلك كل مساحة القرص لديك في النهاية. | |
wined3d | PROTON_USE_WINED3D | استخدم wine3d المستند إلى OpenGL بدلاً من DXVK المستند إلى Vulkan لـ d3d11 وd3d10 وd3d9. |
nod3d11 | PROTON_NO_D3D11 | قم بتعطيل d3d11.dll لألعاب d3d11 التي يمكن الرجوع إليها وتشغيلها بشكل أفضل باستخدام d3d9. |
nod3d10 | PROTON_NO_D3D10 | قم بتعطيل d3d10.dll و dxgi.dll لألعاب d3d10 التي يمكن الرجوع إليها وتشغيلها بشكل أفضل باستخدام d3d9. |
dxvkd3d8 | PROTON_DXVK_D3D8 | استخدم d3d8.dll الخاص بـ DXVK. |
noesync | PROTON_NO_ESYNC | لا تستخدم أساسيات المزامنة قيد التشغيل المستندة إلى eventsfd. |
nofsync | PROTON_NO_FSYNC | لا تستخدم أساسيات المزامنة أثناء العملية المستندة إلى futex. (يتم تعطيله تلقائيًا على الأنظمة التي لا تحتوي على دعم FUTEX_WAIT_MULTIPLE .) |
noxim | PROTON_NO_XIM | ممكّن افتراضيًا. لا تحاول استخدام دعم XIM (أساليب الإدخال X). من المعروف أن دعم XIM يتسبب في حدوث أعطال مع libx11 الأقدم من الإصدار 1.7. |
disablenvapi | PROTON_DISABLE_NVAPI | قم بتعطيل مكتبة دعم NVAPI GPU الخاصة بـ NVIDIA. |
nativevulkanloader | استخدم محمل Vulkan الذي تم شحنه مع اللعبة بدلاً من محمل Vulkan المدمج في Proton. يؤدي هذا إلى كسر دعم الواقع الافتراضي، ولكنه مطلوب في بعض الألعاب. | |
forcelgadd | PROTON_FORCE_LARGE_ADDRESS_AWARE | فرض Wine لتمكين علامة LARGE_ADDRESS_AWARE لجميع الملفات التنفيذية. ممكّن افتراضيًا. |
heapdelayfree | PROTON_HEAP_DELAY_FREE | تأخير تحرير بعض الذاكرة، للتغلب على أخطاء التطبيق بعد الاستخدام المجاني. |
gamedrive | PROTON_SET_GAME_DRIVE | قم بإنشاء محرك أقراص S: الذي يشير إلى مكتبة Steam التي تحتوي على اللعبة. |
noforcelgadd | تعطيل القوة. إذا تم تعيين كل من هذا و forcelgadd ، يفوز التمكين. | |
oldglstr | PROTON_OLD_GL_STRING | قم بتعيين بعض تجاوزات برنامج التشغيل للحد من طول سلسلة امتداد GL، للألعاب القديمة التي تتعطل عند سلاسل امتداد طويلة جدًا. |
vkd3dfl12 | فرض مستوى ميزة Direct3D 12 على 12، بغض النظر عن دعم برنامج التشغيل. | |
vkd3dbindlesstb | ضع force_bindless_texel_buffer في VKD3D_CONFIG . | |
nomfdxgiman | WINE_DO_NOT_CREATE_DXGI_DEVICE_MANAGER | قم بتمكين الاختراق للتغلب على مشكلات الفيديو في بعض الألعاب بسبب عدم اكتمال دعم IMFDXGIDeviceManager. |
noopwr | WINE_DISABLE_VULKAN_OPWR | قم بتمكين الاختراق لتعطيل عرض نافذة العملية الأخرى لـ Vulkan والذي يتسبب أحيانًا في حدوث مشكلات في Wayland نظرًا لوجود إطار واحد خلفها. |
hidenvgpu | PROTON_HIDE_NVIDIA_GPU | إجبار وحدات معالجة الرسومات Nvidia على أن يتم الإبلاغ عنها دائمًا على أنها وحدات معالجة رسومات AMD. تتطلب بعض الألعاب ذلك إذا كانت تعتمد على وظيفة برنامج تشغيل Nvidia لنظام التشغيل Windows فقط. راجع أيضًا تكوين nvapiHack الخاص بـ DXVK، والذي يؤثر فقط على التقارير من Direct3D. |
WINE_FULLSCREEN_INTEGER_SCALING | تمكين وضع القياس الصحيح، لإعطاء بكسلات واضحة عند الارتقاء. | |
cmdlineappend: | قم بإلحاق السلسلة بعد النقطتين كوسيطة لأمر اللعبة. يمكن تحديدها أكثر من مرة. الهروب من الفواصل والخطوط المائلة العكسية باستخدام شرطة مائلة عكسية. | |
xalia | PROTON_USE_XALIA | قم بتمكين Xalia، وهو برنامج يمكنه إضافة واجهة مستخدم للوحة الألعاب لبعض واجهات لوحة المفاتيح/الماوس. |
seccomp | PROTON_USE_SECCOMP | ملاحظة: عفا عليه الزمن في بروتون 5.13. في الإصدارات الأقدم، قم بتمكين مرشح seccomp-bpf لمحاكاة مكالمات النظام الأصلية، المطلوبة لكي تعمل بعض وسائل حماية إدارة الحقوق الرقمية. |
d9vk | PROTON_USE_D9VK | ملاحظة: عفا عليه الزمن في بروتون 5.0. في الإصدارات الأقدم، استخدم DXVK المستند إلى Vulkan بدلاً من wine3d المستند إلى OpenGL لـ d3d9. |