有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java项目Darkstar是现实的吗?

昨天晚上,谷歌在纽约的办公室召开了每月一次的会议,会议的主题是Project Darkstar。对于那些不知道的人(可能是所有人),Project Darkstar是一个大型多人在线游戏框架,它试图处理所有的“硬东西”其基本思想是,您编写游戏服务器逻辑的方式是将所有操作分解为小任务。您将这些任务传递给Project Darkstar框架,该框架负责将这些任务分发到集群中的特定节点,处理所有并发问题,并最终持久化数据

显然,对于视频游戏来说,做这种事情与企业应用程序的问题大不相同。主持讲座的吉姆·沃尔多(Jim Waldo)声称,MMO游戏的DB读/写比率为50/50,而企业应用程序的读/写比率更像是90%,10%。他还声称,大多数现有的MMO都会将所有内容单独存储在内存中,并且每隔6个小时才会转储到一个DB中。这意味着,如果服务器宕机,您将丢失自上次数据库转储以来的所有工作

现在,这个项目本身听起来很酷,但我认为业界不会接受它。首先,您必须用Java编写服务器代码。客户机代码可以用任何语言编写(Jim声称ActionScript3是最流行的,其次是C++),但服务器代码必须是Java。听起来不错,但我真的觉得游戏行业的每个人都讨厌Java

其次,与其他开发者更喜欢使用现有框架和库的行业不同,游戏行业的人似乎喜欢自己编写所有东西。不仅如此,他们还喜欢为每一款新游戏重写一切。开发人员使用Havok for physics、Unreal Engine 3作为他们的平台等等,情况开始发生变化,但在大多数情况下,一切似乎都是专有的

那么,黑星计划的人只是在浪费时间吗?像这样的通用框架真的能在性能要求很高的复杂游戏中工作吗?即使它确实有效,游戏公司是否愿意使用它


共 (6) 个答案

  1. # 1 楼答案

    Edit:这是在甲骨文收购Sun并开始大肆杀戮那些每天不让他们赚十亿美元的东西之前写的。请参阅OSS Fork的注释我仍然坚持我的观点,即类似的东西(MMO中间件)是现实的,你只需要一家不支持它的公司

    市场可能由少数大型游戏占据主导地位,但这并不意味着没有太多的空间容纳更多的利基游戏。让我们面对现实吧:如果你想达到10万以上的玩家,你最终会建立自己的技术堆栈,至少对关键核心是这样。这就是CCP为EVE在线所做的(StacklessIO),这就是暴雪为魔兽世界所做的(尽管他们确实使用了许多第三方库),这就是Mythic为战锤在线所做的(尽管他们基于Gamebryo)

    然而,如果你的目标是成为一个小型的、小众的MMO(比如几十个免费的游戏/项目商店MMO),那么正确地使用网络是非常困难的,数据一致性甚至更加困难,可扩展性是最大的障碍

    但游戏技术并不是你唯一的问题——你还需要解决计费问题。只有信用卡吗?那么,在德国销售时要开心,那里的人想要ELV。这就是您需要可靠的计费提供商的地方,但您仍然需要将计费应用程序与您的帐户连接起来,以确保在计费失败时阻止/重新激活帐户

    有一些公司已经提供“MMO基础设施服务”(即Arvato's EEIS),但底线是:像Project Darkstar这样的东西是现实的,但假设你可以完全在第三方堆栈上构建数十亿MMO是乐观的,可能是理想的

    但是再一次,完全发明所有的技术更愚蠢-使用你需要的第三方东西(即账单、字体渲染、音频输出…),但是write the stuff that really makes or breaks your business(即网络堆栈、用户界面等)由您自己决定。(注:Jeff的帖子可能是a bit flawed,但总体方向是正确的。)

    附录:此外,游戏行业也大量许可和重用引擎。最著名的游戏引擎是Unreal EngineSource Engineid Tech,它们为数十个甚至数百个游戏提供燃料。但也有一些鲜为人知的(行业外)发动机。有Gamebryo是游戏《文明4》和《辐射3》背后的中间件,有RenderWare现在只是内部EA,但在《战场2》或《模拟人生3》等游戏中使用。有一个开源的Ogre3d,在some商业titles中使用。如果你只是在寻找声音,有类似FMOD的东西,或者如果你想做字体渲染,为什么不给FreeType一个旋转呢

    我想说的是:第三方引擎/中间件确实存在,而且它们在十多年前就已经成功地被使用了(我确信id的Wolfenstein引擎是被许可给其他公司的,那是1992年),甚至是被大公司以数百万美元的名义使用。重要的是支持,因为如果开发人员不得不将游戏开发时间花在不必要的引擎调试上,那么在出现问题时没有帮助的好引擎几乎一文不值,或者至少非常昂贵

    如果Darkstar的人能够获得正确的支持,推出2到3个更高知名度的游戏,我相信它能够成功地向更多的小型开发者和独立开发者开放MMO市场

  2. # 2 楼答案

    对于游戏来说,重用“游戏引擎”是很常见的,即使是来自第三方的引擎。这听起来像是朝这个方向迈出的又一步

  3. # 3 楼答案

    我认为这是一件很棒的事情。 开发人员不必担心project darkstar处理的所有这些事情,而且它非常易于使用。 但这不仅仅是为了让它发挥作用,也不是为了学习互联网通信的所有知识,这也是关于性能的。darkstar项目已经开发了2年多,它一直在变得更好、更快、更强大

    我认为,当这样的技术可以被用来替代的时候,在针对特定游戏的时候写这些东西是很难的,而且可能不值得花时间。在运行时,您还可以得到很好的信息,告诉您应用程序中哪里存在导致减速或死锁的原因,以便您可以改进这一点

  4. # 4 楼答案

    对我来说,听起来像是无用的技术。MMO世界由一些已经拥有自己技术的大型游戏公司控制。独立游戏开发者喜欢尝试建立MMO,有时他们也会这样做,但这些游戏很少有吸引力。进入MMO世界的大公司可能会许可“经验证”的技术,或者扩展自己的技术

    游戏公司在不同的游戏中重复使用大量代码。大多数/许多游戏公司都在内部开发了自己的技术,并在他们生产的每一款游戏中使用。偶尔,他们会用第三方物理引擎替换他们的物理代码。如果他们的内部代码库(游戏引擎、设计工具、内部管道)开始老化,或者变得笨拙,他们可能会切换到大型游戏引擎,如Unreal。即使如此,大部分代码仍将在不同的游戏中重复使用

  5. # 5 楼答案

    设计和编写代码听起来很有趣,但我认为最终要归结到useless abstractions(从Joel那里偷东西)

  6. # 6 楼答案

    From what I can tell, video game companies do not reuse most of their code, because if they do it implies that their new game is just a rehash of an old one.

    嗯。。。如果你指的是电子游戏公司的长尾,也许吧。在一家拥有一系列成功游戏的公司中,通常会有一些重用。重大的硬件更改可能会导致大量工作的中断,但这实际上取决于公司