UStackUStack
Standboy icon

Standboy

Standboy는 VS Code용 확장 프로그램으로 Game Boy 에뮬레이터 패널을 IDE에 삽입하고 AI 코딩 에이전트 활동에 따라 자동 확장·일시정지합니다.

Standboy

Standboy란?

Standboy는 VS Code 확장 프로그램으로 Game Boy 계열 에뮬레이터 패널을 IDE에 삽입하고, AI 코딩 에이전트의 활동에 따라 에뮬레이터의 표시 여부와 재생 상태를 연동합니다. 에이전트가 코드 생성을 시작하면 Standboy가 에뮬레이터 사이드바를 자동으로 확장하고 재생을 재개하며, 에이전트가 작업을 마치거나 대기 상태가 되면 패널을 숨기고 에뮬레이터를 일시정지합니다.

이 확장 프로그램의 목적은 에이전트의 대기 시간을 줄이는 것으로, IDE 내에서 가벼운 오락을 제공하면서 에이전트가 활발히 동작하지 않을 때는 에뮬레이터를 강제로 일시정지합니다. 사용자가 직접 ROM 파일을 불러올 수 있으며, 마지막으로 플레이한 게임과 저장 데이터는 VS Code 재시작 후에도 유지됩니다.

주요 기능

  • 에이전트 활동에 따른 자동 표시/숨김: 에이전트가 몇 초 동안 작업하면 에뮬레이터를 확장하고, 비슷한 대기 시간이 지나면 패널을 접어 짧은 에이전트 동작 중 깜빡임을 방지합니다.
  • Cursor 및 Claude Code 수명 주기 연동: Standboy는 Cursor와 Claude Code의 공식 수명 주기 API를 사용하며, 패널 메뉴의 단일 토글로 연동을 설정할 수 있습니다.
  • 중간 프레임부터 재개: 에뮬레이터 패널을 다시 열면 이전에 멈춘 지점부터 정확히 이어서 재생합니다.
  • ROM 라이브러리 및 저장 데이터 유지: 불러온 ROM은 관리형 라이브러리에 복사됩니다. 게임 내 저장 상태는 패널이 숨겨지거나 페이지가 언로드될 때, Export 전에 디스크에 동기화되며, 런타임 상태는 IndexedDB에 보관되어 VS Code 재시작 후에도 저장 데이터가 유지됩니다.
  • ROM 매칭 및 라이브러리 메타데이터: ROM은 번들된 No-Intro 데이터베이스와 SHA-1 해시를 비교하여 식별되며, 일관된 정식 타이틀과 커버 아트(홈브루/해킹 게임은 문자 타일로 대체)를 제공합니다.
  • 기기 및 입력 지원: .gb, .gbc, .gba ROM을 지원하며 파일 확장자로 플랫폼을 자동 감지합니다. 키보드 컨트롤은 패널 메뉴에서 재설정할 수 있으며, D-pad는 방향키, A/B/Start/Select는 원하는 키로 매핑됩니다.
  • 오프라인 에뮬레이터 및 번들 데이터: 에뮬레이터(EmulatorJS)와 No-Intro 데이터베이스는 번들되어 오프라인에서 실행됩니다.

Standboy 사용 방법

  1. VS Code 확장 설치: VS Code에서 확장 패널을 열고 Standboy를 검색하거나, 터미널에서 code --install-extension mfbzme.standboy를 실행합니다.
  2. 에이전트 감지 연결(최초 실행): 처음 활성화하면 Standboy가 패널을 자동으로 열고 감지된 에이전트 유형( ~/.claude/settings.json이 있으면 Claude Code, Cursor 환경이면 Cursor)을 연결하는 카드를 표시합니다. Connect를 클릭하여 수명 주기 훅을 활성화하거나, 나중에 패널 메뉴의 아래 Detection에서 토글할 수 있습니다.
  3. ROM 추가: + Add ROM을 클릭하거나 메뉴에서 **Load ROM…**을 선택한 후 로컬 .gb, .gbc, .gba 파일을 선택합니다. Standboy는 파일을 관리형 라이브러리에 복사하고, 번들된 No-Intro 데이터베이스와 대조하여 식별한 뒤 에뮬레이터를 시작합니다.
  4. 활성 생성 중 에뮬레이터 사용: 패널이 열려 있는 동안 키보드 입력을 받습니다. 에이전트가 대기 상태가 되면 Standboy는 대기 시간 규칙에 따라 패널을 일시정지하고 숨깁니다.

