인프런 커뮤니티 질문&답변

강동훈님의 프로필 이미지
강동훈

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

유니티 연동 #3

유저 간 패킷전송의 평등성? 에 대한 질문입니다.

작성

·

259

0

온라인 게임을 하다보면 pc의 성능이 안좋거나 인터넷 환경이 불안정한 경우 렉이 걸려 해당 유저의 캐릭터가 멈추는 경우를 봤습니다.

이는 아마도 서버와 패킷을 전송하는 과정에서 pc성능의 문제로 패킷을 소화하지 못하거나 인터넷이 끊겨 패킷을 제때 전달받지 못해서 발생하는 문제라고 생각합니다.

그렇다면 반대의 경우 pc 성능이나 인터넷 환경이 타유저에 비해 압도적으로 뛰어난 경우는 타 유저에 비해 보다 많은 패킷을 주고 받을 수 있을 거라 생각합니다. 

그럴 경우 타인보다 더 많은 이동, 공격을 하는 등 유저 간 벨런스에 문제가 생길 것 같고 그를 방지하기 위해 패킷 전송에 있어 일종의 상한선을 걸어야 하지 않을까 라는 생각을 합니다. 마치 프레임 제한을 거는 것처럼요.

이게 맞다면 제 개인적인 판단으로는 그러한 한 번에 전송할 수 있는 패킷의 양, 전송대기 시간 등을 클라이언트 쪽에서 제한하는 쪽으로 코드를 짜야하는 게 맞다고 생각이 드는데 이런 부분을 클라쪽에서 관리를 해야할까요? 아니면 서버 쪽에서 관리를 해줘야 할까요?

 

--

번외의 질문입니다.

 

롤의 경우 렉이 걸리는 유저는 혼자 렉이 걸리고 심할 경우 게임에서 나가지는 식인 반면에 닌텐도의 슈퍼마리오메이커2는 유저대전에서 한 명이 렉이 걸리면 전원이 렉이 걸리는 방식으로 알고 있습니다.

게임을 개발하는 개발자로서 마리오 방식보다는 롤의 방식이 유저에게 좀 더 긍정적인 평가를 받을 수 있을 거라 생각하는데 게임사 측에서 마리오 방식을 택하는 이유가 있을까요?

 

늘 좋은 강의 감사합니다.^^

답변 1

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

그렇다면 반대의 경우 pc 성능이나 인터넷 환경이 타유저에 비해 압도적으로 뛰어난 경우는 타 유저에 비해 보다 많은 패킷을 주고 받을 수 있을 거라 생각합니다.

이건 못 받는 사람이 심각한 문제를 지닌 것이라서,
이를 기준으로 다른 정상적인 클라들을 너프(?)시키진 않습니다.
따라서 별도의 처리를 하지 않는게 맞습니다.

게임을 개발하는 개발자로서 마리오 방식보다는 롤의 방식이 유저에게 좀 더 긍정적인 평가를 받을 수 있을 거라 생각하는데 게임사 측에서 마리오 방식을 택하는 이유가 있을까요?

롤 같은 게임은 전형적인 Client-Server 모델이라서 그렇고,
스타크래프트1, 마리오 등은 P2P 모델이라 그렇습니다.
CS 모델에서는 게임 회사 쪽에 서버가 있어서 심판의 역할을 하기에
해킹 이슈가 없고 특정 클라의 네트워크가 느리면 그 클라만 손해를 봅니다.
P2P 모델에서는 Peer 중 하나가 서버의 역할도 겸하게 되는데 (보통 방장)
서로 맞물려서 통신을 하되 게임 진행을 위해
모두가 다음 상태에 동의하지 않으면 대기하는 경우가 있습니다.
(스타1의 waiting for player)
P2P는 조작에 자유롭지 못하고 단점이 많아 요즘은 잘 사용되지 않지만
그럼에도 장점을 꼽아보자면, 운영하는 쪽에서 서버 비용이 들지 않는다는 점이 있습니다.
유저들을 중계하는 서비스만 제공하면, 자기들끼리 서버를 열고 연결 붙고 하기 때문에
별도의 부담이 없죠. 게임이 흥행하면 서버 비용도 아주 큰 이슈가 될 수 있습니다.
배그 같은 게임의 경우 거의 매출의 25%가 서버 비용으로 나가는 것으로 알고 있습니다.

 

 

강동훈님의 프로필 이미지
강동훈
질문자

좋은 답변 감사합니다.

강동훈님의 프로필 이미지
강동훈

작성한 질문수

질문하기