我主要在尋找安裝建議和如何去做這件事的指針。我會盡可能詳細地解釋我所能想到的,並注意可能的方法。實時瀏覽器遊戲服務器
這樣做的目的是創建一個實時瀏覽器遊戲,我發現我的需求的最佳方法是使用ajax的「長輪詢」,它基本上會設置一個請求,那裏「直到服務器有東西發送它,然後重新建立連接時收到更多的數據。爲了我的目的,這將處理聊天系統和角色移動,IE:如果玩家進入同一區域,那麼客戶端會收到響應通知他們,從而更新瀏覽器客戶端以顯示此信息。
上面是相對容易實現,我已經爲它做了一個測試用例,但是我想改進它,在服務器端運行一個循環X時間,然後它會自動超時併發回空字符串,這樣就可以建立另一個連接,這是爲了防止無限循環,並在不應該使用資源的情況下使用資源。對於需要發送給客戶端的消息,我使用平面文件,而不是在每個循環週期中查找數據庫(相當昂貴,我相信),如果文件的修改時間戳大於發送給客戶端的最後一個消息,那麼存在一些新的發送。不過,我相信這樣做也會很昂貴(而不是像使用mysql數據庫那麼多),每秒完成幾次。我的思考過程就是讓一個C++程序(爲了速度)不斷運行,並用它來快速查找內存中的新消息,所以第四,這也會給我額外的好處,在服務器可以控制更實時的感覺/方法的遊戲中有機器人,但是我不知道如果這甚至是可能的,並且我在谷歌上的搜索沒有結果。
我最希望能夠做的方法是繼續使用PHP來執行頁面的呈現和控制等,並將ajax請求發送到C++應用程序(它將始終運行)可以處理所有的實時問題。
CGI打破了上述方法的目的,因爲它在每個請求上創建了一個新的應用程序實例,這既慢又正是我不想要的,我爲此擁有了PHP,並且不想切換一個完美的語言可以更好地適應另一個語言,然而PHP(據我所知)不能將內容存儲在內存中(RAM)等等。
我想過的另一種方法是使用php套接字連接到C++應用程序,但我不知道這可能是多麼可行。 C++應用程序基本上只需要控制機器人(AI)和聊天系統消息。我完全不知道如何去處理通過PHP的機器人。
我希望這可以完全解釋我的意圖和目標,所以如果任何人有任何指示或建議,請回復並幫助我,這將非常感激。如果您需要任何額外的信息(因爲如果我沒有很好地涵蓋某些東西或某些東西),那麼我會很樂意嘗試更好地解釋。
我看着彗星,並認爲它們太有限制,我已經看到了一個名爲Travians的RPG遊戲(它連接到端口8010上的IP地址)的長輪詢工作。 腳本語言的問題在於它不是持久的(我相信這是正確的詞彙?爲了闡述它不是一直運行,所以處理bot狀態會是一個問題?) 爲了進一步解釋travians方法,他們的長輪詢收到一個命令字符串,客戶端上的JS進一步處理,例如它會收到「MoveChar
Steve
2009-12-31 05:03:11
腳本語言可以以持久的方式使用,而不僅僅用作Web服務器後端。這就是我用Python做的事情,你可以用任何腳本語言來做(甚至PHP,儘管它不是特別合適)。我也在每行使用一個命令字符串,但在我的情況下,它們是像'.1 f'這樣的低級命令(在遊戲幀15處按下左鍵)。 – bobince 2009-12-31 13:14:48
我沒有python的經驗,這就是爲什麼我最初選擇C++的那個領域,我將不得不去使用php套接字並連接到每個ajax請求上的C++應用程序? – Steve 2009-12-31 15:48:02