让游戏和LLC补丁在Linux上运行的方法 #355
Replies: 4 comments
-
|
感谢您的积极贡献。 |
Beta Was this translation helpful? Give feedback.
-
|
现已将该讨论增加链接至官网。 |
Beta Was this translation helpful? Give feedback.
-
|
ubuntu22可用,如果是apt安装的steam,操作流程基本一致,如果是flatpak安装的话,Proton-GE和protontricks,wine都要通过flatpak安装,否则会出现找不到路径,无法进行后续操作的问题 |
Beta Was this translation helpful? Give feedback.
-
|
因为现在可以直接手动移动文件,我写了一个script用来安装/更新汉化文件。(Disclosure: 和claude 一起完成,但是每一行我都有review)不需要安装 #!/usr/bin/env bash
set -euo pipefail
info() {
printf "\r [ \033[00;34m..\033[0m ] $1\n"
}
user() {
printf "\r [ \033[0;33m??\033[0m ] $1\n"
}
success() {
printf "\r\033[2K [ \033[00;32mOK\033[0m ] $1\n"
}
die() {
printf "\r\033[2K [\033[0;31mFAIL\033[0m] $1\n"
echo ''
exit 1
}
command_exists() {
if command -v "$1" >/dev/null 2>&1; then
info "$1 command exists"
else
die "$1 command does not exist"
fi
}
command_exists jq
command_exists curl
command_exists 7z
WORK_DIR="$(mktemp -d /tmp/llc_install_XXXXXX)"
trap 'rm -rf "$WORK_DIR"' EXIT
info "Working directory: $WORK_DIR"
# ── 1. Fetch latest release asset URL from GitHub API ────────────────────────
REPO="LocalizeLimbusCompany/LocalizeLimbusCompany"
API_URL="https://api.github.com/repos/${REPO}/releases/latest"
info "Fetching latest release info from GitHub..."
RELEASE_JSON="$(curl -fsSL "$API_URL")"
# Target the LimbusLocalize_*.7z release asset specifically
MOD_URL="$(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name | test("^LimbusLocalize_.*\\.7z$")) | .browser_download_url')"
MOD_NAME="$(echo "$RELEASE_JSON" | jq -r '.assets[] | select(.name | test("^LimbusLocalize_.*\\.7z$")) | .name')"
RELEASE_TAG="$(echo "$RELEASE_JSON" | jq -r '.tag_name')"
if [[ -z "$MOD_URL" ]]; then
die "Could not find a zip/7z asset in the latest release ($RELEASE_TAG)"
fi
info "Latest release: $RELEASE_TAG"
info "Mod asset: $MOD_NAME"
FONT_URL="https://raw.githubusercontent.com/${REPO}/refs/heads/main/Fonts/LLCCN-Font.7z"
FONT_NAME="LLCCN-Font.7z"
# ── 2. Download files ─────────────────────────────────────────────────────────
MOD_FILE="$WORK_DIR/$MOD_NAME"
FONT_FILE="$WORK_DIR/$FONT_NAME"
info "Downloading mod package..."
curl -fL --progress-bar -o "$MOD_FILE" "$MOD_URL"
success "Downloaded $MOD_NAME"
info "Downloading font package..."
curl -fL --progress-bar -o "$FONT_FILE" "$FONT_URL"
success "Downloaded $FONT_NAME"
# ── 3. Find Steam library paths ───────────────────────────────────────────────
#
# Steam stores additional library paths in libraryfolders.vdf.
# We search all known default locations for that file.
#
find_steam_libraries() {
local vdf_candidates=(
"$HOME/.steam/steam/steamapps/libraryfolders.vdf"
"$HOME/.local/share/Steam/steamapps/libraryfolders.vdf"
"$HOME/.var/app/com.valvesoftware.Steam/data/Steam/steamapps/libraryfolders.vdf" # Flatpak
)
local libraries=()
for vdf in "${vdf_candidates[@]}"; do
if [[ ! -f "$vdf" ]]; then
continue
fi
# Extract "path" values from the VDF (both old and new format)
while IFS= read -r line; do
if [[ "$line" =~ \"path\"[[:space:]]+\"([^\"]+)\" ]]; then
libraries+=("${BASH_REMATCH[1]}/steamapps")
fi
done <"$vdf"
# Also add the directory containing the VDF itself
libraries+=("$(dirname "$vdf")")
done
# Deduplicate and print existing paths
local seen=()
for lib in "${libraries[@]}"; do
if [[ ! -d "$lib" ]]; then
continue
fi
local already=0
for s in "${seen[@]:-}"; do
if [[ "$s" == "$lib" ]]; then
already=1
break
fi
done
if ((already)); then
continue
fi
seen+=("$lib")
echo "$lib"
done
}
info "Searching for Steam library paths..."
mapfile -t STEAM_LIBS < <(find_steam_libraries)
if [[ ${#STEAM_LIBS[@]} -eq 0 ]]; then
warn "Could not auto-detect any Steam library. Falling back to manual input."
read -rp "Enter path to your steamapps folder (e.g. /mnt/steamgames/SteamLibrary/steamapps): " MANUAL_LIB
STEAM_LIBS=("$MANUAL_LIB")
fi
for lib in "${STEAM_LIBS[@]}"; do
info " Found library: $lib"
done
# ── 4. Find Limbus Company installation ──────────────────────────────────────
LIMBUS_DIR=""
for lib in "${STEAM_LIBS[@]}"; do
candidate="$lib/common/Limbus Company"
if [[ -d "$candidate" ]]; then
LIMBUS_DIR="$candidate"
break
fi
done
if [[ -z "$LIMBUS_DIR" ]]; then
warn "Limbus Company not found automatically in any detected library."
read -rp "Enter the full path to 'Limbus Company' game folder: " LIMBUS_DIR
fi
if [[ ! -d "$LIMBUS_DIR" ]]; then
die "Directory does not exist: $LIMBUS_DIR"
fi
if [[ ! -d "$LIMBUS_DIR/LimbusCompany_Data" ]]; then
die "LimbusCompany_Data not found inside: $LIMBUS_DIR (is this the right folder?)"
fi
success "Limbus Company found at: $LIMBUS_DIR"
GAME_DATA_DIR="$LIMBUS_DIR/LimbusCompany_Data"
# ── 5. Extract and merge both archives ───────────────────────────────────────
#
# Both archives contain files under LimbusCompany_Data/.
# We extract each to a staging dir then rsync/cp into the game folder.
#
extract_and_merge() {
local archive="$1"
local label="$2"
local staging="$WORK_DIR/staging_${label}"
mkdir -p "$staging"
info "Extracting $label..."
7z x -y -o"$staging" "$archive" >/dev/null
# Locate LimbusCompany_Data inside the extracted tree (may be at root or nested)
local data_src
data_src="$(find "$staging" -maxdepth 3 -type d -name "LimbusCompany_Data" | head -1)"
if [[ -z "$data_src" ]]; then
warn "$label: LimbusCompany_Data not found inside archive — skipping merge for this package."
warn "Extracted contents:"
find "$staging" -maxdepth 3 | sed 's|'"$staging"'||'
return
fi
info "Merging $label -> $GAME_DATA_DIR ..."
# cp -r merges directories and overwrites individual files without deleting extras
cp -rf "$data_src/." "$GAME_DATA_DIR/"
success "$label merged successfully."
}
extract_and_merge "$MOD_FILE" "mod"
extract_and_merge "$FONT_FILE" "font"
# ── Done ──────────────────────────────────────────────────────────────────────
echo ""
success "Installation complete! (release $RELEASE_TAG)"
info "Game data directory: $GAME_DATA_DIR"可以加你的custom steam lib path到vdf_candidates 就不用每次都要输入了。 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
前言
本人因为各种原因而使用了Arch Linux, 但是似乎边狱巴士的steam版即使在steam官方的Proton转译层下还是无法运行,然后在空闲时间研究了下运行方法,最终成了,顺便解决了LLC汉化无法使用的问题,故分享出来。
本文采用Arch Linux以及KDE Plasma 6.3.1,其他发行版可能略有不同
先让游戏正常运行
正常情况下,使用steam官方的Proton转译层会无法运行,经查询得知,使用Proton-GE可以正常进入
安装方法
最后在属性- 兼容性选项卡选用ProtonGE有关选项

然后游戏理论上就可以启动了,下载完文件后退出游戏
LLC补丁
正常手动安装即可,指南

安装后应该是这样
让补丁正常运行
如果此时正常启动,会发现BepInEX并没有正常启动,根据BepInEX官方的解释
官方给了一个解决方法
安装Protontrick
这个软件在AUR仓库里有,直接
yay -i protontricks(注:安装时会安装wine)配置
安装完成后执行

protontricks --gui,弹出的窗口中选择边狱巴士在这过程中会弹出一些报错窗口,忽略即可(除非无法正常运行)

接下来的窗口选择
选择默认的wine容器选择

运行wine配置程序然后弹出的窗口中选择

函数库,在新增函数库顶替中输入winhttp,随后添加最后应用,然后再次启动游戏,应该会弹出BepInEX窗口,这样就可以正常运行了
有问题?
可以在下方回复,如果我看到的话会回复,当然我也只是个新手,也是查了很多资料才总结的方法,无法保证100%可用
Beta Was this translation helpful? Give feedback.
All reactions