게임편집 예시

봇과 대전하는 3D 카트 게임 만들기

차량 조작과 벽 충돌을 먼저 만들고 봇·점수·재시작을 연결합니다. 작은 독자적 경기장에서 입력 중단과 라운드 초기화까지 확인하는 제작 가이드입니다.

GPT-6 Astra · Three.js · JavaScript · Web Audio

작성 AI Tools Lab 운영자오류 제보·정정 요청
차량 세 대와 점수판을 배치한 단색 카트 경기장 콘셉트 이미지
AI 생성 콘셉트 이미지 · 실제 실행 캡처가 아닙니다. 내 자료와 목적에 맞춰 새로 만들어 보세요.

01준비할 자료

  • 독자적인 경기장 스케치: 바깥 벽, 장애물 3개, 차량 출발 위치와 점수 아이템 위치를 정합니다.
  • 작은 첫 규칙: 플레이어 1대와 봇 2대가 60초 동안 점수 아이템을 모읍니다. 원작의 무기·상표·맵을 사용하지 않습니다.
  • 키보드 조작표와 휴대전화 버튼 배치. 동시에 전진·좌회전을 누를 수 있는지, 손을 떼면 어떻게 멈출지 정합니다.
  • 종료와 재시작의 초기 상태: 차량 위치, 점수, 남은 시간, 아이템, 입력과 소리 상태를 목록으로 만듭니다.

아래 도구는 이 예시의 구현 방향입니다. 선택한 AI 도구에서 코드·파일을 다룰 수 있는지 먼저 확인하고, 설치 버전과 실행 방법을 기록하세요.

02시작 프롬프트

대괄호 안을 내 정보로 바꿔서 사용하세요.

GPT-6 Astra로 [경기장 스케치]를 바탕으로 작은 Three.js 카트 게임을 만들어 주세요.
원작 브랜드·차량·맵·무기·그래픽을 복제하지 말고 단순 도형의 새 차량과 경기장을 사용하세요. 단색 배경·재질·UI만 사용하고 그라디언트 효과를 넣지 마세요.
첫 버전은 플레이어 1대와 봇 2대, 60초 제한, 바닥 점수 아이템 수집입니다. 아이템 하나당 1점이며 같은 아이템을 여러 차량이 동시에 중복 획득할 수 없어야 합니다.
차량 조작과 벽 충돌을 먼저 완성한 뒤 봇을 추가하세요. 이동은 프레임 간 경과 시간을 기준으로 계산하고 화면 복귀 때 큰 시간 차로 차량이 튀지 않게 처리하세요. 탭이 숨겨지면 경기 시간과 움직임을 함께 일시정지하고 화면 복귀 때 재개하세요.
키보드 WASD/방향키와 동시에 누를 수 있는 터치 버튼을 제공하세요. 키·손가락 해제, pointercancel, 창의 초점 이탈에는 입력을 초기화하세요.
봇은 아이템을 목표로 움직이고 벽 근처에서 방향을 바꿉니다. 일정 시간 진행하지 못하면 새 목표를 고르게 하세요.
라운드 종료에는 조작과 점수 계산을 멈추고 결과를 보여 주세요. 재시작하면 차량·아이템·점수·시간·입력 상태를 모두 초기화하고 이벤트와 애니메이션 루프를 중복 등록하지 마세요.
소리는 사용자의 시작 동작 이후에만 재생하고 음소거 버튼을 두세요. 서버·온라인 방·Discord 연동은 제외합니다.
충돌, 봇 정체, 입력 중단, 종료 직전 획득, 반복 재시작을 확인하는 절차를 함께 설명하세요.

