[2025-03-11] CAP 이론과 게임 동기화 방식

하돌·2025년 3월 11일
0

네트워크

목록 보기
1/5

기초같은 경우에 강의자료에 너무 정리가 잘 되있어서 노션에 기록했고
조금 어려운 내용을 간단히 재정리해보았다.

네트워크를 알야야 하는 이유

기본적으로 싱글 플레이 게임은 멀티 온라인 게임보다 돈을 쓰는 사용자가 적다.
한마디로 돈이 덜 벌린다. 그래서 네트워크를 알아야 하는 것이다.


온라인 게임과 네트워크 구성

온라인 게임은 여러명의 사용자가 하나의 컨텐츠를 곻유하는 게임을 말한다.

장르를 떠나, 실시간과 어씽크 방식 2가지로 나뉘며,

실시간(씽크)은 온라인 서버(클라우드) 환경과 LAN 파티 환경으로 나뉩니다.

어씽크는 대부분의 모바일 게임이다.


CAP 이론

CAP 이론 이란?

분산 시스템의 동기화 “조건 3개를 모두 만족하는 시스템은 없다”는 이론이다.

Consistency (일관성)

  • 전체 시스템은 동일한 상태 값을 갖고 있어야 한다.

Availability (가용성)

  • 언제든지 시스템에 접근하여 값을 읽고 쓸 수 있어야 한다.

Partition Tolerance (분할 용인)

  • 시스템 내에서 네트워크 분할(네트워크 장애)이 발생하더라도,
    전체 시스템이 멈추지 않고 일부 노드가 계속 동작할 수 있어야 한다.

이때, P.C(C.P), P.A(A.P)의 조합은 가능하지만 C.A(A.C)의 조합은 불가능하다.
일관성과 가용성을 만족하더라도 네트워크 시스템 분할을 허용하지 않아야 하는데 현실적으로 네트워크 장애가 발생할 수 밖에 없다.
즉, C.A를 만족해도 네트워크 장애가 발생하면 분산시스템의 C.A가 의미가 없어진다.

이렇게만 정리하면 정확히 어떤 개념인지 모르니까
아래에 예시를 들면서 어떤 개념인지에 대해 파악해보았다.


게임의 동기화

초기의 온라인 게임들은 보통 일관성을 유지하고 가용성을 포기했다.

그림을 통해 설명하면 클라이언트가 파란 화살표로 입력을 하면 바로 클라이언트에 상태를 업데이트 하는게 아니라 서버로 보낸다. 그러면 서버에는 사용자들이 남긴 입력값들이 모여있을 것이다. 그것을 동시에 Round 혹은 Tick마다 짧게 브로드캐스팅(Broadcasting)하는 방식이 초기의 동기화 방식이다.

가용성이 떨어지냐면 언제 어디서든 값을 사용할 수 있지 않고 값을 사용하려면 서버의 응답을 기다려야 하기 때문이다.

위 방식은 지금도 쓰긴 하지만 빠른 응답속도가 필요해진 요즘 게임들은
위 방식을 기본으로 깔고 가고 사용자가 뭔가 입력하면 자신의 클라이언트에서 제일 먼저 업데이트한다. 그 다음 서버로 입력을 보낸다. 서버에서는 로직 처리를 하지 않고 즉시 나의 클라이언트로 브로드캐스팅을 해준다. 지금껏 예시를 든 컴퓨터를 A라고 가정해보자.
A는 이미 업데이트가 끝났으므로 서버에서 브로드캐스팅을 해준값을 받고 검증을 해준다.

그래서, 클라이언트에서 업데이트는 예측으로 하고 서버에서 온 브로드캐스팅된 값으로 보정을 해준다. 예측이 맞으면 업데이트 된 값으로 그대로 사용, 예측이 틀리면 업데이트에서 보정된 값으로 적용된다.

결론은 게임의 동기화에는 2가지 방식이 있다. 클라이언트에서 받은 입력을 모아놨다가 한번에 브로드캐스팅 후 동시에 업데이트하는 방식, 이벤트가 발생한 클라이언트부터 먼저 업데이트하고 브로드캐스팅된 값으로 다른 클라이언트도 업데이트하는 방식 << 이렇게 2가지다!

profile
게임 개발자로서 배운 것을 정리한 블로그입니다. 벨로그 서버가 불안정한 거 같아서 티스토리로 옮겼습니다.

0개의 댓글