LoginSignup
7
1

More than 1 year has passed since last update.

【NeosVR】Linuxでも仮想通貨で遊びたい

Last updated at Posted at 2022-12-06

こんばんは。きさらぎです。この記事はNeosVR(その2) Advent Calendar 2022の7日目です。
昨日の記事はきさらぎの「NeosVRと私 (2022年版)」でした。
今日のは一番軽い記事です。多分。

更新履歴

  • 2022年12月13日更新: Windowsが要らなくなりました!!
  • 2022年12月9日更新: CloudX.Shared.dllも置き換えが必要です!!

モチベ

Linuxにはスタンドアロンインストーラーが存在しないのでSteam経由で起動することになります。しかし、Steamは2021年10月の利用規約改定でゲームに仮想通貨を含むことを禁止したので、NeosVRも仮想通貨が使えなくなりました1 2

しかし、私3はそんなことで仮想通貨を使うことを諦めたくありませんでした4。そこで目をつけたのがWindows版のスタンドアロン版です。スタンドアロン版はSteamを経由しないので、当然上述の制限もないはずです。私はいろいろと調査して、次の手順で強制的に有効化することができることを確認しました。

手順

script.sh
#!/bin/bash
# The author of this script, KisaragiEffective and Kisaragi Marine, put this script 
# under CC0. Please refer https://creativecommons.org/publicdomain/zero/1.0/legalcode to
# its full-text.

red() {
  tput setaf 1
}

green() {
  tput setaf 2  
}

reset() {
  tput sgr0
}

die () {
  echo "[$(red)ERROR$(reset)] $(echo "$@")$(reset)"
  exit 1
}

# is /dev/stdout piped?
if [ -t 1 ]; then
  color=
else
  color=1
fi

if [[ -z "$neos_install_dir" ]]; then
  neos_install_dir="~/.steam/steam/steamapps/common/NeosVR"
fi

if [[ ! -d "$neos_install_dir" ]]; then
  die "install location $neos_install_dir does not found. Please set \$neos_install_dir explicitly with yout installation path. NOTE: ~ must be replaced with $HOME"
fi

latest_version="$(curl -sSL4 https://assets.neos.com/install/Pro/Public)"
sz="$(mktemp).7z"

wget -q4O "$sz" "http://assets.neos.com/install/Pro/Data/${latest_version}.7z"

# check file
du -b $sz
sha512sum $sz

# extract
dest="$(mktemp -d)"
if [[ -f "$(which 7zr 2>/dev/null)" ]]; then
  # partial extract (more effecient)
  echo "extracting to $dest. backend: 7zr"
  mkdir -p "$dest/Neos_Data/Managed"
  (cd "$dest/Neos_Data/Managed" && 7zr e "$sz" Neos_Data/Managed/FrooxEngine.dll Neos_Data/Managed/CloudX.Shared.dll)
  clean_sz_on_exit=1
elif [[ -f "$(which p7zip 2>/dev/null)" ]]; then
  # full extract
  echo "extracting to $dest. backend: p7zip"
  (cd "$dest" && p7zip -d "$sz")
else
  echo "$(red)p7zip is required!!$(reset)" >&2
fi

# copy
for f in "FrooxEngine.dll" "CloudX.Shared.dll"; do
  from="$dest/Neos_Data/Managed/$f"
  to="$neos_install_dir/Neos_Data/Managed/$f"
  echo "copy: $(green) ${from} $(reset) to $(green) $to $(reset)"
  if [[ -z "$dry_run" ]]; then
    cp "$from" "$to" || die "FATAL: archive does not contain $f"
  else
    :
  fi
done

# finish
echo "$(green)Replacing is done!$(reset)" >&2
rm -r "$dest"
[[ ! -z "$clean_sz_on_exit" ]] && rm "$sz"

おわりに

最初MODを作ろうかと思っていましたが、シェルスクリプトを動かすだけで済むようなので計画を凍結しました。
置き換えるのが不安な方は実行する前に以下のコマンドを動かして望まない差分が生まれていないかどうか確認してください。

sudo apt-get install -y dotnet-sdk-6.0
# npmと違い、sudoは要らない
dotnet tool install assembly-differ --global
# なぜか`dotnet assembly-differ`で起動しなかった
~/.dotnet/tools/assembly-differ 'assembly|win/FrooxEngine.dll' 'assembly|linux/FrooxEngine.dll'
~/.dotnet/tools/assembly-differ 'assembly|win/CloudX.Shared.dll' 'assembly|linux/CloudX.Shared.dll'

仮に確認しないでコピーして、かつ振る舞いがおかしくなっても、Steamからゲームファイルの修復をすればいいのでロールバックも簡単ですよ、ぜひやりましょう。

Special Thanks

  • @kazu0617 さん - Windowsを使わない方法の概要を提供していただきました
  1. Wineを強制的に有効化してランチャーから起動したら制限が外れるかと思いましたが、残念ながらそうはなりませんでした。

  2. https://discord.com/channels/402159838827905024/468504846522384394/903927102020149248

  3. Linux Nativeクライアントを使っているユーザーはかなり少ないですが、だからといって情報を伏せておくのは将来のためにならないのでこれを機に公開します。

  4. NCRをつかってゲームセンターやスロットマシンを楽しむのが理想なので…。

7
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
1