전체 글 282

서버연동 GameMode & GameState

GameMode & GameState 멀티 플레이어와 관련하여 매우 중요한 두 가지 클래스는 game mode 와 game state이다. 언리얼 공식문서에서도 플레이 중인 게임에 대한 정보를 처리하는 두 가지 주요 클래스는 Game Mode와 Game State라고 언급한다. Game Mode 가장 자유도가 높은 게임(Even the most open-ended game)이라 할지라도 기본 규칙이 있으며, 이러한 규칙이 게임 모드를 구성한다. ( Even the most open-ended game = 사물, 사람이 제한 없이 자유롭고 유연한 상태, 즉, 플레이어가 자유롭게 행동할 수 있고 다양한 선택을 할 수 있는 게임 자유도가 높은 게임이라 할지라도~ 라고 생각하면 된다.) 가장 기본적인 수준에서 ..

UE5 2024.05.27

서버 연동 프로젝트 KU - 콜백되는 서브 시스템 함수 만들기

세션 서브시스템 클래스의 델리게이트를 어떻게 선언하는지 알아보자.해당 서브시스템은 메뉴클래스에서 받아온 입력들을 서버에 연동되도록 하는 기능을 가지고있다.그렇다면 두 클래스간의 소통이 필요할 텐데,이를 델리게이트를 통해서 연결해주었으며, 델리게이트 핸들을 통해 간접적으로 전달한다.   즉 해당 클래스의 소통은IOnlineSessionPtr 자료형인 SessionInterface를 이용해서버에 값을 전달하며,델리게이트를 바인딩함으로써 메뉴에서 받아온 값을서브시스템에서 서버로 전달하는 것이다.    해당 respon cumtom delegate를 제작하기 위해멀티 캐스트 델리게이트를 선언하기 위해서 매크로를 사용했다.  Menu Class에서 델리게이트에 정보를 전달해줄 함수를 생성한다.  해당 값을 델리게..

UE5 2024.05.24

윈도우 핸들 (Windows Handle Object)

핸들이란 무엇일까? 우리가 흔히 핸들이라고 하면 자동차의 핸들을 떠올리기 마련이다.자동차 바퀴의 방향을 제어하기 위해 이 핸들을 사용하게 된다. 갖다 붙이기 나름이지만,윈도우의 핸들이 바로 이 자동차의 핸들과 유사하다. 좌회전을 한다고 가정하면운전자는 바퀴를 움직이다가 직접 손으로 바퀴를 돌리지 않고핸들이라는 조향 장치를 이용해 간접적으로 바퀴의 방향을 제어하게 된다. 마찬가지로 윈도우의 핸들도커널 오브젝트(혹은 GDI, 사용자 오브젝트)를 사용하기 위해필요한 하나의 장치라고 보면 된다. 프로세스가 초기화되면 운영체제는프로세스가 커널 오브젝트를 사용할 수 있게 하려고핸들 테이블을 할당하게 된다.(GDI, User 오브젝트는 핸들 테이블을 할당하지 않는다.고유 핸들 값만 받아서 바로 사용한다.) 핸들 테이..

WINDOWS 2024.05.24

C++/WinRT를 통한 동시성 및 비동기 작업

