Communitygithub.com

zriptic/roclicks-skills

Roblox 게임의 게임플레이 트레일러를 처음부터 끝까지 제작합니다. GAME.md로부터 샷 목록을 계획하고, 스튜디오 플레이테스트에서 캐릭터를 마치 직접 플레이하는 것처럼 움직이며, 시네마틱 카메라 움직임을 추가하고, macOS 화면 캡처로 뷰포트를 녹화한 후 ffmpeg로 편집합니다.

roclicks-skills란 무엇인가요?

이 스킬은 Roblox 게임의 트레일러, 프로모션 비디오, 게임플레이 비디오, 비디오 썸네일, 티저, TikTok 또는 YouTube Shorts를 제작하는 완전한 엔드-투-엔드 워크플로우를 제공합니다. 사용자가 '녹화해 줘', '마치 내가 플레이하는 것처럼 보이게 해 줘', '게임 영상을 편집해 줘' 등의 요청을 할 때 사용됩니다. 이 스킬은 GAME.md 파일을 분석하여 샷 테이블을 작성하고, Luau 스크립트(TrailerDriver.luau 및 CameraRig.luau)를 사용하여 Roblox 스튜디오 플레이테스트에서 캐릭터를 자연스럽게 움직이고 시네마틱 카메라 움직임(돌리, 오빗, 크레인, 푸시인, 위프)을 적용합니다. macOS의 화면 캡처 기능을 사용하여 스튜디오 뷰포트만 녹화하고, ffmpeg를 이용해 속도 램프, 위프 전환, 크로스페이드, 이모지가 포함된 타이틀 카드, 음악 배경(덕킹 및 loudnorm 적용)을 추가하여 편집합니다. 최종 출력물로는 Roblox 업로드용 30초 1920x1080 비디오와 9:16 Shorts/TikTok 컷을 내보내며, 접촉 시트를 이용한 QA 검증을 수행합니다. 이 스킬은 Claude Code, Cursor, Codex 등 AI 에이전트와 함께 사용되며, Roblox 스튜디오 MCP 서버, Python 스크립트, ffmpeg를 통해 작동합니다. 컴퓨터 사용(Computer Use) 기능은 사용하지 않으며, 모든 작업은 MCP eval 호출, Python 및 ffmpeg를 통해 이루어집니다.

지원 대상~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/zriptic/roclicks-skills/tree/HEAD/roblox-trailer

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

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

문서

Roblox 트레일러

SK=<이 스킬 폴더의 경로>. 이 스킬이 만들어진 목적: "녹화하고, 마치 내가 플레이하는 것처럼 보이게 하고, 편집도 해 줘." 게임별 모든 파일은 <game>/trailer/에 위치합니다: shots.json, clips/, out/. 스크립트는 일반적이며, 모든 게임별 이름(태그, 리모트, 프롬프트 텍스트, 아이템 ID)은 shots.json에 있습니다.

기본 규칙 (먼저 읽으세요)

  • 사용자의 실제 화면을 녹화합니다. 녹화 전, 사용자에게 채팅으로 스튜디오를 최상단에 두고 가리지 않은 상태로 유지하고, 마우스를 게임 뷰 밖에 두고, 컴퓨터를 만지지 말라고 알린 후 사용자의 확인을 받으세요. 보정된 뷰포트 영역만 녹화하세요. 테스트 및 잘못된 테이크는 record.py clean으로 삭제하세요. -C(커서)는 절대 사용하지 마세요.
  • 스튜디오 예절: 하나의 Studio MCP 서버를 사용하세요(커뮤니티 robloxstudio 서버를 대상으로 작성되었으며, 내장 Roblox_Studio 서버가 아닙니다). 플레이테스트를 시작하기 전에 다른 에이전트가 스튜디오를 사용 중인지 확인하세요. 편집 모드에서 키트를 가져오고, 사용 후에는 제거하며, 키트가 포함된 채로 플레이스를 저장하지 마세요.
  • 정직함: Roblox는 게임에 없는 기능, 향상된 그래픽 또는 광고 주장을 보여주는 비디오를 거부합니다. 카메라에 어떤 실제 결과가 나올지 연출하는 것(테이크의 확률을 강제로 조정하거나, 아이템을 부여하는 것)은 괜찮습니다. 게임이 할 수 없는 것을 가짜로 만드는 것은 안 됩니다. 대신 샷을 재구성하세요(예제의 Gold→Rainbow 몽타주 참조).
  • 컴퓨터 사용 금지. 모든 작업은 MCP eval 호출, Python 및 ffmpeg를 통해 이루어집니다.
  • 카드와 텍스트는 간결하게 유지하세요("테마는 있지만 노이즈는 없음": 도구에 불필요한 노이즈를 추가하지 마세요). 게임 자체 UI가 최고의 텍스트입니다.

