티스토리 뷰

오늘은 Unity에서 멀티플레이 구현을 위한 기본적인 지식을 배우고자한다.

 

우선 멀티플레이 구현을 위해 필요한 8가지 요소를 알아보자

 

1) 네트워크 지연에 대한 허용수준 (Latency tolerance)

 - 네트워크 지연(Network latencies)은 먼거리에 있는 사람끼리, 혹은 이용하는 통신망에 따라 발생 할 수 있다.

 - 다른사람과 함께 플레이하기 위해서는 모든 플레이어가 같은 수준의 정보를 가질때 까지 기다려야 하기 때문에,

 - 게임을 만들 때 이러한 네트워크지연을 얼마만큼 허용할 것인지 정해야 한다.

 - 네트워크 지연은 예측(prediction)과 조정(reconciliation) 등의 기술을 이용하여 어느정도 완화 시킬 수 있다.

 

2) 세션당 플레이어 숫자(Players per session)

 - 동시에 여러 접속자들을 관리할 때 사용되는 네트워크 모델은, 이용자 숫자에 한계가 존재한다.

 - 사람들이 많을 수록 더 많은 네트워크 동기화가 필요하기 때문에, 동시 접속자 수를 잘 결정해야 한다.

 - 동기화 해야하는 정보의 수준을 낮추는 것으로, 더 많은 사람들이 동시에 플레이 하도록 도울 수 있다

 

3) 동기화 규모 (Synchronized simulation scale)

 - 동기화되는 정보의 크기는, 네트워크 속도에 큰 영향을 미칠것이다.

 - 네트워크 통신을 원활하게 하기 위해서는 '무엇을 동기화 할것인가'를 잘 정의할 필요가 있다.

 - 몇몇 데이터는 동기화 되지 않아도, 게임플레이에 영향을 미치지 않기 때문이다 (예를들어 맵의 배치 등)

 - 그밖에 동기화 규모를 최적화 하기 위해 아래와 같은 방법이 사용될 수 있다. *mitigations : 완화조치

  • 동기화 주기를 조절하기  
  • 분할하여 동기화 하기 (예를들어 맵 전체를 동기화 하는게 아니라, 플레이어 시야에 보이는 수준까지만 동기화)
  • 사람들이 관심 있는 내용만 (혹은 중요한 내용만) 동기화 하기

4) 연산의 정확성 (Precision)

 - data 연산의 정확도가 올라갈 수록 많은 resorce를 사용하게 된다.

 - 하지만 게임속 모든 연산이 다 중요하지 않으며, 따라서 어떤 경우에는 대략적인 계산만 필요한 경우도 존재한다.

 - 따라서, 게임에서 중요한 연산이 아닌 나머지에 대해서 정확성을 낮추면 전반적인 성능을 향상 시킬 수 있다.

 

5) 서버 구축에 필요한 비용 (Cost)

  - 서버의 종류에 따라 비용이 부과되는 방식이 다르기 때문에 이를 잘 알아야한다.

 

6) 개발의 복잡성 (Developer Complexity)

  - 네트워크환경을 개발하기 위해서는 여러가지 복잡한 요소들을 고려해야 한다.

  - 특히, 초반에 모든 부분에서 방향을 잘 잡아야 하는데 향후 문제가 발생하였을 경우 전문가를 고용해야 하기 때문이다.

  - 잘 쓰여진 doc, 쉽게 따라할 수 있은 예시, 활발한 commnity등을 가진 좋은 솔류션을 사용한다면, 복잡성을 해결하는데 도움을 얻을 수 있다.

 

7) 보안 (Cheat mitigation)

  - 게임의 데이터를 손봐서 이익을 취하는 이른바 '핵쟁이'들이 게임을 망칠 수 있다.

  - 따라서 조작할 수 있는 데이터는 게임 플레이어의 개인 컴퓨터가 아닌 제3의 서버에 저장해서 접근을 막는 방법등이 있다.

 

8) 네트워크 모델의 기능 확장성 (Lock-in)

  - 어떤 서버환경이나 네트워크 모델의 경우, 향후 더 나은 기능을 추가하는데 제약이 될 수 있다. (예를들어 보안상 기능)

  - 따라서 쉽게 업그레이드가 가능한 솔루션을 찾는 것은 매우 중요하다.

 

https://unity.com/how-to/multiplayer-game-development-factors

 

The 8 factors of multiplayer game development

Want to learn how to make an online multiplayer game? You need to know the eight major considerations for creating and operating multiplayer games.

unity.com

 

출처 : blog.Unity.com

 

https://blog.unity.com/games/the-8-factors-of-multiplayer-gamedev-in-small-scale-cooperative-games-ft-breakwaters

 

The 8 factors of multiplayer gamedev in small-scale cooperative games | Unity Blog

Breakwaters is an action-adventure game currently in early access that takes place in an oceanic world where players strive to build, craft, and survive. We spoke with Soaring Pixel Games to ask them about how the eight factors influenced their choice in s

blog.unity.com

 

3가지의 흔한 오해

 

1. 싱글게임을 만들면 언제든 온라인으로 전환 할 수 있다??

  • No! 멀티플레이 게임을 만들기 위해서는 기획단계에서 부터 설계가 들어가야 함
  • 왜냐하면, 게임 기능 구현시 싱글을 가정하는 것과, 멀티플레이를 가정하는 것에 차이가 크기 때문임 (즉, 싱글 게임에서 멀티게임으로 바꾸려면 거의 모든 스크립트를 다시 만들어야하기 때문)

2. 낮은 네트워크 지연 (low latency) 이 항상 좋다?

  • No! 네트워크 컨디션에 따라 다르다.
  • 네트워크 컨디션이 좋다면 low latency가 좋을지도 모르지만, 네트워크 컨디션이 안좋다면 high latency가 좋을 수도 있다.

3. 통신료는 무료에 가깝다?

  • No! 지역에 따라 달라
  • 개인 네트워크와 상업용 네트워크는 다르다. 규모가 크기 때문에 엄청난 돈이 나갈 수 있음

 

https://blog.unity.com/games/netcode-facts-fiction

 

Fact or fiction? Mythbusting 3 common netcode misconceptions | Unity Blog

Creating and shipping a multiplayer game isn’t easy and often involves many more parts compared to a singleplayer game as everything needs to be synchronized with other players to create that one consistent, shared reality.  One core piece of the multi

blog.unity.com

 

끝.

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함