2012-06-06 3 views
3

첫째,이 정보는 실시간 멀티 플레이어 브라우저 게임을 만들기 위해 필요합니다. 지금 당장은 서버 측 이벤트를 클라이언트에 푸시해야한다는 예외를 제외하고는 거의 모든 것을 코딩 할 수 있습니다. 그래서 나는 이것에 longpolling과는 달리 진짜 해결책이 필요하다.PHP로 멀티 플레이 게임. 내 기회가 뭐니?

나는 모든 포럼, 모든 기사를 읽었지만, 혼란 스럽다.

나는 몇 가지 질문을하고 싶지만, 가능하면 철저한 대답이 필요하다.

  1. HTML5는 WebSockets 기능을 제공합니다. 처음에는 브라우저에서 간신히 지원되었지만 지금은 거의 모든 최신 브라우저가 지원합니다. 미래의 혜성 해결책이 될 것입니까? node.js와 다른 솔루션을 죽일 수 있습니까?

  2. 선택할 수있는 옵션이 너무 많습니다. Node.js, socket.io, APE, 제 3 자 웹 사이트의 API 사용 (pusher.com과 같은) 나에게 가장 유익한 것은 무엇입니까? PHP로 서버 측을 코딩하고 싶습니다. 나는 우리가 node.js를 사용한다면 자바 스크립트로 서버 측을 코딩해야한다고 생각한다. 맞습니까? 그렇지 않다면이 프레임 워크에서 PHP를 어떻게 사용할 수 있습니까?

  3. 멀티 플레이어 게임을 코딩 할 예정이므로 성능/확장 성은 필수적입니다. 처음에는 100 명 이상의 동시 플레이어를 얻지 못할 것이라고 생각하지만, 앞으로 어떤 일이 일어날 지 아무도 모릅니다. 따라서 앞으로 수천 명의 동시 플레이어를 지원할 수있는 방법을 코딩하고 싶습니다. 내 옵션은 무엇입니까?

  4. PHP는 언어 자체가 마음에 들지만이 영역에는 부족합니다 ... Travian과 같은 게임을 코딩하고 싶지는 않습니다. 그들은 지루합니다. 나는 그들에게 실시간이되기를 바란다. 필요한 경우이 작업을위한 새로운 언어를 배울 수 있습니다. 이것에 대한 당신의 의견은 어떻습니까?

  5. 현재 Apache를 로컬 웹 서버로 사용하고 있습니다. 과거에는 IIS와 Nginx를 사용했습니다. 이 직업을 위해 고안된 PHP 웹 서버가 있습니까? 내가 아는 한, 일부 언어에는 동시성을 위해 설계된 특수 웹 서버가 있습니다. (예를 들어, 토네이도 웹)

0 max_execution_time을 설정하고 무한 루프에 클라이언트에 새로운 데이터를 플러싱은 전혀에도 효과가 없습니다,이 경우 옵션을 선택하지 않습니다.

모든 답변을 주시면 감사하겠습니다.

감사합니다.

ps. 나는 실시간 통보와 같은 다른 것들에도 그것을 사용할 것이지만, 대부분 내 2D 게임 그 자체이다.

+0

나는 socket.io 프로젝트를 강력히 추천한다. –

+0

이 q는 거의 확실하게 너무 광범위하게 닫힙니다. 특히 하나의 질문이 5 개이기 때문에. 궁극적으로 당신이 확실한 연구를 한 다음 특정 기술/코드 질문으로 돌아 오는 것이 더 낫다고 생각합니다. ') – halfer

+1

FWIW, 내 생각에 불필요한 세부 사항이나 조숙 한 최적화에서 자신을 잃을 위험이 있습니다. 나는 천천히 그리고 clunky 경우에도 가능한 한 빨리, 절대 최소 작업 시스템을 구축하는 것이 좋습니다 것입니다. 가장 잘 알고있는 언어를 사용하여 Node (또는 무엇이든)를 배우면 병렬로 배우려고 노력하는 동안 크롤링 속도가 느려집니다. 그런 다음 실제 사용자 피드백을 기반으로 거기에서 최적화/개선/다시 작성합니다. – halfer

답변

1

PHP는이를 위해 설계되지 않았습니다. 이 유형의 응용 프로그램 용으로 고안된 언어를 선택하는 것이 좋습니다.

귀하의 질문에 대답하려면, 웹 소켓의

  1. 아이디어는 게임 서버와 인터페이스 할 수있는 게임 클라이언트를 작성하는 것입니다. 소켓을 사용하는 게임을 만들려는 경우 PHP는이 곰팡이에 적합하지 않습니다. 연속적으로 실행될 가능성이 높고 대부분 멀티 스레드 일 수있는 무언가가 필요합니다. 당신은 C#, C++, Java 등을보고 있습니다. node.js가 서버이기 때문에 node.js가되지 않습니다. 브라우저에서 클라이언트를 작성하고 있습니다.

  2. node.js! = PHP가 있기 때문에 대응 방법을 모르겠습니다. 마디.js는 웹 서버로 설계되었습니다. 이것은 서버가 웹 요청을 받아서 적절한 응답을 되돌려 보내는 것을 의미합니다 (아파치의 HTTPD와 같음). PHP는 더 동적 인 html 처리를 할 수 있도록 아파치와 인터페이스하는 스크립팅 언어입니다.

  3. 는 C++, 자바, C#, 또는 소켓을 지원하는 다른 언어를 알아보기 등을 사용하여 C++, 자바, C#을.

  4. 아니요, 웹 서버는 요청을 수락하고 처리 한 다음 결과를 반환한다고 가정합니다. 클라이언트와 서버 간의 지속적인 통신을 원할 경우 웹 서버는 사용자가 찾고있는 것이 아닙니다.

이미 많은 기초 작업을 처리하고있는 제품이 있습니다. Photon 또는 Smart Fox Server

관련 문제