2009-03-11 2 views
15

웹 브라우저에서 자바 애플릿이나 플래시 파일로 실행할 수있는 작은 멀티 플레이어 게임을 만들 계획입니다. 전에 서버 프로그래밍을 해본 적이 없으므로 어떤 종류의 서버 아키텍처가 있어야하는지 궁금합니다.멀티 플레이어 게임을위한 서버 아키텍처는 무엇입니까?

자바/플래시 코드가 플레이어 위치/동작 등을 업데이트하기 위해 접촉하는 서버에서 perl/php 파일을 쉽게 만들 수 있습니다.하지만 전 전용 웹 호스트, 사용할 OS, 데이터베이스 등을 결정합니다. 또한 사용되는 대역폭과 확장 성을 고려해야합니다.

또 다른 옵션으로는 전용 서버가 아닌 클라우드 호스팅 시스템을 사용할 수 있으므로 게임이 늘어남에 따라 추가 장비를 추가 할 수 있습니다. 각 서버가 데이터베이스를 업데이트하기위한 핵심 perl/php 파일을 실행하는 한 정상적으로 작동해야합니다.

또 다른 옵션으로는 Google 앱 엔진을 사용할 수 있습니다.

서버 아키텍처, OS/데이터베이스 선택 및 서버 측 프로그래밍에 perl/php/python 스크립트를 사용하는 방법이 좋은지에 대한 생각은 인정할 것입니다!

+0

이것은 어떤 종류의 게임입니까? 이것은 우리가 당신을 도울 수 있도록 도와 줄 것입니다 :) – Uri

+0

그것은 작은 멀티 플레이어 RPG 게임이 될 것이므로, 실시간으로 반대로 회전 할 것입니다. –

+0

단일 컴퓨터의 메모리에 모든 상태를 관리하고 정기적으로 백업하는 것이 좋습니다. 데이터베이스까지 (트랜잭션 적으로?). 그렇게하면 모든 클라이언트를 쉽게 동기화 할 수 있습니다. – Uri

답변

8

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

중요한 질문은 게임이 실시간으로 진행되는지, 회전 기반으로 진행되는지, 또는 장기간 기반으로 진행될 것인지 (예 : 이메일 체스) 여부입니다. 또 다른 질문은 후속 재로드를 위해 상태를 동결할지 여부입니다.

동일한 게임의 모든 플레이어가 동일한 서버에서 호스팅되는지 (예 : 4 명의 플레이어 중 1000 명이 4 명이 1000 명이 참가하는 것과 비교하여 1000 명이 넘는 플레이어가 있는지) 미리 알아 두는 것이 좋습니다. 가능한 경우 첫 번째 서버로 이동하여 같은 서버에있는 동일한 게임에 참여한 모든 사람을 붙입니다. 플레이어가 동기화되는 여러 서버를 보유하는 대신 여러 클라이언트를 하나의 서버로 동기화하는 데 충분한 시간을 할애해야합니다. 그렇지 않으면 일관성의 정의가 문제가됩니다.

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

나는이 일과 펄이나 PHP를 할 수있는 확실한 이유를 안다. 게임이 웹 기반이 아니기 때문에 왜 웹 지향 언어로 작성합니까? 서버에 좋은 J2EE를 사용하고 XML 및 AJAX를 통해 클라이언트와 데이터를 교환하십시오. 가능한 경우 서블릿이 아닌 클라이언트에서 실제 Java 응용 프로그램을 실행하십시오. 그런 다음 JMS를 사용하면 많은 정보를 추상화하여 큰 부담을 줄 수 있습니다.

+0

클라이언트는이를 Java 애플릿으로 실행합니다. 서버가 java 서블릿을 실행해야하거나 서버가 본격적인 애플리케이션을 실행해야한다는 것을 의미합니까? 그 perl/php는 서버에서보다 일반적으로 지원되는 경향이 있으므로 서버 코드를 작성하는 것이 더 좋은 아이디어라고 생각합니다. –

+0

서버는 완전한 응용 프로그램이어야합니다. 메모리의 클라이언트간에 시스템 상태 및 동기화를 관리하고자 할 수 있습니다. – Uri

+0

일반 웹 서버에서 perl/php를 실행하는 경우 클라이언트 당 별도의 프로세스가 필요합니다. 고급 언어로 여러 요청을 처리 할 수있는 다중 스레드 서버를 실행하는 경우 더 간단 할 수 있습니다. – Uri

6

서버 아키텍처의 경우 Three Rings' code을 볼 수 있습니다. 그들은 자바 (클라이언트 측과 서버 측)에서 많은 확장 성 게임을 작성했습니다.

+2

+1 for Three Rings - www.gamegardens.com도 확인하십시오. 게임을 만들기위한 프레임 워크를 제공하고 게임 서버를 사용할 수있게함으로써 멀티 플레이어 게임을 만들고자하는 사람들에게 쉽고 편리하게 진입 할 수 있습니다. – ninesided

0

또한 PHP를 사용하지 않는 것이 좋습니다. 또한 HTTP는 무국적이며 말하기가 가장 좋은 아이디어가 아닙니다. 저는 현재 대규모 멀티 플레이어 게임을 개발중인 회사에서 얼마 동안 일하고있었습니다. 백엔드는 일반 JVM (여러 클라이언트와 클라이언트마다 하나씩 바람둥이를 통해 연결됨)입니다. 그래서 당신은 더 적은 데이터를 당신이 서버에 필요한 작은 버퍼를 전송 알아요 - 하나의 컴퓨터에 더 많은 클라이언트와 조금 더 빠른 응답. 또한 보안을 고려하면 https가 상당히 비쌉니다. 특히 그래픽과 사운드를 전송해야하는 경우 더욱 그렇습니다.브라우저가 아닌 클라이언트 컨테이너를 사용하는 자신의 Binnary 프로토콜이 최선을 다할 것입니다 (좋은 선택은 개발 디버깅 시간으로 전환 가능한 프로토콜입니다). 어쩌면 복잡한 것처럼 들리 겠지만 그렇지 않습니다.

@Sarah 멋진 힌트, 감사합니다.)

+0

btw three-rings 및 gamegardens 링크가 AntiP2P 보호자에 의해 차단되고있는 이유는 누구입니까? – tomasb

관련 문제