인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

pnj991122님의 프로필 이미지

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

이동 동기화 #1

유니티 클라와 C++서버연동

작성

·

122

0

안녕하세요 유니티 클라와 C++서버연동 할 때 어떤 방식을 사용하게되나요?? 찾아보니 dll을 만들어서 사용한다는 것도있고.. 아니면 C++로 만든 서버와

유니티 내의 C#스크립트에서 소켓프로그래밍을 작성해서 연결을 하나요? 또한 C#스크립트 내에서 패킷을 받고 뜯어서 처리를 하는 작업까지 만들어 주는 건가요??

답변 2

0

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

서버 입장에서 클라가 보내는 네트워크 패킷은 C++으로 하나 C# 동일하며 구분할 수 없습니다.
따라서 본 강의처럼 C# 스크립트에서 네트워크 코드를 작성하면 됩니다.
DLL은 외부 라이브러리를 사용하는거라 대단한 내용이 있는게 아니라 원리는 동일하고
당연히 패킷을 뜯어서 처리하는 작업은 해줘야 합니다.

0

인프런 AI 인턴님의 프로필 이미지

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

유니티 클라이언트와 C++ 서버 연동에 대한 질문을 주셨네요. 유니티와 C++ 서버를 연동할 때에는 일반적으로 두 가지 방법을 채택할 수 있습니다:

  1. 소켓 프로그래밍:

    • C++로 구현된 서버와 유니티의 C# 스크립트가 직접 통신할 수 있도록 소켓 프로그래밍을 사용할 수 있습니다. 소켓 프로그래밍을 통해 네트워크 소켓을 열고 클라이언트와 서버 간의 데이터를 송수신합니다.
    • 이 경우, 유니티의 C# 스크립트에서 직접 소켓 프로그래밍을 통해 서버에 연결하고 데이터를 전송하며, 서버로부터 받은 데이터를 패킷으로 다루어 잘라내고 처리하는 작업을 수행하게 됩니다.
  2. DLL 활용:

    • C++로 개발한 서버의 기능을 DLL로 제공하고, 이를 유니티의 C# 스크립트에서 호출하여 사용합니다. 이를 통해 C# 코드 내에서 C++의 기능을 활용할 수 있게 됩니다.
    • 이 방식은 네이티브 코드의 성능 이점을 활용할 수 있으면서도 유니티 상에서 편리하게 기능을 호출할 수 있다는 장점이 있습니다.

두 가지 방법 모두 장단점이 있는데, 프로젝트의 요건과 성능 요구사항에 따라 적절한 방법을 선택하면 됩니다. 또한, 서버에서 패킷을 받고 처리하는 로직은 C++ 서버 측에서 주로 관리되며, 클라이언트는 이와 통신하여 필요한 정보를 송수신하게 됩니다.

관련된 더 많은 정보와 토론 내용을 참고하고 싶으시다면, 이 게시글또 다른 유사한 질문을 확인하시면 도움이 될 것입니다.

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