[Game] Dreamscape
대학교 졸업 후, 실무 경험을 키우기 위해 계획하고, 진행한 협업 프로젝트입니다.
현재 대다수의 팀원들이 취업하거나, 취준을 하면서 중단 상태입니다.
장르 : 멀티 플레이, 액션 어드벤처
엔진 : Unreal Engine 5.4
팀 : 기획, 아트, 개발 합쳐서 약 10명
버전 관리 : Perforce, 아마존 ec2
담당 파트 : 개발
컨셉 : 루시드 드림 유도 장치의 베타 테스터가 된 세 명의 소꿉친구 하량, 도담과 태산은 시스템의 작은 오류로 인해 정체불명의 꿈속 세계에 갇히게 됩니다. 플레이어는 캐릭터별 스킬들을 활용해 다채로운 세계를 탐험하고, 살아남아, 현실로 돌아갈 단서를 찾아야만 합니다.
- github 링크 : https://github.com/ryutyke/Project25L
주 구현 기능
카타나 (칼)
카타나 콤보 공격과 타격 판정을 구현했습니다. 공격 속도가 빨라지거나, 초당 프레임 수가 떨어지는 경우에 판정 정확도를 올리려는 노력을 했습니다.
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