2009-05-22 79 views
3

我一直在网络程序员一段时间,我也可以用Java编程。我有一个想要开发的小型多人RPG游戏的想法。它将通过用户的Web浏览器中的Java applet播放。如何学习游戏开发?

我写了游戏设计文档和规格。我现在想知道的是我如何开发游戏?过去我只使用类似Windows的商业应用程序,内置小部件用于文本框,下拉菜单等。通过游戏编程,似乎我必须为游戏的UI构建自己的窗口小部件/控件。

这些都是我心目中的具体问题:

1)如何与一个进度条显示“正在载入”消息,而游戏中的图像,声音等被下载。 (使用java小应用程序)

2)如何使用自己的菜单,控件等创建游戏的UI。通过点击地图图标,它会显示一张地图。点击朋友图标可以让他们和他们的朋友聊天等。

3)和其他一些我应该知道的游戏开发问题,比如我是否应该使用2D或3D图形,物理游戏等。

如果有一本好书可以帮助我,请分享。

回答

1
  1. 最简单的方法是将所有东西都打包到Jar文件中。默认屏幕确实显示一个进度条,其中有一些customise的小功能。你可以编写自定义代码来跟踪,管理和下载文件,但我会亲自劝告这条路线。如果您搜索小程序加载器,您会发现更多信息。

  2. 我并不是100%确定您的意思,但您可以使用Swing components,方法与您可以在应用程序中使用它们的方式相同。对图像使用JButton非常简单,然后将事件代码挂接到actionPerformed方法中。

  3. 您可能遇到的最大问题是动画和EDT。我之前询问过this

This页面有一大堆有用的游戏开发链接。Pulp core是一个值得检验的开源框架 - 即使您不使用框架,您也可以调查代码。

是否应该使用Java小程序似乎超出了这个问题的范围,但上面的许多答案给出了是否使用Java小程序的客观(或根本没有原因)。如果这是个人练习游戏来学习Java,那么这是一个很好的方法。如果您希望公开,您需要考虑目前的adoption levels是否足够满足您的需求。

最近在applet世界中发生了变化。由于1.6 update 10与Flash相比更具竞争力 - 下载规模较小(通常低于4Mb),启动时间缩短并引入了new scaling look and feel

0

Q1 =您的时间的1%。

Q2 = 40%的时间。

Q3 = 59%的时间。

你可能会问我如何为网页浏览器编写Halo3。

瞄准低一点,开始与....

1

不要去Java小程序的路线。

如果你想做一个快速休闲游戏,使它闪光;否则,开发一个完整的java应用程序并通过java web start运行它。

尝试Tower以了解您可以使用Java作为平台,以及Java Web Start的工作原理。

至于进度条的东西,我建议你实现这些文件的加载,实际上你去进度条养眼:)

+0

java web start让应用程序从浏览器运行?不错 – 2009-05-22 18:08:20

+1

使用适当的java会让你使用很酷的3D游戏开发库,对于java来说有几个好的。 尝试http://tower.sourceforge.net/来看看java web start + java如何适合游戏开发。 – alamar 2009-05-22 18:15:37

+0

当我点击该游戏的游戏时,它会要求我下载一个.jnlp文件。这不是我想要的,它会击败目的。我希望他们通过浏览器播放视频,同时保留在我的网站 – 2009-05-22 23:08:29

1

http://nehe.gamedev.net/

拥有吨教程从之前使用它们基本到高级,使用各种语言和系统的OpenGL,从C到C#和Python到Java。

我发现这非常有用,是一个很好的书签资源。 它应该让你开始在你所选择的平台/语言上进行游戏/ 3D编程的基础知识。

祝你好运!

1

正如其他人所说的,Java applet可能不是您想要展示您的游戏的媒介。第二大多数人看到一个小程序开始加载,他们在恐惧中运行。

