steamdeck使用protontricks打游戏补丁
大白菜v50
2023年01月09日 17:08
收录于文集
共3篇

steamdeck使用protontricks打游戏补丁

1. protontricks简介

1.1  什么是protontricks

protontricks是Winetricks命令的包装器,用来支持proton环境下运行的游戏(steam游戏和非steam游戏)。每个proton环境下运行的游戏首次运行时都会创建一个以数字命名(gameID)的目录,然后将这个目录下的driver_c挂载到windows环境下的C盘,再运行exe程序。而protontricks的功能就是可以通过输入gameID找到该游戏对应的pronton环境(C盘目录以及proton的版本),在该环境上运行exe游戏程序。详见《4. proton的运行架构》一节。

若不使用protontricks的可以看我的另一篇教程《steamdeck运行游戏时同时开修改器(使用任务管理器)》: https://www.bilibili.com/read/cv21078466​,protontricks的打补丁等基本功能都可以使用任务管理器实现。

2. protontricks的简单使用

2.1 protontricks的安装与配置

在桌面系统的商店安装”protontricks” 和 “flatseal”

flatseal

protontricks

用 flatseal 给 protontricks 分配所有的文件系统访问权限

分配文件权限

2.2 在protontricks打游戏补丁之前

在使用protontricks打游戏补丁之前,对应非steam游戏,我们必须使用steam客户端添加一个"非steam游戏"。选择对应游戏的exe, 保存。

添加非steam游戏

勾选"强制使用兼容层",这里推荐使用GE-Proton

强制使用兼容层

把游戏运行一下,然后关掉,这样就初始好该游戏的沙盒环境了

初始化游戏的沙盒环境

2.3 使用protontricks给游戏打补丁

右键"游戏补丁.exe", 选择protontricks打开.

使用protontricks打开补丁

选择需要打补丁的游戏, 点"OK"完成打补丁

选择目标游戏

=============== 以下的部分偏技术,有点硬核,请斟酌食用 ==============

3. protontricks的高级使用

3.1 在命令行中使用(在konsole中执行)

安装protontricks命令

echo "alias protontricks='flatpak run com.github.Matoking.protontricks'" >> ~/.bashrc

之后关闭konsole并重开konsole

获取游戏ID

kong@ubuntu:~$ protontricks  -l Found the following games: Non-Steam shortcut: taskmgr.exe (4290865737) Non-Steam shortcut: windows app (3758420005) Plants vs. Zombies: Game of the Year (3590)

使用图片界面运行winetricks

在windows app沙盒环境内 以图形界面的方式运行winetricks protontricks  3758420005  --gui

在指定游戏的沙盒环境内运行winetricks命令

# 在windows app沙盒环境内 运行注册表, 3758420005之后的参数直接传给winetricks protontricks  3758420005  regedit # 在windows app沙盒环境内 运行任务管理器, 3758420005之后的参数直接传给winetricks protontricks  3758420005  taskmgr # 在windows app沙盒环境内 安装d3dx9 DLL库, 我们常用该方式给游戏安装缺失的动态库 protontricks  3758420005  d3dx9

在指定游戏的沙盒环境内运行linux命令

这里可以直接使用pronton兼容层内的wine.

# 在windows app沙盒环境内: 使用wine启动注册表 protontricks -c "wine regedit" 3758420005 # 在windows app沙盒环境内: 使用wine启动终端应用 protontricks -c "wine wineconsole.exe" 3758420005 # 在windows app沙盒环境内: 使用wine启动exe应用 protontricks -c "wine Z:\\\\home\\deck\\your_path.exe" 3758420005 # 在windows app沙盒环境内: 使用wine的wineconsole.exe安装bat脚本 protontricks -c "wine wineconsole.exe Z:\\\\home\\deck\\your_path.bat" 3758420005

3.2 winetricks功能

protontricks是一个proton环境下的winetricks包装器,winetricks拥有的功能,protontricks都能实现,而winetricks的功能主要为: 1. 安装dll库;  2.安装字库

启动winetricks

protontricks  3758420005  --gui

winetricks功能清单

3.3 protontricks的心得

3.3.1 使用代理加快winetricks上dll, 字体库的安装速度

# 这里的IP与端口改成实际的代理端口 export http_proxy="http://127.0.0.1:10809" export https_proxy="http://127.0.0.1:10809" # 启动winetricks protontricks  3758420005  --gui

