处理正在进行计算的基于浏览器的游戏的后端有哪些选项

What are the options for handling backend for browser-based games which have ongoing calculations?

本文关键字:后端 游戏 选项 浏览器 正在进行 计算 处理      更新时间:2023-10-16

我正在进入基于浏览器的游戏世界,我只是把我的第一个进入测试阶段。问题是这是一款回合制游戏,使用PHP脚本后端很容易做到,但是当我期待时,我对开发更实时的游戏的选择有点不知所措。

犹豫是否要在公共网站上给出我的下一个项目的确切细节,所以我会尝试用更模棱两可的术语描述我在这里寻找的内容。基本上,我需要的是某种方法来处理来自用户的传入数据,同时还可以进行每秒可能发生多次的后台计算。在这种情况下,设置PHP脚本似乎是愚蠢的,其中脚本不断被称为数据库发生许多写入;相反,在服务器上运行类似C++程序、处理请求并将值存储在本地内存中(直到用户注销,无论如何)似乎更有意义。

看起来我很清楚

我想要什么,但问题是我不知道我在做什么,当涉及到服务器后端时。我知道如何使Javascript与PHP脚本交互,这就是我的知识范围。C++计划是实现这一目标的最佳方式吗?如果是这样,我需要什么才能开始?(我知道一些基本C++,但我不确定如何从接受请求的服务器运行程序)。我想在这种情况下我能得到的最理想的事情是指导我如何进行简单的交互,其中javascript向服务器上的程序发送请求,然后该程序将对它接收的数据执行某些操作。一旦我有地方可以开始,我通常非常擅长弄清楚事情。

感谢您的任何帮助。

我的建议是:如果你想真正创建那个实时游戏,而不仅仅是寻找一个可以学习C++的项目(这是一个同样值得但非常不同的目标),坚持使用PHP,直到你真正遇到一个你无法解决的问题。如果您仔细构建,您将能够根据需要替换系统中需要调整的部分。

您确定为后端要求的两个特性:

  1. 要远离数据库的高度交互式会话状态
  2. 后台进程(即,那些不是由通过 HTTP 的玩家事件触发的进程

在这些要求中,我没有看到任何将PHP从游戏业务逻辑中移除的内容。

对于 1) 考虑像 redis 这样的东西(通过 Predis,一个流行的 PHP 客户端)。这是高性能内存中数据存储。

对于2)你可以编写一个完全独立的PHP程序,就像任何其他客户端一样与主服务器通信。如果你使用 redis,它可能会直接与它对话。请记住:没有说PHP必须处理网页请求。

最后,在研究这个问题时出现了另一个链接 - 它很旧,但代码仍然可用,可能真的很有启发性:phpsocketdaemon 是一个"用于在 PHP 中编写守护进程的库,可以处理大量的客户端和服务器连接"。