ai21.net
언어

Ignition (1997)에서 영감을 받은 레이싱 게임 제작: 기울어진 탑다운…

Ignition (1997)에서 영감을 받은 레이싱 게임 제작: 기울어진 탑다운… — 1

프롬프트

Build a racing game inspired by Ignition (1997): angled top-down camera, arcade-leaning
physics, vehicles with very distinct personalities. This must be an original game,
not a copy. Use an original name, an original track, and zero original assets.

## Stack
- Vite + TypeScript (strict), Three.js for rendering, no UI framework
  (HUD in plain DOM/CSS).
- Low-poly graphics generated in code (BoxGeometry, CylinderGeometry, etc.),
  no external models or textures. Solid colors and simple materials.
- Custom simplified 2.5D physics (movement on the XZ plane, height from terrain).
  No physics engine.

## Architecture
- src/game/ (game loop with fixed timestep), src/vehicles/, src/track/, src/ai/,
  src/render/, src/ui/
- Vehicles are data-driven: mass, power, top speed, grip, steering, collision
  resistance, and boost parameters (strength, duration, recharge time).
  One Vehicle class, different configurations.
- Any vehicle can be controlled by either the player or the AI
  (shared control interface: throttle, brake, steer, boost).
- Track as data: centerline spline + width + list of zones
  (ice, shortcut, obstacle). Generate the road mesh and AI waypoints from it.

## Vehicles (original names, no brands)
Four vehicles. The player picks one on the selection screen; the remaining 3
are driven by the AI.
- 90s-style police sedan (black and white, light bar): heavy, stable,
  pushes hard in collisions.
- Muscle car convertible: fastest on straights, oversteers in corners.
- Red monster truck: slow, but ignores bumps and rams everything else.
- Postal delivery van: slow, high center of gravity, sways in corners.
The handling differences must be clearly noticeable. All four must be playable
and competitive. Slower vehicles compensate with e.g. collision resistance,
terrain handling, or a stronger or more frequent boost.

## Boost
- Every vehicle has a boost: a short, pronounced acceleration beyond its
  normal top speed.
- Boost charges automatically from 0 to 100%. It can only be used at 100%.
  After use, the meter drops to 0 and starts charging again.
- Strength, duration and recharge time are unique to each vehicle
  (e.g. muscle car: short and very strong; van: weaker but recharges fast;
  monster truck: long but slow to recharge).
- Visual effect while boosting: exhaust flame or trail, slight camera
  pull-back.
- The AI also uses boost, sensibly: on straights, not before sharp corners
  or on ice.

## Track
A mountain town with a Canadian feel, winter turning into spring thaw:
- closed loop, roughly 60–90 seconds per lap
- a waterfall visible from the track and a wooden bridge over a river
- a railroad crossing with a train passing periodically
  (collision = strong knockback, not game over)
- ice patches with reduced grip
- one shortcut (tight, risky); decorations: spruce trees, wooden houses, snow
- barriers or natural obstacles so vehicles can't get stuck off the track.
  Failsafe: if a vehicle (including bots) is stuck for more than ~4 s,
  automatically return it to the track at the last checkpoint.

## Gameplay
- 3 laps, standing grid start, 3-2-1 countdown
- AI follows waypoints with a driving style that depends on the vehicle,
  light rubber-banding, avoids obstacles, no teleporting (except the
  failsafe track return described above)
- Sliding comes purely from physics (grip, speed, ice), no handbrake
- Camera: top-down at ~50°, follows the player with a slight look-ahead
  in the direction of travel
- Controls: arrows/WASD (throttle, brake/reverse, steering), space = boost
- Screens: start → vehicle selection (model preview + stat bars, including
  boost) → race → results → restart (with option to change vehicle)

## HUD
- Position, lap, lap time, best lap, minimap.
- Boost meter styled as a car battery: rectangular casing with two terminals
  (+/−) on top, fill level rises as it charges. Color shifts from red through
  yellow to green. At 100% the battery clearly signals readiness (pulsing or
  glow, "BOOST" label or lightning bolt icon). While boosting, the meter
  drains quickly.

## Out of scope for v1
Sound, options menu, multiple tracks, multiplayer, save state.