3.3.2 protontricks运行游戏与steam客户端运行游戏有何区别?

桌面模式下, protontricks可以直接打开exe游戏,但兼容性可能不及使用steam客户端运行游戏;

两者运行的环境变量是不一致的,有待进一步研究。

4. proton的运行架构

涉及的客户端:

steamapp客户端: steamos桌面系统自带;

protontricks客户端: 可在桌面系统discover商店下载,使用前用flatseal分配以下文件权限.

4.1 相关概念

沙盒环境: 为保证非steam游戏的运行环境彼此隔离独立,减少干扰,steam os系统为每个steam游戏创建一个以gameId随机数字命令的沙盒环境;

proton客户端: 包括steamapp官方客户端和protontricks客户端, 可以用来管理沙盒环境下的非steam游戏;

gameId: 用来识别某个非steam游戏的沙盒环境,但使用steamapp官方客户端,强制使用兼容层首次运行游戏后,steamapp客户端会给当前游戏创建一个由随机数字组成的目录,里面放置了driver_c系统核心。

Z挂载盘: 兼容层proton运行非steam游戏后,会把当前linux系统的根目录(/)挂在伪windows运行环境的Z盘符上,exe程序可以在Z盘找到游戏补丁进行安装。

proton兼容层: 兼容层实质为wine与winetricks的封装,加入了游戏运行组件库等。非steam游戏的沙盒环境由proton创建。兼容层可以在游戏属性中动态切换,保证能最大程度运行游戏。

4.2 运行非steam游戏原理

steamos启动非steam游戏实质是通过proton兼容层下的wine核心,创建一个伪windows运行环境,在该环境下运行exe程序。

4.3 steam游戏沙盒架构

proton游戏沙盒架构

4.3.1 proton客户端

steamapp客户端:  steamos桌面系统提供的steam客户端,通过该客户端选择一个非steam游戏运行,强制使用兼容层,并首次运行游戏后,可以创建一个由随机数字组成(gameId)的目录,里面放置了driver_c系统核心;

protontricks客户端: steamapp的客户端功能比较少,一些给游戏打补丁的操作无法实现。protontricks是wiinetricks的封装(通过gameId指定WINE_PREFIX环境变量),它的可用功能实则就是wiinetricks的所有功能,可以进行的操作有: 1. 安装exe运行的dll库; 2. 安装字体; 3. 修改注册表; 4. 安装exe等。protontricks是一个专业向的强大工具,一些exe游戏的游戏补丁都可以用它来安装;

4.3.2 游戏沙盒环境

一个非steam游戏对应一个游戏沙盒环境,放置在STEAM_COMPAT_DATA_PATH目录(默认为/home/deck/.local/share/Steam/steamapps/compatdata/xxx)下,文件夹为一串随机数字。

每个游戏沙盒环境包括以下内容: 

driver_c:  当前沙盒环境下的windows系统的c盘内容,可以理解为windows系统运行的最小文件系统。exe程序可以访问C盘访问driver_c目录下的内容; 

Z挂载盘: 伪windows系统启动后,会将当前linux系统的根目录(/)挂载在伪windows运行环境的Z盘符上,exe程序可以访问Z盘访问linux系统根目录(/)的内容,这里的概念类似windows的网络挂载盘; 

注册表: 随机数字目录下的system.reg和user.reg, 保存当前游戏沙盒环境下的注册表信息;

4.3.3 proton兼容层

兼容层实质为wine与winetricks的封装,加入了游戏运行组件库等。非steam游戏的沙盒环境由proton兼容层来创建。兼容层可以在游戏属性中动态切换,保证能最大程度运行游戏。

5. 安装一个非steam游戏的流程

5.1 安装绿色版游戏(无需打补丁)

使用"steam客户端"直接添加非steam游戏即可,然后设置强制使用兼容层,选择"运行游戏".

安装绿色版游戏

5.2 安装绿色版游戏(需打补丁)

该类型游戏提供一个基础exe文件,还有一个或多个gamePatch.exe补丁文件,需要全部安装才能使用。

分为以下两步:

安装绿色版游戏(需打补丁)

5.3 安装安装版游戏

该类型游戏提供一个install.exe文件,需要安装才能使用。

分为以下三步: