문제

웹 브라우저에서 Java 애플릿 또는 플래시 파일로 실행할 수있는 작은 멀티 플레이어 게임을 구축 할 계획입니다. 전에 서버 프로그래밍을 한 적이 없으므로 어떤 종류의 서버 아키텍처가 있어야하는지 궁금합니다.

Java/Flash 코드가 플레이어 위치/액션을 업데이트하기 위해 연락처가 연락하는 서버에서 Perl/PHP 파일을 만들기가 쉽습니다. 그러나 전용 웹 호스트를 가져와야하는지 여부를 고려하고 있습니다. 사용하기, 어떤 데이터베이스 등을 사용하려면 사용 된 대역폭의 양과 확장 성이 고려됩니다.

또 다른 옵션은 클라우드 호스팅 시스템 (전용 서버와 달리)을 사용하는 것이므로 게임이 성장함에 따라 추가 기계를 추가해야합니다. 각 서버가 데이터베이스를 업데이트하기 위해 Core Perl/PHP 파일을 실행하는 한 정상적으로 작동해야합니다.

또 다른 옵션은 Google App Engine을 사용하는 것일 수 있습니다.

서버 아키텍처, OS/데이터베이스 선택에 관한 모든 생각과 서버 측 프로그래밍에 PERL/PHP/Python 스크립트를 사용하는 내 방법이 좋은지 여부는 감사 할 것입니다!

도움이 되었습니까?

해결책

게임에 대해 더 명확히하고 특정 구현 세부 사항보다는 아키텍처에 대해 더 많이 생각해야합니다.

주요 질문은 게임이 실시간, 턴 기반 또는 장거리 기반 (예 : 이메일 체스)인지 여부입니다. 또 다른 질문은 후속 재 장전을 위해 상태를 동결 할 것인지 여부입니다.

동일한 게임의 모든 플레이어가 동일한 서버에서 호스팅 될지 여부를 미리 파악하는 것이 좋습니다 (예 : 각각 1000 명의 플레이어와 비교하여 4 명의 플레이어 중 1000 명). 가능하면 첫 번째와 함께 가서 같은 서버에서 같은 게임에있는 모든 사람을 고수하십시오. 플레이어가 동기화되는 여러 서버를 갖지 않고 여러 클라이언트를 하나의 서버에 동기화하는 데 어려움이 충분합니다. 그렇지 않으면 일관성의 정의가 문제가됩니다.

가능하면 각 클라이언트가 서버와 통신 한 다음 서버가 클라이언트에 업데이트를 배포하도록하십시오. 이렇게하면 하나의 "공식 상태"가 있으며 다양한 갈등 해결, 팬텀 등을 수행 할 수 있습니다. 피어는 더 빠른 게임 (예 : FPSS)에서 더 나은 성능을 제공하지만 많은 문제를 소개합니다.

나는 내 인생 에서이 일을 할 설득력있는 이유와 perl 또는 php를 볼 수 없습니다. 귀하의 게임은 웹 기반이 아니며 웹 지향 언어로 작성하는 이유는 무엇입니까? 서버에 좋은 오래된 J2EE를 사용하고 XML 및 AJAX를 통해 클라이언트와 데이터를 교환하십시오. 가능하면 서블릿이 아닌 클라이언트에서 실제 Java 응용 프로그램을 실행하십시오. 그런 다음 JMS를 사용하면 많은 커뮤니케이션 세부 정보를 추상화하여 등을 대량으로 하역 할 수 있습니다.

다른 팁

서버 아키텍처의 경우 3 개의 반지 코드. 그들은 Java (클라이언트 및 서버 측)에서 매우 확장 가능한 많은 게임을 작성했습니다.

나는 또한 PHP를 사용하지 않겠다. 나는 현재 회사에서 한동안 일하고 있었다. 백엔드는 일반 JVM입니다 (여러 클라이언트가 Tomcat을 통해 연결하고 클라이언트 당 하나의 모바일에서 연결). 따라서 서버에 필요한 작은 버퍼를 전송하는 데이터가 적을수록 하나의 컴퓨터에서 더 많은 클라이언트와 약간 빠른 응답을 알고 있습니다. 또한 보안을 고려하십시오. HTTPS는 특히 그래픽과 사운드를 전송 해야하는 경우 매우 비쌉니다. 브라우저가 아닌 클라이언트 컨테이너를 사용하여 자신의 비너리 프로토콜이 최선을 다할 것입니다 (좋은 선택은 개발 퇴적 시간을위한 전환 가능한 프로토콜). 아마도 복잡하게 들리지만 그렇지 않습니다.

@sarah nice 힌트, 감사합니다;)

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