【问题标题】:CPU or RAM in game development?游戏开发中的 CPU 还是 RAM?
【发布时间】:2011-08-28 07:37:27
【问题描述】:

我开始在一个用 Java 编写的游戏服务器上工作。诚然,Java 不是服务器开发的最佳解决方案,但它是我最熟悉的语言。

我正在尝试设计这个游戏服务器来处理大量连接,但我不确定应该更关注什么:将数据存储在内存中还是降低内存使用率并使用更多的原始 CPU 功率?

【问题讨论】:

  • 这是一个非常笼统的问题,所以这里给出一个笼统的答案:使用尽可能多的内存并牺牲时间来处理需要更多内存的数据量。
  • 为什么要重新发明轮子?当然,除非那是你的目标 :) 查看 Project Darkstar 的继任者,RedDwarf Server。

标签: java memory cpu


【解决方案1】:

当然取决于你的游戏是什么样的。我最近用 5,000 个客户端以 20MB 的内存对我的服务器进行了基准测试。你可能比我保留更多的状态数据,这可能是一个问题。

您对许多连接的严重问题是设置套接字以正确处理它,使用某种套接字处理方式变得非常陷入困境或中断@1024 连接等。我不确定您可以在 java 中进行多少优化。

看看this link我在说什么。

还有,祝你好运!此外,尽快将语言切换到提供与 java 类似功能但没有可怕缺点的语言(即 Objective-C 或 C#)。我不只是“抨击 java”,当你谈论做高性能的事情时你会遇到的问题是 java 会将你从操作系统抽象出来,你将无法利用优化当你需要的时候。

【讨论】:

  • 谢谢,感谢您的回复!我正在使用一个名为 KryoNet (code.google.com/p/kryonet) 的库进行套接字管理,该库经过高度优化,主要用于 Java 游戏开发。按照您的建议,我会尽快退出 Java。
  • 有一些方法可以使用 Java 并且仍然可以获得操作系统优化。您可以将繁重的工作封装在本机库中并使用 JNI 调用它们。
  • @Abrupt 支持我的建议的一个解释是,我用一种语言 (C++) 编写了我的游戏引擎,并决定在完成约 50% 时用另一种语言 (Objective-C) 重写它.让我说,我花了 远远 的时间来完成这件事。我的课程绝对是“按你的意思开始”——如果你想学习另一种语言,这将是学习该语言的好方法。如果您希望稍后再重写,那么您可能真的会为自己制造一团糟。祝你好运
【解决方案2】:

我不建议您将服务器设计得远远超出您的实际需要。如果您突然发现自己有 10,000 多个客户,您可以重新设计系统。

我将从基本服务器开始,例如配备 8 GB 内存的 i5 不到 500 英镑,配备 24 GB 的 i7 不到 1000 英镑。

随着连接数量的增长,除非您使用云解决方案,否则您可能会在资源耗尽之前耗尽带宽。

顺便说一句:您可以在 Java 中实现一个延迟小于 100 微秒的高频交易系统。我还没有听说过任何 Objective-C 高频交易系统。 C# 可能在 Windows 上表现得一样好或更好,但我更喜欢 Linux 作为服务器系统。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2013-03-04
    • 1970-01-01
    • 2014-03-06
    • 2010-09-27
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多