我过去一直在编写很多多人浏览器游戏,需要玩家之间的一些互动,但由于它更多的是关于策略和“构建”游戏,因此交互不是主要问题。
我能用jquery,ajax和php完成所有这些工作:
有人对游戏的整体内容进行了更改 - ajax会触发一个php脚本,将此更改存储在数据库中。
你的客户端代码连续运行一个ajax脚本,每次触发一个php脚本搜索数据库进行更改,如果有的话,你会收到通知,或者你的页面的内容(html代码)会根据这些更新变化。
以下是我所说的一个例子:
setInterval(function() {
$.ajax({
url: "checkUpdates.php",
type: "post",
dataType: "json",
success: function(data) {
// do the changes based on the returned data
}
});
}, 1000);
但现在我正在开发以互动为主要因素的游戏。让我们说一下网球,你需要跟踪球员的位置以及他们的动作。 简单的方法是将这些值存储在数据库中,并使用上述功能更新页面内容。但现在这是不可能的,因为如果你快速连续启动ajax函数,那么它将减慢浏览器的速度。另一个问题是,在激活ajax函数和根据结果进行更改之间存在“大”延迟。
因此我的问题是:
使用ajax解决此问题有更好的方法吗?一些方法可以克服上述问题(每隔0.1秒触发ajax函数)。
甚至可以在php和关系数据库中使这个工作,或者你需要使用像node.js / python这样的东西来支持nosql数据库的后端吗? (我想这会更快)
该领域目前的艺术水平是什么?
尽管这可能是一个相当广泛的问题,但我没有找到任何严格说提及方法不合适的内容。