2017-11-21 26 views
-3

나는 체커 게임을 안드로이드 플랫폼 화합으로 만들고 있습니다. 이 게임 멀티 플레이어를 만들고 TCP/IP 네트워크를 C# 언어로 구현하는 작업이 주어졌으며 서버 측에서 Golang을 사용해야합니다. 나는 거의 게임 자체를 마쳤지 만, 서버와 tcp에 대해서는 아무것도 몰라. 내 게임을 위해 그것을 구현하는 방법. 그 방법을 보여주기 위해 자습서를 시작할 수있는 방법이 있습니까? 조언이 도움이 될 것입니다! 미리 감사드립니다.C#에서 Tcp/ip 네트워크를 쓰는 방법과 Golang의 서버로 화합 멀티 플레이 체커 게임

+2

너무 광범위합니다. 그래서 일반적인 조언이 아닌 특정 문제에 대한 구체적인 질문에 답하는 것입니다. 온라인에서 많은 자습서가 있습니다. – hnefatl

+0

당신의 키워드는'MMORPG'이어야합니다,'Redis + Tornado'에 의해 작성된'websocket'에 간단한 MMORPG 서버 기반을 작성했습니다. 하지만 파이썬의 기본적인 내용을 알아야합니다. 다음은 rep https : // github.com/land-pack/aking입니다. –

+0

이것은 Golang에 쓰여진 서버와 C#의 TCP/IP 네트워크입니다. 나는 화합으로 게임을 만들었고, 네트워크 물건을 어떻게 구현해야하는지 알고 싶습니까? – Sherzod

답변

2

자, 이제 앱의 서버 - 클라이언트 통신을 구축하려고합니다. 커뮤니케이션에 관해 이야기 할 때 항상 나타나는 키워드는 socket입니다. 간단히 말해 소켓은 동일하거나 다른 시스템에서 서로 다른 두 프로세스 간의 통신을 허용합니다. 여러 유형의 소켓이 있는데, 그 중 일부는 herehere 사이의 차이점을 확인할 수 있습니다.

는 통신 채널을 설정하려면, 클라이언트 측에서 필요한 단계는 다음과 같습니다

  1. 소켓() 시스템 호출을 통해 소켓을 작성합니다.
  2. connect() 시스템 호출을 사용하여 서버 주소에 소켓을 연결하십시오.
  3. ()쓰기()을 통해 데이터를 보내고받습니다.

그리고 서버 측은 다음과 같습니다

  1. 소켓() 시스템 호출을 통해 소켓을 작성합니다.
  2. bind() 시스템 호출을 사용하여 주소 (예 : ip : port)에 소켓을 바인딩합니다.
  3. listen() 시스템 호출로 연결을 청취하십시오.
  4. accept() 시스템 호출로 연결을 수락합니다.
  5. ()쓰기()을 통해 데이터를 보내고받습니다.

일반적으로, 당신은 (대신 서버에 연결 각 플레이어의 새로운 소켓을 생성하는) 더 높은 성능을 달성하기 위해, 소켓 풀을 만들려는 서버 측에서.

아래 이미지를 확인하여 서버와 클라이언트 간의 상호 작용 흐름을 확인하십시오. 귀하의 경우 요청은 게임 정보가 포함 된 플레이어에서 서버로 전송되는 메시지입니다 (예 : 플레이어가 차례대로 이동 한 경우). 서버에서 플레이어로 이동하는 메시지는 ACK 일 수도 있고 더 정교한 정보 (예 : 상대가 자신의 차례에서 한 이동) 일 수도 있습니다.

enter image description here

지금, 데이터의 전송 : 인터넷 그냥 비트를 처리 할 수 ​​있으며, 객체 나 구조체가 무엇인지 이해하지 않기 때문에 그들이 인터넷에 외출 또는에서 도착했을 때, 우리는 Serialize and Deserialize에 메시지가 그것.이를 쉽게 수행하려면이 프로세스를 간소화하고 다른 언어 (예 : Go 및 C#)에서 사용할 수있는 Google 삼촌이 제작 한 도구 Protocol Buffers을 사용할 수 있습니다.

Go 및 C#에서 서버 - 클라이언트 응용 프로그램을 빌드하는 방법에 대해 아래에서 몇 가지 예를 들어 보겠습니다. 그런 다음 프로젝트에 필요한 않는 부분을 선택할 수 있습니다

가 도움이 희망!

+0

도움을 주셔서 감사하며 귀중한 시간을 공유해 주셔서 감사합니다. – Sherzod