← 목록
기타 2026-07-17 3KB 읽기 3분

크라우니캐릭터 엔진 구축 (1차)

개요

/Users/ef/crowny-character/에 캐릭터 모델러 엔진 3파일(캐릭터엔진.한선·테스트.한선·서버.한선)을 정본 디자인(design_handoff_crowny_character/Crowny Character.dc.html)의 charPose·NLA·통계· ★4상검수·집사 runAi 로직을 순수 정수 산술로 이식·구축·검증했다. 포트 9615.

무엇을 했는지

  • 캐릭터엔진.한선(521줄): charPose(dc.html 574-604행)를 배열 대신 전부 스칼라 leaf 함수로
분해 이식(함수 재호출 배열 지역변수 함정 회피). NLA 블렌딩(618-628행), 통계계산(839-843행, baseTris/subF/lodF/retopo 정수 스케일), ★4상 검수 게이트(889-900행, 티+1/옴0/타-1/음-2 + 종합 판정), 집사 파서(908-938행 runAi, 포함하나() 기반 타입/파츠/헤어/색상 추출 + 키워드 전후 숫자 스캔으로 "키 175"/"2층"/"길이 170"/"폭 280" 파싱), 월드 내보내기(캐릭터모델러.한선 재사용, 검수 타/음 시 -1 거부). 셀코어 룰 4종(삼각형상한/본상한/포즈기본권장/헤어물리권장) top-level 1회 등록.
  • 테스트.한선(89줄): 30개 assert(요구 15개 초과). charPose 4포즈 스팟체크(기본/인사/걷기/점프,
자연반올림 케이스 포함), NLA 블렌딩, 통계(LOD0/subdiv2+retopo/LOD2), 검수 4상 전 케이스, 집사 파서 4문장, 내보내기 통과/거부. PASS 전항목 확인.
  • 서버.한선(327줄): crowny-space/서버.한선 TCP루프·라우팅·PSV로그 패턴 그대로 차용.
GET /, /api/health, /api/check, /api/ai, /api/export. type 파라미터 영문별칭 (character/prop/house/weapon) → 한글 타입 매핑. 라이브 curl 4종 실측 확인 후 서버 프로세스 종료.

핵심 설계 결정

  • 배열을 쓰지 않는다: 한선씨 VM의 "함수 2회째 호출 시 배열 지역변수 스토리지 재사용" 함정을
charPose·NLA·통계·집사 전부가 배열 없이 순수 스칼라 함수로만 구성해 원천 회피. 다중필드 반환이 필요한 곳(예: charPose의 14개 출력)은 필드별 leaf 함수(charPose_armLX2 등)로 분해.
  • 손 계산 값을 VM 실행으로 교차검증하는 과정에서 자체 암산 오류(shR=333→실제 331)를 잡아냈다 —
엔진 코드 자체는 처음부터 정확했고, 검증 스크립트(_진단.한선)로 실측 후 테스트에 반영.

관련 파일

  • /Users/ef/crowny-character/스펙.md — 작업 지시서(정본)
  • /Users/ef/crowny-character/캐릭터엔진.한선
  • /Users/ef/crowny-character/테스트.한선
  • /Users/ef/crowny-character/서버.한선, 서버.toau
  • /Users/ef/crowny-character/data/요청로그.psv — 라이브 curl 검증 로그
  • 참조: /Users/ef/CrownyOS/crownyc/pkg/libs/캐릭터모델러.한선, /Users/ef/crowny-space/서버.한선

잔여 이슈

  • public/index.html(105KB, 핸드오프 standalone 기반)은 이미 존재 — 픽셀 재현 검증은 미실시(이번
범위는 엔진+서버 로직).
  • org.crowny.character.plist가 이미 디렉토리에 존재 — LaunchAgent 등록/기동은 메인 세션 담당
(본 작업에서는 서버를 curl 검증 후 즉시 kill, 데몬 잔류 없음).
  • 크라우니코드 학습: lookup 4건 전부 MISS(신규 도메인) → 생성 후 패턴 3건 학습 등록.