使用PHP的多人游戏.我的机会是什么


Multiplayer game with PHP. What are my chances?

首先,我需要这些信息来制作实时多人浏览器游戏。现在,我几乎可以编写所有代码,但有一个例外 - 服务器端事件必须推送到客户端。所以我需要一个真正的解决方案(与长轮询不同)。

我一直在阅读所有的论坛,所有的文章,但这让我感到困惑。

我想问一些问题,但如果可能的话,我需要深入的答复。

  1. HTML5为我们带来了WebSockets功能。起初浏览器几乎不支持它,但现在,几乎所有最新的浏览器都支持它。它会成为未来的彗星解决方案吗?它可以杀死节点.js和其他解决方案吗?

  2. 有很多选项可供选择。Node.js,socket.io,APE,使用第三方网站的API。(如 pusher.com)什么对我最有益?我想用PHP在服务器端编码。我相信如果我们使用 node.js,我也应该使用 javascript 在服务器端编码。正确吗?如果没有,我如何在这些框架中使用 PHP?

  3. 我将编写一个多人游戏,因此性能/可扩展性至关重要。我不认为一开始我会有超过 100 个并发玩家,但没有人知道未来会发生什么,所以我希望它能够像将来支持数千个并发玩家一样进行编码。我有哪些选择?

  4. PHP,尽管我喜欢语言本身,但它只是缺乏这个领域......我不想像Travian那样编写游戏,它们很无聊。我希望它们是实时的。如有必要,我可以为这项任务学习一门新语言。你对此有何看法?

  5. 我目前正在使用 Apache 作为本地 Web 服务器。过去使用IIS和Nginx。是否有为这项工作设计的 PHP Web 服务器?据我所知,有些语言有为并发而设计的特殊Web服务器。(例如龙卷风网)

在这种情况下,将max_execution_time设置为 0 并在无限循环中将新数据刷新到客户端不是一种选择,它甚至根本没有效果。

任何答案都非常感谢。

谢谢。

附言。我也会将其用于其他事情,例如实时通知,但主要是我的2D游戏本身。

PHP 不是为此而设计的。 我建议您选择一种为此类应用程序设计的语言。

要回答您的问题:

  1. Web 套接字的想法是编写一个可以与游戏服务器接口的游戏客户端。 如果你想构建一个使用套接字的游戏,PHP将不适合这个模式。 你需要一些可以连续运行并且很可能是多线程的东西。 您正在查看 C#、C++、Java 等。 它不会节点.js因为节点.js是服务器。 在浏览器中,您正在编写客户端。

  2. 我不确定如何回应这一点,因为节点.js != PHP。 node.js被设计为一个Web服务器。 这意味着服务器接受Web请求并发回正确的响应(想想Apache的HTTPD)。 PHP是一种脚本语言,它与apache接口,能够进行更多的动态HTML处理。

  3. 使用C++、Java、C# 等

  4. 学习C++、Java、C# 或任何其他支持套接字的语言。

  5. 不,Web 服务器应该接受请求、处理请求并返回结果。 如果您正在寻找客户端和服务器之间的持续通信,则 Web 服务器不是您要查找的。

有些产品已经处理了很多基础工作。 我建议你看看像光子或智能狐狸服务器这样的东西