워크플로우

1. 계획

references/shot-list-template.md를 읽으세요. 게임의 GAME.md, FINISHED.md 및 소스 코드로부터 샷 테이블(처음 2-3초에 후크, 핵심 루프, 희귀한 순간, 소셜, 기반/진행, 추가 시스템, 타이틀 카드, 소셜 전용 CTA)을 작성하고 녹화 전에 사용자에게 보여주세요. 그런 다음 <game>/trailer/shots.json을 작성하세요(스키마는 references/luau-api.md에 있으며, assets/shots.template.json 또는 전체 예제는 references/example.shots.json에서 시작하세요). python3 $SK/scripts/build_kit.py list --shots <shots.json> 명령으로 원시 푸티지의 총 길이를 확인합니다.

2. 게임플레이-POV 및 시네마틱 샷 (Luau)

  • scripts/TrailerDriver.luau는 플레이테스트 클라이언트에서 하나의 샷을 실행합니다: 시작 포즈로 순간이동, 키보드 컨트롤 비활성화, 웨이포인트 이동(Humanoid:MoveTo, 경로 탐색, 점프, 사람 같은 떨림), 대상 방향으로 회전, ProximityPrompt 누르기(InputHoldBegin/End), 리모트 또는 바인더블 호출, 큐 또는 게임 이벤트에 따라 카메라 전환. 플레이어 카메라는 마우스 같은 드리프트, 떨림 및 시선 이동이 있는 지연 추적입니다. 게임 HUD는 게임플레이 샷에서는 켜져 있고, 시네마틱에서는 꺼집니다. Roblox 상단 바, CoreGui 및 커서는 항상 꺼집니다. 각 실행은 먼저 이전 실행을 중지하고 모든 것을 복원합니다.
  • scripts/CameraRig.luau에는 시네마틱 프리셋이 있습니다: 돌리/스플라인/플라이오버, 베지어, 오빗, 크레인, 푸시인, 위프(모션 블러 포함), 정적. 모두 TweenService 곡선을 통해 이징 처리되며 구성 가능한 지속 시간을 가집니다.
  • 적용 방법: build_kit.py rbxmx → import_rbxm을 ReplicatedStorage에 (편집 모드) → 플레이테스트 시작 → build_kit.py call --shot ID를 eval_client_runtime으로 전송. 샷에 설정이 필요한 경우 먼저 build_kit.py server --shot ID를 eval_server_runtime으로 실행하세요. 자세한 내용과 전체 액션 목록은 references/luau-api.md를 참조하세요.

3. 녹화

references/recording.md를 참조하세요. 간단히 말하면: record.py calibrate를 한 번 실행하면(드라이버가 뷰포트를 청록색으로 칠하고 스크립트가 이를 찾습니다), 그런 다음 각 샷에 대해 record.py shot ID --start-ms <startsAtMs> --dur <dur>를 실행합니다. 드라이버의 예약된 시작을 기다린 후, 프리롤 + 샷 + 테일(뷰포트만)을 녹화하고 정확한 트림 오프셋을 저장합니다. 화면 녹화가 불가능한 경우 record.py stitch가 저장된 capture_screenshot 프레임을 클립으로 변환합니다.

4. 편집

references/editing.md를 참조하세요. edit.py build --cut roblox --format landscape는 Roblox 업로드용(최대 30초, 1080p60 H.264, CTA 없음)을 만듭니다. --cut social --format both는 16:9와 9:16을 모두 만듭니다. 텍스트는 Pillow로 그려집니다(Homebrew의 ffmpeg에는 drawtext가 없을 수 있기 때문). Fredoka One이 설치되지 않은 경우 assets/fonts/에 다운로드하기 전에 확인을 요청하세요. 폴백 폰트는 Arial Rounded Bold입니다.

5. QA

