PHP oyun sunucusu, birden çok TCP müşteriler?

0 Cevap php

Bir web tarayıcı tabanlı multiplayer oyun yapıyorum. Ben WebSockets onun gerçek zamanlı doğası verilen iletişim işlemek için en iyi yol olduğunu tespit ettik. İstemci oyunu ve ev sahibi ile iletişim kurmak için WebSockets işlemek için bir HTML5 tuval kullanır.

Ben hosting sağlayıcıları tarafından tercih edilecek gibi görünüyor oyun barındırma için PHP kullanmak seçtiğinizi. Ben daha önce PHP kullanılmış değil ama Java WebSockets ile benzer şeyler yaptım, ama çoklu ağır güvenerek.

Ben birden fazla müşteri ile php yuva üzerinde birkaç öğreticiler bakarak oldum; ama çoğu çatal kapalı her müşteri için yeni süreçler gibi şeyler. Ben sürekli çalışan oyun döngü olacak beri ben bu uygun olduğunu sanmıyorum.

Ne elde etmek çalışıyorum onlar bağlamak gibi, her müşteri için bağlantı noktası atama yeni müşteriler için dinleme, müşterilerin mevcut liste ile veri alışverişi ve hep birlikte oyun döngü çalışan bir araçtır.

Yardıma ihtiyacım yerler:

  • Bulmak ve yeni müşteriler için bağlantı noktaları atamak nasıl, o limanın müşteri bildirmek ve onlar çıkardığınızda o kadar temiz.
  • Oyun döngü engelleme olmadan, yukarıdaki ve diğer tüm soket işlemleri yapmak nasıl. Bu kısmi parçalar müşterilerinden gelen iletileri kabul ve sadece tam bir mesajın üzerine hareket kabul edilebilir olacaktır.

Can anyone give me some technical advice on how to achieve these goals? I don't think this all looks like too much to ask of PHP but correct me if I'm wrong!

Some pseudocode of what I'd ideally like to achieve server-side. None of the functions should block: Array clients;

while(gamerunning)
{
    CheckForNewClients();
    GetStatusFromClients();
    DoGameUpdate();
    SendGameStateToClients();
}

[Update] For anyone interested, I created a dedicated application supporting web sockets (specifically using Java, and 'TooTallNates' web socket library) rather than an actual web service as it seemed to make more sense, though incidentally it seems most web browsers have since slung web sockets in the bin due to security issues.

0 Cevap