在考虑游戏平台时,我已决定使用多平台(Win / Lin / Mac),但就浏览器与桌面而言,我无法下定决心。由于我在发展方面并不是太遥远,现在有了第二个想法,我希望你的意见!
有没有办法让两全其美?我喜欢Java applets,但我也非常喜欢编写桌面游戏的理由。我不想经常在Java applet项目和C ++项目之间移植所有东西;这将是工作的两倍!
Unity选择编写自己的网络播放器插件。我不喜欢这个,因为我是不会安装任何网络播放器的人之一,我认为自己无法说服观众安装浏览器插件。
我有什么选择?除了Unity之外,还有其他一些有浏览器和桌面版本的游戏吗?我在上面的pro / con列表中遗漏了什么吗?
答案 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中运行(对于在线用户),也可以作为下载形式的独立应用程序运行。
关键技术是:
如果它有用,我写的一个名为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)
我认为你不能真正比较这两者:
在我看来:
如果你不熟悉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插件,你可能也没有。