보스 공격과 애니메이션
BossCharacter에서 공격 상태와 재사용 시간을 확인하고 서버 RPC로 몽타주를 재생하도록 구현했습니다. 몽타주가 끝나면 공격 상태를 해제하고, 피격·사망 반응과 체력 UI를 연결했습니다. 보스 AI와 페이즈는 팀원이 담당한 모듈과 연동했습니다.
보스 공격·패링·체력 처리와 계정 연동을 구현하고, 클라우드 저장을 팀의 캐릭터 복원 흐름에 연결했습니다. 함께 보스전에 도전하는 Unreal Engine 액션 RPG입니다.

저는 보스의 공격 시작·종료, 패링 구간과 체력 처리, 로그인 화면과 비동기 HTTP 요청을 구현했습니다. 클라우드 저장 컴포넌트와 C# API를 팀의 캐릭터 코드에 연결해 장착품·인벤토리·진행 상태를 저장하고, 레벨 전환 시 위치를 적용하는 조건도 함께 다뤘습니다.
Triad of Valor는 근접 캐릭터의 방어와 원거리 캐릭터의 회피를 익히고, 다른 플레이어와 보스전에 도전하는 Unreal Engine 팀 게임입니다. 체력·스태미나·무기·인벤토리와 레벨 이동이 함께 작동합니다.
BossCharacter에서 공격 상태와 재사용 시간을 확인하고 서버 RPC로 몽타주를 재생하도록 구현했습니다. 몽타주가 끝나면 공격 상태를 해제하고, 피격·사망 반응과 체력 UI를 연결했습니다. 보스 AI와 페이즈는 팀원이 담당한 모듈과 연동했습니다.
AnimNotifyState의 시작·종료에 맞춰 적과 보스의 패링 가능 구간을 제어했습니다. 담당 HealthComponent.cpp에서 서버 권한의 체력 변경·값 복제·변경 이벤트를 구현하고, 포인트 데미지 이벤트가 중복 바인딩되지 않도록 처리했습니다.
돈·사망 횟수·플레이 시간·지역·위치·직업·체력·스태미나와 인벤토리·장착 상태를 JSON으로 저장하는 흐름에 참여했습니다. 로드한 슬롯 순서와 아이템 수치·에셋 참조는 서버 권한에서 적용하며, 60초 자동 저장과 레벨 이동 직전 저장을 연결했습니다.
CloudSaveComponent, ASP.NET Core API와 Azure Cosmos DB를 연결했습니다. API가 중첩 객체와 배열을 보존하고 누락한 필드에만 기본값을 채우도록 했습니다. 조회 시 달라지는 JSON 표현도 정리해 인벤토리 데이터를 게임에서 다시 읽을 수 있게 했습니다.
AuthSubsystem의 로그인·회원가입 요청과 Slate 화면을 구현했습니다. 제한 시간, 네트워크 실패와 HTTP 오류를 처리하고 응답 콜백을 Game Thread로 전달했습니다. 요청 전 서버 상태를 확인하는 처리도 추가했습니다.
별도 C# 분석 API에서 캐릭터 저장 데이터를 집계했습니다. 돈·사망 횟수·플레이 시간의 요약, 지역·플레이 시간 구간별 분포와 CSV 내보내기를 제공합니다. 분석 대상은 캐릭터의 현재 저장 상태입니다.
진행 상태 복원과 포털 도착 위치 처리를 구분하는 팀의 흐름에, 제가 맡은 CloudSaveComponent와 C# API를 연결했습니다. 전환 직후 목적지 위치를 덮어쓰지 않도록 처리하고, 일반 로드에서는 지역 값을 비교하는 팀 코드와 함께 동작합니다.
레벨이 바뀔 때 이전 저장 데이터를 그대로 적용하면 새 레벨의 포털 도착 위치가 이전 좌표로 덮일 수 있습니다. 반대로 위치 복원을 모두 포기하면 재접속 시 저장 위치를 복원할 수 없어, 진행 상태 복원과 레벨 전환을 구분해야 했습니다.
팀의 레벨 전환 흐름에 제가 맡은 CloudSaveComponent를 연결했습니다. 팀의 캐릭터 코드는 레벨 이동 전에 상태를 저장하고 임시 전환 데이터를 남깁니다. 일반 로드에서는 지역 값과 전환 여부에 따라 위치 복원을 결정하고, 전환 직후에는 목적지 위치를 유지하면서 돈·인벤토리·직업 등 진행 상태를 복원합니다.
보스 공격 상태·체력 처리·패링 구간, 계정 연동과 클라우드 저장을 담당했습니다. 캐릭터와 레벨 전환은 팀 공동 코드이며, 담당 CloudSaveComponent와 API를 그 흐름에 연결했습니다. 저장 API 개발은 수업 예제에서 출발했고 교수·AI의 도움을 받았습니다.

