멀티플레이어

개요 이 글에서는 서로 다른 아키텍처에서 바이트를 주고 받을 때 신경 써야 하는 바이트 배열 방법, 엔디안에 대해서 알아볼 것이다. 엔디안 엔디안(Endian)은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻한다. 특히 컴퓨터에서 바이트를 메모리에 나열할 때 두 가지 방법이 있다. 하나는 빅 엔디안(Big endian)이고 하나는 리틀 엔디안(Little endian)이다. 빅 엔디안과 리틀 엔디안 빅 엔디안은 우리가 바이트 숫자를 쓸 때와 똑같다. 최상위 비트(Most Significant Bit, MSB)를 메모리의 가장 낮은 주소에 배치시켜 나머지를 쭉 나열시킨다. 말그대로 제일 큰 값을 먼저 나열시키는 방법이다. 사람이 숫자를 읽고 쓰는 방법과 똑같기 때문에 디버깅 과정에서 메모리의..
·일상/기타
Super Simple Online Game Development: Unreal Engine and C++ 로컬&멀티플레이어 게임을 만드는 강의로 C++에 대한 지식이 있는 언리얼 초중급 대상 강의, 네트워크 레이턴시 기본부터 상태 동기화까지 포함 되어 있으며, 대규모 게임을 다루지는 않지만 MMO www.udemy.com 시작하게 된 이유 Udemy 광고 아님. 언리얼 엔진을 배워보고 싶었고, 멀티플레이어 게임 개발에 관심이 많았기 때문이다. 언리얼 엔진을 배우려는 시도는 한 두번 하긴 했다. 엔진에서 제공하는 기능 자체에 대한 설명은 공식 문서에 너무나 잘 되어있다. 하지만 from scratch 방식의 설명은 너무나 부족하다. 처음부터 하나씩 따라가며 완성해보는 프로젝트가 없었다. (요즘은 있는지 ..
문제 특정 맵에 대해서 ServerTravel을 하는 게임에서 travel이 안되는 문제가 발생했다. 에디터 상에서는 정상적으로 작동했지만 패키징된 버전에서 맵 이동이 되지 않았다. 원인을 파악하기 위해서 로그 파일을 뒤져보았다. 패키지 경로에서 /게임명/Saved/Logs의 .log파일에서 "error"로 검색해보니 unable to find '맵 이름'과 file not found관련 로그가 적혀있었다. 에디터에서는 당연히 프로젝트 폴더 내에 파일이 존재하니 정상 작동하지만, 패키징 시 문제가 발생하는 것이므로 나름대로 유추하자면, 해당 맵이 포함안된 상태로 패키징 됐다고 생각할 수 있다. 따라서 관련 키워드로 검색해봤더니 해결법을 찾을 수 있었다. 해결 [Edit] > [Project Setting..
Travel 언리얼의 Travel에는 크게 두 가지, Seamless와 non-seamless 방식이 있다. Travel은 쉽게 말해서 한 레벨에서 다른 레벨로 옮겨가는 것이다. 세션형 게임으로 예를 들어보자면, 세션에 접속했을때 로비맵에서 x명의 플레이어가 약 y분동안 대기하고 실제 플레이맵으로 옮겨지는 것이 Travel이다. Seamless Seamless는 원활하다는 뜻으로, non-blocking operation이다. 이름대로 매끄러운, 원활한 이동이며 Transition map이라는 중간에 거쳐가는 맵을 사용한다. 즉, A맵에서 B맵을 로딩할 때 순서는 A -> Transition map -> B가 된다. 왜 이렇게 하는걸까? 만약 로비맵은 엄청 작은 놀이터인데 실제 플레이맵은 거대한 섬이라고..
virtus
'멀티플레이어' 태그의 글 목록