예비군 시뮬레이터 개발일지
이번 기간에는 CPR 미니게임을 리듬 중심 구조로 크게 다시 만들고, 철조망·문·막사·바닥 배치에 필요한 월드 제작 도구도 함께 정리했습니다. 모든 작업은 런타임 성능과 빌드 안정성을 함께 고려하며 진행했습니다.

CPR 리듬 미니게임 기본 흐름 제작
기존 CPR 구상은 단순 반응 테스트에 가까웠기 때문에, 음악과 박자에 맞춰 입력하는 구조가 필요했습니다. 그래서 상호작용으로 시작되는 독립형 CPR 리듬 미니게임을 새로 만들었습니다.
먼저 중앙 판정점으로 노트가 날아오는 방사형 구조를 만들고, 여기에 입력 판정·점수·콤보·등급 계산을 붙였습니다. 이어서 노트가 박자에 맞춰 도착하도록 스케줄을 조정하고, 성공한 입력에는 심장 박동 소리를 연결했습니다. 음악은 라운드가 끝나기 전에 자연스럽게 페이드아웃되도록 처리했습니다.
이 단계에서 난이도 선택, 라운드 제한 시간, 입력 복원 같은 기본 흐름도 함께 구성했습니다.

과녁 채움 실험에서 하단 8칸 레인 구조로 전환
초기 방사형 구조는 "글자를 보고 타이밍을 누르는" 방식에 가까워서 리듬게임 특유의 손맛이 약했습니다. 그래서 한동안 과녁이 제자리에서 채워지는 방식으로 개편해 봤습니다. 90초 동안 30초 단위로 표시 방식이 바뀌도록 만들고, 첫 번째 모드로는 정팔각형 과녁이 박자마다 채워지는 방식을 구현했습니다.
이어서 두 번째 모드로는 동심 팔각 칸이 바깥에서 안쪽으로 좁혀 들어오는 방식을 추가했습니다. 이 과정에서 얇은 선만 밝히던 표현을 칸 면 전체가 켜지도록 바꿨고, 시작 순간 바깥 칸이 먼저 켜져 타이밍이 헷갈리던 문제도 함께 수정했습니다.
하지만 풀스크린 과녁 구조는 화면 위쪽의 3D 무대를 가린다는 한계가 있었습니다. 그래서 CPR 미니게임을 화면 하단의 8칸 가로 레인으로 다시 설계했습니다. 입력은 스페이스바 압박으로 단순화했고, 각 칸 뒤에는 박자 입력에 반응하는 심전도 라인을 배치했습니다. 성공한 칸은 봉우리가 커지고, 실패한 칸은 사라지며, 카운트인 칸은 따로 표시되도록 만들었습니다.
마지막으로 튜토리얼 중 눌러야 할 칸이 잘못 표시되던 문제를 수정하고, 더 이상 쓰지 않는 난이도 선택 화면과 임시 진단 출력도 함께 정리했습니다.

CPR 클럽 무대 연출과 진행 흐름 추가
미니게임을 실제로 돌려 보니 시작 직후 장면이 너무 어두워 조명이 잘 보이지 않았습니다. 그래서 자동 노출을 다시 켜고, 어두운 클럽 분위기는 노출 보정과 색 보정으로 조절했습니다. 환자 쪽에는 별도 키 조명을 추가해 게임이 시작되면 밝기가 올라가도록 했습니다.
게임 시작 전에는 3·2·1 카운트다운을 넣었습니다. 카운트다운이 끝나는 순간 음악과 박자가 동시에 시작되도록 맞췄고, 이 시점에 무대 연출을 연결할 수 있는 신호도 함께 만들었습니다.
리듬 구조도 콜 앤드 리스폰스 방식으로 바꿨습니다. 한 마디 8박 중 앞 4박은 자동으로 드럼을 들려주고, 뒤 4박은 정확히 친 박자에만 드럼이 울리는 구조입니다. 기존 심장 박동 피드백은 빼고, 정타 피드백을 드럼 사운드로 교체했습니다.
CPR 중에는 조작 캐릭터가 환자 옆으로 이동해 정타마다 압박 동작을 재생하고, 미니게임이 끝나면 원래 위치로 돌아가도록 했습니다. 다만 이 연출을 조작 캐릭터 본체에서 직접 재생하면 기존 애니메이션 흐름과 충돌해서, CPR 전용 연출 캐릭터를 따로 두고 그쪽에서 재생하도록 다시 정리했습니다.
정타 시에는 환자 더미도 흉부압박 반응을 재생하도록 연결했습니다. 카메라는 별도 무대 카메라를 새로 두지 않고 CPR 연출 캐릭터의 카메라를 그대로 쓰면서, 8박마다 네 가지 프리셋을 순환하도록 했습니다. 조명은 링 스팟 수를 늘리고 스트로보를 추가했으며, 특정 2배속 구간에서는 박자만 빨라지고 음악과 라운드 시간은 그대로 유지되도록 정리했습니다.