## Workflow
1. First propose a plan and file structure, then implement in stages:
   (a) game loop + one vehicle on a flat plane, including boost,
   (b) track, (c) remaining vehicles and AI, (d) obstacles and train,
   (e) vehicle selection, HUD with battery meter, and screens.
2. After each stage run `npm run build` and fix type errors.
3. Add unit tests (Vitest) for vehicle physics, boost logic (charging,
   lockout below 100%, reset after use), and lap/position logic.
4. Finally: a README describing the controls and how to add a new track
   or vehicle.

## Acceptance criteria
`npm install && npm run dev` launches the game. You can pick any of the 4
vehicles and complete 3 laps against 3 bots. Each vehicle handles differently
and has a noticeably different boost. Boost only works with a full battery,
and bots use it too. The train and ice work. Results show the correct order.
Stable 60 FPS on an average laptop.

한국어 번역

Ignition (1997)에서 영감을 받은 레이싱 게임을 만드세요: 기울어진 탑다운 카메라, 아케이드 성향의
물리, 각기 뚜렷한 개성을 지닌 차량. 이것은 독창적인 게임이어야 하며,
복제품이어서는 안 됩니다. 독창적인 이름과 독창적인 트랙을 사용하고, 원작의 에셋은 전혀 쓰지 마세요.

## 스택
- Vite + TypeScript (strict), 렌더링에는 Three.js, UI 프레임워크 없음
  (HUD는 순수 DOM/CSS로).
- 코드로 생성하는 로우폴리 그래픽(BoxGeometry, CylinderGeometry 등),
  외부 모델이나 텍스처 없음. 단색과 단순한 머티리얼.
- 직접 구현한 단순화된 2.5D 물리(XZ 평면에서의 이동, 지형에서 얻는 높이).
  물리 엔진 없음.

## 아키텍처
- src/game/ (고정 타임스텝 게임 루프), src/vehicles/, src/track/, src/ai/,
  src/render/, src/ui/
- 차량은 데이터 기반: 질량, 출력, 최고 속도, 그립, 조향, 충돌
  저항, 그리고 부스트 매개변수(강도, 지속 시간, 재충전 시간).
  하나의 Vehicle 클래스, 서로 다른 설정.
- 어떤 차량이든 플레이어나 AI가 조종할 수 있음
  (공유 조작 인터페이스: 스로틀, 브레이크, 조향, 부스트).
- 트랙은 데이터로: 중심선 스플라인 + 폭 + 구역 목록
  (얼음, 지름길, 장애물). 이로부터 도로 메시와 AI 웨이포인트를 생성.

## 차량 (독창적인 이름, 브랜드 없음)
차량 네 대. 플레이어는 선택 화면에서 한 대를 고르고, 나머지 3대는
AI가 운전합니다.
- 90년대 스타일 경찰 세단(흑백, 라이트 바): 무겁고 안정적이며,
  충돌 시 강하게 밀어붙임.
- 머슬카 컨버터블: 직선에서 가장 빠르고, 코너에서 오버스티어.
- 빨간 몬스터 트럭: 느리지만 요철을 무시하고 다른 모든 것을 들이받음.
- 우편 배달 밴: 느리고 무게 중심이 높으며, 코너에서 흔들림.
핸들링 차이는 확실히 체감되어야 합니다. 네 대 모두 플레이 가능하고
경쟁력이 있어야 합니다. 느린 차량은 예를 들어 충돌 저항,
지형 주행 성능, 또는 더 강하거나 더 잦은 부스트로 이를 보완합니다.

## 부스트
- 모든 차량에는 부스트가 있음: 평소 최고 속도를 넘어서는 짧고 뚜렷한
  가속.
- 부스트는 0에서 100%까지 자동으로 충전됨. 100%에서만 사용 가능.
  사용 후 게이지는 0으로 떨어지고 다시 충전을 시작함.
- 강도, 지속 시간, 재충전 시간은 차량마다 고유함
  (예: 머슬카는 짧고 매우 강함, 밴은 약하지만 빠르게 재충전,
  몬스터 트럭은 길지만 재충전이 느림).