녹화 후 qa.py clips --shots ...를 실행합니다. 편집 후 qa.py final <mp4> --roblox를 실행합니다. 드롭된 프레임, 검은 프레임, 정지 프레임, 가장자리의 스튜디오 UI 밴드, 커서 플래그, Roblox 제한을 확인하고 접촉 시트를 작성합니다. Read와 함께 시트를 열어 살펴보세요: 잘못된 스튜디오 패널, 커서 또는 잘못된 HUD 상태가 나타납니다. 그런 다음 사용자에게 컷(경로와 시트)을 보여주고 재편집을 위한 메모를 받으세요. 재편집은 edit.py만 필요합니다.

6. 정리

플레이테스트를 중지하고, ReplicatedStorage.TrailerKit을 삭제하고, record.py clean --out <trailer> --shots <shots.json>을 실행하고, <trailer>/build/를 제거하세요. clips/(원본 푸티지)와 out/은 유지하세요.

참조 맵

파일읽을 때
references/shot-list-template.md계획 시; GAME.md를 샷으로 변환할 때
references/luau-api.mdshots.json 작성 시; 드라이버 및 리그 API; 대상, 액션, 트리거, 프리셋
references/recording.md첫 테이크 전; 보정, 동기화, 폴백, 2인 샷
references/editing.md편집 블록, 전환, 카드, 폰트 및 이모지, 오디오, 세로
references/roblox-video-specs.mdRoblox 업로드 제한 및 콘텐츠 규칙 (출처 포함)
references/worked-example.md + example.shots.json전체 작업 예제 (펫 부화 롤 게임, "🥚 Pet Roll")

스크립트

스크립트목적
scripts/TrailerDriver.luau, scripts/CameraRig.luau런타임 (클라이언트)
scripts/build_kit.pyrbxmx 키트, eval 스니펫, 인라인 페이로드 폴백, 서버 스니펫, 샷 목록
scripts/record.py (record.sh 래퍼)윈도우, 보정, 샷, 스티치, 정리
scripts/edit.py컷 빌드, 카드 미리보기, 폰트 목록
scripts/qa.py클립 및 최종 검사, 접촉 시트
scripts/check_luau.shRoblox 전역 프리루드로 luau-analyze 실행 (Roblox 타입 정의가 설치되지 않은 상태에서도 작동)

스크립트 변경 후 검증: python3 -m py_compile $SK/scripts/*.py 및 $SK/scripts/check_luau.sh $SK/scripts/*.luau.

알려진 격차 (발견 시 여기에 수정하세요)

  • 드라이버는 GUI 버튼을 클릭할 수 없습니다. 버튼이 호출하는 리모트를 사용하세요(invoke)(부화 샷에서처럼).
  • 태그의 localOffset은 첫 번째 추정치이며, 각 샷의 첫 번째 테이크 후 조정이 필요할 수 있습니다.
  • 플레이어 카메라는 마우스 휠 줌을 모델링하지 않습니다. look.dist를 사용하여 비트 사이의 거리를 변경하세요.
  • 서버 설정은 라이브 게임 모듈을 require할 수 없습니다: execute_luau/eval_server_runtime은 새로운 require 캐시를 얻습니다(2026-10-11 측정, 펫 부화 게임: 플레이어가 로드되었는데도 PlayerState.all()이 비어 있었습니다). 설정을 키트 옆에 임포트되는 RunContext=Server Script에 넣고, BindableFunction을 노출시키며, server 스니펫이 이를 :Invoke하도록 만드세요. 패턴: TrailerHook Script (트레일러 전용, 플레이스에 저장되지 않음)는 게임 자체 모듈을 게임 서버 VM 내부에서 require하고 ServerStorage.TrailerHook(BindableFunction, :Invoke(cmd, args) -> (ok, result))을 생성합니다. 설정 단계별로 하나의 작은 명령을 가집니다(현금 지급, 특정 등급 아이템 추가, 타이머 준비, 다음 롤 확률 강제, restore). 변경한 모든 구성 값을 저장하고 restore 시 및 Script가 파괴될 때 복원합니다. build_kit.py가 키트를 패키징하는 것과 같은 방식으로 .rbxmx로 패키징하세요.
  • Explorer/Properties가 도킹된 스튜디오 뷰포트는 1470x956 pt 화면에서 약 1.26:1입니다. 보정 전에 패널을 숨기거나(또는 View > Full Screen) 16:9 크롭이 그림의 1/3을 버리지 않도록 하세요.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

관련 스킬