使用PHP开发多人在线游戏,我的成功率如何?

3
首先,我需要这些信息来制作实时的多人在线游戏。现在,我能够编写几乎所有东西,但是有一个例外——必须将服务器端事件推送到客户端。因此,我需要一个真正的解决方案(不像长轮询)。
我已经阅读了所有的论坛、所有的文章,但这让我感到困惑。
我想问一些问题,但如果可能的话,我需要一个深入的答复。
  1. HTML5为我们带来了WebSockets功能。最初它得到的浏览器支持非常少,但现在,几乎所有最新的浏览器都支持它。它会成为未来的Comet解决方案吗?它能够取代Node.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服务器(例如Tornado Web)。

在这种情况下,将max_execution_time设置为0并在无限循环中刷新新数据根本不是一个选项,甚至根本不起作用。
任何答案都非常感谢。
谢谢。
附注:我也会将其用于其他事情,如实时通知,但主要还是我的2D游戏本身。

我强烈推荐你查看socket.io项目。 - Afshin Mehrabani
1
就我所知,我怀疑你可能会陷入不必要的细节和过早的优化中而迷失自己。我建议尽快构建绝对最小的工作系统,即使它很慢、笨重。使用你最熟悉的语言,因为学习Node(或其他任何东西)将会让你的开发速度变得非常缓慢。然后根据真实用户反馈进行优化/改进/重写。 - halfer
1
同时:“我不想编写像“特拉维安”这样的游戏,它们很无聊。” 我同意你应该编写你感兴趣的东西,但同样你需要被人们会玩的东西所引导。不要仅仅因为你喜欢而构建某个东西——确保其他人也会喜欢它! - halfer
Afshin,我已经检查了socket.io和无数其他选项。我只是无法将它们进行比较。 - Aristona
我不是游戏开发者,但我有相当多年的编程经验。当然,你是否采纳我的建议取决于你自己,但许多副业项目因为开发速度太慢而停滞不前(由于使用了不熟悉的语言或者过早考虑了太多问题)。我在某种程度上同意@afuzzyllama的观点——PHP不适合用于客户端,你需要使用JS或者(也许)Flash。虽然在服务器端可能不是最理想的选择,但如果你选择Node(等等),你可能会陷入泥潭,永远无法达到alpha版。总之,祝你好运。 - halfer
显示剩余3条评论
1个回答

1

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

回答您的问题:

1. Web sockets的概念是编写一个可以与游戏服务器进行接口交互的游戏客户端。如果您想构建使用sockets的游戏,PHP将不适合此模型。你需要的是一些能够持续运行并且很可能是多线程的语言,比如C#、C ++、Java等。它不会使用node.js,因为node.js是一个服务器。在浏览器中,您正在编写一个客户端。 2. 我不确定如何回答这个问题,因为node.js != PHP。node.js旨在成为Web服务器。这意味着服务器接受Web请求并发送正确的响应(类似于Apache的HTTPD)。PHP是一种脚本语言,与apache进行接口交互以能够执行更多动态HTML处理。 3. 使用C ++、Java、C#等语言。 4. 学习C++、Java、C#或任何其他支持sockets的语言。 5. 不,Web服务器应该接受请求、处理它并返回结果。如果您正在寻找客户端和服务器之间的持续通信,则Web服务器不是您要寻找的东西。

市面上已经有很多产品可以处理大量的基础工作。我建议您看看像PhotonSmart Fox Server这样的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接