본문 바로가기

전체 글

(74)
[C++/게임서버] TCP VS UDP 지난 글까지 소켓에 대해 이야기를 했으니, 그럼 이 소켓을 통해서 네트워크 상에서 어떻게 컴퓨터가 데이터를 보낼 것인가에 대해 적어보겠다. 예로 들어 내가 A 아파트 208호에 사는데, B 아파트에 101호에 보낸다고 가정하자. 그럼 택배 배송 회사는 상품에 대해 배송 정책을 정하고, 보내는 최종 주소를 지정한 뒤, 그 최종 경로에 대한 단지 경로를 설정하고, 그 이후 택배 운송을 시작할 것이다. 이는 네트워크 상에서도 마찬가지다. A 스위치와 맞물린 1번째 컴퓨터가 있다고 가정하자. 그럼 데이터를 보낸다면, 스위치를 통해서, 라우터로 간다. 그리고 TCP 계층인 어플리케이션 -> 트랜스포트 -> 네트워크 -> 데이터링크 -> 피지컬 계층을 거쳐 B 스위치에 맞물린 1001번째 컴퓨터로 갈 것이다. 이 ..
[C++/게임서버] 소켓 프로그래밍 개념 결론 : 소켓은 전화기와 같다. 이제 네트워크 프로그래밍의 기초다! 소켓이란 단어를 들어보면 처음에는 감도 안 올 것이다. 아니면 벽에 달려있는 플러그를 꽂기 위한 것이 생각날 것이다. 네트워크 프로그래밍이니 예시로 가자. 회사 건물 내에 외부 식당가가 있다고 가정해보자. 그리고 그 식당가는 한식, 일식, 중식 등등으로 이뤄져있다고 가정하자. 그럼 이 식당가는 직원을 고용할 것이다. 근데 고용을 했다면 이 식당가의 전화번호를 배정받을 것이다. 자 이제 점심시간이 되서 우리 팀원은 이 식당에서 배달이나 예약을 것이다. 그럼 내 전화를 통해서 이 식당가에 대표 전화를 하면 이러한 과정을 해결할 수 있을 것이다. 즉 식당가와 손님의 관점을 정리를 해보자. 먼저 식당가는 다음과 같은 과정을 거칠 것이다. 안내원..
[게임서버/언리얼엔진] 심리스/논심리스 서버 멀티 플레이어 게임을 처음 개발할 때 듣게되는 단어중 심리스/논심리스 게임 서버가 있다. 이 두개의 차이는 무엇일까? 논 심리스 서버 클라이언트는 서버로부터 연결을 끊으면, 다시 같은 서버에 접속할 수 있는 서버이다. 만약 맵을 처음으로 로딩하는 경우나, 서버에 처음 접속하는 경우, 그리고 멀티 플레이어 게임이 끝나고 다시 새로운 것을 시작하는 경우 언리얼 엔진 기반 게임의 경우 논 심리스 Travel이 일어난다고 한다. 심리스 서버 더욱 더 매끄러운 경험을 하게 하기 위해서, 클라이언트는 서버로부터 끊김이 없는 방식을 말한다. 이를 통해서 서버를 찾을 수 없거나, 또는 서버가 갑자기 많은 인원을 수용하거나 다시 들어오는 유저의 재접속 이슈를 해결할 수 있다. 이 기능을 사용하기 위해선 언리얼 코드 기반..
[언리얼 엔진/서버] 온라인 서브시스템과 세션 저번 글에서 온라인 서브 시스템은 온라인 서비스에 접근하기 위한 함수들을 제공한다고 이야기를 했었다. 그리고 각 서비스 플랫폼은 친구, 도전 과제, 그리고 세션 등을 제공한다. 즉 온라인 서브시스템으로 이러한 기능들에 대한 인터페이스를 제공해야 한다. 이 중 제일 중요한 건 결국 연결과 관련된 세션 인터페이스이다. 세션 인터페이스는 세션 생성, 관리, 그리고 삭제에 관련된 것을 다루기 위해서 제공된다. 그리고 세션을 찾고 매치메이킹을 위해서 사용된다. 그렇다면 여기서 말하는 게임 세션은 무엇일까? 세션은 서버에서 돌아가고 있는 게임 인스턴스 그 자체를 말한다. 그리고 이러한 세션들은 플레이어가 들어갈 수 있는 공개 세션과 초대받은 사람만 들어갈 수 있는 비공개 세션으로 나뉜다. 세션의 수명 주기는 다음과..
[언리얼 엔진/서버] 온라인 서브시스템 [언리얼 온라인 서브 시스템만 알고싶다면 아래로] 제대로 된 온라인 이야기를 하기 위해선 IP에 대한 이야기가 필요하다. 보통 cmd를 열어서 ipconfig(리눅스는 터미널에 ifconfig)를 치면 굉장히 많은 정보가 뜨게 된다. 그 중 주목해야 할 것은 바로 IPv4(리눅스는 inet)이다. 이 IP 주소는 '로컬' IP 주소이다. 그리고 이것은 로컬 네트워크 라우터에서 지정해 준 IP이다. 대부분의 네트워크 라이터들은 각기 다른 디바이스마다 내부 IP 주소를 할당하고 이것들은 디바이스들의 연결 순서에 따라서 변경될 수 있는 주소값들이다. 그리고 이 주소들은 이 디바이스와 같은 라우터에 이터넷 선이나 WiFi 등등으로 연결된 로컬 네트워크로 연결된 다른 디바이스만이 볼 수 있는 주소들이다. 즉 이 ..
멀티 플레이어 게임의 컨셉 요즘 게이머들은 멀티 플레이어 게임을 안 하고 있는 사람은 없을 것입니다. 그럼 이런 멀티 플레이어 게임은 어떤 통신 체계를 갖추고 있는지 궁금한 사람도 있을 것입니다. 처음에는 단순히 로컬 컴퓨터에 두 명의 사람들이 두 개의 컨트롤러를 달고 게임을 하던 시절이 있었습니다. 제가 어렸을 때 했든 게임중 재밌게 했던 게임인 버추얼 캅도 대표적인 게임 중 하나입니다. 그 이후로 발전해서 이젠 두 개 이상의 컴퓨터나 인스턴스 상에서 돌아갈 수 있게 되었습니다. 그 중 하나의 방식으론 Peer To Peer 방식으로 내가 어떤 일을 하면 그 전부에 대한 정보가 다른 컴퓨터로 전부 전송되는 방식입니다. 그리고 그 반대로도 마찬가지입니다. 하지만 이 방식은 제 3의 플레이어가 있다고 하면 그 사람에게도 보내야 하는..
[게임서버/C++] STL Memory Allocation 보호되어 있는 글입니다.
[게임서버/C++] Stomp Allocation 보호되어 있는 글입니다.