-
[TIL] 멀티 시스템 기초 지식TIL 2024. 6. 17. 21:01
기초적인 네트워크 지식
IP Address
인터넷에 연결된 모든 장치는 고유한 식별자인 IP 주소를 가진다.
이를 통해 자치가 인터넷 상에서 서로 찾고 통신할 수 있게 해준다.
Port
IP 주소 내에서, 특정 애플리케이션 또는 서비스를 지정하는 데 사용된다.
예를 들어 웹서버는 일반적으로 포트 80(HTTP) 또는 443(HTTPS)를 사용합니다.
라우팅
데이터 패킷이 송신자에서 수신자 까지 도달하기 위해 네트워크 장치들 사이에서 이동하는 경로
라우터는 이러한 패킷을 적절한 목적지로 안내하는 역할을 한다.
패킷(Packet)
네트워크를 통해 전송되는 데이터의 작은 단위
큰 데이터는 네트워크 전송을 위해 여러 패킷으로 분할되고 목적지에서 다시 조합된다.
TCP UDP
TCP(Transmission Control Protocol)
신뢰성 있는 데이터 전송을 보장한다.
손실된 패킷은 재전송되며 데이터는 전송된 순서대로 도착한다.
따라서 실시간 요구가 덜한 웹 통신과 이메일에 주로 사용된다.
UDP(User Datagram Protocol)
신속한 데이터 전송을 위한 설계
FPS같이 시간에 민감한 애플리케이션에 접학하다.
TCP보다 오버헤드가 적지만 패킷 손실이 일어날 수 있따.
클라이언트- 서버 모델 (Client - Server Model)
서버는 중앙에서 클라이언트의 요청을 처리하고 응답하는 역할을 한다.
클라이언트는 사용자의 장치로 서버에 서비스를 요청
Dedicater Server
멀티 플레이어 게임에서 모든 게임 로직과 플레이어 데이터를 처리하는 전용 서버를 의미한다.
Host-Client
한 플레이어가 게임 호스트와 클라이언트의 역할을 모두 수행한다
소규모 멀티플레이어 게임에 적합하다.
피어 투 피어(P2P)모델 (Peer- to - Peer Model)
중앙 집중식 서버 없이 각 참여자가(피어) 서로 직접 통신을 한다.
이 모델은 네트워크 리소스를 효율적으로 사용할 수 있지만 악성 유저의 가능성을 피하기 어렵다
멀티 게임 제작 시 유의 사항
싱글 플레이어에서는 없었던 문제들이 많이 발생한다.
비동기(Asynchronous)로직
- 서버에서 처리되는 로직들은 비동기적으로 처리된다.
- 즉, 그 결과를 바료 활용하는 것이 아닌 콜백 등을 통하여 처리 결과를 받아 이어서 처리하는 방식
- 이 과정에서 프로그램의 복잡도가 매우 높아지며 이를 관리하기 위해 코루틴이나 UniTask같은 비동기 처리를 전문적으로 처리하는 프레임 워크를 사용하기도 한다.
틱 빈도(Tick Rate)
- 게임 서버가 로직을 업데이트 하는 빈도
- 높은 틱률은 더 부드럽고 정확한 게임플레이를 제공하지만 네트워크 및 서버 부하를 증가시킬 수 있다.
- 틱의 빈도를 설정할 때는 게임의 유형, 네트워크 상태, 서버처리 능력 등 여러 요소를 고려해야한다.
지연(Latency)
- 네트워크 지연 시간은 플레이어 간의 상호작용을 심각하게 저해할 수 있다.
- 특히 실시간 멀티플레이어 게임에서는 낮은 지연시간이 중요하다.
- 개발자는 타켓 디바이스에 따른 지연 보간 로직 구현, 지역별 서버 배치 드을 통해 지연 시간을 최소화해야 한다.
연결 해제(Disconnects)
- 네트워크 불안정성으로 인한 플레이어의 연결 해제는 게임 플레이에 부정적인 영향을 미칠 수 있다.
- 재 연결시 어떻게 처리될지에 대한 방법을 정의해야한다.
검증(Validation)
- 클라이언트 측에서 수행된 작업의 서버 측 검증은 부정행위 방지에 중요하다.
- 또한 입력 검증을 통해 서버가 예쌍치 못한 동작을 하는 것을 방지할 수 있다.
- 멀티 플레이어에서는 해킹은 게임 전체의 경제를 해치거나 게임의 커뮤니티 전체를 위협할 수 있다.
고려할만 한 백엔드 솔루션
Photon PUN2
유니티와의 긴밀한 통합으로 많이 선호 된다.
특히 빠르게 프로토타이핑하고 멀티 플레이어 기능을 구현할 수 있는 강력한 툴
동시 접속 유저 수가 적은 멀티플레이어 게임 구현에 적합하다.
USG(w/ NetCode for GameObjects)
유니티 게이밍 서비스 내 NetCode for GameObjects는 멀티 플레이어 게임 개발을 위한 유니티의 공식 솔루션 입니다.
개발자는 이를 사용하여 안정적이고 확장 가능한 멀티플레이어 게임을 구축할 수 있다.
동시 접속 유저 수가 적은 멀티플레이어 게임 구현에 적합하다.
Google Firebase
간단하고 빠르게 기초적인 백엔드 기능을 구현할 수 있으며 인증, 데이터베이스 관리 등 다양한 기능을 제공한다.
특히 초기 단계의 프로젝트에 적합하다.
데이터 서버 저장, 인증 기능 등을 적용해야 하는 싱글플레이어 게임
PlayFab
마이크로스프트의 PlayFab은 클라우드 기반 백엔드 플랫폼, 그러나 한국에서는 커뮤니티 지원이 부족할 수 있다.
데이터 서버 저장, 인증 기능 등을 적용해야하는 싱글 플레이어 게임
뒤끝(Back-End)
한국어 지원과 친절한 문서로 인기가 있다.
길드, 우편함 등의 기능을 포함한 포괄적인 서비스를 제공하지만 비용이 높을 수 있다.
양산형 게임으로, 데이터 서버 저장, 인증 기능 등을 적용해야하는 싱글 플레이 게임
'TIL' 카테고리의 다른 글
[TIL] 관찰자 패턴, 전략 패턴 (3) 2024.06.20 [TIL]RenderingPipeline, ShaderGraph 기초 (0) 2024.06.18 [TIL] 파티클시스템, 애니메이션 이벤트 (0) 2024.06.12 [TIL] 자료구조 (1) 2024.06.08 [TIL] C# Generic (0) 2024.06.05