월드 제작 도구와 상호작용 오브젝트 정리
광장, 마당, 교차로처럼 넓은 평지를 만들 때마다 바닥 메시를 일일이 수동으로 배치해야 하는 번거로움이 있었습니다. 그래서 닫힌 선을 그리면 그 내부를 타일로 채워 주는 바닥 제작 도구를 추가했습니다. 타일 크기와 간격, 높이 보정, 재질 교체를 설정할 수 있게 했고, 타일이 과도하게 늘어나 에디터가 멈추지 않도록 상한도 넣었습니다. 덕분에 반복 배치 작업의 재작업 비용을 크게 줄였습니다.
울타리 높이 처리도 정리했습니다. 기존에는 지형을 기준으로 높이를 맞췄지만, 다리·플랫폼·계단처럼 지형 기준이 맞지 않는 곳에서는 수동 제어가 필요했습니다. 그래서 울타리가 배치 점의 높이를 그대로 따라가는 모드를 추가했고, 두 방식 모두 울타리가 위아래로 기울지 않도록 보정했습니다.
철조망과 벽도 구분했습니다. 철조망은 사람은 막되 총알은 통과시켜야 했고, 벽은 기존처럼 둘 다 막아야 했습니다. 처음에는 철조망 충돌을 개별 요소로 만들었더니 편집이 느려져서, 충돌을 한데 묶어 처리하도록 바꿨습니다. 철조망 문에도 같은 기준을 적용해, 문이 회전할 때 충돌 영역도 함께 움직이도록 했습니다.
이전 프로젝트에서 가져온 자동 개폐 문 일부는 부모 동작이 빠져 있어 열리지 않았습니다. 자동 개폐 문의 기본 동작을 복구해, 막사 건물의 문 흐름을 다시 쓸 수 있게 했습니다.

조준과 맨손 전투 자세 문제 수정
철조망 앞에서 조준하면 철조망이 카메라의 조준 판정을 막아 조준 진입 자체가 차단되는 문제가 있었습니다. 이때는 캐릭터 몸 방향과 십자선 방향이 어긋나 총알이 꺾여 나가는 것처럼 보이기도 했습니다. 그래서 일반 벽은 그대로 막되 철조망만 조준 판정에서 예외로 처리하도록 분리해, 철조망 너머로 쏘는 흐름과 벽 앞에서 조준이 막히는 흐름을 모두 살렸습니다.
맨손 전투 자세 버그도 잡았습니다. 맨손 콤보가 끝난 뒤 잠시 전투 자세를 유지하는 동안 무기를 장착하거나 홀스터 입력이 들어오면, 총을 든 상태에서도 맨손 전투 자세가 그대로 남는 문제였습니다. 무기 장착과 홀스터 시점에 맨손 전투 자세를 즉시 해제하도록 처리하고, 콤보 도중에 같은 상황이 생겨도 콤보를 멈추고 자세를 초기화하도록 방어 코드를 추가했습니다.

막사 표시 범위 정리
막사 배경을 점검하다가, 거리와 상관없이 일부 구성 요소가 계속 렌더링되는 문제를 발견했습니다. 그래서 막사 3종에 대해 멀리 있는 외부 요소와 실내 전용 요소의 표시 범위를 나눠 정리했습니다.
이 작업은 멀리서는 보이지도 않는 요소를 계속 그리는 부담을 줄이기 위한 성능 정리입니다. 앞으로 막사 배경 작업을 이어갈 때 같은 문제가 반복되지 않도록 기준도 함께 맞춰 뒀습니다.

다음 작업 계획
- CPR 미니게임 무대 위쪽에 배치할 댄서 메시와 춤 애니메이션 작업
- 카운트다운이 끝나는 시점에 맞춰 댄서의 춤이 시작되도록 연결하는 작업
댓글
아직 댓글이 없습니다. 첫 댓글을 남겨보세요!