대전 액션 · SOURCE GUIDE

NEON CLASH

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

AI Tools Lab · · 소스 v1.0.0

NEON CLASH 실제 실행 캔버스 화면
로컬 브라우저에서 실행한 게임 캔버스입니다. 주변 메뉴·점수판 등은 제외했으며, 게임 내 순간에 따라 화면이 달라집니다.

공격력보다 먼저 볼 것은 빈틈

NEON CLASH는 약공격·강공격·발차기·방어를 섞어 상대의 빈틈을 찾는 게임입니다. 한 번의 공격을 빠르게 반복하는 것보다 거리를 맞추고 공격 뒤의 회복 시간을 읽는 일이 중요합니다. 라운드에는 제한 시간이 있고 두 라운드를 먼저 가져오는 방식입니다.

필살기는 게이지 조건이 있는 별도 행동입니다. 버튼이 항상 같은 결과를 만드는 것이 아니라 현재 상태와 자원에 따라 가능한 행동이 달라집니다.

전투 계산과 그림을 분리한 파일

dist/combat.js는 Game, CONFIG, 타격 판정과 상대 행동을 담당합니다. render.js는 캐릭터와 경기장을 그리고 game.js는 키 입력, 메뉴와 사운드를 연결합니다.

규칙을 읽을 때는 캐릭터를 그리는 코드보다 CONFIG.attacks부터 살펴보세요. startup, active, recovery는 준비·유효 판정·회복 시간이며 range와 damage는 거리와 피해량입니다. 수치는 초 단위의 시간과 연결되므로 단순히 화면 프레임 수라고 읽으면 안 됩니다.

공격 상자는 항상 존재하지 않습니다

attackbox()는 공격이 유효한 시간 구간에만 판정 영역을 돌려줍니다. hurtbox()는 공격을 받는 캐릭터의 범위를 정의합니다. 그림이 겹치는지와 실제 타격이 성립하는지를 나누어 생각하는 데 좋은 예입니다.

방어·경직·공중 상태 같은 조건도 공격 시작에 영향을 줍니다. 공격 수치 하나를 바꾼 뒤에는 연속 입력뿐 아니라 맞고 있는 상황에서도 규칙이 유지되는지 확인해야 합니다.

직접 바꿔볼 과제: 약공격의 역할 찾기

  1. 약공격의 피해량은 유지하고 recovery를 조금 늘려봅니다.
  2. 연속 공격이 끊기는 지점과 상대가 반격할 여유를 비교합니다.
  3. 원래 값으로 되돌린 다음 range만 바꾸어 거리 싸움의 차이를 봅니다.

피해량·거리·속도를 동시에 늘리면 한 공격이 다른 공격의 역할까지 가져갈 수 있습니다. 한 변수를 고정하고 비교하는 것이 밸런스를 읽기 쉽습니다.

다시 시작과 일시정지 확인

이 게임의 일시정지 키는 Esc입니다. 다른 게임의 P 키와 혼동하지 마세요. 재시작 뒤 체력·라운드 승수·제한 시간이 초기화되는지, 카운트다운 중 공격이 시작되지 않는지를 확인합니다. 실습 결과는 상대 행동과 입력에 영향을 받으므로 한 번의 승패만으로 변경의 좋고 나쁨을 판단하지 않는 편이 좋습니다.

내 컴퓨터에서 실행하기

  1. 소스 ZIP을 내려받고 압축을 풉니다.
  2. README.md와 dist가 있는 폴더에서 터미널을 엽니다.
  3. 아래 명령을 실행한 뒤 http://127.0.0.1:8080/에 접속합니다.
python3 -m http.server 8080 --bind 127.0.0.1 --directory dist

Windows에서는 python3 대신 py를 사용할 수 있습니다. Python이 없다면 코드 편집기의 로컬 정적 서버를 dist에 연결하세요. 종료는 Ctrl + C입니다.

HTML 파일 더블 클릭보다 로컬 서버를 권장합니다. 모듈·이미지 경로를 일관되게 읽을 수 있습니다. 포트가 사용 중이면 8081 등으로 바꾸고 접속 주소에도 반영하세요. npm 설치나 별도 게임 빌드는 필요하지 않습니다.

이 소스로 할 수 있는 일

이 ZIP에 포함된 AI Tools Lab 제작 소스와 게임 에셋은 개인·상업 목적으로 사용, 복제, 수정, 재배포할 수 있습니다. 저작권 소유권이 양도되는 것은 아닙니다. 이 허락은 AI Tools Lab 사이트의 다른 콘텐츠에는 적용되지 않습니다. 포함되지 않은 외부 폰트·상표 등 제3자 자료는 각 권리자의 조건을 따릅니다.

설명에 있는 수정 과제는 직접 비교해 볼 실습 제안입니다. 수행하지 않은 테스트 결과나 제작 당시의 경험을 의미하지 않습니다. 오류를 발견했다면 게임명·브라우저·조작 순서와 함께 알려주세요.