← 개발 방식
프로토타입 개인 프로젝트 · 코드 공개 · 2026

부상 연구로 검증한 인체 물리 엔진

미리 만들어 둔 애니메이션이 아니라 실제 물리로 몸이 타격에 반응하는, 장난감 같은 프로그램을 만들고 싶었습니다. 게임을 만들어 본 적이 없어서, AI 코딩 에이전트에게 지시해 엔진을 만들게 했습니다. 피부, 근육, 뼈가 타격 하나하나에 반응하며, 누구나 브라우저에서 해 볼 수 있습니다.

역할
목표를 정하고 결과를 판단했습니다. 코드는 코딩 에이전트가 제가 정한 규칙과 검증 절차에 따라 작성했으며, 2026년 10월부터는 Claude Code가 작성하고 있습니다.
상태
플레이할 수 있는 프로토타입입니다. 브라우저 버전은 2026년 10월부터 온라인에서 실행할 수 있고, 코드는 GitHub에 공개되어 있습니다.
기술 스택
Windows와 브라우저(WebAssembly)에서 함께 쓰는 하나의 코드베이스, GitHub Pages, Claude Code
규모
스크립트로 정한 테스트 스윙 27개이며, 하나하나를 부상 연구와 비교해 검증합니다.

문제

게임은 보통 미리 만든 애니메이션과 그려 넣은 상처로 부상을 표현합니다. 저는 멍, 베인 상처, 부러진 뼈가 모두 타격 자체의 물리에서 생겨나기를 바랐습니다.

코딩 에이전트가 얼마나 좋아졌는지 보고, 2026년 5월에 이 프로젝트를 시작했습니다.

발전 과정

2026년 6월에 만든 첫 버전에는 간단한 픽셀 아트로 그린 몸이 나왔습니다. 피부, 근육, 뼈가 찢어지고 부러질 수는 있었습니다. 하지만 세 층은 아직 서로 잘 맞물려 움직이지 않았고, 뼈는 정해진 패턴대로 부러졌습니다.

6월 말에는 에이전트가 엔진 전체를 다시 작성했습니다. 2026년 10월에는 브라우저 버전이 생겼고, 몸은 단순한 마네킹으로 바뀌었습니다.

그다음에는 실제와 같은 부상을 요청했습니다. 천천히 밀면 멍만 들어야 하고, 세게 휘두르면 발표된 연구와 비슷한 빈도로 뼈가 부러져야 합니다.

변경 하나를 검증하는 과정

  1. 이상한 점 알리기 제가 게임을 해 보고 문제를 쉬운 말로 설명합니다. 예를 들면 “느리게 쳐도 몸이 터진다”라고 말합니다.
  2. 다른 사례에서 배우기 에이전트는 해결책을 직접 만들기 전에, 오픈소스 엔진과 연구 논문이 같은 문제를 어떻게 푸는지 먼저 살펴봅니다.
  3. 엔진 수정 에이전트가 그 아이디어를 엔진 자체 코드로 다시 구현하고, 주석에 출처를 적습니다.
  4. 테스트 다시 실행 스크립트로 정한 모든 스윙을 45번씩 실행하며, 치는 위치와 뼈의 강도를 조금씩 바꿉니다.
  5. 연구와 비교 각 부상은 인용한 연구에 나온 것과 비슷한 빈도로 일어나야 합니다.
  6. 화면을 보고 판단 에이전트가 실제 앱의 스크린샷을 제게 보여 줍니다. 그다음에 변경이 실제 사이트에 반영됩니다.
  • 브라우저와 데스크톱브라우저는 Windows 앱과 정확히 같은 결과를 내야 합니다
  • 실제 크기인체 모형은 키 1.75미터의 성인이고, 해머와 야구 방망이도 실제와 같은 무게입니다
  • 소리타격음과 골절음은 모두 물리 계산 결과로 만들며, 녹음한 소리는 쓰지 않습니다
변경 하나가 제 지적에서 시작해 실제 사이트에 반영되기까지의 과정입니다. 에이전트가 따르는 규칙 문서는 모든 검증을 통과하도록 요구합니다.

직접 해 보기

게임은 휴대폰에서도 브라우저로 실행되며, 아무것도 설치할 필요가 없습니다. 게임에는 출혈을 포함해 시뮬레이션한 부상이 나옵니다.

YouTube에서 4분 업데이트 영상 보기 영상은 2026년 10월 버전을 보여 줍니다. 슬레지해머에 맞은 팔에 먼저 멍이 들고, 이어서 팔이 부러집니다.

설계 결정

  • 테스트에는 실제 결과가 적혀 있습니다. 저는 의사도 물리학자도 아니어서, 숫자만으로는 알 수 있는 것이 거의 없습니다. 그래서 각 테스트에는 실제 사람에게 일어나는 일과 그 근거가 된 연구를 적습니다. 예를 들어 천천히 밀어서는 뼈가 절대 부러지지 않고, 칼은 팔이나 다리의 뼈를 절대 부러뜨리지 않습니다.
  • 실제 타격은 매번 다릅니다. 각 테스트 스윙은 45번 실행됩니다. 실행할 때마다 치는 위치를 조금 옮기고, 뼈를 더 약하게 또는 더 강하게 만듭니다. 실제로 “가끔” 일어나는 부상은 모든 실행이 아니라 일부 실행에서만 일어나야 합니다.
  • 숫자 대신 화면으로 판단합니다. 앱은 스크린샷과, 움직임을 장면별로 이어 붙인 이미지를 스스로 저장할 수 있습니다. 저는 눈에 보이는 변경을 모두 이 이미지로 판단하고, 테스트가 놓친 문제는 새 테스트가 됩니다.
  • 브라우저 버전은 데스크톱 버전과 같아야 합니다. 스크립트가 Windows 앱과 브라우저에서 모든 테스트를 실행하고 결과를 비교합니다. 한번은 두 결과가 멍 하나만큼 달랐습니다. 에이전트는 플랫폼마다 반올림 방식이 다른 수학 함수에서 원인을 찾아냈고, 그 함수를 바꿨습니다.
  • 다른 사례에서 배운 뒤 측정합니다. 칼에 베인 상처가 벌어지는 방식은 오픈소스 물리 엔진인 Rapier에서 배웠습니다. 피가 피부를 따라 흘러내리는 방식은 게임 Overgrowth에서 배웠습니다. 시뮬레이션 전체를 Rapier로 옮겨 보았더니 속도는 빨라졌지만 통과한 테스트는 더 적었습니다. 그래서 제 엔진을 그대로 쓰기로 했습니다.

상태

  • 27개변경할 때마다 다시 실행하는, 스크립트로 정한 테스트 스윙
  • 45회스윙마다 치는 위치와 뼈를 바꿔 가며 실행하는 횟수
  • 초당 60회방문자의 기기에서 직접 실행하는 물리 계산

2026년 10월 기준으로, 거의 모든 부상이 연구 결과와 비슷한 빈도로 일어납니다. 테스트 보고서에는 엔진이 아직 통과하지 못하는 검사 항목이 따로 나옵니다. 예를 들어 엔진에서는 야구 방망이로 어깨를 내리쳐도 쇄골이 한 번도 부러지지 않지만, 실제로는 대개 부러집니다.

코드, 테스트, 그리고 테스트의 근거가 된 연구 자료는 GitHub에 공개되어 있습니다.

이 페이지의 이미지는 멍 하나를 빼면 타격을 받기 전의 몸을 보여 줍니다. 게임 자체에는 출혈을 포함해 시뮬레이션한 부상이 나옵니다.