DirectX11 포트폴리오 작업 로그 (2026.02.10)
오늘의 목표 메인 목표(Outcome): 텍스쳐 불러오기서브 목표(Deliverables)1) 그리드 그려보기2) 카메라(View Matrix, CameraRotationMatrix)3) 카메라 조작오늘 한 줄 요약 (1-liner)그리드를 정상적으로 그려두고, 카메라를 통해 World 좌표를 조정하며 주변을 둘러볼 수 있게 하였다, 카메라 작업이 마무리 된 후 간단한 박스 텍스쳐를 불러와 정상적으로 출력오늘 한 작업 타임라인 (Timeline)[카메라 클래스 생성]한 일: 카메라의 좌표와 회전을 생성(계산)하여 적용결과: 정상적으로 카메라를 움직이는 효과를 낼 수 있었음, 카메라의 뷰 좌표를 키보드 입력에 맞추어서 월드를 이동시켜 자연스럽게 카메라의 움직임을 구현막힌 지점/메모: 카메라의 ViewMat..
🎮 [개발 일지] 2026년 02월 09일
🧱 오늘의 작업 요약UCBTService_CombatHub1차 점수제로 Avoid, Defence, Attack, Strafe에 들어갈 수 있도록 설정, 각 상태 별로 빈도수나 제한에 대해서는 테스크 작성 후 다시 테스트 하며 조정⚙️ 트러블슈팅 / 현재 고민 중인 사항BT 트리의 각 상태 별로의 진입 조건행동 패턴에 대한 진입 조건에 대한 고민완료Combat Intent에 대한 진입 조건전투 중 AI의 행동 패턴에 대한 진입 조건 고민완료각 상태별로 유연하게 빈도를 변경할 수 있는지만들어둔 상태에 들어가 전투시 자연스럽게 행동 패턴이 변화가 되는지진행중💡 해결 방안 / 시도 중인 솔루션점수제를 도입하여 위험도 수치에 따른 비교로 도망가거나, 가드를 올리는 등 행동 패턴을 추가적으로 실시하고 있지만 ..
DirectX11 포트폴리오 작업 로그 (2026.02.02)
🧱 오늘의 목표목표 1: DX 시작 전 기본적인 설정 세팅목표 2: 기본 렌더링 구축(DirectX로 무엇이든 그리기)🧩 진행 내용 요약Window 창 작업 완료 (WndProc, 핸들 생성)윈도우 루프 구간에 렌더링할 MainRender() 함수 선언수학 / 컬러 / 쉐이더 클래스 가져오기시간(FPS, DeltaTime) 계산 및 관리용 Timer.h키보드 / 마우스 입력 관리 클래스 Keyboard.h, Mouse.hImGui 활용 클래스 Gui.hDevice / DeviceContext 등 DX 코어 관리 클래스 D3D.hGPU로 밀어줄 버퍼 2종 IndexBuffer.h, VertexBuffer.h✅ 오늘 작업한 기능들✅ 렌더링 프레임 흐름WinMain → CWindow 생성(Window 핸들..
[자료구조] 스택 (Stack)
Stack?C/C++에서 ‘스택’은 **호출 스택(Call stack)**을 의미하기도 하고, **LIFO 자료구조(Stack)**를 의미하기도 합니다. 이 글에서는 두 개를 구분해 설명한 뒤, 자료구조 Stack을 구현해 보겠습니다. 메모리의 영역의 Stack(스택)은 지역 변수와 매개변수가 저장되는 영역입니다. 스택 영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸하게 됩니다. 함수가 호출되면 스택에는 함수의 매개변수, 호출이 끝난 뒤 돌아갈 반환 주소값, 함수에서 선언된 지역 변수 등이 저장됩니다. 이렇게 스택 영역에 차례대로 저장되는 함수의 호출 정보를 스택 프레임(Stack Frame)이라고 합니다.보통 스레드마다 일정 크기의 스택이 할당되며(환경에 따라 다름), 과도한 재귀..
🎮 [개발 일지] 2026년 01월 29일
🧱 오늘의 작업 요약UCBTTask_InvestigateInvestigate 상태, 즉 전투를 하다 타겟을 잃어버려 전투가 종료되었을 시에 타겟을 찾는 행동을 하는 태스크를 구현, BT 트리에서 이동은 MoveTo로 진행하지만 타겟을 잃어버린 즉시에는 타겟이 벗어날 수 있도록 잠깐의 틈을 주기 위해 상태에 들어오자마자 수색을 한 뒤 마지막으로 타겟을 감지한 위치로 이동하여서 해당 지역에서 수색을 할 수 있도록 트리를 설계하였음UCBTTask_BBIntSetInvestigate 상태 진행시 각 Phase를 구분하여 태스크 성공시에 다른 페이즈로 갈 수 있도록 간단한 블랙보드의 Int 키 값을 수정할 수 있도록 하는 태스크, `FName`으로 키 이름을 받고선 해당 키의 값을 지정한 Int 값으로 변경 할..
🎮 [개발 일지] 2026년 01월 27일
🧱 오늘의 작업 요약UCBTService_GaitSelect`OnBecomeRelevant` 와 `OnCeaseRelevant`를 통해 특정 상태에 들어갔을때 캐릭터의 움직임과 이동 속도를 제어 할 수 있도록 하는 단일성 서비스 클래스를 구현⚙️ 트러블슈팅 / 현재 고민 중인 사항BT 트리의 각 상태 별로의 진입 조건행동 패턴에 대한 진입 조건에 대한 고민진행중Combat Intent에 대한 진입 조건전투 중 AI의 행동 패턴에 대한 진입 조건 고민진행중EQS의 점수가 너무 가까운 곳에 좌표를 반환순찰 경로가 너무 짦아지는 경우가 빈번함진행중💡 해결 방안 / 시도 중인 솔루션행동 패턴에 대한 진입 조건에 대해서는 일단 기존에 예정 중인 상태에 대한 구현 부를 완료 한 뒤에 테스트를 해보며 수정 할 부..
[자료구조] 이중 연결 리스트 (Double-Linked-List)
이중 연결 리스트(Double-Linked-List) 란?이전에 포스팅한 연결 리스트 유형 중 하나로 단일 연결 리스트는 현재 노드에서 다음 노드를 가리키는 주소를 가지고 있지만 이중 연결 리스트는 본인의 이전 노드의 주소까지 지니고 관리하는 연결 리스트입니다. 단일 연결 리스트와 마찬가지로 선형적인 구조를 가지고 있으며 단일 연결 리스트와의 차이점은 아래와 같습니다.단일 연결 리스트는 한 방향 (현재 노드 - 다음 노드) 이동만 가능하지만 이중 연결 리스트는 양 방향 이동이 가능하다 (이전 노드 - 현재 노드 - 다음 노드)단일 연결 리스트는 이전 노드에 대한 정보가 없으니 이전 노드로 가기 위해선 `head`에서부터 찾아야 하지만 이중 연결 리스트는 현재 노드의 뒤로 가기, 즉 이전 노드로 이동이 가..
🎮 [개발 일지] 2026년 01월 26일
🧱 오늘의 작업 요약UCBT_ReturnAI가 추격 혹은 도망, 전투 중에 타겟을 놓치거나 Idle 혹은 Patrol 상태로 돌아가야 할 경우 원래 있던 위치로 돌아가는 Task를 구현Behavior Tree기존에 있던 BT트리 제거 후 새로 정의한 상태들과 태스크 사용을 위해 상태 정리와 기본 토대 구현Blackboard Key SettingBT 트리 정리하면서 블랙보드에 존재하던 Value와 키 값도 새롭게 작성, CEnvQueryContext_ReturnLocationAI 순찰시 순찰 경로 지정에 대해서 EQS를 사용하기 위핸 컨텍스트를 작성, 귀환 위치를 기준으로 일정 범위 안에서만 다음 순찰 경로를 지정할 수 있도록 하기 위해 ReturnLocation을 기준으로 EQS 쿼리를 작성 할 수 있..
[자료구조] 단일 연결 리스트 (Singly-Linked-List)
연결 리스트(Linked-List)란?연결 리스트는 자료구조 중 선형 자료 구조로 데이터 요소들을 노드(Node)로 구성된 자료 구조입니다. 각 노드가 데이터와 다음 노드의 주소를 가리키고 있으며. 이름과 같이 데이터가 들어있는 현재 노드와 다음 노드를 연결하며 사슬처럼 선형적으로 서로 연결되어 있는 구조를 의미합니다.연결 리스트의 내부에 노드가 다음 노드를 가리킬 때에 포인터를 통해 가리키기 때문에, 연결 리스트는 동적 크기 조정이 용이하고 빠른 삽입과 삭제가 가능합니다, 하지만 노드의 크기에 비례하여 실행 시간이 증가하는 선형적인 탐색(O(n))이 필요하기 때문에 크기에 비례하여 접근 속도가 느릴 수 있습니다.삽입/삭제 자체는 O(1)의 속도로 가능하지만 위치(이전 노드, 삭제할 노드 등)에 대한 정..
🎮 [개발 일지] 2026년 01월 22일
🧱 오늘의 작업 요약ACAIController기존에 있던 AIController 수정, 기존 Perception 함수를 OnTargetPerceptionUpdate로 변경, 시야 감지시에만 타겟을 받아오며 동시에 타겟의 감지여부와 위치, 시간을 추가적으로 받아 TMap 컨테이너에 저장UCBTService_AIHub기존 서비스 클래스를 삭제하고 구현, 기존 타겟 유무 가지고 AI 상태를 선정하는것이 아닌 시간과 거리를 Controller에서 받아와 비교하며 수색, 추적, 복귀와 같은 상태를 추가적으로 구현 하고 기존 모드 변경도 원할하게 선정할 수 있도록 변경⚙️ 트러블슈팅 / 현재 고민 중인 사항BT 트리의 각 상태 별로의 진입 조건행동 패턴에 대한 진입 조건에 대한 고민진행중Combat Intent에..
🎮 [개발 일지] 2026년 01월 21일
🧱 오늘의 작업 요약UCBTService_CombatIntentAI 공격 도중 다음 행동 패턴에 대한 선택을 할 수 있도록 BT 내부에 서브 트리로 가동 시킬 서비스를 구현UCBTTaskNode : 수정기존에 구현되어 있는 Task Node들을 전부 백업 처리하여 새롭게 다시 구현 할 예정⚙️ 트러블슈팅 / 현재 고민 중인 사항Behavior Tree 서비스 구현 방식어떤식으로 상태 전이와 연동하여 구현을 해야 깔끔할지 고민진행중💡 해결 방안 / 시도 중인 솔루션🚧 내일 / 다음 작업 계획BehaviorTree 재구성 , 서비스, 태스크, 제로부터 구현을 시작하여 AI 부분 재구현모션 매칭 재 구성FlowChart 생성📜 누적 작업 내역 (간략 요약)전투 시스템콤보 / 가드 / 다운 / 패링 / ..
🎮 [개발 일지] 2026년 01월 14일
🧱 오늘의 작업 요약UCStateComponent기존 상태 전이 코드 수정, 레이어를 하나 두어 메인 상태와 서브 상태로 유연하고 자세하게 상태 전이를 할 수 있도록 수정WeaponModules 및 Attachement, DamageHandler 등 무기 기능 클래스캐릭터의 사망시 델리게이트 회수와 포인터 정리, 메시 파괴, 어빌리티 회수와 같은 정리 함수 Shutdown() 작성⚙️ 트러블슈팅 / 현재 고민 중인 사항Behavior Tree 서비스 구현 방식어떤식으로 상태 전이와 연동하여 구현을 해야 깔끔할지 고민진행중💡 해결 방안 / 시도 중인 솔루션 🚧 내일 / 다음 작업 계획BehaviorTree 재구성 , 서비스, 태스크, 제로부터 구현을 시작하여 AI 부분 재구현모션 매칭 재 구성Flow..
🎮 [개발 일지] 2026년 01월 09일
🧱 오늘의 작업 요약GA_HitReact, GA_ParryReactGA_HitReact는 데미지 피격시 , GA_ParryReact는 패링 당할시의 반응들을 적용둘의 구조가 비슷하거나 반응들의 갯수가 많아진다면 하나의 클래스로 통합 예정Ability 전반 이벤트 트리거 적용태그를 기반 으로 어빌리티를 호출하는 방식을 SendGameplayEvent를 사용 함(패링, 데미지, 피격 처리..)GECalc_Damage 클래스와 각 어빌리티 클래스들의 정리와 가독성을 올리기 위해 리팩토링 진행⚙️ 트러블슈팅 / 현재 고민 중인 사항GA_Dodge 회피시 캐릭터의 무적 및 버프 기능데미지 계산시 상태 태그 구분으로 무적 처리완 료💡 해결 방안 / 시도 중인 솔루션캐릭터가 회피시 회피 판정에 대한 처리를 어떻게..
🎮 [개발 일지] 2025년 12월 14일
🧱 오늘의 작업 요약CAnimNotify_Dodge노티파이의 시작과 끝을 구분해두고 회피시 이동 제어, 회피 판정과 타이밍 제어에 사용마찬가지로 노티파이의 시작과 끝에 회피 판정을 위한 GE_Dodge 클래스를 활성화 및 비활성화GE_Dodge게임플레이 이펙트 클래스를 상속받아 만든 클래스, 내부에 해당 이펙트가 활성화 되면 특정 이펙트 태그 호출로 적용되는 게임플레이 이펙트를 면역 할 수 있기에 Effect.Damage 태그를 면역으로 설정하여 회피시 무적 판정으로 이용또한, 지속시간을 무제한을 주어서 노티파이에서 시작과 끝을 조절할 수 있도록 설정⚙️ 트러블슈팅 / 현재 고민 중인 사항GA_Dodge 회피시 캐릭터의 이동 제어캐릭터의 키 입력을 막고 속도를 제어하여 이동을 제어완료GA_Dodge 회..
🎮 [개발 일지] 2025년 12월 13일
🧱 오늘의 작업 요약GA_DodgeUAbilityTask_WaitGameplayEvent를 사용해 캐릭터를 자연스럽게 방향에 맞추어서 밀어냄어빌리티의 활성화시 캐릭터의 속도 초기화와 이동 제어를 off하며 회피 모션이 온전히 나올 수 있도록 구현CAnimNotify_Dodge노티파이의 시작과 끝을 구분해두고 회피시 이동 제어, 회피 판정과 타이밍 제어에 사용⚙️ 트러블슈팅 / 현재 고민 중인 사항GA_Dodge 회피시 캐릭터의 이동 제어캐릭터의 키 입력을 막고 속도를 제어하여 이동을 제어완료GA_Dodge 회피시 캐릭터의 무적 및 버프 기능Effect 클래스 추가로 구현 예정진행중💡 해결 방안 / 시도 중인 솔루션캐릭터가 회피 할 경우 루트 모션이 아닌 애니메이션을 사용중이기에 왼쪽으로 회피를 하다 ..
🎮 [개발 일지] 2025년 12월 12일
🧱 오늘의 작업 요약GA_Guard태그를 통한 어빌리티 활성화로 기존 데미지 처리 연산 식에서 가드 태그가 존재시 데미지 연산 수치를 조정하여 가드 판정을 구현, 연출 효과는 아직 미정몽타주를 섹션별로 나누어 가드 시작 - 루프 - 종료 와 가드 히트시 애니메이션 까지 하나의 몽타주에서 관리GA_ParryGA_Guard 활성화 시 플레이 되는 몽타주에 패링 태그가 부여되는 구간에 데미지가 들어오면 패링으로 처리이벤트 방식으로 활성화 되며, Guard보다 앞서 조건문 판별을 하여 패링 성공시 가드가 아닌 패링으로 빠지게 됨패링을 위한 글로벌 슬로우 노티파이 구현GA_Dodge무기 장착전에는 달리기, 무기 장착시에는 회피로 동작하는 Shift 키에 기능을 바인딩In-Place 애니메이션을 사용하여 캐릭터 ..
UML Diagram & FlowChart(작성중)
Character GroupAActor를 상속받는 캐릭터와 관련된 클래스들의 집합UCCharacterProfile : 각 캐릭터가 사용하는 전투 애니메이션 및 공통 애니메이션ACPlayer : 플레이어블 캐릭터ACPlayer_MorganaACPlayer_CelesteACPlayer_MannequinACEnemy : 적 캐릭터ACEnemy_AI : AI가 활성화(포함)된 적 캐릭터ACBoss : 적 보스 캐릭터ACBoss_CyberNinjaACCompanion : 플레이어의 동료 캐릭터Component Group커스텀 및 언리얼 엔진의 기존 컴포넌트를 상속받아 구현한 클래스들의 집합CAbilityManagerComponent : 어빌리티 등록과 키 입력에 따른 어빌리티 활성화 CAIBehaviorCompo..
🎮 [개발 일지] 2025년 10월 28일
🧱 오늘의 작업 요약DamageHandler 리펙토링기존 Data값을 받아와서 적용시키던 데미지 처리를 GAS를 통해서 처리하도록 변경무기에 존재하는 액션 노드에 `FActionCombatData` 구조체를 생성하여서 해당 액션에 대한 수치 값들을 관리하도록 등록함각 무기의 액션 노드 마다 베이스 데미지, 데미지 배율, 크리티컬 배율, 확률이나 그로기 수치값과 같은 부분을 각각 따로 설정할 수 있도록 하였음해당 데이터 값들에게 `ApplyDataToSpec(...)` 함수를 통해서 FGameplayEffectSpec을 생성시에 각 값에 태그들을 부착함GECalc_Damage 구현실제로 데미지를 연산하는 클래스를 구현FGameplayEffect 클래스인 GE_Damage는 해당 이펙트가 " 어떠한 연산을..
🎮 [개발 일지] 2025년 10월 21일
🧱 오늘의 작업 요약WeaponDriver 리펙토링WeaponDriver의 OnPressed() 함수 리펙토링기존의 Enum과 Enum으로 매핑하던 구조를 1개의 열거형으로 변경애니메이션 정리 시작, 캐릭터, 적군, 보스 애니메이션 폴더정리⚙️ 트러블슈팅 / 현재 고민 중인 사항GAS 시스템 연계성기존 Combat/State 구조와 GAS 간의 책임 분리 확인 중⚖️ 구조 점검 중GAS 유효성 검증Attribute, Effect, Cue 사이의 흐름 검증 필요✅ 일부 테스트 완료💡 해결 방안 / 시도 중인 솔루션GAS 핵심 로직(Effect → Attribute → Cue) 흐름을 CombatComponent에 병합 테스트GameplayCue 실행 시 Camera/FX 연출 자동화 구조 추가 예정🚧..
Snell`s Lawn
Snee`s Law (스넬의 법칙)스넬의 법칙은 빛이 한 매질에서 다른 매질로 진행할 때 경계면에서 굴절되는 각도를 나타내는 법칙입니다. 예를 들어, 공기 중에서 물속으로 들어가는 빛은 속도가 달리지기 때문에 진행 방향이 바뀌게 되는데, 이때 입사각과 굴절각 사이의 관계를 수학적으로 나타낸것이 바로 스넬의 법칙입니다. 수학적 표현$$n_1 \sin\theta_1 = n_2 \sin\theta_2$$ $n_1$: 첫 번째 매질의 굴절률$n_2$: 두 번째 매질의 굴절률$\theta_1$: 입사각 (법선과 입사광선 사이 각도)$\theta_2$: 굴절각 (법선과 굴절광선 사이 각도)물리적 의미스넬의 법칙은 사실 파동의 위상 연속성에서 유도 됩니다.빛이 경계면을 지날 때, 경계선 위에서 파동의 위상(phas..