如果您根本没有游戏设计经验,那么您可以通过多人角色扮演游戏将酒吧设置得非常高。您可能希望从一个更简单的项目开始,例如重新创建诸如俄罗斯方块,pacman或pong之类的东西,这样您就可以了解创建游戏的所有内容。

如果你在做一个在线游戏,Flash是很棒的,Java加上Jogl开放式封装也是一个不错的选择。

我个人建议使用Microsoft Xna。 C#与Java很相似,所以你应该能够很快地完成它,而Xna在抽象掉图形编程中涉及的一些较低层次的细节方面做得很好。社区也非常积极和乐于助人。

2

可能值得熟悉的一件事是多线程。例如,使用“加载屏幕”时,可能有一个线程显示进度条,而其他线程同时加载数据。

同样,通过调度多个线程同时执行许多操作(移动屏幕上的不同字符)或通过用户输入处理中断,大部分交互操作都会发生。

3

如果这是你的第一场比赛,多人项目可能过于雄心勃勃。

加载屏幕并非非常困难 - 我通过计算每次加载其他文件时需要加载的文件数,然后推进进度栏(并进行屏幕刷新)来实现它们。您可以按照您的要求尽可能精细地执行此操作 - 这可能会使您的加载代码复杂化以添加UI组件。我现在不会为此担心;也许只是抛出一个基本的“加载...”框架,然后在游戏更加稳固时稍后实现完整的进度条。我也看到了一些使用多线程的好实现。

另外两个将带有经验;我认为你需要更多的东西是游戏开发的一般教程,而不是具体的答案。你应该开始变小。一旦你了解了较小游戏的结构和问题,将它们应用于较大的游戏会更容易。

最合理的游戏编程书籍将超过基本的游戏结构;我喜欢Game Coding Complete,但对于初学者来说这非常复杂(它涵盖了处理大型项目的更复杂的方法)。游戏体系结构和设计类似,但可能更适合您的需求,因为它也涵盖了一些次要的项目管理“最佳实践”。

从使用Java原始UI类型(取决于您正在使用的其他库)自行编写您自己的“HUD”实现,有很多不同的方式来执行UI。

-1

如果您正在寻找游戏开发的温和入门途径,并且不介意学习C#,XNA有围绕学习如何编写游戏构建的整个社区。它具有各种各样的样本 - Game State Management样本显示实现屏幕过渡和加载的好方法,并且还有类似的网络样本Network Game State Management样本。他们也有整个游戏可供下载的源代码。不管你的长期目标是制作一个Java小程序,Flash游戏,还是你想用OpenGL在C/C++中工作,XNA都是忽略渲染/声音的所有毛病实现细节的好方法/等等。当你只是想做你的第一场比赛时,这非常有用,相信我。

0

由于我无法添加评论,因此我会添加一个答案。我建议不要使用线程移动字符,等等。对于文件加载,播放声音,甚至服务器端网络,它运行良好,但任何类型的AI /图形,它往往会导致无尽的头痛。另外,正如其他人所提到的,Java可能并不是最佳选择。人们说这很简单的原因就是很难。与C++相比,Java游戏开发的支持/教程相当缺乏(GameDev.net是很好的资源,但随着时间的推移它的焦点更多地转向专业开发),Flash(体面的教程on Kongregate以及成为一个可以托管为你的游戏),甚至C#(使用XNA)。 Java游戏开发多年来一直在改进,你可以用它做一些令人惊叹的事情,但是最终可能会变得更加困难。无论您选择哪种语言,都必须考虑使用图形/游戏引擎,因为它可以减少您的工作量,并让您有希望创造出更好的游戏。

-1

不要用java applet方法;小程序通常很烦人,而且速度很慢。

如果你真的希望它可以在浏览器中播放,可以考虑使用Flash(actionscript)或silverlight(我对Silverlight中的游戏了解不多)。

Gamedev是一般游戏编程的东西一个巨大的资源

而且......

我无耻地从YX的回答偷链接:

MIT Open Course Ware: Game Theory and Mechanism Design