问题标签 [mmo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
578 浏览

php - PHP 基于文本的 MMO 游戏任务组织

我正在开发一个基于 php 文本的游戏。我在游戏中组织任务。基本上任务增加了对游戏的理解。

任务是游戏中的一组小动作。

例如:

任务描述:你需要偷一辆自行车,修理它并运送到另一个城市。

它包括 3 个动作。

  1. 偷一辆自行车
  2. 修理自行车
  3. 将其运送到另一个城市(比如说伦敦)

这 3 个动作可以在一个不同的页面中进行。

我为 TASK(task_id, title, description (TASK Description Above),STATUS) 创建了一个表,但我不确定如何存储和执行任务的操作。

我有一个想法,使用相关表 TASK_ACTIONS (task_id, action_id,action(?),done)

但我不确定以哪种形式存储动作动作(?):

用于检查操作的 sql 语句 如下三点。

  1. 自行车是否被盗。如果是,将操作标记为 DONE
  2. 自行车已修复或仍然损坏。如果已修复,请将操作标记为 DONE
  3. 自行车是否已运往伦敦。如果已发货,请将操作标记为 DONE

如果以上都标记为 DONE,则将 TASK STATUS 标记为 COMPLETED,显示下一个任务。

0 投票
2 回答
354 浏览

php - Actionscript 3.0 -> PHP -> 游戏应用程序上的 MySQL 安全问题

我正计划用 actionscript 3.0 (flash) 制作游戏。但是,我在保存用户积分时遇到了一些安全问题。

更具体地说,请阅读以下内容,您将了解确切的问题。

  1. 您正在启动我的 Flash 应用程序。PHP 为您的用户名创建一个会话。玩了几分钟就达到了750分。
  2. 您点击“保存我的积分”按钮。
  3. 它将“game.php?points=[]”与您的点数联系起来,因此,game.php?points=750。
  4. PHP 连接到 MySQL 并使用您在打开应用程序时输入的用户名进行更新/插入查询,并使用 $_GET['points'] 获取积分,如您在 3 中看到的那样。

问题是,任何可以直接浏览“game.php?points=999999999999”的人都会将他的积分保存在数据库中。

我考虑过加密积分,但是,Flash 是一个客户端应用程序,任何人都可以使用“Cheat Engine”之类的应用程序更改“积分”值。一旦他们更改了积分,Flash 将自动生成加密积分。

我还考虑为每个玩家在注册时创建一个私钥并进行相应的加密,但这也行不通,因为一旦用户使用 Cheat Engine 更改了他的积分,flash 将使用给定的私钥自动加密积分,因此,另一个没用的理论...

有人建议我使用 SSL,只是因为 Zynga 等流行公司使用它,但我在这里寻找其他理论。

关于这种情况的任何想法,除了使用 SSL 吗?

附言。游戏将是 MMO,因此保护数据交易是必不可少的。

0 投票
3 回答
672 浏览

java - MMORPG 中客户端/服务器之间的消息速率

客户端应该多久向服务器发送一次请求?服务器应该多久向客户端发送一次更新?有什么建议吗?

0 投票
1 回答
458 浏览

mmo - 关于上限定理的哪种数据库应该用于 mmo?

假设正在创建具有第一人称视角、每个人都在其中玩的世界(如 eve online)和沙盒游戏等特点的 mmo。就上限定理而言,哪个数据库最适合它的需求?CA,AP,CP,为什么?

0 投票
3 回答
1224 浏览

c# - 服务器-客户端消息的快速文本解析器 - MMO

应用

我正在开发 MMO,但遇到了问题。我构建的 MMO 服务器速度很快,并且在 UDP 套接字上每隔约 50 毫秒在本地向我的游戏客户端发送消息。这是通过我当前的消息系统从服务器到客户端的消息示例:

count={2}body={[t={agt}id={42231}pos={[50.40142117456183,146.3123192153775]}rot={200.0},t={agt}id={4946}pos={[65.83051652925558, 495.25839757504866]}腐烂={187.0}}

我构建了一个简单的文本解析器,代码:http ://tinypaste.com/af3fb928

我使用如下消息:

问题

当我有更多对象〜60+时,性能会急剧下降。

问题

在 MMO 或实时在线游戏中,客户端和服务器之间打包和读取消息的标准方法是什么?

0 投票
5 回答
9554 浏览

php - 实时策略游戏如何在 PHP 中运行?

一些 MMO 实时战略游戏,例如 Travian 或 oGame 是用 PHP 编码的。

你能简单解释一下这样的游戏在幕后是如何运作的吗?游戏如何在没有玩家请求的情况下进行实时数据库更新?

此外,在运行具有 1000 名活跃玩家的 RTS 游戏(例如 Travian)时,需要什么样的服务器负载/带宽?

0 投票
1 回答
7753 浏览

mysql - 将库存存储在数据库中的最佳方式:每个项目实例都有其列表,或者每个玩家都有一个“库存”字段?

我正在使用 PHP 和 MySQL 制作浏览器 MMO。我在两种实现玩家库存的方法之间犹豫不决:

  1. 当从怪物/发现中制作/掉落时,物品会在物品表中创建一个新行,存储它的类型(例如匕首、药水......)、位置(在 X:Y 的地面上?在玩家 Z 的物品栏中?)可能还有一两个额外的字段。物品列表如下所示:(
    id=728 ; type=14 ; location="i426" ; special="e8"
    其中“i426”表示“在第 426 号玩家的物品栏中”,“e8”表示该物品具有第 8 号附魔)。
    优点:我可以存储关于每个单独物品的数据——附魔、耐用性、以前的所有者......而且,这些物品很容易放置在任何位置;将物品放入拍卖行,这个系统是免费的 - 更不用说疯狂的可能性,比如物品里面的物品等等。
    缺点:数百名玩家整天掠夺怪物并制作,这很快就会创建一个巨大的桌子,而且看起来很浪费。我担心这可能会在涉及项目时减慢整个游戏(我使用了很多 AJAX 巫术)。

  2. 或:当玩家将物品放入他们的物品栏时,该玩家在数据库中的物品栏字段会更新,并在末尾附加新物品的类型(整数),并带有分隔符。典型的库存字段如下所示:"|11|8|27|58|58"
    优点:浪费更少。一个项目实例只是几个数字和一个分隔符。
    缺点:没有关于项目的额外数据;每个实例都是一样的。此外,将项目放在图块上意味着图块需要自己的库存字段 - 等等,用于项目的每个可能位置。此外,此方法涉及在必须添加/删除项目时随时处理字符串,而不是简单地从表中删除一行。另一件事是玩家的物品栏可以存储可变数量的物品,所以这个字符串没有可预测的长度。

在之前的项目中,我使用了第二种方法。第一种方法看起来很有趣,但我不确定它是否符合我们的存储空间和服务器的速度。哪些方法最常用于 MMO 游戏?完全是另一个吗?我错过了一些优点或缺点吗?(如果这个问题有点主观,我很抱歉!)

0 投票
2 回答
1604 浏览

sockets - 写游戏服务器?

我想编写一个 mmo 游戏服务器,但我似乎找不到任何可以告诉我从哪里开始的链接。我必须有自己的服务器吗?我可以使用 GoDaddy 作为主机制作游戏服务器吗?任何信息都是帮助。

我已经在 LAN 上使用服务器/客户端制作了演示游戏,并且我对网络编程感到满意。我的问题是制作在线服务器。我只是不知道从哪里开始。

0 投票
2 回答
5003 浏览

netty - netty vs smart 狐狸服务器

在 MMO 游戏后端领域,有这 2 台服务器之间的白皮书比较。 http://www.smartfoxserver.com/downloads/sfs2x/documents/SFS2X_WP_PerformanceAndScalability.pdf

似乎没有巨大的性能差异。

另外还有针对Netty的性能测试: http ://www.jboss.org/netty/performance

那么我应该选择 smart fox server 还是 netty 呢?根据个人情况,总是有利有弊。因为我的游戏的目标是托管多达一百万个客户端,所以当您添加智能狐狸服务器许可证时,它可能太贵了。但是,假设我在亚马逊云上运行游戏,即使两者之间的性能不是那么大,当你以这样的规模部署游戏时,节省的服务器使用量可能是显着的。

一方面,我确实理解 SFS 可能非常适合游戏使用,但 Netty 是开源的并且可以拥有它的优势。Netty 拥有 Apache 2 许可证,这意味着您几乎可以对其进行修改并将其用于您自己的商业目的。无论如何,您都无法修改 SFS。SFS 的一些功能,例如泛滥、房间管理和聊天,对于一定规模的游戏来说几乎没有用处,因为你可以快速编写这些光照。真正重要的是套接字引擎的性能。facebook上有很多网页MMO游戏,但几乎没有一个使用SFS。我认为有两个原因:一个是许可费可能会增加,另一个是您不能出于自己的目的对其进行修改。Zynga 不会使用它,因为他们希望对所有代码和资源进行内部控制。

我真的不知道哪个是最好的选择。帮我做决定。

0 投票
0 回答
293 浏览

mmo - 如何在游戏中实现相对计时器

我们的游戏是 MMO 游戏,我们的逻辑服务器当然有游戏循环。为了使这些逻辑模块易于编写,我们提供了一个定时器模块,它支持注册一个真正的定时器并在可能的时候触发它。在游戏循环中,我们将系统时间(以毫秒为单位)传递给定时器模块,定时器管理器将检查是否有一些定时器可以被触发。例如,要更新玩家/怪物的位置,当玩家开始移动时,我们每 200 毫秒更新一次玩家位置。

但是当游戏循环运行过多的逻辑时,它会在单帧中使用过多的时间,并且下一帧,一些计时器会比实际时间慢。这实际上会导致一些错误。例如,如果在一帧中花费了 1 秒,而在下一帧中,实际时间为 1000 毫秒,而移动定时器已在 800 毫秒内调度,因此定时器已在 1000 毫秒触发,比预期的时间慢。

那么有没有更好的解决方案来解决这个问题呢?比如我们可以实现一个定时器,只依赖于我们的游戏,不依赖于真实的电脑时间?