- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道对于典型的 MMORPG,nosql 选项可以代替 rdbms 或与 rdbms 一起带来什么样的好处。特别是,我很好奇在 nosql 下如何保持数据完整性。
我将举几个例子,让我对服务器逻辑的运行方式感到困惑:
场景1:假设玩家A和B同时攻击玩家C。无论哪个玩家杀死玩家 C,都会更新 player_stats.kill_count。通常,可以通过以下方式处理此 AttackPlayerRequest:
开始交易
{
攻击者健康=新攻击者健康
defender.health = newDefenderHealth
如果防御者.健康 == 0
{
攻击者.stats.kills += 1
}
}
场景 2:玩家 A 将一件元素卖给 NPC 供应商,并迅速尝试将同一元素从他们的库存中丢到地上。 (即使您的 UI 不允许这样做,他们当然也可以将事件放在网络上)。
这个列表显然还在继续,并且影响了几乎每个玩家-玩家-玩家-世界的交互。最后一条信息是服务器是线程化的,因为我们不希望任何特别冗长的请求阻止其他玩家在游戏中做简单的事情。
我想我的大问题是,我是否误解了关于 nosql 的一些问题,其中这是一个微不足道的问题?如果不是,这是否超出了 nosql 选项旨在解决的范围?在典型的 MMO 下,可以在哪里注入(inject) nosql 选项来提高服务器性能?
最佳答案
这一切都取决于您的游戏如何运作。
NoSQL
Facebook 上的 Farmville 使用 NoSQL。 Farmville 就像一台巨大的服务器,每个人都在使用。假设 Farmville 在其数据库集群中使用 3 台计算机。圣地亚哥的计算机 1。纽约的计算机 2。莫斯科的计算机 3。我从圣地亚哥登录 Facebook,所以我
在这里连接数据库。我升级并退出。最终,计算机 1 会告诉计算机 2 和 3 我是如何升级的,但俄罗斯的人可能需要一个小时才能看到我帐户的这些更改。
NoSQL 扩展就像将另一台计算机添加到集群并告诉该区域的网站使用该计算机一样简单。
SQL
有几种方法可以使 SQL 工作,但我将解释一种使其类似于 NoSQL 的方法
每个数据中心将有 10 个游戏服务器,每个游戏服务器都有自己的 SQL 数据库 + 1 个子主数据库。子主数据库在所有 10 台服务器之间共享信息,因此如果您登录服务器 1 并制作角色 John Doe,然后注销,如果您接下来登录该服务器,服务器 10 将拥有您的角色。
然后,子主服务器与您总部的主服务器共享其信息。然后,主服务器将把 John Doe 共享给所有其他数据中心的所有其他子主服务器,这些子主服务器将更新他们的游戏服务器。此配置将允许您登录到旧金山的 Weed 服务器,播放您的角色,注销,登录到莫斯科的 Vodka 服务器,仍然可以看到您的角色。
魔兽世界等游戏使用 SQL,但只有数据库的某些部分是共享的。这允许减少每台计算机上的数据库大小,并降低硬件要求。
在现实生活中,每个 Sub Master 都会有一个备份 Sub Master,并且您的 Master 服务器会有一些备份服务器,以防一台服务器出现故障,您的整个网络不会锁定。
关于MMORPG 的 NoSql 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413483/
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我打算用JAVA写一个简单的,但是在未来的MMORPG中易于开发。 我或多或少知道它应该是什么样子,但我有一些问题: 哪种数据应该有客户端?我知道,例如,服务器会通知客户端“该字段”是否空闲,但是加载
我构建了一个 MMORPG,它使用 MySQL 数据库在用户注销时存储玩家相关数据。 我们内置了一个自动保存计时器,以便每 3 小时将每个登录用户的所有数据保存到数据库中。 在这样做的过程中,我们注意
我想知道对于典型的 MMORPG,nosql 选项可以代替 rdbms 或与 rdbms 一起带来什么样的好处。特别是,我很好奇在 nosql 下如何保持数据完整性。 我将举几个例子,让我对服务器逻辑
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
这些天来,我正在尝试为我的公司设计一款新的 MMORPG 手机游戏的架构。该游戏类似于 Mafia Wars、iMobsters 或 RISK。基本思想是准备一支军队与你的对手(在线用户)作战。 虽然
我开始制作 MMORPG 来提高我的网页设计技能。我设法使用户能够通过 Javascript、PHP 和 MySQL 的组合在屏幕上移动并获取一些项目。 我想同时显示所有已登录的用户的移动情况,并向用
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个 MMORPG 模拟器,这意味着它将处理大量数据包。目前,我正在为此使用指针,因为我认为如果使用得当,它们可以加快我的服务器速度,但是我有两个 friend ,一个告诉我使用指针,他认为我可以
更新:如果我的问题可能不够清楚,我很抱歉。我读过命令模式,但不幸的是我自己没有使用过。我试图弄清楚如何使用它(或其他一些模式)使游戏事件足够抽象,以便服务器可以使用单个 Process() 方法处理它
我以前设计过多人游戏,但现在我想创建一个 MMORPG 架构,用于学习/挑战目的。我想尽可能地在一台服务器上模拟数百(或几千)个并发玩家。 到目前为止一切顺利,只是现在我遇到了一个问题,要找出一种尽可
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在创建一个 2D MMORPG 游戏(以小程序形式),我有一个简单的问题。 我理解,出于安全目的,作为一般的反黑客技术,客户端应包含尽可能少的逻辑数据(因此它无法被操纵和利用)。 我的问题是这样的
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit th
我目前正在使用 Java 服务器端和 as3 客户端。我想知道是否有银弹可以同步它们之间的时钟。在可变延迟和可变时钟速度之间,似乎每个数据包都需要一个时间戳。 谢谢! 最佳答案 这只是我的想法,没有任
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我目前正在重写一个非常古老的 mmorpg 的服务器端,我一直在寻找一个很好的开源网络库来与 C/C++ 一起使用。 由于客户端已经存在,我不能使用任何强制执行某种数据包结构或通信的库(例如,RakN
哪种 DBMS 最适合 MMORPG 游戏服务器? 最佳答案 如果你计划有很多玩家在线,我会说你应该选择一个可以尽可能快地吞下写入的。 如果您考虑一下,您可能不想在每个小 Action 上都从数据库中
我是一名优秀的程序员,十分优秀!