- 부스트 중 시각 효과: 배기 화염 또는 궤적, 약간의 카메라
  뒤로 물러남.
- AI도 부스트를 합리적으로 사용함: 직선에서, 급한 코너 직전이나
  얼음 위에서는 사용하지 않음.

## 트랙
캐나다의 분위기가 나는 산간 마을, 겨울이 봄 해빙으로 바뀌는 시기:
- 폐쇄 루프, 랩당 대략 60–90초
- 트랙에서 보이는 폭포와 강 위의 나무 다리
- 정기적으로 기차가 지나가는 철도 건널목
  (충돌 = 강한 넉백, 게임 오버는 아님)
- 그립이 감소하는 얼음 구간
- 지름길 하나(좁고 위험함), 장식: 가문비나무, 나무집, 눈
- 차량이 트랙 밖에 갇히지 않도록 배리어나 자연 장애물.
  안전장치: 차량(봇 포함)이 약 4초 이상 갇혀 있으면,
  마지막 체크포인트에서 자동으로 트랙으로 복귀시킴.

## 게임플레이
- 3랩, 정지 상태 그리드 출발, 3-2-1 카운트다운
- AI는 웨이포인트를 따르며, 주행 스타일은 차량에 따라 다름,
  가벼운 러버밴딩, 장애물 회피, 텔레포트 없음(위에서 설명한
  안전장치 트랙 복귀는 예외)
- 슬라이딩은 순전히 물리에서 나옴(그립, 속도, 얼음), 핸드브레이크 없음
- 카메라: 약 50°의 탑다운, 진행 방향으로 약간 미리 보면서
  플레이어를 따라감
- 조작: 화살표/WASD(스로틀, 브레이크/후진, 조향), 스페이스 = 부스트
- 화면: 시작 → 차량 선택(모델 미리보기 + 스탯 바, 부스트 포함)
  → 레이스 → 결과 → 재시작(차량 변경 옵션 포함)

## HUD
- 순위, 랩, 랩 타임, 베스트 랩, 미니맵.
- 자동차 배터리 모양의 부스트 게이지: 상단에 두 개의 단자
  (+/−)가 있는 직사각형 케이스, 충전되면 채움 수위가 올라감. 색상은 빨강에서
  노랑을 거쳐 초록으로 변함. 100%에서 배터리는 준비 완료를 명확히 알림(맥동 또는
  발광, "BOOST" 라벨 또는 번개 아이콘). 부스트 중에는 게이지가
  빠르게 소모됨.

## v1 범위 밖
사운드, 옵션 메뉴, 여러 트랙, 멀티플레이어, 저장 상태.

## 작업 흐름
1. 먼저 계획과 파일 구조를 제안한 뒤, 단계적으로 구현:
   (a) 게임 루프 + 평평한 평면 위의 차량 한 대, 부스트 포함,
   (b) 트랙, (c) 나머지 차량과 AI, (d) 장애물과 기차,
   (e) 차량 선택, 배터리 게이지가 있는 HUD, 화면들.
2. 각 단계 후 `npm run build`를 실행하고 타입 오류를 수정.
3. 차량 물리, 부스트 로직(충전,
   100% 미만 잠금, 사용 후 초기화), 랩/순위 로직에 대한 단위 테스트(Vitest) 추가.
4. 마지막으로: 조작법과 새 트랙을 추가하는 방법을 설명하는 README
   또는 차량.

## 인수 기준
`npm install && npm run dev`로 게임이 실행됨. 4대 중 아무 차량이나 골라
3개의 봇을 상대로 3랩을 완주할 수 있음. 각 차량은 다르게 핸들링되고
눈에 띄게 다른 부스트를 가짐. 부스트는 배터리가 가득 찼을 때만 작동하며,
봇도 이를 사용함. 기차와 얼음이 작동함. 결과는 올바른 순서를 표시함.
일반적인 노트북에서 안정적인 60 FPS.

출처

원작자
_nieGRAMotny_
게시일
2026-09-24(由推文 ID 反解)
원문 출처
원문 보기 ↗
수록 출처
yihui-dev/awesome-opus5-5-videos · niegramotny-197521 · MIT