제사상 프로젝트는 자체 엔진으로 제작한 3D 잠입 아케이드 게임입니다.

<aside>

주요 구현


PhysX 기반 물리 시스템

PhysX 5를 자체 엔진에 통합해서 RigidBody - Collider - Trigger - CCT - Raycast와 Layer 기반 충돌 및 이벤트 시스템을 구현했습니다.

Collider 기반 Grid 시스템

월드를 균일 Grid로 구성하고 Physics Collider와 겹치는 Cell을 이동 불가 영역으로 판정해 A 탐색에 사용할 수 있는 Grid 시스템*을 구현했습니다.

Agent 이동 및 Vision 감지 시스템

4방향 A* 경로를 CCT 기반 실제 이동으로 연결하고, 다중 Agent 점유, Stuck 복구와 거리, FOV, Raycast 기반 플레이어 감지를 구현했습니다.

FBX 스켈레탈 애니메이션

Assimp 기반 Skeleton, Animation Clip 로드와 Bone Pose 계산, 캐릭터별 Animator 및 상태 전환 Blending을 구현했습니다.

플레이어를 추적하는 귀신 몬스터 구현

FSM을 기반으로 순찰, 플레이어 감지, 추적, 수색, 복귀 행동을 Grid, Agent, Vision, Animation 시스템과 연결해 귀신 몬스터를 구현했습니다.

</aside>

PhysX 기반 엔진 물리 시스템


1. PhysX 5 기반 물리 시스템 구축

RigidBody, Collision, Trigger, Raycast, Character Controller를 자체 엔진의 Component 구조에 맞게 구현했습니다.

Scene에 적용된 Trigger / Collision / CCT 디버그 이미지
(좌)       분홍색 : Trigger
(중간)   초록색 : Collision
(우)       빨간색 : CCT

Scene에 적용된 Trigger / Collision / CCT 디버그 이미지 (좌) 분홍색 : Trigger (중간) 초록색 : Collision (우) 빨간색 : CCT

2. 엔진 - PhysX 변환 계층 구현

cm–m 단위 변환과 PhysX Actor - GameObject 매핑을 물리 계층에서 처리해서, 게임 로직이 PhysX 내부 구조에 의존하지 않도록 구성했습니다.

3. Accumulator 기반 60Hz 물리 Fixed Step 구현

렌더링 프레임의 Delta Time 변화가 물리 연산에 직접 영향을 주지 않도록, 기존 OnFixedUpdate() 내부에 Accumulator 방식의 60Hz 물리 Fixed Step을 적용했습니다.

image.png