🟩 학습 목표기존 애니메이션 샘플 기반의 하드코딩 변수 구조를 탈피하고 확장성 높은 Gameplay Tag 아키텍처 수립기획 및 밸런싱 수정에 유연하게 대응할 수 있도록 Data-Driven Design(데이터 주도 설계) 구조 구현데디케이티드 및 리슨 서버 환경에서 디싱크를 방지하는 Replication 및 Server RPC 동기화 파이프라인 구축🟧 1. 게임플레이 태그(Gameplay Tag) 아키텍처로의 전환🟦 복잡한 불변수(bool) 구조의 탈피기존에 캐릭터의 상태(걷기, 뛰기, 앉기 등)를 수많은 bool 변수로 제어하던 방식을 전면 폐기하였다. 상태가 추가될수록 스파게티 코드가 양산되고 애니메이션 블루프린트(ABP)의 조건 분기문이 비대해지는 문제를 해결하기 위해, 엔진 내장 유연성이 ..
🟩 학습 목표AI Controller, Behavior Tree, Blackboard의 역할과 연동 프로세스 이해 및 기초 에셋 구축NavMeshBoundsVolume의 런타임 생성 모드별 차이를 이해하고, Navigation Invoker를 통해 연산 리소스 최적화MoveTo 함수 계열의 메커니즘을 파악하고, NavModifierVolume 및 RVO(Reciprocal Velocity Obstacles)를 활용하여 정적/동적 예외 처리 로직 구현AIPerception 시야 시스템과 거리 기반 계층 구조를 C++로 코딩하여 플레이어를 추적하는 AI 제어 시스템 완성🟧 1. Unreal Engine AI 핵심 3인방 아키텍처언리얼 엔진의 AI 시스템은 생성형 모델과 달리 상태와 조건에 따라 논리적으로..
🟩 학습 목표기존의 하드코딩된 변수 구조를 탈피하고 확장성 높은 Gameplay Tag 기반 상태 제어 아키텍처 구축향상된 입력(Enhanced Input)과 바인딩되는 하체 기본 액션(걷기, 달리기, 앉기, 점프)을 토글 방식 구현멀티스레드 애니메이션 환경의 Thread-Safe 제약 조건을 우회하고 모션 매칭과의 물리 속도 동기화 수행🟧 1. 구현 내용 (What I Did)🟦 Gameplay Tag 기반 상태 제어 시스템 도입기존의 복잡한 하드코딩 Enum 방식이나 단순 bool 변수(bIsWalking 등)들을 전면 제거하였다. 대신 확장성이 뛰어난 Gameplay Tag 시스템으로 아키텍처를 교체하였다. NCBaseCharacter에 CurrentGaitTag(이동 상태)와 CurrentS..
🟩 학습 목표Game Animation Sample(GAS)의 모션 매칭 핵심 에셋 마이그레이션 및 의존성 검증 수행에셋 이주 직후 발생하는 셰이더 Fatal 크래시 및 블루프린트 대량 컴파일 에러 해결입력 아키텍처 누락으로 인한 시점 먹통 현상의 원인을 분석하고 C++ 코어 설계 방향 수립🟧 1. 셰이더 컴파일 실패로 인한 Fatal 크래시 해결🟦 문제 상황에셋 이주 직후 프로젝트를 재실행하는 과정에서 아래와 같은 치명적 에러 메시지와 함께 에디터가 강제 종료되는 현상이 발생하였다.Fatal error: [File:...PipelineStateCache.cpp] [Line: 533] Shader compilation failures are Fatal.🟦 원인 분석수천 개의 대량 애니메이션 데이터..
🟧 1. 나이아가라 시스템 생성 및 고유 ID 부여시스템 생성:콘텐츠 브라우저 빈 공간 우클릭 ➔ FX ➔ Niagara System빈 이미터 검색:새로 뜬 창의 검색창에 empty 검색생성: 검색 결과로 나온 CompletelyEmpty (Niagara Emitter) 선택한 뒤 Create 고유 ID 부여:리본은 파티클(점)들을 순서대로 이어 선을 그려서 파티클마다 고유한 이름표 필요이미터 최상단의 주황색 노드 밑 Properties의 디테일 패널에서 Requires Persistent IDs 항목을 찾아 체크(True) 🟧 2. 리본 렌더러 장착 및 스폰 세팅렌더러 교체: Render 구역 ➔ + 버튼 ➔ Ribbon Renderer 추가Spawn Rate (생성 빈도 뻥튀기):궤적이 각지..
🟩 학습 목표연속 메모리 할당의 한계점인 외부 단편화 발생 원인을 분석한다.가상 메모리와 페이징 기법의 메커니즘 및 주소 변환 과정을 이해한다.페이지 테이블, TLB, 교체 알고리즘을 통한 메모리 최적화 방식을 파악한다.🟧 1. 연속 메모리 할당과 스와핑🟦 연속 메모리 할당 (Contiguous Memory Allocation)프로세스를 메모리에 연속적인 주소 공간으로 배치하는 방식이다. 빈 공간 할당 전략에는 순차 검색 후 할당하는 최초 적합(First Fit), 가장 작은 공간을 찾는 최적 적합(Best Fit), 가장 큰 공간에 배치하는 **최악 적합(Worst Fit)**이 존재한다.🟦 스와핑 (Swapping)현재 실행되지 않는 프로세스를 보조기억장치의 스왑 영역으로 내보내고(Swap-o..
🟩 학습 목표Property Replication의 가장 핵심적인 작동 원리를 이해한다.RPC와 Property Replication 지식을 결합하여 채팅 야구 게임의 로직을 구현한다.🟧 레플리케이션(Replication)의 기초레플리케이션은 서버에 생성된 액터의 정보를 네트워크 내의 다른 클라이언트들에게 복제하는 모든 과정을 의미한다. 언리얼 엔진의 서버-클라이언트 모델에서 레플리케이션은 기본적으로 서버에서 클라이언트로 흐르는 단방향성을 가진다.🟦 복제의 두 가지 방법RPC(Remote Procedure Call): 함수 호출 자체를 복제하여 실행한다.Property Replication: 액터가 가진 특정 변수(속성)의 값이 변경되었을 때 이를 복제한다.🟧 Property Replication..
🟩 학습 목표실습 프로젝트 생성 및 멀티플레이 기초 상식 학습멀티플레이 프로젝트 필수 설정 파악멀티플레이 심화 개념 학습을 위한 선수 지식 습득🟧 1. NetMode (프로세스의 역할)NetMode는 해당 게임 프로세스가 네트워크 상에서 어떤 역할을 수행 중인지 나타내는 월드의 핵심 속성이다. 멀티플레이 개발 시 코드가 어느 PC(서버 혹은 클라이언트)에서 동작하는지 구분하기 위해 반드시 이해해야 한다.🟦 NetMode의 종류NM_Standalone: 싱글 플레이 모드이다. 서버 커넥션이 없으며 서버와 클라이언트 로직을 한 컴퓨터에서 모두 실행한다.NM_DedicatedServer: 로컬 플레이어가 없는 서버 전용 모드이다. 그래픽, 사운드 등 플레이어 중심 기능이 삭제되어 리소스를 최적화한다.NM..
🟩 학습 목표실습 프로젝트 생성 및 멀티플레이 기초 상식 학습멀티플레이 프로젝트 필수 설정 파악멀티플레이 심화 개념 학습을 위한 선수 지식 습득🟧 서버의 종류 (P2P, Listen, Dedicated)멀티플레이 게임 아키텍처는 데이터 권한과 통신 방식에 따라 크게 세 가지로 분류된다.🟦 P2P Server (Peer to Peer Server)각각의 컴퓨터가 클라이언트이자 서버 역할을 동시에 수행하는 구조다. 모든 플레이어가 서로 연결되어 권한을 나누어 갖는다.예시: 다크소울, 토렌트🟦 Listen Server클라이언트이자 서버 역할을 하는 방장(Host)이 존재하고, 나머지 참가자(Guest)는 모두 클라이언트 역할만 맡는 형태다. P2P의 일종으로 볼 수 있다. 방장의 권한이 절대적이다.예시..
🟩 오늘의 목표공격 상태 유지로 인해 발생하는 WASD 이동 불가 버그의 원인을 완벽히 해결한다.애니메이션 몽타주와 AnimNotify를 활용하여 공격 종료 시점을 정확히 감지한다.공격 후 Idle 상태로의 복구 로직을 설계하여 캐릭터 제어권을 정상화한다.🟧 1. 현상 분석 및 원인 파악🟦 캐릭터 이동 입력 차단 현상현재 마우스를 통한 시점 회전은 정상적으로 작동하나, WASD 키를 이용한 이동 입력이 무시되는 현상이 발생하였다. 이는 캐릭터의 이동 로직인 Move 함수 내에서 현재 전투 상태를 체크하는 조건문이 입력을 차단하고 있기 때문이다.🟦 논리적 결함 발견원인 분석 결과, CurrentCombatState가 Attacking 상태로 진입한 후 다시 Idle로 돌아오지 못하고 고정되어 있었다..

