대전 액션 · SOURCE GUIDE
NEON CLASH
옥상에서 두 캐릭터가 맞붙는 대전 액션입니다. 공격의 준비·판정·회복 시간을 분리해 손맛과 빈틈을 만드는 방법을 소스로 살펴봅니다.
AI Tools Lab · · 소스 v1.0.0

공격력보다 먼저 볼 것은 빈틈
NEON CLASH는 약공격·강공격·발차기·방어를 섞어 상대의 빈틈을 찾는 게임입니다. 한 번의 공격을 빠르게 반복하는 것보다 거리를 맞추고 공격 뒤의 회복 시간을 읽는 일이 중요합니다. 라운드에는 제한 시간이 있고 두 라운드를 먼저 가져오는 방식입니다.
필살기는 게이지 조건이 있는 별도 행동입니다. 버튼이 항상 같은 결과를 만드는 것이 아니라 현재 상태와 자원에 따라 가능한 행동이 달라집니다.
전투 계산과 그림을 분리한 파일
dist/combat.js는 Game, CONFIG, 타격 판정과 상대 행동을 담당합니다. render.js는 캐릭터와 경기장을 그리고 game.js는 키 입력, 메뉴와 사운드를 연결합니다.
규칙을 읽을 때는 캐릭터를 그리는 코드보다 CONFIG.attacks부터 살펴보세요. startup, active, recovery는 준비·유효 판정·회복 시간이며 range와 damage는 거리와 피해량입니다. 수치는 초 단위의 시간과 연결되므로 단순히 화면 프레임 수라고 읽으면 안 됩니다.
공격 상자는 항상 존재하지 않습니다
attackbox()는 공격이 유효한 시간 구간에만 판정 영역을 돌려줍니다. hurtbox()는 공격을 받는 캐릭터의 범위를 정의합니다. 그림이 겹치는지와 실제 타격이 성립하는지를 나누어 생각하는 데 좋은 예입니다.
방어·경직·공중 상태 같은 조건도 공격 시작에 영향을 줍니다. 공격 수치 하나를 바꾼 뒤에는 연속 입력뿐 아니라 맞고 있는 상황에서도 규칙이 유지되는지 확인해야 합니다.
직접 바꿔볼 과제: 약공격의 역할 찾기
- 약공격의 피해량은 유지하고
recovery를 조금 늘려봅니다. - 연속 공격이 끊기는 지점과 상대가 반격할 여유를 비교합니다.
- 원래 값으로 되돌린 다음
range만 바꾸어 거리 싸움의 차이를 봅니다.
피해량·거리·속도를 동시에 늘리면 한 공격이 다른 공격의 역할까지 가져갈 수 있습니다. 한 변수를 고정하고 비교하는 것이 밸런스를 읽기 쉽습니다.
다시 시작과 일시정지 확인
이 게임의 일시정지 키는 Esc입니다. 다른 게임의 P 키와 혼동하지 마세요. 재시작 뒤 체력·라운드 승수·제한 시간이 초기화되는지, 카운트다운 중 공격이 시작되지 않는지를 확인합니다. 실습 결과는 상대 행동과 입력에 영향을 받으므로 한 번의 승패만으로 변경의 좋고 나쁨을 판단하지 않는 편이 좋습니다.
내 컴퓨터에서 실행하기
- 소스 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자 자료는 각 권리자의 조건을 따릅니다.
설명에 있는 수정 과제는 직접 비교해 볼 실습 제안입니다. 수행하지 않은 테스트 결과나 제작 당시의 경험을 의미하지 않습니다. 오류를 발견했다면 게임명·브라우저·조작 순서와 함께 알려주세요.