본문 바로가기

Unreal Engine

(7)
[언리얼엔진] Protobuf 세팅 방법 Protobuf(Protocol Buffer)는 구글에서 개발한 데이터 직렬화 라이브러리입니다. 언어와 독립적이고, 다양한 언어를 지원하며 통신이나 데이터 저장에 사용하기 좋기 때문에 게임 쪽에서는 굉장히 많이 사용하는 편입니다. 다만 언리얼 엔진에서 Protobuf를 사용하는 예시는 많고 cmake 예시도 많지만, 세팅하는 방법은 많이 없어 이에 대한 기록을 합니다.cmake를 활용한 솔루션 파일 생성 - https://rb.gy/0pysrt 구글 프로토콜 버퍼 사용하기(with visual studio, cmake)지난 포스팅에서 구글 프로토콜 버퍼에 대해서 간략히 알아보았습니다. 직접 구글 프로토콜 버퍼를 사용해보기 위해서 발품 팔았지만, 정보가 생각보다 쉽게 나오지 않아서 설치하면서 얻은 경min..
[게임서버/언리얼엔진] 심리스/논심리스 서버 멀티 플레이어 게임을 처음 개발할 때 듣게되는 단어중 심리스/논심리스 게임 서버가 있다. 이 두개의 차이는 무엇일까? 논 심리스 서버 클라이언트는 서버로부터 연결을 끊으면, 다시 같은 서버에 접속할 수 있는 서버이다. 만약 맵을 처음으로 로딩하는 경우나, 서버에 처음 접속하는 경우, 그리고 멀티 플레이어 게임이 끝나고 다시 새로운 것을 시작하는 경우 언리얼 엔진 기반 게임의 경우 논 심리스 Travel이 일어난다고 한다. 심리스 서버 더욱 더 매끄러운 경험을 하게 하기 위해서, 클라이언트는 서버로부터 끊김이 없는 방식을 말한다. 이를 통해서 서버를 찾을 수 없거나, 또는 서버가 갑자기 많은 인원을 수용하거나 다시 들어오는 유저의 재접속 이슈를 해결할 수 있다. 이 기능을 사용하기 위해선 언리얼 코드 기반..
[언리얼 엔진/서버] 온라인 서브시스템과 세션 저번 글에서 온라인 서브 시스템은 온라인 서비스에 접근하기 위한 함수들을 제공한다고 이야기를 했었다. 그리고 각 서비스 플랫폼은 친구, 도전 과제, 그리고 세션 등을 제공한다. 즉 온라인 서브시스템으로 이러한 기능들에 대한 인터페이스를 제공해야 한다. 이 중 제일 중요한 건 결국 연결과 관련된 세션 인터페이스이다. 세션 인터페이스는 세션 생성, 관리, 그리고 삭제에 관련된 것을 다루기 위해서 제공된다. 그리고 세션을 찾고 매치메이킹을 위해서 사용된다. 그렇다면 여기서 말하는 게임 세션은 무엇일까? 세션은 서버에서 돌아가고 있는 게임 인스턴스 그 자체를 말한다. 그리고 이러한 세션들은 플레이어가 들어갈 수 있는 공개 세션과 초대받은 사람만 들어갈 수 있는 비공개 세션으로 나뉜다. 세션의 수명 주기는 다음과..
[언리얼 엔진/서버] 온라인 서브시스템 [언리얼 온라인 서브 시스템만 알고싶다면 아래로] 제대로 된 온라인 이야기를 하기 위해선 IP에 대한 이야기가 필요하다. 보통 cmd를 열어서 ipconfig(리눅스는 터미널에 ifconfig)를 치면 굉장히 많은 정보가 뜨게 된다. 그 중 주목해야 할 것은 바로 IPv4(리눅스는 inet)이다. 이 IP 주소는 '로컬' IP 주소이다. 그리고 이것은 로컬 네트워크 라우터에서 지정해 준 IP이다. 대부분의 네트워크 라이터들은 각기 다른 디바이스마다 내부 IP 주소를 할당하고 이것들은 디바이스들의 연결 순서에 따라서 변경될 수 있는 주소값들이다. 그리고 이 주소들은 이 디바이스와 같은 라우터에 이터넷 선이나 WiFi 등등으로 연결된 로컬 네트워크로 연결된 다른 디바이스만이 볼 수 있는 주소들이다. 즉 이 ..
멀티 플레이어 게임의 컨셉 요즘 게이머들은 멀티 플레이어 게임을 안 하고 있는 사람은 없을 것입니다. 그럼 이런 멀티 플레이어 게임은 어떤 통신 체계를 갖추고 있는지 궁금한 사람도 있을 것입니다. 처음에는 단순히 로컬 컴퓨터에 두 명의 사람들이 두 개의 컨트롤러를 달고 게임을 하던 시절이 있었습니다. 제가 어렸을 때 했든 게임중 재밌게 했던 게임인 버추얼 캅도 대표적인 게임 중 하나입니다. 그 이후로 발전해서 이젠 두 개 이상의 컴퓨터나 인스턴스 상에서 돌아갈 수 있게 되었습니다. 그 중 하나의 방식으론 Peer To Peer 방식으로 내가 어떤 일을 하면 그 전부에 대한 정보가 다른 컴퓨터로 전부 전송되는 방식입니다. 그리고 그 반대로도 마찬가지입니다. 하지만 이 방식은 제 3의 플레이어가 있다고 하면 그 사람에게도 보내야 하는..
[언리얼 엔진] 월드와 액터 월드 월드란? 언리얼 엔진 뷰포트 윈도우에 보이는 작업 공간을 통해 투영되고 있는, 컴퓨터 안의 가상 세계이다. 월드는 게임 컨텐츠를 구동하기 위해 필요한 필수적인 환경이며, 공간, 시간, 물리, 렌더링을 제공한다. 공간이란? 공간은 가상 세계를 구성하는 3차원의 영역이다. 게임 컨텐츠를 구성하는 요소들은 월드내에 반드시 존재해야 하는데, 이를 위한 Transform이라는 구조체를 제공하며, 기본 단위는 cm이다. 언리얼에게 시간이란? 가상 공간 안에 흐르는 시간을 말한다. 가상 세계에서 시간은 현실 세계와 동일하게 흘러가지만, 멈출수도, 다시 재개할 수도, 빠르게, 느리게 설정할 수도 있다. 물리? 월드 공간에서 배치된 물체에 작용되는 물리적인 환경이다. 중력, 충돌 등과 같은 물리적 현상을 계산해서 ..
[언리얼 엔진4] TEXT 재정의 문제 언리얼 엔진으로 프로그래밍할 때 Windows.h를 include를 해서 사용하는 경우가 있을 것이다. 이런 경우 TEXT 재정의 문제가 warning으로 뜨는 경우가 있는데 방치하는 경우 나중에 크나큰 error로 돌아오게 된다. 이런 문제를 막는 방법은 간단하다. 평소에 Windows.h를 사용하는 경우 다음과 같이 "Windows/AllowWindowsPlatformTypes.h"와 "Windows/HideWindowsPlatformTypes.h"를 같이 선언해준다. 하지만 이것만으로는 TEXT 매크로의 재정의 문제를 해결할 수 없다. 그렇기 때문에 두 헤더를 더 선언해줘야 한다. 다음과 같이 선언을 해주면 TEXT 매크로가 재정의되는 것을 방지할 수 있다.