Skip to content

Repository files navigation

내가 맡은 부분 — 신동민

기간 2025.12.05 – 12.13 · 내 커밋 54건

구현 내용
아이템 수집 파이프라인 오버랩 판정에서 피직스 기반으로 전환, 픽업 모션의 AnimNotify 타이밍에 맞춰 획득되도록, ItemPickupManager.lua
시민 구조 래그돌 업기 구현, 업힌 스켈레톤의 스케일이 늘어나도 컨스트레인트 위치가 유지되도록, 시뮬레이트 첫 시도 시 날아가는 문제와 통통 튀는 문제 해결
사운드 불·소화 사운드를 플레이어와 가까운 4개만 재생하도록 선별(O(n)), 물소리, 비명, 기합, 2D 사운드
게임패드 풀 지원, 감도에 델타타임 적용, 창 포커스가 바뀌면 alt 키가 눌린 상태로 고정되던 버그 해결
게임플레이 컷씬 구현 및 바닥 충돌체 재설정, 소방복 착용 시 데미지 50% 감소 및 UI, 피격 효과
피직스 경계 · 차량 엔진은 Z-Up이고 PhysX는 Y-Up이라 경계에서 축을 변환해 넘깁니다. 그런데 서스펜션 sprung mass 계산에만 엔진 기준 축(Z)이 그대로 들어가 있어 질량 분배가 엉뚱한 축으로 계산되고 있었고, PxVehicleComputeSprungMasses의 중력 축을 PhysX 기준(Y)으로 바로잡아 핸들링 방향까지 정상화했습니다. 휠 인덱스 불일치와 변속 지연(2초 → 0.2초)도 함께 수정
피직스 에셋 에디터 에디터 교체, fbx 선택 지원과 그에 따른 경로·초기화 문제 해결, 시뮬레이트를 껐다 켜도 위치가 변하지 않도록 수정해 반복 실행 가능

주요 파일 Mundi/Source/Runtime/Engine/GameFramework/FirefighterCharacter.cpp · Mundi/Data/Scripts/ItemPickupManager.lua · Mundi/Source/Runtime/Engine/GameFramework/FireDispatchGameMode.cpp · Mundi/Source/Slate/Windows/SPhysicsAssetEditorWindow.cpp

이 게임에 쓰인 래그돌과 컨스트레인트는 13주차에 만든 Physics Asset Editor로 제작했습니다. 엔진 조인트 프레임과 PhysX의 축 규약을 맞춘 작업은 → Week13

내 커밋 54건 보기 · 14주 전체 정리


최종 게임잼(2025.12.05 – 12.13) — Let's Go Firefighter! (팀 전체)

직접 만든 Mundi 엔진으로 제작한 소방관 구조 게임입니다.

  • 캐릭터FirefighterCharacter, PhysX CCT(Character Controller) 인프라, CharacterMovementComponent CCT 통합, CapsuleComponent
  • 애니메이션 — Lua 기반 애니메이션 시스템, StateMachine Lua API, AnimNotify 지원, 본 소켓
  • 게임플레이 — 화재(FireActor) 데미지와 플레이어 사망 처리, 구조 대상(RescuedPeople) 프리팹과 랜덤 애니메이션, 래그돌 부착, 아이템 수집, 랜덤 스폰(바닥·천장 체크)
  • 프레임워크GameInstance, LevelTransitionManager, InputMode 시스템, Lua 스크립트 핫 리로드
  • 물리 — convex sweep test, triangle mesh overlap/collision
  • 렌더링 — 스카이박스, 반투명 패스, 앰비언트 라이트 개선, UV 리피팅
  • — 전체 씬 연결, 엔딩 씬

Mundi 엔진

🚫 경고: 이 내용은 Mundi 엔진 렌더링 기준의 근본입니다.
삭제하거나 수정하면 엔진 전반의 좌표계 및 버텍스 연산이 깨집니다.
반드시 유지하십시오.

📘 기본 좌표계

  • 좌표계: Z-Up, 왼손 좌표계 (Left-Handed)
  • 버텍스 시계 방향 (CW)앞면(Face Front) 으로 간주됩니다.

    DirectX의 기본 설정을 그대로 따릅니다.


🔄 OBJ 파일 Import 규칙

  • OBJ 포맷은 오른손 좌표계 + CCW(반시계) 버텍스 순서를 사용한다고 가정합니다.

    → 블렌더에서 OBJ 포맷으로 Export 시 기본적으로 이렇게 저장되기 때문입니다.

  • 따라서 OBJ를 로드할 때, 엔진 내부 좌표계와 일치하도록 자동 변환을 수행합니다.
FObjImporter::LoadObjModel(... , bIsRightHanded = true) // 기본값

즉, OBJ를 Right-Handed → Left-Handed,
CCW → CW 방향으로 변환하여 엔진의 렌더링 방식과 동일하게 맞춥니다.


🧭 블렌더(Blender) Export 설정

  • 블렌더에서 모델을 Z-Up, X-Forward 설정으로 Export하여
    Mundi 엔진에 Import 시 동일한 방향을 바라보게 됩니다.

💡 참고: 블렌더에서 축 설정을 변경해도 좌표계나 버텍스 순서 자체는 변하지 않습니다.
단지 기본 회전 방향만 바뀌므로, Mundi 엔진에서는 항상 같은 방식으로 Import하면 됩니다.


✅ 정리

구분 Mundi 엔진 내부 표현 Mundi 엔진이 해석하는 OBJ OBJ Import 결과
좌표계 Z-Up, Left-Handed Z-Up, Right-Handed Z-Up, Left-Handed
버텍스 순서 CW (시계 방향) CCW (반시계 방향) CW
  • ..\Mundi\Data에 FBX 파일을 넣어주세요. 폴더 통째로 넣어도 됩니다.
  • ..\Mundi\ThirdParty에 라이브러리 파일인 lib.zip 압축을 풀어 lib폴더를 넣어주세요.

About

크래프톤 정글 게임 테크랩에서 진행한 마지막 게임잼 결과물입니다

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages