나는 이것에 대해 갈 방법에 대한 조언과 조언을 주로 찾고 있습니다. 나는 내가 생각할 수있는만큼 자세하게 설명 할 것이고 그럴듯한 가능한 접근법에 주목할 것이다.실시간 브라우저 게임 서버
이 목표는 실시간 브라우저 게임을 만드는 것입니다. 제 요구 사항에서 찾은 가장 좋은 방법은 아약스와 함께 "긴 폴링"을 사용하는 것이고, 기본적으로 서버에 요청을 설치합니다. 거기에 서버가 뭔가를 보낼 때까지, 그런 다음 더 많은 데이터를 받기 위해 연결을 다시 설정하십시오. 나의 목적을 위해 이것은 문자 이동뿐만 아니라 채팅 시스템도 처리 할 것이다. IE : 플레이어가 같은 지역에 입장하면 거기에 정보를 보내고이를 알려주는 브라우저 클라이언트를 업데이트하는 응답을 받는다.
위는 구현하기가 비교적 쉽지만 테스트 케이스를 이미 만들었지 만 서버 측에서는 자동 시간 초과가 발생하기 전에 X 시간 동안 루프를 실행합니다. 그리고 다시 빈 문자열을 보내면 다른 연결을 만들 수 있습니다. 이것은 무한 루프를 방지하고 그렇지 않아야하는 경우 리소스를 사용합니다. 클라이언트에 보내는 메시지를 위해 각 루프 사이클에서 데이터베이스를 검색하는 대신 (클라이언트에서 보내는 마지막 메시지보다 수정 된 타임 스탬프가있는 경우) 플랫 파일을 사용합니다. 뭔가 새로운 것을 보내라. 그러나 이것은 또한 비싸지 만 (mysql 데이터베이스를 사용하는 것만 큼 많이는 아니겠습니까?) 초당 두 번 완료되면 믿습니다.
내 생각에이 프로세스는 (속도) C++ 프로그램을 지속적으로 실행하여 새 메시지를 메모리에서 매우 빠르게 조회하는 것이었고 네 번째로 이것은 나에게 보너스를 줄 수 있다는 것입니다. 게임 내에서 서버가보다 실시간의 느낌/접근 방식을 제어 할 수있는 봇을 가지고 있지만 이것이 가능한지, google에 대한 내 검색이 효과가 없다는 단서가 없습니다.
내가 할 수 있기를 가장 좋아하는 접근 방식은 PHP를 사용하여 페이지 등의 렌더링과 제어를 계속하고 ajax 요청을 C++ 응용 프로그램으로 이동시켜야합니다 (항상 실행됩니다) 모든 실시간 측면을 처리 할 수 있습니다.
CGI는 각 요청에 대해 애플리케이션의 새로운 인스턴스를 생성하기 때문에 위의 접근법의 목적을 무효화합니다. 느리고 정확히 원하지 않는 것은 모두 PHP이며, 전환하고 싶지 않습니다. PHP는 (내 지식으로는) 메모리 (숫양)에 물건을 저장할 수 없으며, 네 번째로는 더 잘 맞는 다른 언어를위한 하나의 완전한 언어를 실행합니다.
내가 생각한 또 다른 접근법은 PHP 소켓을 사용하여 C++ 응용 프로그램에 연결하는 것이 었습니다.하지만이 방법이 얼마나 실현 가능성이 있는지는 알 수 없습니다. C++ 응용 프로그램은 기본적으로 봇 (AI) 및 채팅 시스템 메시지를 제어해야합니다. PHP를 통해 봇을 처리하는 방법에 대해서는 전혀 알지 못합니다.
내 의도와 목표가 무엇인지 충분히 설명해 주시길 바랍니다. 누군가 포인터가 있거나 조언을 보내 주시면 답장하고 도와 주시면 대단히 감사하겠습니다. 추가 정보가 필요하면 (내가 뭔가 또는 어떤 것을 잘 커버하지 못했다면), 나는 더 설명하기 위해 기꺼이 노력할 것입니다.
나는 혜성을 들여다 보았고 너무 제한적이라고 생각했다. Travians (포트 8010의 IP 주소에 연결됨)라는 RPG 게임의 긴 폴링 작업을 보았다. 스크립팅 언어의 문제는 지속성이 없다는 것입니다 (올바른 단어라고 생각합니까? 끊임없이 실행되지 않으므로 로봇 상태를 처리하는 것이 문제가됩니까?) travians 접근 방식에 대해 자세히 설명하려면 그들의 긴 폴링은 클라이언트의 JS가 더 처리하는 명령 문자열을 수신합니다. 예를 들어 "MoveChar
Steve
스크립팅 언어는 단순히 웹 서버 백엔드가 아닌 지속적인 방법으로 사용할 수 있습니다. 그게 내가 파이썬으로하고있는 일이고, 스크립팅 언어로도 할 수 있습니다 (특히 PHP는 적합하지 않을지라도). 나는 한 줄에 하나의 명령 문자열을 사용한다. 비록 나의 경우에는 '.1 f'와 같은 하위 명령이다. (게임 프레임 15에서 왼쪽 버튼을 누른다.) – bobince
파이썬에 대한 경험이 없기 때문에 처음에는 C++을 선택했습니다. PHP 소켓을 사용하고 각 아약스 요청에서 C++ 응용 프로그램에 연결해야합니까? – Steve