03만들고 다듬는 순서

  1. 첫 경기의 재미를 작은 규칙으로 정합니다

    공개 카트 사례는 온라인 대전과 여러 무기를 포함하지만, 이 레시피는 새 경기장에서 점수 아이템을 모으는 로컬 봇 경기로 시작합니다. 공격·추적 미사일·온라인 방까지 한 번에 요청하면 조작이 불편한 이유를 찾기 어렵습니다. 첫 성공 조건은 차량을 움직여 벽에 막히고 아이템 한 개를 얻는 것입니다.

  2. 차량 하나로 입력과 충돌을 확인합니다

    봇을 추가하기 전에 전진·후진·좌우 회전과 벽 충돌을 확인합니다. 차량이 모서리에 끼면 경기장 모양과 충돌 처리 중 어디가 원인인지 나누어 요청합니다. 매 프레임 고정 거리를 이동하면 화면 갱신 속도에 따라 속도가 달라질 수 있으므로 경과 시간을 사용하는지 확인합니다.

  3. 손을 뗀 뒤에도 움직이는 문제를 잡습니다

    손을 뗐는데도 차량이 계속 달린다면 눌린 입력이 남아 있는지 살펴보세요. 손가락이 버튼 밖으로 나가거나 알림·다른 창으로 이동한 뒤에도 같은 문제가 생길 수 있습니다. 전진과 회전 버튼은 동시에 누를 수 있게 하고, 각 손가락의 입력을 따로 관리하도록 요청합니다. 해제·취소·초점 이탈 때는 해당 입력 상태가 초기화되어야 합니다.

  4. 봇은 관찰 가능한 작은 행동으로 넣습니다

    봇 두 대를 추가하고 가까운 아이템 선택, 목표를 향한 회전, 벽 회피만 먼저 둡니다. 벽 앞에서 정지한 봇이 오래 같은 목표를 유지하면 일정 시간의 이동 거리로 정체를 판단해 목표를 바꾸게 합니다. 처음부터 사람 같은 지능을 요구하기보다 어떤 상황에서 움직임이 막히는지 관찰합니다.

  5. 점수와 종료 시점을 한 규칙으로 묶습니다

    한 아이템을 동시에 밟아도 중복 점수가 나오지 않게 수집 여부를 먼저 갱신합니다. 제한 시간이 끝난 뒤 충돌 판정이나 늦은 효과가 점수를 더하지 않아야 합니다. 종료 직전 아이템을 얻는 경우를 시험하고 남은 시간 표시와 실제 경기 종료가 다른 시계로 움직이지 않게 합니다.

  6. 다시 시작해도 한 경기만 돌아가게 합니다

    재시작을 여러 번 한 뒤 속도가 빨라지거나 소리가 겹치면 반복 루프나 이벤트가 쌓인 것일 수 있습니다. 차량·아이템·점수·입력은 새 경기 상태로 돌리고 기존 이벤트를 재사용하거나 정리하도록 요청합니다. 소리는 시작 버튼 이후에만 켜고 음소거가 재시작 뒤에도 유지되게 합니다.

04완성 전 체크

직접 확인한 항목만 체크하세요. 체크 상태는 저장되거나 서버로 전송되지 않습니다.

05막힐 때 확인할 것

다른 창으로 다녀오면 차량이 계속 움직입니다

눌린 키와 터치 입력이 해제되지 않았는지 확인합니다. 초점 이탈과 pointercancel에서 가속·회전 상태를 지우고 화면 복귀 때 지나치게 큰 프레임 시간 차를 그대로 적용하지 않도록 요청합니다.

봇이 벽에 붙은 채 아이템을 향해 회전만 합니다

벽 충돌에 대한 방향 변경과 정체 판단을 분리해 요청합니다. 일정 시간 위치 변화가 작으면 현재 목표를 버리고 다른 아이템이나 복귀 지점을 선택하게 합니다.

재시작할 때마다 속도나 소리의 겹침이 늘어납니다

재시작이 requestAnimationFrame과 이벤트를 새로 등록하는지 확인합니다. 루프는 한 개만 유지하고 경기 상태를 초기화하는 방식으로 바꾸며, 사용을 마친 음원과 임시 객체도 정리하게 합니다.

06출처와 참고 자료

아래 공개 사례는 주제의 참고 자료입니다. 이 글의 도구 선택·절차·프롬프트는 AI Tools Lab의 독립적인 편집 예시이며, 원 제작자의 실제 입력이나 실행 재현 기록이 아닙니다.

amsminn의 공개 제작 기록은 GPT-6 Astra로 만든 카트 사례와 로컬 봇 연습·별도 온라인 서버의 구분을 제공합니다. 위 프롬프트는 그 원작을 복제하지 않고 새로운 수집 경기 규칙으로 구성한 편집 예시입니다.