Questions tagged «scalability»

6
如何编写网络游戏?[关闭]
基于为什么开发MMO如此困难?: 网络游戏的发展并非易事。不仅要克服延迟,而且还要防止作弊,状态管理和负载平衡,这是一大障碍。如果您没有编写网络游戏的经验,那么这将是一个困难的学习练习。 我知道有关套接字,服务器,客户端,协议,连接之类的理论。 现在,我想知道如何学习编写网络游戏: 如何平衡负载问题? 如何管理游戏状态? 如何保持事物同步? 如何保护通信和客户端免受逆向工程的影响? 如何解决延迟问题? 应该在本地计算哪些内容,在服务器上计算哪些内容? ... 是否有关于此的好书,教程,网站,有趣的文章或其他问题? 我正在寻找广泛的答案,但是也可以使用特定的答案来学习区别。

7
模拟游戏世界中大量实体的绝佳方法
假设您有一个游戏,其中有许多实体(许多)服务于某些功能,但并非总是需要或需要在每个框架中都考虑所有这些功能。我正在研究的具体问题是存在一个包括器官在内的人体的详细模拟。 在游戏中,每个生物都有自己的身体,身体分成较小的部分(躯干,腿等),有时这些部分包含器官,这些器官在体内发挥特定的功能。器官的当前用途或作用是未知的。毕竟,动物可能肚子空了,因此不需要消化任何东西。当您在世界上拥有许多生物时,检查或模拟每个帧中的每个对象将是非常荒谬的,而且成本很高。因此,我正在考虑一种巧妙地区分需要更新的对象和不需要更新的对象的方法。 我想出的似乎是至少可以的解决方案。它创建了一个简单的队列/堆栈(本质上是每个元素在读取后即被删除;顺序无关紧要),称为“注意堆栈”,其中需要模拟的对象驻留在该堆栈中。需要注意的对象将简单地放在堆栈上或由其他对象放在那里。这些对象可能会实现带有Simulate()函数的简单接口。 应用于我之前的消化示例,这将意味着: 玩家从清单中选择要吃的东西(假设是面包),并将其放入角色的口中,然后将口放到注意堆栈中。在下一帧中,将嘴从堆栈中取出,并调用其Simulation()函数。由于是嘴巴,因此在这里模拟咀嚼是合理的。这可能会持续几帧,在此过程中,嘴巴会不断将自身放到烟囱上,直到它决定可以吞咽食物为止。在这种情况下,嘴巴将嚼过的面包放进胃中(我知道它不会直接进入胃中,但是为了简化起见,食管被省去了),然后也将其放到注意堆栈中。在下一帧中,开始消化过程的模拟。其余的必要器官等等。 可以预见的问题是空转对象。熟睡的动物就是一个很好的例子。可以通过将熟睡的动物放在堆栈上并每次检查是否需要唤醒来完成上述操作,但这似乎很浪费,因为这是唯一要做的事情。为了使闲置对象更有效率,我计划添加一种时间表,以存储要在特定时间执行的作业。如果动物入睡,它将按照该时间表进行工作,该时间表将在动物入睡后的一定时间内进行。然后,这项工作将负责将熟睡的动物再次放到注意堆栈中。现在,您可以说不在注意力集中的睡眠动物可能会因为没有模拟AI而错过被某物攻击的机会, 现在,老实说,由于缺乏经验,我不知道这是否可以完美解决该问题。我接近可用的东西了吗?通常这是如何完成的,或者有人有什么建议或更好的解决方案?

4
MMO如何实现负载平衡?
我相信MMO的普遍要求是,可以在多台服务器上完成单个分片或领域的处理,以减轻负载。我很好奇如何在保持所有玩家和所有NPC都可以互动的统一一致世界的同时完成此工作。 我的问题是MMO如何实现负载平衡? 任何有关如何提高我对此主题知识的链接,书籍或一般信息也将受到赞赏。

6
是否有理由添加选项以在游戏引擎中不使用高级技术?
我一直在开发游戏引擎,并且一直在探索和阅读诸如各向异性过滤,环境光遮挡,抗锯齿等游戏技术。 通常在游戏中,您可以打开或关闭这些设置。但是,如果这些设置只增加肯定值,那么是否有理由在开发者的游戏引擎中为其添加切换值? 我了解性能是一个主要因素,但是还有其他原因为什么这些设置始终可以更改?

3
我应该将登录服务器与游戏服务器分开吗?
我正在考虑制造MMO服务器,并且一直在研究其他游戏如何构建其网络。我注意到的一件事是,总是有一个登录服务器,然后是游戏服务器。 我仍在决定是否应该这样做,但是我想先听听一些意见。这样有什么好处,登录服务器如何与游戏服务器通信以处理登录?

4
MMO服务器的游戏日志格式
整个群集/分片的游戏事件日志(与错误/调试日志相对)对于在实时生产环境中的商业MMO非常有用,它为客户服务提供了至关重要的支持,并提供了历史分析手段。 我当前正在从事的项目使用关系数据库来存储所有游戏事件日志,尽管该方法可以正常工作,但在我看来,日志的按时间顺序排列的只读性质将允许使用更有效的存储格式。 但是,我不确定从哪里开始学习构建自定义二进制日志格式。您在创建自定义日志格式或有关该主题的任何推荐论文/文章方面有什么经验?

5
有没有办法使诸如MMORPG的动态世界水平扩展?
想象一下,一个拥有500多个播放器的开放世界,其数据更改速度高达20个更新/播放器/秒。上一次我在类似的MMORPG中工作时,它使用SQL,因此很笨拙,无法始终查询数据库。而是将所有播放器作为C ++对象从数据库加载到内存中并使用它们。也就是说,它是垂直缩放的。可以使该服务器水平扩展吗?是否有一个旨在同时支持该数量的更新的数据库?

2
MMO技术,算法和资源可用于保持较低的带宽?
关于当前MMO如何处理从压缩到客户端处理的动作和运动数据,是否有任何资源和文档?运动预测算法有任何资源吗? 我对那些具有移动性并专注于保持低延迟的应用特别感兴趣。不同类型的MMO(网络方式)的包速率和大小是多少? 如果玩家无法到达或在以后的情况下看到它们,是否有办法缩放数据包速率或完全禁用某些数据包?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.