고산 고원 높은 곳, 분홍빛 소금 덩어리가 정상을 장식하고 있으며 — 산 위의 모든 빅혼 숫양이 이를 원합니다. 자리를 지키고, 힘을 모으고, 들이받으세요: 클래시는 실제 모멘텀을 주고받으며, 패자는 비틀거리고, 절벽에는 낭떠러지가 있습니다. Phaser 3로 AI 에이전트가 처음부터 끝까지 만든 완전한 탑다운 넉백 아레나로, 필(feel) 우선으로 제작되었습니다: 차지 곡선, 클래시 물리, 충격에 대한 카메라 반응은 스프라이트 하나가 만들어지기도 전에 회색 도형으로 조율되고 측정되었습니다.
방향키 / WASD로 이동 · Space 길게 눌렀다 놓아서 들이받기 · 모바일에서는 터치 조이스틱 + 들이받기 버튼 · ~8MB · M 사운드 · P 일시정지
이 작품은 먼저 컨셉이 잡혔습니다 — 닳은 흙 고리가 있는 공중 고원 아레나, 로우폴리 빅혼 주인공, 소품 시트, 그리고 정면 클래시 액션 보드가 팔레트를 정했습니다: 채도 높은 초원 녹색, 화강암 회색, 분홍 크리스탈 하나. 이 시트들에 명시된 모든 요소는 실제 에셋으로 제작되었으며, 모든 감사 라운드는 빌드를 그것들과 비교했습니다. 라이벌 숫양들은 두 번째로 제작된 재질에서 다시 렌더링된 적갈색 털을 입고 있습니다 — 엔진 틴트가 아닙니다.


게임 전체가 아트가 존재하기 전 회색 도형 상태로 실행되고 클리어되었습니다. 이번 주기의 연구: 질량과 반발계수를 가진 모멘텀 교환 클래시, 근접 속도 단계별 히트스탑, 그리고 방향성 카메라 킥 — 카메라가 충격 노멀을 따라 이동했다가 스프링으로 복귀하며, 사이드스크롤러의 무작위 흔들림 대신 타격 방향을 전달하는 신호를 제공합니다. 모든 상수는 FEEL_NOTES.md에 그 값을 유지하는 이유와 기각된 값들이 측정한 결과와 함께 기록되어 있습니다. 자동화된 플레이어가 매 감사 라운드마다 모든 빌드를 처음부터 끝까지 클리어합니다.

이 양은 보이드 기반의 블렌더 빌드로, 컨셉과 대조해 여섯 차례 검수를 거쳤고 렌더 샘플링 팔레트 체크를 거쳤습니다 — 실제 네 발 동물로 리깅되었으며, 리타깃된 CMU 모션 캡처로 구동됩니다. 이번 사이클의 새로운 시도는 인간 달리기 클립을 매핑을 통해 네 다리에 리타깃한 것입니다 사지에만 감쇠된 영향으로 적용되어(수평 척추는 그대로 유지) 클립 특유의 팔-다리 역위상이 대각선 쌍 속보로 나타나며, 여기에 수작업 키프레임으로 만든 좌우 척추 흔들림이 더해집니다 — 상공 카메라가 실제로 포착하는 네 발 동물의 움직임입니다. 소금 덩어리, 바위, 풀숲, 표지판, 왕관은 모두 동일한 픽셀 스케일로 제작된 키트 기반 블렌더 렌더이며, 고원 자체는 블렌더 정사영 베이크로, 그 절벽 가장자리가 곧 물리 림입니다. 오디오는 플랫폼의 샘플 악기 엔진을 사용했습니다: 아코디언과 피들이 어우러진 알파인 라운드, 나무 갈라짐과 타이코 충돌 계층, 글로켄슈필 크라운 래더, 그리고 그 아래로 흐르는 절차적 산바람 소리.
이 작품은 자체 벤치마크 하니스(Playwright, 캔버스 렌더러, 원시
performance.now() 프레임 델타)를 함께 제공한다 — 이 실험실의 감사 호스트에는 GPU가 없으며, 헤드리스 프레임 제한과 엔진 델타 스무딩이 없다면 60fps가 매끄럽게 나오는 것처럼 위장될 수 있다. 아래 수치는 동일한 공유 호스트에서 가장 조용했던 측정 구간의 값이며, 시뮬레이션 공간 거리는 부하 변화에 강건하다.
| 지표 | 실측값 | 조건 |
|---|---|---|
| 입력 → 힘모으기/릴리즈 → 차지 | 10.6–29.5ms (≤2프레임) | DOM 키 타임스탬프 → 상태 변경 적용 |
| 차지 파워 곡선 | 페인트 <110ms · 250ms → 581px/s / 354px · 650ms → 692px/s / 468px | 유지-후-릴리즈 시행, 시뮬레이션 공간 |
| 클래시 사다리 (근접 속도 → 넉백 / 비틀거림 / 히트스탑) | 214 → 9px / 319ms / 14ms · 535 → 41px / 353ms / 51ms · 978 → 77px / 527ms / 108ms | 세 가지 속도로 진행된 단계별 정면 클래시 |
| 방향성 킥 | 타격 노멀 방향 피크 3.4–11.7px · 정착 시간 201–296ms | 임계 감쇠 스프링, 19rad/s |
| 이벤트 피드백 | ≤34ms, 모든 인터랙티브 이벤트 | 예산 100ms; 동일 틱 내 시각적 반응 |
| 자동화 플레이스루 | 왕관 100%, 승리 64.8초 / 118.1초, 오류 0회, 낙사 0회 | 반응형 입력 봇; 두 번째 실행은 확인용 감사 |
| 프레임 비용 (이번 감사 호스트) | 최고 평균 19.3ms · p95 33ms | 소프트웨어 캔버스, GPU 없음, 부하 약 17의 공유 박스 — 실제 하드웨어에서는 WebGL 렌더러가 60을 유지 |
| 페이로드 | ~8MB · 파일 ~100개 | 엔진 1.2MB + 아트 2.4MB + 샘플 오디오 ~4MB |
충돌 법선을 따라 질량과 반발계수 0.58로 일어나는 1차원 탄성 운동량 교환 — 아케이드식 분리 처리를 쓰면 이 게임의 본질 자체가 사라진다.
숫양은 둥글지 않고 길다: 충돌 반경은 측면 17px에서 진행 방향으로 40px까지 보간되어, 뿔과 뿔이 맞닿는 아트가 실제로도 뿔끼리 맞부딪히도록 만든다.
임계 감쇠 스프링으로 복귀하는 충돌 법선 방향 변위. 줌 펀치는 티어 3 전용. 회전은 절대 없고 이동만 있다.
Y 정렬된 캐릭터와 소품, 숫양이 넘어질 때도 능선 위에 유지되는 그림자, 저 아래 시차 계곡, 그리고 모든 것 위로 흘러가는 구름 그림자.
방목 거점, 순환하는 도전자 한 마리, 패배 후 후퇴, 그리고 존중의 여유 시간 — 영구 대치 교착 상태(240초, 승점 0%)를 2분 승리 경로로 조정한 결과.
플랫폼 웹 오디오 엔진: 알프스풍 아코디언-피들 라운드, 충돌 속도에 따라 계층화된 격돌 사운드, 거리에 따라 페이드되는 AI 박치기음, 글로켄슈필 승점 사다리, 절차적 바람 소리.