Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude/skills/setup-resonite-env/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ ______________________________________________________________________

## 5. devcontainer 内で Resonite を起動 (`just resonite-launch`)

devcontainer 内で Resonite を直接起動できる。ro bind の `/resonite` から書込可能な `/opt/resonite` への rsync は `.devcontainer/entrypoint.sh` が container 起動時に行う (初回は install コピー、2 回目以降は差分のみ)。`resoio launch` (`python/src/resoio/launcher.py`) が `umu-run` (umu-launcher/Proton) で `RESONITE_EXE` (= `/opt/resonite/Resonite.exe`) を起動する。初回は GE-Proton DL でも時間がかかる
devcontainer 内で Resonite を直接起動できる。ro bind の `/resonite` から書込可能な `/opt/resonite` への rsync は `.devcontainer/entrypoint.sh` が container 起動時に行う (初回は install コピー、2 回目以降は差分のみ)。`resoio launch` (`python/src/resoio/launcher.py`) が `umu-run` (umu-launcher/Proton) で `RESONITE_EXE` (= `/opt/resonite/Resonite.exe`) を起動する。GE-Proton はバージョン固定で image に prefetch 済み (`PROTONPATH=/opt/proton/GE-Proton10-34`) なので起動時の Proton DL は発生しない。初回は install コピー (~2GB) で時間がかかる

起動・停止は以下:

Expand Down
29 changes: 24 additions & 5 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,24 @@ RUN set -eux; \
apt-get install -y --no-install-recommends ./*.deb; \
rm -rf /var/lib/apt/lists/* /tmp/*.deb

# GE-Proton をバージョン固定で prefetch して image に焼き込む。
# umu は PROTONPATH が未取得の論理名 (例: GE-Proton) だと GitHub Releases から
# 自動取得するが、この自動 DL が不安定 (現状エラー) かつバージョンが固定できない。
# 代わりに /opt/proton 配下へ展開し、PROTONPATH をその絶対パスに向けることで
# 自動 DL を完全にバイパスしつつバージョンを固定する。sha512 で完全性を検証する。
# /opt/proton は root 所有・読取専用で良い (Proton は PROTONPATH には書かず、
# 書き込みは WINEPREFIX/compatdata 側に行く)。
ARG GE_PROTON_VERSION=GE-Proton10-34
RUN set -eux; \
cd /tmp; \
base="https://github.com/GloriousEggroll/proton-ge-custom/releases/download/${GE_PROTON_VERSION}"; \
curl -fsSL -O "${base}/${GE_PROTON_VERSION}.tar.gz"; \
curl -fsSL -O "${base}/${GE_PROTON_VERSION}.sha512sum"; \
sha512sum -c "${GE_PROTON_VERSION}.sha512sum"; \
install -d /opt/proton; \
tar -xzf "${GE_PROTON_VERSION}.tar.gz" -C /opt/proton; \
rm -f "${GE_PROTON_VERSION}.tar.gz" "${GE_PROTON_VERSION}.sha512sum"

# debian 13 の /etc/bash.bashrc は bash-completion ローダ部がコメントアウトされて
# おり、`docker exec dev bash` は非 login 対話 shell で /etc/profile.d/bash_completion.sh
# も読まれないため、明示的にローダ呼び出しを追記する。
Expand Down Expand Up @@ -183,14 +201,15 @@ RUN chmod +x /usr/local/bin/entrypoint.sh
USER dev
WORKDIR /workspace

# umu 用 ENV。WINEPREFIX / Proton / アセットキャッシュはすべて named volume で永続化。
# umu 用 ENV。WINEPREFIX / アセットキャッシュは named volume で永続化。
# GAMEID=umu-default: umu DB 未登録ゲーム向けの汎用 ID。
# PROTONPATH=GE-Proton: GE-Proton を使うことで起動時スプラッシュロゴの描画崩れを回避
# (Valve Proton では Unity テクスチャがカラーバー表示になる問題がある)。
# umu が GitHub Releases から最新版を自動取得し ~/.local/share/Steam/compatibilitytools.d に展開する。
# PROTONPATH=/opt/proton/GE-Proton10-34: GE-Proton を使うことで起動時スプラッシュロゴの
# 描画崩れを回避する (Valve Proton では Unity テクスチャがカラーバー表示になる)。
# 論理名ではなく上で prefetch した絶対パスを指すことで umu の自動 DL をバイパスし
# バージョンを固定する。ARG GE_PROTON_VERSION を上げたらこのパスも追従させる。
ENV GAMEID=umu-default \
WINEPREFIX=/home/dev/prefix \
PROTONPATH=GE-Proton
PROTONPATH=/opt/proton/GE-Proton10-34

# Claude Code / Codex CLI は公式 install.sh (native installer) で最新版を入れる。
# apt / npm 版ではなく standalone installer に揃える。どちらも $HOME/.local/bin に
Expand Down
5 changes: 3 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,9 @@ not by `just`.
Both launchers go through `resoio launch` (`python/src/resoio/launcher.py`), which starts
Resonite via `umu-run` (umu-launcher / Proton). The read-only `/resonite` bind is synced into a
writable `/opt/resonite` by `.devcontainer/entrypoint.sh` when the container starts; the first
container start pulls GE-Proton and copies the ~2 GB install, so it is slow; later starts sync
only deltas.
container start copies the ~2 GB install, so it is slow; later starts sync only deltas. GE-Proton
is pinned and prefetched into the image (`PROTONPATH=/opt/proton/GE-Proton10-34`), so no Proton
download happens at container start.

- **`just resonite-launch --vanilla`** runs vanilla Resonite (`Resonite.exe -SkipIntroTutorial`)
— handy for confirming the base game launches.
Expand Down
Loading