2009-10-27 4 views
8

전용 자바 서버 및 iphone 클라이언트와 Java 데스크톱 클라이언트를 사용하여 실시간 게임을 제작하고자합니다. Java 및 iphone (특히 신뢰할 수있는 UDP)을 위해 실시간 멀티 플레이 게임 개발에 사용할 수있는 사용 가능한 고성능 네트워크 전송 라이브러리는 무엇입니까?Java 및 Objective-C 게임용 실시간 게임 네트워킹 라이브러리

대부분의 실시간 액션 게임 (Counter-Strike, Left4Dead, Quake III)에 대한 일반적인 조언은 TCP의 "보장 된"전달을 위해 "신뢰할 수없는"패킷으로 메시지를 보내는 UDP/IP 전송 프로토콜을 사용하는 것입니다 (귀하가 쉽게 제어 할 수없는 재전송 및 대기 시간 문제로 인해).

  • Half-Life Source Engine Networking Overview
  • Quake III Networking 다른 조언으로, 여전히 같은 TCP 스트림으로 배달 순서를 보장 할 수없는 상태 (UDP 패킷의 당신 "선택적"하는 것은 보증 전달을 할 수있는 신뢰성있는 UDP 프로토콜을 구축하는 것입니다 게임이 순서가 잘못된 패킷을 처리 할 수있는 한 오래).

Project Darkstar는 C++ 바인딩 자바 MMO 서버 (일반 멀티 플레이어 게임에 대한 라이브러리를 네트워킹 경량 실시간 무거운에 약간의)입니다. 신뢰할 수있는 UDP에 대한 C로 작성

내가 본 라이브러리 : - Enet - 신뢰할 수있는 UDP 라이브러리 - Cocoa AsyncSocket

답변

8

는 Kryo보고 관련 통신 라이브러리 KryoNet 되세요.

정확히이 종류의 응용 프로그램 (고성능 네트워크 전송)을 위해 설계되었습니다. 아직 Objective-C 바인딩이 있는지 확실하지 않지만, 프레임 워크가 얼마나 잘 설계되어 있는지보기에 가치가있는 경우도 있습니다.

4

UDP에 대해 언급 했으므로. 다음은 UDP와 TCP를 모두 지원하는 java game server 라이브러리입니다 (나에 의해 작성되었습니다!). 신뢰할 수있는 UDP는 TCP로 밝혀졌습니다. UDP를 기반으로 자신 만의 커스텀 로직을 작성할 수 있지만, 일반적으로 서버와 UDP에 도달해야하는 모든 것을 TCP로 처리하는 것이 좋습니다.

jetserver에서 동일한 세션은 UDP와 TCP를 모두 사용하여 통신합니다. 네트워크 메시지는 delivery guaranty, 신뢰할 수있는 = TCP 및 빠른 = UDP로 보낼 수 있습니다.

-1

는 "특별히 신뢰할 수있는 UDP"

UDP는하지 그것을 믿을만한하여 디자인의 입니다. 오래된 메일 (전자 메일 아님)을 보내는 것과 같습니다. 편지에 봉투를 넣고, 주소를 적고, 우표를 놓고 우체통에 넣습니다. 그것은 일 수도 있고이 될 수도 있지만 확신 할 수는 없습니다. UDP는 정확성보다 정확성이 중요한 상황 ("내 응용 프로그램이 비트 단위로 제대로 전송하려면 모든 것을 필요로합니다.")의 정확성을 위해 설계되었습니다. 예를 들어 skype videochat와 같은 응용 프로그램은 더 많은 대역폭과 적은 대기 시간이 필요합니다. 손실 된 비트는 응용 프로그램 수준에서 고정 될 수 있으므로 UDP를 사용합니다. 그 동안 텍스트 기반 채팅은 대역폭을 덜 필요로하고 대기 시간이 훨씬 오래 걸리지 만 더 정확한 정보를 필요로합니다 (fsdfdsfsd가 올바르게 전달되었는지 어떻게 알 수 있습니까? 무슨 언어로? 등), 그래서 그것은 TCP가 필요합니다. 그리고 실제로 그 물건이 스카이프에서 작동하는 방법입니다.

+0

질문 : 질문자는 명확하게 UDP를 기반으로 신뢰할 수있는 ARQ를 요구하고 있습니다. – sdgfsdh

관련 문제