본문 바로가기

전체 글16

[언리얼] FPS게임에 AI캐릭터 제작하기(1)_기본 개념 알아보기 언리얼 엔진에서 혼자 움직이는 AI 캐릭터를 만들어보자언리얼 엔진으로 게임을 개발하면서 AI 캐릭터를 구현하려고 할 때, 반드시 이해해야 하는 개념이 있다. 바로 AIController, Behavior Tree, Blackboard이다. 처음 언리얼 AI 시스템을 접하면 낯설고 복잡하게 느껴질 수 있지만, 이 세 가지 개념만 정확하게 파악하면 생각보다 깔끔하게 AI를 제어할 수 있다. 나 역시 처음에는 단순한 적 캐릭터 하나 만들기 위해 수많은 언리얼 문서를 뒤지고, 여러 영상들을 보며 헤맸다. 하지만 실제로 몇 가지 프로젝트를 거치면서 이 개념들이 어떻게 유기적으로 연결되는지를 몸으로 익히고 나니, 자연스럽게 AI를 디자인할 수 있게 되었다. 이 글은 그런 나의 실제 경험을 바탕으로, 초심자도 이해할.. 2025. 4. 2.
[언리얼] IK(InverseKinematics)란? TwoBoneIK, FABRIK, CCD 사용법 언리얼 엔진에서 애니메이션의 IK, Two-Bone IK, FABRIK, CCD언리얼 엔진에서 애니메이션 시스템은 매우 강력하고 정교한 기능을 제공한다. 그 중에서도 IK(Inverse Kinematics)는 캐릭터 애니메이션에서 현실감을 높이는 핵심 기술 중 하나이다. IK는 특히 캐릭터가 환경과 상호작용할 때 큰 차이를 만들어낸다. 예를 들어, 캐릭터가 울퉁불퉁한 지형을 걸을 때 발이 자연스럽게 땅에 붙도록 조정하거나, 벽에 손을 올리는 등의 동작을 구현할 수 있다. 거의 모든 3D게임에는 포함되어있다해도 과언이 아닌 IK는 뭘까? 이번 글에서는 IK가 무엇인지 기본 개념을 설명하고, 언리얼 엔진에서 자주 사용되는 Two-Bone IK, FABRIK, CCD IK 세 가지 IK 기법에 대해 자세히 살.. 2025. 4. 1.
[언리얼] UnrealBuildTool 에러, 내 코드만 에러, 언리얼 폴더 삭제 후 리컴파일 하는 법 UnrealBuildTool 에러, 내 코드만 에러, 언리얼 폴더 삭제 후 리컴파일 하는 법 Unreal을 빌드하다 보면 구조체를 수정했는데, 수정 내용이 반영되지 않는 경우가 있습니다. 분명히 수정했는데 바뀌지 않으니 답답할 따름입니다. 코드에 문제는 없는데 이상하게 내부적으로 꼬였을 경우 보통 솔루션 파일(.sln)을 제거하고 Gernerate Visual Studio Project Files를 실행하여 설루션 파일을 재생성 한 뒤 다시 빌드를 돌려보면 정상적으로 돌아가는 경우가 대부분입니다. 하지만 이렇게 했는데도 되지 않는다면 이제는 Binaries폴더, Intermediate폴더, .vs폴더와 Saved폴더를 제거해 보면 해결할 수 있습니다. 먼저 해당 폴더들에는 어떤 정보가 저장되는지 알아봅시.. 2025. 3. 28.
[언리얼] Delegate 종류와 사용법 (Single, Multi, Dynamic) 언리얼 엔진 델리게이트의 정의와 사용법언리얼 엔진(UE4)에서 델리게이트(Delegate)는 함수 호출을 관리하는 데 사용되는 일종의 콜백 메커니즘이다. 델리게이트를 사용하면 특정 이벤트가 발생할 때 미리 지정한 함수를 호출할 수 있다. 이를 통해 코드 구조를 유연하게 만들고 이벤트 처리 로직을 중앙 집중화할 수 있다.언리얼 엔진의 델리게이트는 크게 다음과 같은 다섯 가지 유형으로 나뉜다.Single Cast DelegateMulticast DelegateSingle Cast Dynamic DelegateMulticast Dynamic DelegateSparse Delegate이 글에서는 각 델리게이트 유형의 정의와 사용법, 그리고 Event와의 차이점에 대해 자세히 설명하겠다.1. Single Cast.. 2025. 3. 26.
[언리얼] GENERATED_BODY 매크로와 직렬화의 관계, 역할 언리얼 엔진에서 GENERATED_BODY란 무엇인가 ? 언리얼 엔진에서 C++를 활용하여 개발을 진행하다 보면 반드시 접하게 되는 매크로 중 하나가 바로 GENERATED_BODY이다. 새로운 클래스 하나를 만들 때마다, 매번 보이는 이 GENERATED_BODY는 도대체 뭘까 ? 왜 있는걸까 ? 이건 바로 언리얼 엔진에서 GENERATED_BODY는 클래스 선언 시 필수적으로 포함되는 매크로로, 엔진의 리플렉션 시스템과 직렬화, 그리고 블루프린트 통합 등을 지원하기 위해 사용된다. 1. GENERATED_BODY의 역할GENERATED_BODY는 언리얼 엔진의 오브젝트 시스템에서 매우 중요한 역할을 한다. 이 매크로는 컴파일 타임에 엔진이 자동으로 생성하는 코드 블록을 삽입하여, 클래스와 관련된 다양.. 2025. 3. 25.
[언리얼] UPROPERTY(), UFUNCTION() 리플렉션이란? 메타데이터란? 언리얼 엔진의 리플렉션 기능 이해하기언리얼 엔진은 강력한 게임 개발 플랫폼으로, 다양한 기능을 제공하여 개발자들이 직관적이면서도 고성능 게임을 만들 수 있도록 지원한다. 그중에서도 리플렉션(Reflection) 기능은 엔진 내부에서 객체의 속성과 메서드를 동적으로 다룰 수 있도록 해주는 핵심 기능 중 하나이다.리플렉션이란 무엇인가 ? 리플렉션은 코드가 런타임에 객체의 메타데이터를 검사하거나 수정할 수 있도록 하는 프로그래밍 기법이다. 언리얼 엔진에서는 이 기능을 활용하여 객체를 직렬화하거나, 에디터에서 노출하여 사용자가 직접 수정할 수 있도록 한다. 또한 블루프린트와 네트워크 동기화에도 필수적인 역할을 한다.언리얼 엔진에서의 리플렉션 활용언리얼 엔진은 C++ 기반으로 작동하지만, 블루프린트와의 상호 운용.. 2025. 3. 21.
[언리얼] RPC 함수의 키워드: Reliable, WithValidation 신뢰성과 유효성 언리얼 엔진에서 RPC 함수의 Reliable과 WithValidation 기능언리얼 엔진(UE4)은 멀티플레이어 게임 개발을 위한 강력한 네트워크 기능을 제공한다. 그 중에서 대표적인 것이 바로 RPC(Remote Procedure Call) 함수이다. RPC 함수는 서버와 클라이언트 간 데이터를 주고받기 위한 중요한 수단으로, 이를 통해 실시간 상호작용이 가능하다. RPC 함수에는 두 가지 주요 옵션인 Reliable과 WithValidation이 존재한다. 이 두 가지 옵션은 네트워크 환경에서의 안전성과 신뢰성을 확보하기 위해 사용되며, 올바르게 사용하지 않을 경우 불필요한 네트워크 부하가 발생할 수 있다. 이번 글에서는 Reliable과 WithValidation의 개념과 차이점, 사용법 등을 상.. 2025. 3. 20.
[언리얼] 유효성 검사, IsValid(), Check()는 같을까? 언리얼 엔진에서 IsValid(), Check(), if (a), if (a != nullptr), if (!!a) 의 차이점언리얼 엔진 4(UE4)를 사용하여 개발을 진행하다 보면 포인터의 유효성을 검사하는 여러 가지 방법을 접하게 된다. 그중에서도 IsValid() , Check() , if (a) , if (a != nullptr) , if (!!a) 는 특히 많이 사용되는 구문이다. 이 글에서는 이 다섯 가지 방법의 차이점과 사용 목적에 대해 깊이 있게 분석해보도록 한다. 1. IsValid() 함수IsValid() 함수는 언리얼 엔진에서 제공하는 유효성 검사 함수로, 주로 UObject 포인터의 유효성을 검사할 때 사용한다. 다음과 같은 특징을 가지고 있다.UObject 기반의 오브젝트에만 사용.. 2025. 3. 20.
[언리얼] C++ FORCEINLINE 매크로, 인라인 함수와 차이점은? 장점과 단점 분석 언리얼 엔진에서 FORCEINLINE 키워드란?1. FORCEINLINE 키워드 개요언리얼 엔진에서는 성능 최적화를 위해 다양한 C++ 키워드를 활용할 수 있으며, 그중 하나가 FORCEINLINE이다. 이 키워드는 함수 인라이닝을 강제하는 역할을 한다. 일반적으로 C++에서는 inline 키워드를 사용하여 함수의 인라인화를 유도할 수 있지만, 컴파일러가 특정 조건에 따라 이를 무시할 수도 있다. 하지만 FORCEINLINE을 사용하면 컴파일러가 강제로 해당 함수를 인라인 처리하도록 한다.2. FORCEINLINE 키워드 사용법언리얼 엔진에서는 FORCEINLINE 키워드를 사용하여 특정 함수가 반드시 인라인되도록 강제할 수 있다. FORCEINLINE은 언리얼 엔진이 제공하는 FORCEINLINE 매크.. 2025. 3. 19.
[언리얼] 데디케이티드(Dedicated) 서버 환경에서 FPS개발, 주의점_ 네트워크 지연 방지 최적화 언리얼 엔진에서 데디케이티드 서버 환경에서 FPS 게임을 개발할 때 주의해야 할 점1. 데디케이티드 서버란?데디케이티드 서버(Dedicated Server)란 클라이언트와 분리되어 독립적으로 동작하는 게임 서버를 의미한다. 일반적으로 FPS 장르에서는 다수의 플레이어가 네트워크를 통해 경쟁하기 때문에, 안정적인 서버 환경이 필수적이다. 언리얼 엔진에서 데디케이티드 서버를 구축할 경우 성능 최적화, 네트워크 동기화, 보안 등 다양한 요소를 고려해야 한다. 2. FPS 게임에서 데디케이티드 서버를 사용할 때 주의해야 할 점2.1. 네트워크 동기화(Network Replication) 최적화FPS 게임에서 가장 중요한 요소는 네트워크 동기화이다. 플레이어의 움직임, 총알의 궤적, 피격 판정 등 실시간으로 처리.. 2025. 3. 19.