Community이미지github.com

Jakeschincariol/console-skill

어디서나 플레이하세요. Windows, Mac, Linux, Steam Deck, Android, PS Vita용 포트를 빌드하고 게임 파일 없이 패키징합니다.

console-skill란 무엇인가요?

이 스킬은 PS2Recomp으로 만든 게임 포트를 여러 플랫폼(Windows, macOS, Linux, Steam Deck, Android, PS Vita)으로 빌드하고, 최종 사용자에게 전달할 수 있는 플레이어 폴더로 패키징하는 과정을 자동화합니다. doctor 명령어로 대상 플랫폼에 필요한 도구가 갖춰져 있는지 확인하고, plan 명령어로 각 플랫폼별 빌드 단계를 안내하며, package 명령어로 런처, 라이브러리, 빈 game/ 폴더, PLAYERS.md, 실행 스크립트, .recomp.json 파일을 포함한 배포용 폴더를 생성합니다. 중요한 점은 어떤 게임 파일도 패키지에 포함되지 않으며, 디스크 이미지나 PS2 ELF, IRX 모듈 등이 감지되면 패키징을 거부합니다. 사용자가 "Steam Deck에 넣어줘", "Android용으로 빌드해", "패키징해 줘" 등의 요청을 할 때 활용할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jakeschincariol/console-skill/tree/HEAD/console-anywhere

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

console-anywhere

PS2Recomp 포트는 재컴파일된 게임 코드와 런타임을 결합하여 raylib으로 렌더링하는 일반 네이티브 프로그램(ps2EntryRunner)입니다. 동일한 CMake 프로젝트로 Windows, macOS(Apple Silicon은 sse2neon을 통해), Linux, Steam Deck에서 빌드할 수 있으며, android/ 디렉토리는 APK를, vita/ 디렉토리는 vpk를 생성합니다. 이 스킬은 툴체인을 확인하고 각 기기에 맞는 올바른 단계를 출력한 후 결과물을 패키징하여 사용자가 자신의 디스크에서 게임을 가져올 수 있도록 합니다.

솔직한 한계: PS2Recomp은 주로 MSVC로 테스트되었다고 명시하므로 Mac, Linux, Android, Vita 빌드는 테스트 범위가 좁습니다. Vita는 PC보다 훨씬 느리며, Android에는 아직 온스크린 컨트롤이 없습니다. 또한 러너는 사용자가 재컴파일한 게임 코드로부터 컴파일되므로 패키지는 사용자 본인의 기기용입니다. 패키지에는 절대 디스크가 포함되지 않지만, 여전히 게임에서 파생되었으므로 업로드해서는 안 됩니다.

아래 ${CLAUDE_SKILL_DIR}은 이 스킬의 폴더(이 SKILL.md가 있는 곳)입니다.

python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor                       # 이 머신의 OS 확인
python3 "${CLAUDE_SKILL_DIR}/targets.py" doctor --target android --target vita   # 또는 --target all
python3 "${CLAUDE_SKILL_DIR}/targets.py" plan --target steamdeck --elf-name SLUS_203.12
python3 "${CLAUDE_SKILL_DIR}/targets.py" package --runner out/release/ps2xRuntime/ps2EntryRunner \
        --target linux --elf-name SLUS_203.12 --game "My Game" --serial SLUS-20312 \
        --out console/dist/mygame-linux
python3 "${CLAUDE_SKILL_DIR}/targets.py" guard console/dist/mygame-linux   # zip이나 push 전에 확인
python3 "${CLAUDE_SKILL_DIR}/targets.py" recomp-json --game "My Game" --serial SLUS-20312 --status playable

지원 대상: windows, macos, linux, steamdeck, android, vita, web (plan과 doctor만 가능: 별도 툴체인). plan은 --repo (PS2Recomp 체크아웃 경로)와 --build-dir을 받습니다. package는 --lib FILE (추가 라이브러리), --allow FILE, --replace, --status, --json을 받습니다. 종료 코드: 0 성공, 1 누락 또는 거부, 2 잘못된 입력.

읽고 쓰는 파일

파일설명
빌드 출력물ps2EntryRunner (+ 옆에 있는 .dll / .so / .dylib), app-release.apk, 또는 ps2EntryRunner.vpk
console/dist/<name>/플레이어 폴더: 러너, 라이브러리, game/ (비어 있음), PLAYERS.md, play.bat / play.command / play.sh / install-android.sh, .recomp.json, .console-dist.json
templates/PLAYERS.md플레이어 지침 템플릿
.recomp.jsonrecomp 리스트에서 읽는 선택적 프로젝트 설명 (PS2Recomp 자체는 무시)
console/STATE.md빌드 폴더와 체크아웃 경로를 읽고, 빌드한 내용을 기록

