Networking

    [바미] P2P, Relay 서버 방식에 대해 알아보자!

    P2P는 Peer To Peer방식이라 해서 클라이언트 끼리 직접적으로 연결하는 방식입니다. 보통 1:1에서는 클라이언트와 클라이언트가 연결하는 형태입니다. 5명이 연결하는 다대다 형태일 때 2가지로 나뉘는데 방장을 정해서 방장에게 커넥트하는 방식. 방장이 모든 커넥션을 가지고 있는 방식이 있고, 다른 하나는 풀리 커넥션(Fully Connection)이라 해서 모두가 모두에게 커넥션 하는 방식이 있습니다. 각각 장단점이 있는데 방장을 정해서 방장에게 커넥트하는 방식은 장점이라고 보면 커넥션이 하나밖에 없으니까 하나만 관리하면 되고, 방장이 있기 때문에 4개의 커넥션을 관리하지만 각자의 입장에서는 하나만 관리하는 측면에서 봤을 때 각 클라이언트가 걸려야되는 커넥션 수가 적다는 장점이 있고, 방장이 어떤 ..

    [바미] 중계서버와 그 외 유용한 방식들에 대해 알아봅시다.

    Deterministic을 구현하기 위해서 Delay와 Rollback을 이용한 방법이 있다고 했었는데요. 이 번에는 실제 실무에서 사용하는 방법을 알아보도록 하겠습니다. 중계서버를 사용하는 방법 서버에 클라이언트들이 접속을 하는데 어떤 클라이언트가 패킷을 보내면 서버가 하는 일은 받은 패킷을 다른 클라이언트에게 전달하는 일만 합니다. 그래서 받아서 바로 전달하기 때문에 Relay서버라고 표현하기도 하고, 하나를 받았는데 모든 클라이언트에게 전달하기 때문에 중계서버(Broadcast Server) 라고도 합니다. P1이 있고, P2가 있고 중계서버가 있다고 가정하면 P1이 어느 시점에서 버튼을 눌렀을 때 바로 적용시키는게 아니라 서버로 바로 보냅니다. 서버는 이 정보를 모든 클라이언트에게 보내줍니다. 내..

    [바미] Delay 와 Rollback에 대해 알아보자!

    Deterministic에 대한 기본적인 컨셉에 대해 알아보았습니다. 두 Input이 똑같이 적용되면 양 컴퓨터의 상태(결과)가 같다. 다르게 얘기하면 싱크가 맞다고 말할 수 있습니다. 그래서 이 레이턴시를 잘 극복하느냐가 관건였는데요. 이 Sync가 같지 않은 상태를 Desync라고 합니다. 이 desync가 일어나지 않게 하는게 Deterministic의 가장 중요한 점입니다. 그래서 이걸 막는 몇가지 방법이 있는데요. 첫 번째 방법으로 Delay를 주는 것입니다. 예를 들어 Player1과 Player2가 있다고 가정할 때 이제 이것을 P1과 P2로 나타내겠다. P1이 Time이 0ms일 때 버튼을 눌렀다고 가정하고, 이 버튼이 P2까지 적용되는데 시간이 걸립니다. P2도 시간이 50ms일 때 버튼..

    [바미] Deterministic방식에 대해 알아보자!

    TCP와 UDP를 통해 어떻게 전송을 하는지를 알아보았다면 이번에는 그 데이터를 어떻게 처리할 것인지에 대해 알아보도록 하겠습니다. 이 부분에서도 크게 두가지 방식으로 나뉘는데요. Deterministic server Authority 실제로 UDP를 쓰는 부분에는 Deterministic를, TCP를 쓰는 부분에서는 server Authority를 많이 씁니다. 왜 그렇게 됐는지는 모르겠지만 보통 보면 이런 형태를 나타내고 있습니다. Deterministic는 반응성이 좋은 게임에 많이 쓰고, server Authority는 서버 권한이 필요한 경우에 많이 써서 MMORPG에 많이 쓰죠. 하지만 엄밀히 따지면 UDP와 TCP와 저 둘의 관계는 없습니다. 우선 첫번째로 Deterministic에 대해 알..

    [바미] Protocol TCP,UDP에 대해 알아봅시다.

    시작 Protocol은 우리말로 하면 약속, 규약 이라는 의미이고, Network Protocol은 통신 규약입니다. 서로 간에 어떤 통신을 하기 위해서는 어떤 약속이 필요한데요. 프로토콜에는 여러가지가 있다. 여기서 전부 다 알아보진 않고, 게임에서 필요한 TCP, UDP만 다뤄보도록 하겠습니다. 여기에 베이스가 되는게 IP라는 프로토콜이 있어요. 이것이 하위 계층이고, TCP, UDP가 상위 계층입니다. TCP, UDP위에 HTTP, SMTP, 등등이 있습니다. 여러 레이어들이 있는데 보내는 쪽에서 데이터를 만들어서 레이어들을 거칠 때마다 거기게 해당하는 데이터들이 하나씩 추가 되서 맨 마지막에 데이터가 인터넷을 통해 전송하게 됩니다. 받는 쪽에서도 여러 레이어들이 있어서 각 레이어들에 맞는 데이터들..

    [바미] 게임 네트워킹에 대해

    시작 네트워킹? 간단하게 데이터를 주고 받는 것으로 정의 내릴 수 있습니다. 데이터를 주고받는다고 말하면 상당히 범위가 넓은데 컴퓨터 내부를 살펴보면 데이터가 이동하는것이라고 보면 HDD(SSD) -> RAM -> CPU 로 데이터가 이동하고, 처리된 다음에 CPU -> RAM 으로 이동하고 파일을 저장할 것이 있으면 HDD(SSD)로 들어가는데 엄밀히 따지면 컴퓨터 내부에서 일어나는 데이터의 교환도 네트워킹이라고 볼 순 있지만 흔히 얘기하는 네트워킹은 이것과는 거리가 멀고, 멀리 떨어져있는 컴퓨터간의 데이터가 옮겨가는 것을 의미합니다. 예를 들면 한국에 있는 개인 PC에서 Amazon.com을 쳤을 때 미국에 있는 서버에서 데이터를 받아오게 되는데 한국에 있는 서버에서 Request를 보내면 미국에서 ..