C++/WinRT를 통한 동시성 및 비동기 작업 이 게시글의 내용비동기 작업 및 Windows 런타임 "비동기" 함수호출 스레드 차단코루틴 작성Windows 런타임 형식을 비동기식으로 반환 해당 게시글의 내용 중에서 중요하게 볼 것 이 항목에서는 코루틴 및 co_await 의 개념을 소개하며,UI 및 비 UI 애플리케이션 모두에서 사용하는 것이 좋다.간단히 하기 위해서는 이 소개 항목의 코드 예제에서는 대부분Windows 콘솔 애플리케이션 (C++/WinRT)프로젝트를 보여준다.이 항목의 뒷부분에 나오는 코드 예제에서는 코루틴을 사용하지만,편의상 콘솔 애플리케이션 예제에서 종료 직전에 차단 get함수 호출도 사용하므로출력 인쇄를 마치기 전에 애플리케이션이 종료되지 않는다.UI 스레드에서 이 작업 (차단 ..

WINDOWS/C++ - WinRT 2024.05.23

서버 연동 프로젝트 KU - 3. 맵 이동 로직 구현(2)

해당 값을 C++에서 제작해주었다.해당 로직은 추후에 좀 더 제작 후에 인터렉션 다이어그램으로 정리해서 업로드 하겠다.아직 로비와 메뉴로직은 완성되었지만,메뉴 시스템의 전반적인 구성은 완성되지 않았다. 몇명이 참가할 것인지에 대한것을 BP에서 조절할 수 있도록 제작하였으며,해당 매치 타입 또한 BP에서 조절 가능하도록 구현하였다. 제작하면서 배웠던 것언리얼에서 서버 이동할 때 맵을 동시에 담아두지 않는 기법이 있다.내 생각에는 이것은 최적화 기법이라고 생각한다.예전에 DX로 던그리드를 제작할 때는 내가 맵 이동 시에 제작했던 기법과 흡사했다. 제작하며 어려웠던 점서버에 대한 이해와 델리게이트 완벽히 되지 않아서 그냥 어물쩡 넘어가면서 쓴 내용이 많다.따로 서버에 대한 기본기와 언리얼 공식 문서를 보며 복..

UE5 2024.05.22

동적 계획법 (1)

동적 계획법이란?1. 메모이제이션2. 타뷸레이션3. 부분집합의 합 문제4. 문자열과 시퀀스에 대한 동적 계획법해당 게시물은 다음 작업을 수행할 수 있는 지식을 담았다. 주어진 문제에 동적 계획법을 적용할 수 있는지 분석하는 능력메모이제이션과 타뷸레이션 기법을 서로 비교하여 적절한 방법을 선택함메모이제이션을 위한 적절한 캐시 사용 방법을 찾을 수 있음직관적인 전수 조사 방법을 사용하여 주어진 문제를 분석점진적으로 최적화 알고리즘을 구현하면서 동적 계획법 해법을 개발할 수 있는 능력 해당 게시글에서는 동적 계획법에 대해 소개하겠다.그리고 컴퓨터 과학 분야에서 널리 알려진몇몇 문제를 동적 계획법으로 해결하는 방법에 대해 알아보겠다. 많은 프로그래머가 좋아하기도하고 동시에 두려워하기도 하는 동적 계획법은분할 정..

플러그인 제작

플러그인 제작플로그인이란 뭘까?특정 목적을 위해 설계된 코드 및 데이터 모임이다.개발자는 프로젝트 단위로 쉽게 활성화하거나 비활성화할 수 있다.멀티플레이어 세션 관련 기능을 처리할 수 있는 새로운 플로그인을 제작했다.해당 플로그인은 모든 온라인에 액세스할 수 있도록 온라인 하위 시스템을 사용하도록 구성하였다. 그럼 플로그인과 언리얼 엔진 플로그인은 뭘까?간단히 말하자면 세션을 관리하는 데 사용할 하위 시스템 기능을 담당하는 녀석이다.플로그인은 런타임 중에 게임 플레이 기능을 추가하거나 게임을 만들 때 사용할 편집기 기능을 추가할 수 있다.그리고 플로그인 중에서는 언리얼 엔진 편집기도 있다. UE엔진의 플러그인은 엔진 내의 플러그인 편집기에서 활성화할 수 있다.플러그인도 모듈로 구성되어 있다.당연하게도 언..

UE5 2024.05.17

서버 연동 프로젝트 KU - 2. 맵 이동 로직 구현(1)

1. 싱글 멀티 영역 구분 2. 플러그인 제작 3. 게임 인스턴스 상속 싱글 멀티 영역 구문 맵이동1. 로비 만듦2. 싱글플레이 영역과 멀티플레이 로비 영역 구분 위 로직을 델리게이트를 이용하여 코드를 작성하였다. CreateSessionCompleteDelegate(FOnCreateSessionCompleteDelegate::CreateUObject(this, &ThisClass::OnCreateSessionComplete)),FindSessionsCompleteDelegate(FOnFindSessionsCompleteDelegate::CreateUObject(this, &ThisClass::OnFindSessionsComplete)),JoinSessionCompleteDelegate(FOnJoinSe..

UE5 2024.05.17