Unreal Project 썸네일형 리스트형 GameInstance 및 캐릭터 정보 저장 1. GameInstance란?GameInstance는 게임의 전반적인 상태와 데이터를 관리하는 클래스입니다. 게임이 시작될 때 생성되며, 게임이 종료될 때까지 유지됩니다.레벨 간 전환 시에도 데이터를 유지할 수 있어, 게임의 지속성을 보장합니다.2. GameInstance의 생명주기생성: 게임이 시작될 때 GameInstance 객체가 생성됩니다. 이때 초기화 작업을 수행할 수 있습니다.존재 기간: 게임이 실행되는 동안 GameInstance는 메모리에 상주하며, 레벨 간 전환 시에도 소멸되지 않습니다.종료: 게임이 종료될 때 GameInstance는 메모리에서 제거됩니다.3. Level 간 데이터 주고받기 문제일반적으로 레벨 간에 데이터를 주고받으려면 여러 방법이 있지만, 각 레벨이 독립적으로 관리되.. 더보기 Control Rig을 활용한 캐릭터 다리 조절 IK(역운동학, Inverse Kinematics)를 사용하여 캐릭터가 울퉁불퉁한 지형에서 다리를 자연스럽게 조절하는 원리는 기본적으로 캐릭터의 발 위치를 실시간으로 지형에 맞게 계산하고 그에 맞춰 뼈(bone)의 위치를 조절하는 방식으로 이루어집니다. 용어 정리IK (Inverse Kinematics):역운동학: 특정 목표 위치를 기준으로 여러 관절의 각도를 계산하여 해당 위치에 도달하도록 하는 방식입니다. 가상 뼈(예: ik_foot_r, ik_foot_l)를 사용하여 목표 위치를 설정합니다.FK (Forward Kinematics):정운동학: 각 관절의 회전이나 위치를 설정하여 해당 관절과 연결된 모든 하위 뼈의 최종 위치를 계산하는 방식입니다. 여기서 사용하는 뼈는 실제 뼈(예: foot_r, f.. 더보기 Material을 활용한 캐릭터 Outline 그리기 사전 지식픽셀 (Pixel):"Pixel"은 "Picture Element"의 줄임말로, 디지털 이미지에서 가장 작은 단위를 나타냅니다.디스플레이나 디지털 이미지에 픽셀은 각각의 색상 정보를 담고 있습니다. 일반적으로 픽셀은 RGB (빨강, 녹색, 파랑) 색상 값으로 표현됩니다.해상도는 이미지나 디스플레이에서 가로 및 세로 픽셀 수를 나타내며, 예를 들어 "1920x1080"은 가로로 1920개, 세로로 1080개의 픽셀을 가진 이미지를 의미합니다.픽셀은 이미지의 세부 정보를 나타내며, 디지털 카메라, 모니터, 스마트폰 디스플레이 등 다양한 디지털 장치에서 중요한 역할을 합니다.텍셀 (Texel):"Texel"은 "Texture Element"의 줄임말로, 3D 그래픽스에서 사용됩니다.3D 모델의 표면에.. 더보기 SHDataManagerSubsystem 모든 데이터에 대한 요청을 처리하는 녀석 Initialize시 모든 데이터 테이블을 불러와서 캐시해 놓는다. (비동기) GameInstanceSubsystem을 상속받았기에 GameInstance와 유사한 수명을 갖게 된다. 동기 로드 (Synchronous Loading)동기 로드는 리소스를 즉시 메모리에 로드하는 방식입니다. 로드가 완료될 때까지 프로그램의 실행이 일시 중지되며, 로드가 끝나면 다음 작업을 수행합니다.특징:즉시 실행: 리소스 로드가 완료될 때까지 기다리며, 로드가 완료되면 바로 다음 코드를 실행합니다.간단한 코드: 구현이 간단하고, 로드 순서나 타이밍을 제어하기 쉽습니다.장점:간단하고 직관적: 복잡한 비동기 처리 없이, 리소스가 필요한 시점에 바로 로드할 수 있습니다.디버깅 용이: .. 더보기 SHSkillEffectBase Skill Effect들을 처리하는 Class SkillEffect는 등록된 계산식을 순차적으로 수행을 하면서 최종 데미지를 계산해주고, 계산된 FinalDamage를 어떤 Stat에 영향을 끼칠지 들고 있다. 이렇게 구현을 하려면 기존에 구현했던 SHCharacterStatsComponent를 수정해야 한다. 내가 원하는 방식은 SkillEffect가 어떤 Stat에 영향을 끼칠지 GameplayTag로 들고 있고, TargetStatsComponent에서 Tag로 해당 스텟을 가져온 다음에 해당 스텟에 +- FinalDamage를 해주는 방식. 하지만 현재 CharacterStats은 Stat들을 각각의 변수명을 갖고 있다. Strength, CurrentHealth, Speed. Stat들마다 고유.. 더보기 SHDamageModifierBase MMC (Multi Modifier Calculation)을 활용한 데미지 계산식 MMC를 이름 그대로 번역을 하면 "다중 수정자 계산식", 즉 여러개의 계산식을 중첩해서 최종 데미지를 산출해내는 방식. ex) 기본 데미지 100, 공격력의 200%의 추가데미지를 입히는 스킬이 있다고 가정을 하면, 1. Damage_1 = 기본 데미지 + 공격자 공격력의 200% 추가 데미지2. Damage_2 = Damage_1 - 방어자의 방어력에 따른 감소된 데미지.3. FinalDamage = Damage_2 + 치명타 적용 여부에 따른 추가 데미지. 이런식으로 데미지를 차례대로 중첩해서 최종 데미지를 계산한다. 내가 생각한 이 방식의 장점.1. 계산식을 나눠서 정의해 놓았기 때문에 지금 수행하는 .. 더보기 SHCombatSystemComponent Character의 전투 관련 로직들을 관리 및 처리하는 Component UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )class SHPROJECT_API USHCombatSystemComponent : public UActorComponent{ GENERATED_BODY()public: // Sets default values for this component's properties USHCombatSystemComponent(); void InitAttackRange(); UFUNCTION(BlueprintCallable) void ApplyDamageToTargets(); UFUNCTION(BlueprintCallable) v.. 더보기 SHSkillSystemComponent UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )class SHPROJECT_API USHSkillSystemComponent : public UActorComponent{ GENERATED_BODY()public: // Sets default values for this component's properties USHSkillSystemComponent();public: virtual void InitActorInfo(AActor* InOwnerActor, AActor* InAvatarActor);public: void GiveSkill(USHSkillBase* InNewSkill); void ResetSkill();public: c.. 더보기 이전 1 2 3 다음