문제

플래시를 클라이언트로 사용하여 첫 온라인 게임을 구성하고 실제 게임 상태가 유지되는 C ++에서 백엔드 응용 프로그램을 작성하는 데 관심이 있습니다.

SDL, SFML, Allegro 등을 사용하기 전에 C ++에서 많은 게임을 수행했지만 네트워크 라이브러리를 사용하지 않았습니다. 라이브러리가 실제 서버에 그래픽 디스플레이가 없거나 필요하지 않은 게임 서버에 가장 적합한 유용한 방향에 관심이있었습니다. 모든 정직에서 나는 그 대답이 될 것이라고 생각합니다 어느 그리고 일단 소켓을 받으면 데이터를 앞뒤로 전송하는 바람이 될 것입니다. 그러나 먼저 물어 보는 데 도움이 될 수는 없습니다.

나는 플래시 또는 AS3에 대한 경험이 거의 없지만 브라우저를 통해 게임에 액세스 할 수 있다는 아이디어와 마찬가지로, Flash는 극복해야 할 장애물이 될 것입니다. 그러나 나의 주요 관심사는 다시 라이브러리에 대한 팁입니다. 소켓을 통해 데이터를 보내거나받는 데 유용한 소스 또는 튜토리얼 또는 가장 잘 작동하는 방법이 가장 적합합니다.

나는 TCP/UDP 사이의 논쟁에 대해 읽었으므로 여기서 그런 전쟁을 시작하고 싶지 않습니다. 일반적인 도움이되는 조언 만 해주세요 - 나는 나를 데려오고 실행할 간단한 것을 찾고 있습니다 : -p.

참고로, C ++를 선택하는 이유는 플레이어가 실제로 소형 가상 기계를 가진 로봇이기 때문에 모든 것이 서버에서 실행되므로 플레이어 카운트가 상승함에 따라 모든 vm : -p를 모방해야 할 필요성이 있기 때문입니다.

업데이트:

게임 세계는 실시간으로 고안되었지만 플레이어의 상호 작용은 그럴 필요는 없습니다. 이 게임의 기초는 지속적인 세상에서 상호 작용하고 매일/매주 충족해야 할 목표와 도전이있는 작은 로봇을 프로그램한다는 것입니다.

플레이어는 로봇을 직접 제어 할 수 없으므로 실시간 비주얼이 필요하지 않으므로 디스플레이 데이터를 버퍼링 할 수 있다고 생각했습니다. 서버는 각 연결에 대해 10 초 정도의 데이터를 버퍼링 한 다음 한 번에 배송합니다.이 방법으로 데이터가 클라이언트에서 다시 재생되는 동안 서버는 서버가 약간 더 버려 지는데 바쁩니다.

플레이어가 서버와의 일반적인 상호 작용은 새 코드를 업로드하고 통계를받을 것이므로 로봇을 옮기거나 시작 위치로 재설정하는 다른 오프 명령이있을 수도 있습니다. 모든 원격 제어는 통신 채널을 통해 수행되므로 버퍼에 의해 지연됩니다. 이것은 지속적인 세계가 화성 (행성)과 같은 어딘가에 있고 신호는 앞뒤로가는 데 시간이 걸린다는 사실에 쉽게 설명 될 수 있습니다.

나는 당신이 로봇을 설정하고 클라이언트에서 실시간으로 테스트 할 수있는 "실험실"을 계획하고 있었는데, 이것은 실제 게임 세계와 관련이 없으므로 네트워킹이 필요하지 않아야합니다. 두 언어로 VM을 쓰기 :(

나는 C ++에서 완전히 편안하고 이미 지속적인 세계의 작업 프로토 타입을 이미 가지고 있습니다. 네트워킹과 관련하여 완벽한 초보자 일뿐입니다.

도움이 되었습니까?

해결책

주로 C를 위해 작성되었지만 여전히 C ++에 좋습니다.
Networ 프로그래밍에 대한 Beej의 가이드 K
모든 기본 사항을 다루고 Win32에 필요한 변경 사항에 대한 섹션이 있습니다. :)
또한 플래시가 각 패킷에 널 바이트를 종료해야했기 때문에 Send (Socket, Szdata, Strlen (szdata), 0); Send (소켓, Szdata, strlen (szdata) +1,0); 문자열을 보내려면 :)

다른 팁

네트워크 프로그래밍에는 Boost :: ASIO를 사용하십시오

Flash의 소켓 또는 XMLSocket 클래스를 사용하는 경우 서버에 보안 정책 파일이 있는지 확인하십시오. 그렇지 않으면 소켓을 열 수 없습니다. 이것을 확인하십시오 그래서 질문 더 많은 정보를 위해서.

게임에 실시간 커뮤니케이션이 필요한지 또는 게임을로드, 저장 및 실행하기 위해 서버에 요청을하는지 확실하지 않습니다.

네트워킹 부품을 처리하기 위해 일종의 "미들웨어"레이어를 사용하는 것이 가장 좋습니다. Flash는 XML 문서를 작성하고 HTTP를 통해 서버로 보내고 수신 된 XML 응답을 처리합니다. 그것은 매우 쉬운 방법으로 모든 것들을 다루기 위해 많은 좋은 내장 물건을 가지고 있습니다.

아마도 웹 서버에서 실행되는 플랫폼에 따라 C# 또는 PHP 또는 Java에 서버를 가질 수 있으며 요청 및 응답을 처리하고 메시지 대기열 또는 데이터베이스 또는 로컬을 통해 서버에서 독립적으로 실행될 수있는 C ++ 서버로 요청을 전달합니다. 연결.

C ++가 라이브러리에서도 네트워킹을 수행하는 가장 쉬운 언어가 아니기 때문에 Flash 및 Server 측면에서 이러한 방식으로 네트워킹 및 통신 문제를 처리하는 것이 더 쉬울 수 있습니다.

그래도 이것이 당신의 게임이나 플랫폼에 대한 당신의 레이트를 충족하는지 모르겠지만, 나는 단지 제안으로 그것을 던지고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top