Club No.9
이 1인칭 3D 당구장에서 몸을 숙여 조준하고, 샷 파워를 모으고, 스핀을 더하고, 모든 스트로크를 리플레이하세요. 프롬프트를 복사해 만들어 보세요.
Loading preview...
3927 views
이 프롬프트로 시작하기
바 미니게임과 샷 리플레이를 갖춘 1인칭 물리 기반 당구 웹 게임을 생성하세요.
Three.js + Rapier (@dimforge/rapier3d-compat)를 사용해 "CLUB No.9"라는 이름의 순수 정적 방식이며 빌드 단계가 필요 없는 1인칭 물리 기반 당구 웹 게임을 만드세요. 중국어 인터페이스(중국어-영어 전환), 데스크톱 키보드·마우스 조작, 터치스크린에서의 자동 관전자 모드를 제공해야 합니다. 요구 사항: 장면: Sketchfab의 바 모델 Bar Diorama를 당구장으로 불러오되 내장 테이블은 숨기고, 쿠션과 큐의 목재 마감에는 Poly Haven 호두나무 텍스처를, 환경 반사에는 벽난로 HDRI를 사용하세요. 나머지 모든 텍스처(당구 천, 공 번호, 바닥)는 Canvas에서 절차적으로 생성하세요(결정론적 PRNG를 사용하며 로드할 때마다 동일해야 함). 당구 게임플레이: Rapier 강체 물리, 규격 57.2mm 공, 모델의 쿠션에 맞춘 테이블 표면을 사용하세요. 1인칭 이동 모드(WASD)에 E 키를 눌러 몸을 숙이고 조준하는 기능을 더하세요. 왼쪽 버튼을 길게 눌러 파워를 모으고, 스크롤 휠로 파워를 미세 조절하며, Space 키로 샷을 합니다. A/D는 사이드 스핀, W/S는 전진·역회전, R은 큐 초기화, F는 자유 배치, T는 재배치, G는 대전과 연습 전환에 사용하세요. 조준 가이드 라인은 켜고 끌 수 있어야 합니다. 물리 코어(sim.js)는 렌더링(world.js)과 분리하세요. 물리는 유일한 기준 데이터이며 렌더링은 읽기만 하고 쓰지 않아야 합니다. 물리 코어는 DOM에 의존하지 않고 Node에서 테스트를 실행할 수 있어야 합니다. 규칙: 로컬 2인용 간소화 차이니즈 에이트볼(브레이크 후 처음 포트에 넣은 공으로 그룹을 정하고, 검은 8번 공으로 승부가 결정되며, 파울 시 자유 배치권을 부여)과 자유 연습 모드를 제공하세요. 점수판, 콤보 불꽃, 업적 배지, 포트 근접 카메라(비활성화 가능)도 추가하세요. 게임을 차이니즈 에이트볼에서 스누커로 변경하세요. 레드 15개가 놓인 12피트 테이블을 사용하고, 득점 시 레드와 컬러를 번갈아 넣으며, 컬러 공을 포트에 넣은 뒤에는 다시 제자리에 놓으세요. 센추리 브레이크 배지와 점수판을 추가하되, 다트와 주사위 바 미니게임은 변경하지 마세요. 리플레이 시스템: 모든 샷을 리플레이(V)할 수 있어야 하며, 드래그 가능한 타임라인과 0.1x~1x 가변 속도를 제공하세요. 바 미니게임(소품은 장면에 항상 배치되며 플레이어가 다가가면 실행): 다트(표준 20구역 보드, 궤적 계산기, 라운드당 다트 3개, 180 배지), 주사위 컵 하이로우(실제 주사위 컵 모델과 흔들기용 별도 Rapier 미니 월드), 위스키 따르기, 러시안룰렛(리볼버 모델)을 포함하세요. 오디오: Freesound 커뮤니티의 실제 CC0 당구 샘플(공 충돌, 쿠션, 포켓, 브레이크, 랙, 환호성 및 무작위로 재생되는 여러 슬라이스 변형)과 Web Audio 절차적 실내 리버브(노이즈 감쇠로 생성한 임펄스 응답), 리미터를 사용하세요. BGM용 라운지 재즈 루프는 사용자가 제공하며, M 키로 음소거합니다. 엔지니어링: import map으로 three/rapier를 불러오고, i18n 사전으로 모든 문구를 관리하세요. 설정 패널(언어 / 포트 근접 카메라 / 조준 가이드)과 "소개 · 오픈 소스 에셋 및 라이선스" 크레딧 패널을 제공하세요. test/ 아래에 물리, 다트, 바 로직을 위한 Node 테스트 스위트 3개를 두세요.
Three.js + Rapier (@dimforge/rapier3d-compat)를 사용해 "CLUB No.9"라는 이름의 순수 정적 방식이며 빌드 단계가 필요 없는 1인칭 물리 기반 당구 웹 게임을 만드세요. 중국어 인터페이스(중국어-영어 전환), 데스크톱 키보드·마우스 조작, 터치스크린에서의 자동 관전자 모드를 제공해야 합니다. 요구 사항: 장면: Sketchfab의 바 모델 Bar Diorama를 당구장으로 불러오되 내장 테이블은 숨기고, 쿠션과 큐의 목재 마감에는 Poly Haven 호두나무 텍스처를, 환경 반사에는 벽난로 HDRI를 사용하세요. 나머지 모든 텍스처(당구 천, 공 번호, 바닥)는 Canvas에서 절차적으로 생성하세요(결정론적 PRNG를 사용하며 로드할 때마다 동일해야 함). 당구 게임플레이: Rapier 강체 물리, 규격 57.2mm 공, 모델의 쿠션에 맞춘 테이블 표면을 사용하세요. 1인칭 이동 모드(WASD)에 E 키를 눌러 몸을 숙이고 조준하는 기능을 더하세요. 왼쪽 버튼을 길게 눌러 파워를 모으고, 스크롤 휠로 파워를 미세 조절하며, Space 키로 샷을 합니다. A/D는 사이드 스핀, W/S는 전진·역회전, R은 큐 초기화, F는 자유 배치, T는 재배치, G는 대전과 연습 전환에 사용하세요. 조준 가이드 라인은 켜고 끌 수 있어야 합니다. 물리 코어(sim.js)는 렌더링(world.js)과 분리하세요. 물리는 유일한 기준 데이터이며 렌더링은 읽기만 하고 쓰지 않아야 합니다. 물리 코어는 DOM에 의존하지 않고 Node에서 테스트를 실행할 수 있어야 합니다. 규칙: 로컬 2인용 간소화 차이니즈 에이트볼(브레이크 후 처음 포트에 넣은 공으로 그룹을 정하고, 검은 8번 공으로 승부가 결정되며, 파울 시 자유 배치권을 부여)과 자유 연습 모드를 제공하세요. 점수판, 콤보 불꽃, 업적 배지, 포트 근접 카메라(비활성화 가능)도 추가하세요. 챌린지 모드를 추가하세요. 20개의 사전 설정 테이블 배치를 한두 번의 샷으로 모두 처리해야 합니다. 사용 시간과 샷 횟수를 기준으로 각 레벨을 최대 별 3개로 평가하세요. 메인 메뉴에 레벨 선택 화면을 추가하고, 챌린지 완료 시 새로운 큐 스킨을 잠금 해제하세요. 리플레이 시스템: 모든 샷을 리플레이(V)할 수 있어야 하며, 드래그 가능한 타임라인과 0.1x~1x 가변 속도를 제공하세요. 바 미니게임(소품은 장면에 항상 배치되며 플레이어가 다가가면 실행): 다트(표준 20구역 보드, 궤적 계산기, 라운드당 다트 3개, 180 배지), 주사위 컵 하이로우(실제 주사위 컵 모델과 흔들기용 별도 Rapier 미니 월드), 위스키 따르기, 러시안룰렛(리볼버 모델)을 포함하세요. 오디오: Freesound 커뮤니티의 실제 CC0 당구 샘플(공 충돌, 쿠션, 포켓, 브레이크, 랙, 환호성 및 무작위로 재생되는 여러 슬라이스 변형)과 Web Audio 절차적 실내 리버브(노이즈 감쇠로 생성한 임펄스 응답), 리미터를 사용하세요. BGM용 라운지 재즈 루프는 사용자가 제공하며, M 키로 음소거합니다. 엔지니어링: import map으로 three/rapier를 불러오고, i18n 사전으로 모든 문구를 관리하세요. 설정 패널(언어 / 포트 근접 카메라 / 조준 가이드)과 "소개 · 오픈 소스 에셋 및 라이선스" 크레딧 패널을 제공하세요. test/ 아래에 물리, 다트, 바 로직을 위한 Node 테스트 스위트 3개를 두세요.
Three.js + Rapier (@dimforge/rapier3d-compat)를 사용해 "CLUB No.9"라는 이름의 순수 정적 방식이며 빌드 단계가 필요 없는 1인칭 물리 기반 당구 웹 게임을 만드세요. 중국어 인터페이스(중국어-영어 전환), 데스크톱 키보드·마우스 조작, 터치스크린에서의 자동 관전자 모드를 제공해야 합니다. 요구 사항: 장면: Sketchfab의 바 모델 Bar Diorama를 당구장으로 불러오되 내장 테이블은 숨기고, 쿠션과 큐의 목재 마감에는 Poly Haven 호두나무 텍스처를, 환경 반사에는 벽난로 HDRI를 사용하세요. 나머지 모든 텍스처(당구 천, 공 번호, 바닥)는 Canvas에서 절차적으로 생성하세요(결정론적 PRNG를 사용하며 로드할 때마다 동일해야 함). 당구 게임플레이: Rapier 강체 물리, 규격 57.2mm 공, 모델의 쿠션에 맞춘 테이블 표면을 사용하세요. 1인칭 이동 모드(WASD)에 E 키를 눌러 몸을 숙이고 조준하는 기능을 더하세요. 왼쪽 버튼을 길게 눌러 파워를 모으고, 스크롤 휠로 파워를 미세 조절하며, Space 키로 샷을 합니다. A/D는 사이드 스핀, W/S는 전진·역회전, R은 큐 초기화, F는 자유 배치, T는 재배치, G는 대전과 연습 전환에 사용하세요. 조준 가이드 라인은 켜고 끌 수 있어야 합니다. 물리 코어(sim.js)는 렌더링(world.js)과 분리하세요. 물리는 유일한 기준 데이터이며 렌더링은 읽기만 하고 쓰지 않아야 합니다. 물리 코어는 DOM에 의존하지 않고 Node에서 테스트를 실행할 수 있어야 합니다. 규칙: 로컬 2인용 간소화 차이니즈 에이트볼(브레이크 후 처음 포트에 넣은 공으로 그룹을 정하고, 검은 8번 공으로 승부가 결정되며, 파울 시 자유 배치권을 부여)과 자유 연습 모드를 제공하세요. 점수판, 콤보 불꽃, 업적 배지, 포트 근접 카메라(비활성화 가능)도 추가하세요. 초보자용 튜토리얼 모드를 추가하세요. 몸을 숙여 조준하기, 파워 모으기와 세기 조절, 사이드 스핀과 전진·역회전, 수구 위치 선정의 네 가지 레슨을 포함합니다. 각 레슨에는 데모 애니메이션과 직접 해보는 드릴 3개를 제공하며, 드릴 중에는 조준 가이드가 강제로 켜지고 수구의 목표 지점이 표시됩니다. 리플레이 시스템: 모든 샷을 리플레이(V)할 수 있어야 하며, 드래그 가능한 타임라인과 0.1x~1x 가변 속도를 제공하세요. 바 미니게임(소품은 장면에 항상 배치되며 플레이어가 다가가면 실행): 다트(표준 20구역 보드, 궤적 계산기, 라운드당 다트 3개, 180 배지), 주사위 컵 하이로우(실제 주사위 컵 모델과 흔들기용 별도 Rapier 미니 월드), 위스키 따르기, 러시안룰렛(리볼버 모델)을 포함하세요. 오디오: Freesound 커뮤니티의 실제 CC0 당구 샘플(공 충돌, 쿠션, 포켓, 브레이크, 랙, 환호성 및 무작위로 재생되는 여러 슬라이스 변형)과 Web Audio 절차적 실내 리버브(노이즈 감쇠로 생성한 임펄스 응답), 리미터를 사용하세요. BGM용 라운지 재즈 루프는 사용자가 제공하며, M 키로 음소거합니다. 엔지니어링: import map으로 three/rapier를 불러오고, i18n 사전으로 모든 문구를 관리하세요. 설정 패널(언어 / 포트 근접 카메라 / 조준 가이드)과 "소개 · 오픈 소스 에셋 및 라이선스" 크레딧 패널을 제공하세요. test/ 아래에 물리, 다트, 바 로직을 위한 Node 테스트 스위트 3개를 두세요.
