메인 시스템 아키텍처 및 플레이어 시스템, 자원 수집, 아이템 구현 (60% 기여)
AAreaObject
를 중심으로 주요 기능을 컴포넌트화하여 모듈식 설계를 진행하고 프로젝트의 전반적인 폴더 구조 및 클래스 관계를 정립했습니다.ASonheimPlayer
): Enhanced Input을 사용한 3인칭 조작(이동, 점프, 회피, 질주), 글라이더를 이용한 활강 기능, EPlayerState
에 따른 행동 제어, Pal 소환 및 교체, 팰 스피어 투척 등 플레이어 캐릭터의 핵심 로직을 개발했습니다.USonheimGameInstance
, SonheimGameType.h
): UDataTable
을 활용하여 캐릭터(FAreaObjectData
), 스킬(FSkillData
), 아이템(FItemData
), 레벨(FLevelData
) 등 핵심 게임 데이터를 관리하고, USonheimGameInstance
를 통해 이를 로드 및 접근하는 시스템을 구축하여 확장성을 확보했습니다.UInventoryComponent
, UStatBonusComponent
): 아이템 획득, 장착, 해제 로직과 함께 장비 변경 시 UStatBonusComponent
를 통해 플레이어 스탯이 동적으로 변경되는 시스템을 구현했습니다. 특히 4개의 무기 슬롯 중 현재 선택된 무기의 스탯만 적용되도록 하고, 무기 스킬 또한 동적으로 교체되는 로직을 개발했습니다. 또한 클라이언트 예측 시스템을 구현하여, 통신 상황이 안좋더라도 즉각적인 반응을 할수있도록 구현하였습니다.IInteractableInterface
) : 상호작용가능한 오브젝트(아이템, 상자)에 사용될 인터페이스를 사전 정의하고, 플레이어와 상호작용하는 시스템을 구현하였습니다. Player의 InteractionComponent
가 시야 / 거리 / 홀드 를 검증하고, PlayerController에 사전 정의된 RPC로 서버 권한 처리로 동작합니다.ABaseResourceObject
): 자원 오브젝트가 피해량에 따라 단계적으로 아이템을 드롭하고, 약점(WeaknessAttackMap
)에 따라 다른 효율로 채집되는 시스템을 구현했습니다.EElementalAttribute
, USonheimUtility
): 9가지 원소 속성 간의 상성 관계에 따른 데미지 배율 계산 로직 (CalculateDamageMultiplier
) 및 자속성 일치(STAB) 보너스 시스템을 AAreaObject::TakeDamage
내에 통합했습니다. 또한 이러한 약점 시스템을 플로팅 데미지 UI 색상에 연동시켜 사용자가 전략적인 선택을 할수있도록 인식하게하였습니다.UPlayerStatusWidget
), 인벤토리 및 장비창 (UInventoryWidget
), 스탯창 (UPlayerStatWidget
), 아이템 툴팁 (UToolTipWidget
), 몬스터 상태 UI (UMonsterStatusWidget
), 플로팅 데미지 텍스트 (AFloatingDamageActor
) 등 주요 UI 요소를 개발하고 게임 로직과 연동했습니다.