레이싱 · SOURCE GUIDE
NEON CIRCUIT
코너가 이어지는 도로에서 가속과 부스트를 조절하는 레이싱 게임입니다. 화면의 속도감과 실제 주행 계산이 어떻게 나뉘는지 소스로 살펴봅니다.
AI Tools Lab · · 소스 v1.0.0

빠르게 달리는 것보다 코너를 읽는 게임
NEON CIRCUIT은 여섯 대의 차량이 세 바퀴를 도는 레이싱 게임입니다. 직선에서는 속도를 올리고, 코너에서는 도로 밖으로 밀려나지 않도록 조향과 감속을 함께 사용합니다. 부스트는 무제한 가속 버튼이 아니라 남은 게이지와 현재 속도를 함께 고려하는 자원입니다.
자동 가속을 켜면 조향에 집중하기 쉽습니다. 코너의 변화를 먼저 익힌 뒤 수동 가속으로 바꾸면, 같은 길에서 입력을 하나 더 관리할 때 판단이 어떻게 달라지는지 비교할 수 있습니다.
화면과 주행 계산을 나누어 읽기
dist/game.js에는 Race 클래스, 키 입력, 화면 상태와 오디오 연결이 들어 있습니다. dist/renderer.js는 도로와 차량을 그리는 역할을 맡습니다. index.html은 메뉴·기록판·버튼, style.css는 배치를 담당합니다.
화면이 원근감 있게 보이더라도 차량의 진행 거리는 별도의 수치입니다. distance는 트랙 진행, x는 좌우 위치, speed는 속도를 나타냅니다. 먼저 이 세 값이 언제 바뀌는지 읽으면 도로 그림을 모두 이해하지 않아도 조작의 원리를 따라갈 수 있습니다.
가속보다 중요한 것은 제한 조건
Race의 maxSpeed 기본값은 2200입니다. 이 값은 내부 계산 단위이며 화면에 표시되는 km/h와 같은 숫자가 아닙니다. curveAt()은 진행 거리에 해당하는 커브를 구하고, step()은 가속·브레이크·노면 밖 감속과 차량 간 상호작용을 처리합니다.
주행 거리가 결승선을 넘었는지를 검사할 때도 한 프레임의 위치만 보는 대신 이전 거리와 새 거리를 비교합니다. 빠른 이동에서 특정 지점을 건너뛰는 문제를 다루는 예로 읽어볼 만합니다.
직접 바꿔볼 과제: 빠른 차가 더 쉬울까요?
- 원본 복사본을 보관하고
maxSpeed만 소폭 올린 버전을 만듭니다. - 같은 코너에서 도로를 벗어나는 빈도와 조향 여유를 비교합니다.
- 다음에는 속도 대신 트랙 생성 부분의 곡률 계수 하나만 바꿉니다.
속도와 곡률을 동시에 바꾸면 무엇이 주행감을 바꿨는지 구분하기 어렵습니다. 화면의 기록만 보는 대신 코너 진입 직전의 속도와 조향 방향을 함께 메모해 보세요.
실행하면서 확인할 부분
시작 카운트다운 뒤 가속이 되는지, 일시정지 중 기록이 멈추는지, 재시작 시 랩과 시간이 초기화되는지 확인합니다. 최고 기록은 브라우저의 neon-circuit-best 저장 항목을 사용하므로 다른 기기와 공유되는 온라인 순위가 아닙니다.
내 컴퓨터에서 실행하기
- 소스 ZIP을 내려받고 압축을 풉니다.
README.md와dist가 있는 폴더에서 터미널을 엽니다.- 아래 명령을 실행한 뒤
http://127.0.0.1:8080/에 접속합니다.
python3 -m http.server 8080 --bind 127.0.0.1 --directory distWindows에서는 python3 대신 py를 사용할 수 있습니다. Python이 없다면 코드 편집기의 로컬 정적 서버를 dist에 연결하세요. 종료는 Ctrl + C입니다.
HTML 파일 더블 클릭보다 로컬 서버를 권장합니다. 모듈·이미지 경로를 일관되게 읽을 수 있습니다. 포트가 사용 중이면 8081 등으로 바꾸고 접속 주소에도 반영하세요. npm 설치나 별도 게임 빌드는 필요하지 않습니다.
이 소스로 할 수 있는 일
이 ZIP에 포함된 AI Tools Lab 제작 소스와 게임 에셋은 개인·상업 목적으로 사용, 복제, 수정, 재배포할 수 있습니다. 저작권 소유권이 양도되는 것은 아닙니다. 이 허락은 AI Tools Lab 사이트의 다른 콘텐츠에는 적용되지 않습니다. 포함되지 않은 외부 폰트·상표 등 제3자 자료는 각 권리자의 조건을 따릅니다.
설명에 있는 수정 과제는 직접 비교해 볼 실습 제안입니다. 수행하지 않은 테스트 결과나 제작 당시의 경험을 의미하지 않습니다. 오류를 발견했다면 게임명·브라우저·조작 순서와 함께 알려주세요.