[Game] Dreamscape


대학교 졸업 후, 실무 경험을 키우기 위해 계획하고, 진행한 협업 프로젝트입니다.
현재 대다수의 팀원들이 취업하거나, 취준을 하면서 중단 상태입니다.

장르 : 멀티 플레이, 액션 어드벤처

엔진 : Unreal Engine 5.4

팀 : 기획, 아트, 개발 합쳐서 약 10명

버전 관리 : Perforce, 아마존 ec2

담당 파트 : 개발

컨셉 : 루시드 드림 유도 장치의 베타 테스터가 된 세 명의 소꿉친구 하량, 도담과 태산은 시스템의 작은 오류로 인해 정체불명의 꿈속 세계에 갇히게 됩니다. 플레이어는 캐릭터별 스킬들을 활용해 다채로운 세계를 탐험하고, 살아남아, 현실로 돌아갈 단서를 찾아야만 합니다.


주 구현 기능

카타나 (칼)

카타나 콤보 공격과 타격 판정을 구현했습니다. 공격 속도가 빨라지거나, 초당 프레임 수가 떨어지는 경우에 판정 정확도를 올리려는 노력을 했습니다.

https://ryutyke.github.io/unrealengine/katana_attack/


데이터 서브시스템

데이터를 한 곳에서 편하게 관리하기 위해 데이터 서브시스템을 구현했습니다.

https://ryutyke.github.io/unrealengine/data_subsystem/


데이터 서브시스템 구현 중, 메모리에 로드한 에셋을 가비지 컬렉션에 Reachable하게 등록해 주어야 하는가에 대해 고민한 과정입니다.

https://ryutyke.github.io/unrealengine/data_asset_gc/

이전에, 엔진 GC 코드를 조금 뜯어봤던 게 도움이 되었습니다.
https://ryutyke.github.io/unrealengine/garbage_collection/


스탯 컴포넌트 (스탯, 버프 관리)

캐릭터 스탯과 버프를 관리하기 위해 스탯 컴포넌트를 구현했습니다.

https://ryutyke.github.io/unrealengine/stat_component/


추가로, 네트워크 최적화를 위해 NetSerializer와 FastArrayDeltaSerializer에 대해 공부해서

버프 구조체를 관리하는 배열에서 변경된 원소만 빠르게 파악해 직렬화하기 위해 FastArrayDeltaSerializer를 적용했고,
버프 구조체에서 동기화 필요한 프로퍼티만 직렬화하기 위해 NetSerializer를 적용했습니다.

https://ryutyke.github.io/unrealengine/fast_array_serialize/

Leave a comment