两全其美:浏览器和桌面游戏?

时间:2010-06-15 13:23:09

标签: java c++ browser-plugin

在考虑游戏平台时,我已决定使用多平台(Win / Lin / Mac),但就浏览器与桌面而言,我无法下定决心。由于我在发展方面并不是太遥远,现在有了第二个想法,我希望你的意见!


使用Java小程序的基于浏览器的游戏:

  • 市场渗透率相当高(对于版本6,我认为它大概在60%左右?)
  • 使用 JOGL 3D 表现/品质不错;当然足以渲染我制作的蹩脚3D图形
  • 将某些内容移植到 Android
  • 的可能性很小
  • 非常适合经常更换电脑的玩家可以坐在任何计算机,加载网页并播放
  • 也非常适合休闲游戏玩家或知识渊博的游戏玩家,他们非常乐意在浏览器中玩游戏,但又不想在他们的计算机上安装更多东西
  • 高级语言编写,我比C ++更熟悉 - 但与此同时,我想用C ++提高我的技能,因为它可能是我进入的地方一旦我离开学校,游戏行业......
  • 更轻松更新流程:重新加载页面。

使用优秀的'C ++和OpenGL

的桌面游戏
  • 100%市场渗透率,假设完全跨平台;但是,当您考虑下载和安装可执行文件的人数与仅浏览网页并对安全警告点击“是”时,该数字会减少。
  • 更难以维护跨平台;但同样,出于学习目的,我会接受挑战和我将获得的知识
  • 更好表现全方位
  • 真正的全屏,而浏览器游戏通常会遇到流畅的全屏图形(特别是在Linux上,根据我的经验)
  • 可以利用分发平台,例如 Steam
  • 更有可能被视为“真正的”游戏,而浏览器和Java游戏通常被认为不是真正的游戏,因此不会被“硬核游戏玩家”扮演
  • 安装程序可能很大;不必担心下载时间

有没有办法让两全其美?我喜欢Java applets,但我也非常喜欢编写桌面游戏的理由。我不想经常在Java applet项目和C ++项目之间移植所有东西;这将是工作的两倍!

Unity选择编写自己的网络播放器插件。我不喜欢这个,因为我是不会安装任何网络播放器的人之一,我认为自己无法说服观众安装浏览器插件。

我有什么选择?除了Unity之外,还有其他一些有浏览器和桌面版本的游戏吗?我在上面的pro / con列表中遗漏了什么吗?

10 个答案:

答案 0 :(得分:7)

我建议先写一个游戏。

很容易陷入如何制作有史以来最好的游戏的过程中,这种游戏可以运行在从算盘到SkyNet的任何事情上,但实际情况是,你将会遇到充足的挑战只需完成一个在您自己的PC上运行的游戏。

首先为一个平台编写游戏(无论该平台是“使用DirectX的Windows本机”,还是“Java applet”,甚至是“浏览器中的纯AJAX”)。如果你能做到这一点,那么你可以开始考虑如何将它移植到其他平台。但是,尝试做所有事情是最终无法实现任何目标的可靠方法。

或换句话说:

  

我决定使用多平台(Win / Lin / Mac)

所以你实际上决定没有。决定开发平台。然后制作游戏。然后让它在其他平台上运行。

不要太担心你的“观众”会被接受的东西。如果你的游戏很有趣,那么人们会愉快地安装Unity。就像他们将安装你的游戏一样,如果它不是基于浏览器的。但重要的不是“我必须安装什么来玩它”,而是“它是值得的”。您的重点应该是制作一个值得安装的游戏。

除非你计划出售2000万份游戏并以此为生,否则你的“观众”并不重要,是吗?重要的是将游戏放在那里,以便有兴趣的人可以尝试。

但是单平台游戏比未完成的跨平台没有好很多。

一款需要我安装Unity的游戏比你需要额外3年才能开发的游戏要好得多,因为你坚持重新发明轮子。

答案 1 :(得分:5)

如果你真的想要那种渗透,那么我建议HTML 5 + javascript取决于你需要的性能。

答案 2 :(得分:5)

是的,你可以两全其美。

完全可以编写一个Java应用程序,它既可以在applet中运行(对于在线用户),也可以作为下载形式的独立应用程序运行。

关键技术是:

  • JNLP
  • JOGL表示图片,也有一些好demos
  • 我对它不太熟悉,但我认为jMonkeyEngine看起来很有希望,如果你想要更多功能齐全的游戏引擎

如果它有用,我写的一个名为Tyrant的旧游戏支持同时作为applet和独立下载的.jar文件运行,如果你想查看它,所有的源都是打开的。这使用简单的AWT而不是3D图形。

