如何学习游戏开发?

我已经做了一段时间的网络程序员,我也可以用Java编程。 我想要一个我想要的小型多人RPG游戏。 它将通过用户Web浏览器中的java applet播放。

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

这些是我想到的具体问题:

1)如何在下载游戏的图像,声音等时使用进度条显示“加载…”消息。 (使用java applet)

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

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

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

  1. 最简单的方法是将所有内容打包到Jar文件中。 默认屏幕确实显示了一个具有一些小的自定义function的进度条。 您可以编写自定义代码来跟踪,管理和下载文件,但我个人会建议不要使用此路由。 如果您搜索applet加载器,您将找到更多信息。

  2. 我不是100%确定你的意思,但你可以像在应用程序中使用它们一样使用Swing组件 。 使用带有图像的JButton非常简单,然后在actionPerformed方法中挂钩事件代码。

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

这个页面有很多有用的游戏开发链接。 Pulp core是一个值得检查的开源框架 – 即使你不使用框架,你也可以调查代码。

你是否应该使用Java applet似乎超出了这个问题的范围,但是上面的很多答案都给出了关于是否使用Java applet的客观(或根本没有理由)。 如果这是一个学习Java的个人练习游戏,那么这是一个很好的方法。 如果您希望将其公之于众,您需要考虑当前的采用水平是否足以满足您的需求。

最近applet世界的情况发生了变化。 从1.6更新10开始,它与Flash相比更具竞争力 – 下载量更小(通常低于4Mb),启动时间减少, 并引入了新的缩放外观 。

如果这是你的第一款游戏,多人游戏项目可能过于雄心勃勃。

加载屏幕并不是非常困难 – 我通过计算我必须加载的文件数来实现它们,然后每次成功加载另一个文件时推进进度条(并进行屏幕刷新)。 您可以使用尽可能多的粒度来执行此操作 – 这可能会使您的加载代码复杂化以添加UI组件。 我现在不担心; 也许只是抛出一个基本的“正在加载……”框架,然后在游戏更加稳固时实现一个完整的进度条。 我也看到了一些很好的multithreading实现。

另外两个将有经验; 我认为你需要的更多是游戏开发的一般教程,而不是具体的答案。 你一定要从小做起。 一旦你理解了较小游戏的结构和问题,就可以更容易地将它们应用到更大的游戏中。

最合理的游戏编程书籍将超越基本的游戏结构; 我喜欢Game Coding Complete,但对初学者来说这很复杂(它涵盖了更复杂的方法来处理大型项目)。 游戏架构和设计类似,但可能更适合您正在寻找的内容,因为它还涵盖了一些小型项目管理“最佳实践”。

有很多不同的方法来做UI,从使用Java原始UI类型(取决于你正在使用的其他库)到自己编写自己的“HUD”实现,只需要你需要的东西。

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

类似地,通过调度多个线程同时执行多个操作(在屏幕上移动不同的字符)或通过用户输入处理中断,可以实现大部分交互。

我会看看O’Reilly Books

Java中的杀手游戏编程

编码为乐趣

http://nehe.gamedev.net/

从使用各种语言和系统的OpenGL,从C到C#,从Python到Java,有大量从基础到高级的教程。

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

祝你好运!

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

如果您根本没有游戏设计经验,那么您可以通过多人游戏RPG设置高标准。 您可能希望从一个更简单的项目开始,例如重新创建类似俄罗斯方块,pacman甚至乒乓球的东西,这样您就可以了解创建游戏的所有内容。

如果你打算做一个在线游戏,Flash很棒,Java加上Jogl open-gl包装器也是一个不错的选择。

我个人建议使用Microsoft Xna。 C#与Java相似,你应该能够很快地把它拿起来,而Xna很好地抽象出了图形编程中涉及的一些低级细节。 社区也非常积极和乐于助人。

不要去java applet路线。

如果你想制作一款快速休闲游戏,请将其制作成Flash; 否则,开发一个完整的Java应用程序并通过java web start运行它。

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

至于进度条的东西,我建议你实现这些文件的加载并实际使用它们,然后再去进度棒吧:)

回答问题3.如果你真的热衷于开始开发游戏,我建议你阅读Jeff Howland的这篇短文 。

Q1 = 1%的时间。

Q2 = 40%的时间。

Q3 = 59%的时间。

您也可以问我如何为Web浏览器编写Halo3。

瞄准一点点开始….

游戏理论与设计的开放课程。 它还附有阅读清单 。

由于我无法添加评论,我将添加一个答案。 我建议不要使用线程来移动字符等。对于文件加载,播放声音,甚至是服务器端网络,它可以很好地工作,但任何类型的AI /图形,它往往会导致无休止的头痛。

此外,正如其他人所提到的,Java可能不是最佳选择。 人们说这很简单的原因是它很难。 与C ++相比,Java游戏开发的支持/教程数量相当缺乏( GameDev.net是一个很好的资源,但随着时间的推移,它更多地转向专业开发),Flash( Kongregate上的体面教程以及作为一个点可以为你主持游戏),甚至是C#(使用XNA)。 Java游戏开发多年来已经有所改进,你可以用它做一些令人惊奇的事情,但最终可能会更难以走这条路。 无论你选择哪种语言,一定要考虑使用图形/游戏引擎,因为它会减少你的工作量,让你有希望创造一个更好的游戏。

如果您正在寻找一个温和的游戏开发途径,并且不介意学习C#, XNA有一个围绕学习如何编写游戏的整个社区。 它有各种各样的样本 – 游戏状态管理示例显示了实现屏幕转换和加载的好方法,并且有类似的网络游戏状态管理示例用于网络内容。 他们还提供整个游戏作为源代码下载。

无论您的长期目标是制作Java小程序,Flash游戏,还是希望使用OpenGL在C / C ++中工作,XNA都是忽略渲染/声音/等所有毛茸茸实现细节的好方法。 当你想要制作第一款游戏时,这非常有用,相信我。

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

如果你真的希望它可以在浏览器中播放,可以考虑使用Flash(actionscript),或者也许是silverlight(我对Silverlight中的游戏知之甚少)。

Gamedev是一般游戏编程的绝佳资源

而……

我会无耻地从yx的答案中窃取链接:

麻省理工学院开放课程:博弈论与机制设计