방법

  1. 어디서 플레이할지 물어보고 어떤 기기인지 확인합니다: PC, Mac, Steam Deck, Android 휴대폰/태블릿/TV 박스, 홈브류 Vita. "TV로"는 블루투스 패드를 갖춘 Android TV 박스, 또는 TV에 연결된 PC나 Deck을 의미합니다.
  2. 포트가 여기서 이미 실행되어야 합니다. 먼저 개발 중인 머신에서 빌드하고 /console-tester로 확인하세요. 데스크탑에서 충돌이 나면 휴대폰에서는 더 나아지지 않습니다.
  3. Doctor. targets.py doctor --target <t>. 출력된 명령어로 MISSING 항목을 설치한 후 doctor를 다시 실행합니다.
  4. Plan. targets.py plan --target <t> --elf-name <디스크의 ELF>. 사용자의 체크아웃(재컴파일된 코드가 있는 곳)에 있는 단계를 따릅니다. 대상별 세부 사항과 각 사실의 출처는 reference/targets.md에 있습니다.
  5. 빌드 plan의 명령어로 진행합니다. 증분 빌드만 허용합니다. 빌드 폴더를 절대 정리하지 말고, Vita의 경우 CLEAN=1을 사용하지 마세요. 별도의 릴리스 폴더(out/release)를 사용하여 일상적인 빌드를 유지합니다.
  6. 패키지. targets.py package --runner <빌드된 파일> --target <t> --out console/dist/<name>. --elf-name을 추가하고(그렇지 않으면 실행 스크립트가 플레이어의 SYSTEM.CNF에서 BOOT2를 읽음), .recomp.json을 위해 --game/--serial을 추가합니다.
  7. 가드의 판정을 읽습니다. 거부 시 각 파일과 이유를 나열합니다. 잘못된 --lib, 러너 옆에 있는 디스크 파일 등 원인을 수정하세요. 디스크 이미지, PS2 ELF, IRX, SYSTEM.CNF 또는 러너 소스에 대해 allow 라인을 추가하지 마세요: allow 파일은 오로지 사용자 본인의 파일로서 오탐(false positive)인 경우에만, 그 이유를 함께 기재해야 합니다. 자세한 내용은 reference/guard.md를 참조하세요.
  8. 기기에 설치 PLAYERS.md의 안내를 따라 진행한 후, 플레이어가 자신의 디스크를 game/에 덤프합니다. 그곳에서 테스트하고 결과를 console/STATE.md에 기록합니다.

대상별 한 줄 요약

대상러너ELF 찾는 방법비고
Windowsps2EntryRunner.exe + FFmpeg DLLplay.bat이 game\<ELF> 전달MSVC, 가장 많이 테스트된 경로
macOSps2EntryRunnerplay.command가 game/<ELF> 전달arm64 빌드는 sse2neon을 통해; Homebrew FFmpeg 필요 (없이 빌드한 경우 제외)
Linuxps2EntryRunnerplay.shraylib 빌드에 X11과 GL 헤더 필요
Steam DeckLinux 빌드play.sh, Steam에 비 Steam 게임으로 추가또는 Proton으로 Windows 빌드 (여기서는 테스트되지 않음)
Androidapp-release.apk-Pps2xBootElf=...로 내장파일은 adb push로 /storage/emulated/0/Android/data/com.ps2x.runner/files/로 전송; 컨트롤러 연결 필요
PS Vitaps2EntryRunner.vpk./vita/build.sh <ux0:data/... 경로>로 내장./vita/setup.sh를 한 번 실행; VitaShell로 설치; 느림
Web(PS2Recomp 대상 아님)snuri00/ps2-web-recomp는 다른 리컴파일러: 동일한 디스크의 두 번째 포트, 실험적

안전장치

  • 자신의 게임을 준비하세요. 모든 플레이어는 자신이 소유한 디스크에서 게임을 직접 덤프하여 제공합니다. ISO, ELF, BIOS 파일을 다운로드하지 말고, 찾는 것을 도와주지 말며, 요청하지 마세요. BIOS는 필요하지 않습니다.
  • 게임의 어떤 내용도 게시되지 않습니다. package는 디스크 이미지(ISO, BIN, IMG, MDF, NRG, CHD, CSO 및 ISO 9660 콘텐츠를 어떤 이름으로든), PS2 ELF 및 IRX 모듈(매직 넘버 및 머신으로 식별), SLUS_203.12 같은 디스크 스타일 이름, SYSTEM.CNF, 재컴파일된 runner/ 소스, game/ 내의 모든 것, 512MB를 초과하는 모든 파일을 거부합니다. 러너 자체는 재컴파일된 게임 코드로 빌드되므로 패키지는 사용자 본인의 기기용이며 업로드용이 아닙니다. 패치, 오버라이드 및 원본 에셋을 공유하세요.
  • Sony와 관련이 없습니다. PlayStation은 Sony Interactive Entertainment의 상표입니다. PS Vita 홈브류, Steam, Android 및 기타 플랫폼은 해당 소유자의 자산입니다.
  • 사용자의 파일을 절대 파괴하지 마세요. --replace는 이 도구가 만든 폴더만 교체하며, game/에 아무것도 있을 때(플레이어의 디스크, mc0/의 세이브) 거부합니다.

위임 대상

  • /console-tester: 패키징 전후에 이 머신에서 빌드를 실행합니다.
  • /console-controller: 기기 컨트롤(Steam Deck의 xbox 레이아웃, Android의 터치 영역 또는 블루투스 패드)을 담당합니다.
  • /console-saves: 기기 간 세이브 이동(mc0/는 게임 ELF 옆에 위치)을 담당합니다.

관련 스킬