게임 서버의 역사에 대한 짧은 아티클을 읽고,
2가지 질문을 받았다.
- 게임 서버와 게임 클라이언트의 개념을 학습하고, 각각의 역할과 기능을 정확하지는 않더라도 자신이 좋아하는 게임을 바탕으로 설명해주세요.
- 자신이 조사한 게임 서버의 역할/기능 중 가장 흥미롭다고 생각한 것이 무엇인지 설명해주세요
FFXIV를 베이스로 생각해 보자.
1번 질문
클라이언트
게임에서의 클라이언트(Client)란 사용자의 컴퓨터에서 실행되는 게임 파일이라고 생각하면 좋다.
사용자가 보는 게임 화면은 클라이언트 프로그램을 통해 만들어진다.
게임과 소통하는 제1의 창구라고 할 수 있다.
로비 서버에 접속 > 데이터센터에 접속 > 월드에 접속 > 여러 컨텐츠 서버에 접속
이 과정을 모두 사용자의 조작을 받은 클라이언트가 수행해 준다.
밥집으로 비교해도 좋다.
클라이언트는 말 그대로 고객이다. 서버는 가게.
가게의 직원들(모듈 또는 컴포넌트)이 고객(클라이언트)과 소통하며,
고객이 주문한 요리(게임 로직 처리 결과)를 만들어서 보낸다.
결국 클라이언트란,
사용자가 실제로 플레이하는 게임 그 자체이며,
게임 플레이에 필요한 서버와의 상호작용을 대신해 주는 존재.
라고 나는 생각한다.
서버
위에서 서버는 가게라고 했다. 클라이언트의 요청을 받아서 그 결과를 클라이언트에 돌려준다.
사용자 A가 클라이언트에서 몹 B를 스킬 C로 때렸다고 가정하자.
그럼 서버는 A가 C로 B를 때렸다는 정보를 클라이언트로부터 받는다.
서버는 A의 스탯과 C의 대미지 정보를 바탕으로 B에 최종적으로 N이라는 대미지를 입혔다고 계산한다.
클라이언트는 그 결과를 받고 화면상에 애니메이션 등의 처리 결과를 출력한다.
때리기(주문) > 서버에서 대미지 계산(조리) > 클라이언트 처리(받은 음식을 먹음)
의 흐름이다.
클라이언트는 일반적으로 1:1 통신이지만, 서버는 1:N 통신이다.
서버가 그러한 부하에 어떻게 대처해야 할지 고민도 필요하다.
실제로 FFXIV는 곧 새로운 확장팩 출시를 앞두고 있다.
이전의 교훈을 살려 클라우드 등의 논리 데이터센터 기술을 적응 활용하여
유동적으로 트래픽에 대처할 수 있는 능력을 갖추었다.
대규모 트래픽에 대응하는 것도 서버개발자로서의 필수적인 능력이라 할 수 있겠다.
2번 질문
가장 신기하고 흥미롭다고 생각한 것은 FFXIV의 데이터센터 트래블 기능이다.
FFXIV는 데이터센터라는 큰 틀 안에, 월드라는 서버들이 있는 구조다.
각 데이터센터들은 물리적으로 떨어져 있다.
나는 A라는 데이터센터에 존재하는 캐릭터지만 B 데이터센터에 놀러 갈 수 있는 기능이 데이터센터 트래블 기능.
이전에 프로듀서 겸 디렉터 요시다(吉田)는 대충 아래와 같이 동작한다고 설명했다.
- A 데이터센터에 있는 캐릭터 C의 정보를 복사한다.
- B 데이터센터에 C의 정보를 붙여 넣기 한다.
- 일시적으로 B 데이터센터에 해당 캐릭터가 소속돼 있는 것처럼 취급한다.
- B 데이터센터의 캐릭터인 것으로 취급되므로 컨텐츠 서버 접속 등 기본적인 기능을 다 이용할 수 있다.
- 단 필수적인 캐릭터 정보만 복사해 오므로 자유부대나 장터 이용 등의 기능은 제한된다.
말만 보면 쉬운데...
개발팀이 이 기능 구현을 위해 많은 고생을 했다고 들었다.
서버의 규모가 큰 만큼 엮이는 기능도 많다.
모든 걸 고려하며 저런 기능을 구현한다는 것이 꽤 흥미롭다고 생각했다.
'Camp > T.I.L.' 카테고리의 다른 글
[WIL #1] 첫 주를 돌아보며 (0) | 2024.06.21 |
---|---|
[TIL #5] Firebase 활용 (0) | 2024.06.21 |
[TIL #4] API Fetch (0) | 2024.06.20 |
[TIL #2] 웹개발 2주차: JS와 jQuery (0) | 2024.06.18 |
[TIL #1] 웹개발 1주차: 나만의 추억앨범 (0) | 2024.06.17 |