最后这里是another example将applet转换为具有极少量代码的应用程序。

答案 3 :(得分:4)

首先,你从错误的问题开始。您对技术的决定应该由游戏背后的概念驱动。看起来你确定要编写游戏的想法 - 所以问问自己游戏的要求是什么。这将引导您进入您的技术。如果它不知道你想做什么。

给你的Pro和Con: 不要专注于你永远不会或不能使用的东西。关于蒸汽平台的思考对于业余爱好者来说并不有趣。如果你真的不想发布你的android应用程序,那么android也不是很有趣。这个Pro实际上永远不会成为职业选手。

总结一下:让这个决定由你的想法驱动,而不是技术本身。如果你清楚自己想做什么,你就会得到答案。

(顺便说一句: 想想浏览器游戏意味着什么。在Browsergame背后有一个巨大的服务区域,仅用于保持游戏运行。在这些领域工作的公司基本上都是服务提供商。)

答案 4 :(得分:2)

您可能需要查看Google的Native Client,它允许您使用C或C ++编写应用程序(或其他任何编译为本机代码的应用程序)。 SDK的一个新功能是LLVM支持,它将(希望)允许NaCl软件针对谷歌Chrome浏览器运行的任何平台(或任何与NaCl插件一起使用的浏览器 - 目前支持x86和ARM,IIRC)。

答案 5 :(得分:1)

你在提问中提到了Android - 你是否考虑过纯粹为Android开发游戏?

实际上,您可以获得两全其美,易于维护,易于发布新版本,易于货币化并获得一些小收入,而且您也没有编写自己的安装程序或更新机制。

答案 6 :(得分:1)

是。你可以制作适合两者的东西。基本上,让您的程序在JPanel中工作。 applet可以显示JPanel,而桌面版只是一个包含JPanel的窗口。

你也可以拥有一个完整的Swing(或其他)GUI,当applet点击你applet上的小“开始”按钮时,applet会在新窗口中启动。

还有一些其他的差异你需要考虑,比如可能加载资源,但我之前已经为我做过的简单游戏做过。

答案 7 :(得分:0)

我认为你不能真正比较这两者:

在我看来:

  • Applet,flash和其他基于浏览器的游戏通常是小型“玩具”游戏,可以免费或者通过广告进行补充。例如,请查看Addicting Games网站。
  • C ++游戏更有可能是依赖专用物理引擎,图形引擎等的重量级工作室编写游戏(特别是在Steam上分发的游戏我会想到)。学习曲线可能会更加陡峭,因为C ++本质上是一种比Java / Flash更难的语言。

如果你不熟悉C ++,我的建议是用JOGL引导Java。这样你就可以在解决C ++之前扩展Open GL学习曲线。

修改

要解决有关以浏览器和桌面形式实现游戏的问题的其他部分,您可以考虑使用Java实现游戏并部署applet和独立版本,从而独立版本可以利用Java的全屏独家模式API。您可以将两个应用程序基于相同的代码库。您还可以考虑通过在服务器端保留数据文件(例如游戏级别)并在需要时动态检索它们来缩小applet的占用空间大小。

答案 8 :(得分:0)

虽然WebSense不允许我直接浏览网站,但由于显而易见的原因,在阅读此问题时首先想到的是像Wurm Online这样的游戏。它是用Java编写的,带有JOGL,实现了内容流和本地缓存,似乎触及了你感兴趣的许多要点。它是一个桌面Java应用程序,而不是真正“在浏览器中”,但我认为你可以仍然从其实施中学到很多东西。

浏览器中的游戏总是处于关闭或刷新窗口的危险之中,导致它突然失去状态,除非所有内容都保留在服务器端。这意味着您要么拥有非常简单的游戏,可以使用呼叫/应答模型保持同步(例如无数的Facebook“Mob Wars”基于文本的游戏),或者冒着无意中碰撞F5某人将某人带回他们的最后“保存了游戏。”

答案 9 :(得分:0)

我不确定拒绝使用插件,因为你个人不喜欢它是一个明智的选择。此选项允许您将应用程序安装为桌面应用程序或浏览器插件(没有太多额外工作),您仍然可以用C ++ / GL编写它。你说你不认为你的用户会安装插件......为什么不呢?如果他们将安装一个应用程序,那么为什么不是一个基本归结为相同的插件呢?

你也可以看一下Flash,它正在收集一些3D功能,可以在浏览器中运行或作为AIR dektop应用程序运行。但是,用户需要一个Flash插件,你可能也没有。