강의

멘토링

로드맵

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

정인성님의 프로필 이미지
정인성

작성한 질문수

절대강좌 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG

Multiplayer Service SDK 활용 (2/2)

여기에 쓰인 기술이 적합할지 궁금하네요.

작성

·

16

·

수정됨

0

강사님의 다른 강좌들을 보니 네트워크 게임쪽에 상당한 경험이 있으신거 같아 조언을 구하고자 합니다.
현재 네트워크 대전 디펜스 게임을 만들고 있는데, 로비가 별도로 있고 여기서 대전신청을 하면 조건에 맞는 유저를 찾아서 1:1로 방 생성해서 대전을 하는 구조입니다.

실제 인게임 내에서는 미니언들이 양쪽 모두 공평하게 생성되는 상황이고 내 크리처도 내보내고 타워도 지으면서 적의 미니언들을 막아내고 적의 본성을 부수면 이기는 게임을 작업 중에 있습니다. 한 화면으로 구성되며 한 화면에 최대한 등장하는 적들은 양쪽 합쳐서 30~60마리정도가 있을 수도 있을거 같습니다. 평균 10마리 내외일거 같구요.

사실 기존에 순수 C#서버에 gRPC 프로토콜로만 작동하던 게임이 있었는데 좀 옛날거라 요즘 기술로 다시 만들고 있습니다.

서론이 좀 길었는데 질문은 이것입니다. 위 상황으로 짐작해 봤을 때 Netcode for GameObjects 방식으로 작업이 가능할까요? 아니면 다른 솔루션을 이용해야 할까요? (포톤, Netfish, Netcode for Entitiese등) 솔직히 로비나 로그인 처리등은 기술적으로 크게 부담은 없는데 인게임내에서 다량의 적이 싸울때 싱크로 문제가 있을거 같아 걱정입니다.

답변 2

0

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

안녕하세요. 정인성님,

네트워크 게임을 개발 중이시군요. 우선 최대 60 유닛 정도이면 굳이 Netcode for Entities 까지 고려하실 필요는 없을 것 같습니다. 한 유닛 당 매 프레임 송수신 데이터가 상태값, 위치 동기화 정도가 될텐데요. 물론 부하 테스트에서 모니터링을 해봐야 겠지만 충분히 감당할 수 있는 트래픽입니다.

만약 모바일 환경이라고 한다면 타겟 디바이스에 따라서 처리 부하가 발생할 수는 있겠지요. 이 지점에서는 케이스-바이-케이스라 확답은 어렵겠습니다.

 

Netcode for Entities를 사용하더라도 클라이언트의 수많은 객체를 ECS로 관리하는 것일 분 네트워크 데이터 처리하는 부분에 있어서는 접속 기기의 네트워크 상태와 대역폭에 따라 레이턴시가 달라질 수 밖에 없는 구조입니다. 따라서, 자동으로 답변된 내용에 있는 "무거운 환경과 동기화 수가 많다면 성능문제가 생길 수 있다" 라는 의견은 일반론 적인 답변이라고 생각힙니다.

 

NGO를 장점은 중간 규모의 네트워크 게임에는 손쉽게 사용할 수 있도록 설계가되어 있습니다. 유니티 백엔드(UGS)와 완벽한 에코 시스템을 갖추고 있어 다양한 기능을 쉽게 개발하실 수 있습니다.

다만 Dedicated Server 작업시에 직접 호스팅(AWS) 또는 유니티 Multiplay Hosting 시 운영비용과 초기 설정 부분에 있어서 비교하신 후 선택하시면 되겠습니다.

 

저도 답변이 길어졌습니다. 여러가지 고려할 상황이 있지만 주어진 내용만을 단편적으로 놓고 답변드린다면 Netcode For GameObject 로도 충분히 가능합니다.

 

좋은 성과 있으시길 기원합니다. ~

 

0

안녕하세요, 인프런 AI 인턴입니다. 정인성님.

네트워크 대전 디펜스 게임에서 다량의 적과 동시다발적인 게임 요소를 처리하기 위한 기술 선택에 대해 고민하고 계시는군요. 말씀하신 게임의 구조 및 조건을 고려할 때, Netcode for GameObjects를 비롯한 다양한 솔루션을 검토할 필요가 있습니다.

Netcode for GameObjects

  • 장점: Unity 제공, 게임오브젝트 기반에서 쉽게 통합 가능하며, Unity 엔진과의 호환성이 뛰어남.
  • 단점: 복잡하고 무거운 환경에 부적합할 수 있음. 많은 수의 적과 동기화가 필요한 경우 성능 문제가 생길 수 있습니다.

Netcode for Entities

  • 장점: DOTS 기반으로, 많은 양의 데이터를 효율적으로 처리할 수 있음. 성능에 큰 이점을 가질 수 있습니다.
  • 단점: 게임오브젝트 기반이 아닌, ECS 구조에 대한 이해가 필요합니다.

Photon

  • 장점: 실시간 멀티플레이어 게임에 특화되어있고, PUN 은 사용이 비교적 쉬우며, 다양한 기능을 차별화하여 제공합니다.
  • 단점: 사용량에 따라 요금이 발생할 수 있으며, 커스터마이징에 제약이 있을 수 있습니다.

Mirror, FishNet 등의 다른 솔루션

  • 각 솔루션은 다양한 장단점을 가지고 있으며, 특정 프로젝트 요구 사항에 따라 선택할 수 있습니다.

추천
- Netcode for GameObjects는 간단한 멀티플레이어 환경이나 Unity 친화적인 개발에 적합합니다.
- Netcode for Entities는 성능에 민감한 게임에서 대량의 객체를 처리하는 경우 추천됩니다.
- 적의 숫자가 많고 실시간 동기화가 중요하다면, 성능상 이점이 있는 Netcode for EntitiesFishNet 같은 솔루션을 고려해보시는 것이 좋겠습니다.
- Photon은 중간 크기의 프로젝트에 좋은 선택이 될 수 있습니다.

참고 링크

위 답변을 통해 여러 솔루션의 장단점을 이해하시고, 프로젝트에 가장 적합한 방식을 택하는데 도움이 되었으면 좋겠습니다. 궁금한 점이 추가로 있으시면 언제든 질문 주세요!

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

정인성님의 프로필 이미지
정인성

작성한 질문수

질문하기