사용 사례

  • 에이전트 작업 중 집중 유지: Cursor/Claude Code가 코드 생성을 시작하면 Standboy가 에뮬레이터를 확장하여 IDE를 벗어나지 않고 플레이할 수 있게 하며, 생성이 끝나면 패널을 일시정지하고 접습니다.
  • 긴 에이전트 실행 중 탭 전환 방지: 다른 앱(채팅, 포럼, 메시징)으로 전환하는 대신, 에뮬레이터는 에이전트가 활성/완료 상태일 때 강제 일시정지 경계를 제공하는 에디터 내 휴식을 제공합니다.
  • 재시작 후 동일 게임 이어하기: ROM을 한 번 불러오면 다음 VS Code 실행 시 Standboy가 마지막으로 플레이한 ROM을 자동으로 재개하고 저장 데이터를 복원합니다.
  • 일관된 타이틀/커버로 ROM 라이브러리 구축: 디스크에서 파일명이 다르더라도 SHA-1 해시를 번들된 No-Intro 데이터베이스와 비교하여 정식 타이틀과 커버 아트를 표시합니다.
  • 다양한 입력 레이아웃 테스트: 사용자는 패널 메뉴에서 컨트롤을 재설정하여 키보드나 선호도에 맞출 수 있습니다.

FAQ

  • Standboy에 게임이나 ROM 소스가 포함되어 있나요? 아닙니다. Standboy는 사용자가 제공한 ROM만 로드하며, 번들 게임이나 ROM 소스 링크는 포함되어 있지 않습니다.

  • 오프라인으로 사용할 수 있나요? 에뮬레이터와 No-Intro 데이터베이스가 번들로 제공되어 오프라인에서 실행됩니다. 유일하게 설명된 외부 네트워크 호출은 libretro-thumbnails에 대한 일회성 커버 아트 가져오기이며, 확장 호스트가 수행하고 로컬에 캐시됩니다.

  • Standboy는 언제 에뮬레이터를 표시하거나 숨기나요? Standboy는 에이전트 활동이 몇 초 동안 감지되면 자동으로 표시되며, 비슷한 유휴 시간이 지나면 숨겨집니다. 이 동작은 매우 짧은 에이전트 턴에서 깜빡임이 발생하지 않도록 설계되었습니다.

  • 어떤 에이전트 통합이 지원되나요? 확장 프로그램은 CursorClaude Code의 공식 라이프사이클 API를 사용하여 연결되며, 패널 메뉴에서 토글할 수 있습니다. 다른 에이전트의 경우 특정 지원이 없으면 편집 버스트 휴리스틱으로 대체할 수 있습니다.

  • 에뮬레이터는 이전 상태에서 이어서 실행되나요? 네. Standboy는 패널이 다시 열릴 때 중간 프레임부터 이어서 실행되며, 숨겨진 상태에서도 웹뷰가 유지되어 동일한 상태에서 일시정지하고 계속됩니다.

대안

  • 범용 Game Boy 에뮬레이터(독립형 데스크톱/모바일): 게임 플레이에 초점을 맞추지만 VS Code 에이전트 라이프사이클과 통합되어 자동으로 일시정지/표시되지 않습니다.
  • 기타 VS Code 미디어/알림 사이드 패널: 활동 표시기나 간단한 대시보드를 제공하는 확장 프로그램은 집중 관리에 도움이 될 수 있지만, 중간 프레임부터 이어서 실행되고 저장을 유지하는 에뮬레이터는 제공하지 않습니다.
  • IDE 작업 스케줄러 또는 집중 타이머(Pomodoro 스타일): 구조화된 방식으로 “대기 시간”을 줄일 수 있지만, ROM 식별과 저장 유지 기능을 갖춘 IDE 내 에뮬레이터는 제공하지 않습니다.
  • 에이전트 훅 없이 웹뷰에 통합된 에뮬레이터: 에디터 내에서 플레이하는 유사한 워크플로를 제공하지만, AI 에이전트 활동에 따른 라이프사이클 기반 표시/숨김과 중간 프레임 이어서 실행 기능은 없습니다.