목록UE5 (37)
게임 개발 메모장
네트워크 모드 및 서버 유형 네트워크 모드는 네트워크 멀티플레이어 세션에 대한 컴퓨터의 관계를 설명한다. 어플리케이션을 담당하는 게임 인스턴스는 다음과 같은 네트워크 모드 중 하나를 취할 수 있다. 네트워크 모드 Standalone 이 게임은 서버로 실행되고 있으며 원격 클라이언트의 연결을 허용하지 않는다. 게임에 참여하는 모든 플레이어는 엄격하게 로컬 플레이어입니다. 이 모드는 싱글 플레이어 및 로컬 멀티 플레이어 게임에 사용된다.로컬 플레이어에 맞게 서버 측 로직과 클라이언트 측 로직을 모두 실행한다. Client 이 게임은 네트워크 멀티플레이어 세션의 서버에 연결된 클라이언트로 실행되고 있다. 서버 측 로직을 실행하지 않는다. Listen Server 게임은 네트워크 멀티플레이어 세션을 호스팅하는 ..
UObject에서 파생된 UCLASS는 U로 시작하는 이름이어야 한다. Actor에서 파생된 UCLASS는 A로 시작하는 이름이어야 한다. 일반적인 C++클래스는 특별한 이름 규칙이 없지만, 원하는 경우 앞에 F를 붙여 이름을 정할 수 있다. UCLASS : UObject에서 파생 UCLASS 매크로를 사용해 커스텀 C++ 오브젝트를 선언하면 UE4 클래스처럼 동작하는 커스텀 C++ 클래스를 선언 할 수도 있다. UCLASS 매크로를 사용하면 할당과 해제를 할 때 클래스가 UE4의 스마트 포인터와 메모리 관리 루틴을 사용하게 된다. Tip1. UCLASS는 UE4 매크로를 다수 포함한 C++클래스 이다. 이 매크로는 UE4 편집기와의 통합을 도와주는 추가 C++ 헤더 코드를 생성한다. Tip2. UCLA..
오버라이딩(Overriding) 가상함수를 이해하기 위해선 오버라이딩(Overriding) 에 대해서 알아야 한다. class Parent { void show() { printf("this is parent\n"); } } class Child : public Parent { void show() { printf("this is child\n"); } } class ChildChild : public Child { void show() { printf("this is childchild\n"); } } int main() { Parent * p = new Parent; Child * c = new Child; ChildChild * cc = newChildChild; p->show(); c->show(..
https://docs.unrealengine.com/5.1/en-US/networking-overview-for-unreal-engine/ Networking Overview Setting up networked games for multiplayer. docs.unrealengine.com https://www.inflearn.com/course/%EC%9D%B4%EB%93%9D%EC%9A%B0-%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-part-3 이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해 강의 - 인프런 또 하나의 언리얼 엔진이라고도 불리는 네트웍 멀티플레이어 프레임웍을 학습합..
Service는 연결된 Composite이 활성화 되어 있다면 계속해서 구동 된다. 해당 Service의 DetailPanel에서 설정한 간격과 랜덤 편차에 따라 Tick이 일어난다. (디테일 패널의 서비스 항목) Service는 항상 호출되기에 AI 상태를 변경하는데에 주로 사용되는데, 주로 서비스에서는 특정 이벤트를 실행시켜 주기적으로 블랙보드 변수를 업데이트 한다. 이후에 하위 노드들에 그 변수에 따라 다양한 액션으로 실행 시킨다. * 공격 자체를 할지 말지 결정해주는 블랙보드 데코레이터 달아주기 플레이어 액터키가 설정되어 있으면 그때 실행해라! * 실행될때 마다 난수를 생성하는 서비스를 만들고 만약에 해당 Key값이 0이되면 Task3을 실행하는 로직
데코레이터는 객체 지향 설계에서 자주 언급되는 디자인 패턴중 하나인 Decorator Design Pattern과 같은 의미의 단어 이다. 즉, 기존에 존재하는 Class를 수정하지 않고 기능을 변경하기 위해 기존 Class를 감싸서 (Wrap을 한다고 함) 이 목적을 달성하는 패턴이다. 사용자는 기존 Class의 변경없이 부가적인 기능을 덧붙일 수 있는 장점을 지닌다. (이때 인터페이스는 동일해야 한다.) BT에서 데코레이터가 하는 역할도 똑같다. 데코레이터는 오직 하나의 자식 노드(즉, Task)를 가지는데 (즉, 바로 아래의 자식 노드를 감싸는 역할을 한다는 의미) 이 노드의 행위에 데코레이터가 영향을 준다. 가장 단순하게 자주 사용되는 것은 소위 Filter(필터) 라고 불리는 것으로 자식이 수행..
컴포짓은 상태들의 시작점이다. 상태가 복귀와 실행 플로우에서 어떻게 행동해야 하는지 정의한다. BT의 메인 요소는 'Task'이다. Task는 보다 복잡한 액션을 표현하는 서브 트리로 구성이 된다. 모든 Task들은 공통의 인터페이스를 가지고 있고, 그 자체가 독립적으로 모듈화되어 있어 계층적 구조를 쉽게 구성할 수 있다. Composite Composite 에는 크게 Selector와 Sequence 두 종류가 있다(사실 세 종류이다. Parallel Task). 이 둘 모두 그들의 자식 노드를 순차적으로 방문한다. 하나의 자식 노드가 수행을 완료하면 그 결과값(True or False)을 반환하는데 Composite는 그 결과값을 보고, 진행을 계속할지 멈출지를 결정한다. * Selector Sele..
사용자 혹은 AI(인공 지능)으로 제어 할 수 있는 Object AI Controller 에 기획 의도에 맞게 동작할 수 있게 작성한 BehaviorTree를 RunBehaviorTree를 활용해서 실행시킨다. Blackboard 1) Blackboard는 AI Bot이 의사결정을 하기 위해 필요한 정보를 저장하는 저장소이다. 2) 이 정보는 현재 AI Bot이 처한 여러 상황을 표현하게 되는데 하나의 AI Bot이 아닌 다수의 AI Bot이 협력과 의사결정을 위해 공유하는 공유 메모리로서의 역할 또한 할 수 있다. 왜 Blackboard를 사용할까? 1 효과적인 이벤트 주도형의 행동을 만들기 위해 (To Make Efficient Event-Driven Behaviors) 일반적으로 게임에서 인공 지능..
포인터란? 포인터는 메모리의 주소를 가지고 있는 변수이다. 주소 값을 통한 메모리 접근을 한다. ( 간접 참조 ) 레퍼런스란? 레퍼런스 = 참조자 ( C++ 문법 ) 참조자는 자신이 참조하는 변수를 대신할 수 있는 또 하나의 이름이다. 즉, 변수에 별명(별칭)을 하나 붙여주는 것이다. 변수 명을 통해서 메모리를 참조한다. ( 직접 참조 ) Num이 변수의 이름이면, Ref는 Num의 별명이라는 뜻이다. Num과 Ref는 동일한 메모리 공간을 참조한다. 포인터와 레퍼런스의 차이 1. NULL 초기화 포인터는 NULL 초기화를 할 수 있지만, 레퍼런스는 NULL 초기화를 할 수 없다. 레퍼런스는 반드시 선언과 동시에 초기화를 해야한다. 이러한 특성때문에, 포인터는 가리킬 대상을 변경할 수 있지만 레퍼런스는 ..
버블 정렬(Bubble Sort) 버블 정렬는 서로 인접한 두 원소를 비교하여 정렬하는 알고리즘이다. 0번 인덱스부터 n-1번 인덱스까지 n번까지의 모든 인덱스를 비교하며 정렬한다. 시간 복잡도는 O(n^2)이다. 선택 정렬(Selection Sort) 선택 정렬은 첫 번째 값을 두번째 부터 마지막 값까지 차례대로 비교하여 최솟값을 찾아 첫 번째에 놓고, 두 번째 값을 세 번째 부터 마지막 값까지 비교하여 최솟값을 찾아 두 번째 위치에 놓는 과정을 반복하며 정렬하는 알고리즘이다. 시간복잡도는 O(n^2)이다. 삽입 정렬(Injection Sort) 삽입 정렬은 두 번째 값부터 시작해 그 앞에 존재하는 원소들과 비교하여 삽입할 위치를 찾아 삽입하는 정렬 알고리즘이다. 평균 시간복잡도는 O(n^2)이며, B..