3

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

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

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

1) 如何在下载游戏的图像、声音等时显示带有进度条的“正在加载...”消息。(使用 java 小程序)

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

3) 以及我应该了解的其他一般游戏开发问题,例如我应该使用 2D 还是 3D 图形、游戏中的物理等。

如果有对我有帮助的书的好建议,请分享。

4

13 回答 13

3

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

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

另外两个将有经验;我认为您需要的更多是游戏开发的通用教程,而不是具体的答案。你绝对应该从小处着手。一旦你了解了小型游戏的结构和问题,就更容易将其应用到大型游戏中。

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

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

于 2009-05-22T18:26:34.713 回答
2

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

类似地,通过调度多个线程同时做很多事情(在屏幕上移动不同的字符)或处理用户输入的中断,会发生很多交互。

于 2009-05-22T18:14:48.697 回答
2

我会看 O'Reilly Books

Java 中的杀手游戏编程

有趣的编码

于 2009-05-22T18:19:12.747 回答
1

不要走java小程序路线。

如果你想做一个快速的休闲游戏,那就做成Flash;否则,开发一个成熟的 java 应用程序并通过 java web start 运行它。

试试Tower,看看使用 java 作为平台可以走多远,以及 Java Web Start 是如何工作的。

至于进度条,我建议您在使用进度条之前实现这些文件的加载并实际使用它们:)

于 2009-05-22T18:04:10.400 回答
1

http://nehe.gamedev.net/

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

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

祝你好运!

于 2009-05-22T18:04:29.243 回答
1

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

如果您根本没有游戏设计经验,那么您在多人 RPG 游戏中设定的标准非常高。您可能想从一个更简单的项目开始,例如重新创建俄罗斯方块、吃豆人,甚至是乒乓球,这样您就可以了解创建游戏的所有内容。

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

我个人建议使用 Microsoft Xna。C# 与 Java 非常相似,因此您应该能够相当快地掌握它,并且 Xna 在抽象出图形编程中涉及的一些较低级别的细节方面做得很好。社区也非常活跃和乐于助人。

于 2009-05-22T18:14:08.043 回答
1

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

于 2009-05-23T08:11:25.720 回答
1
  1. 最简单的方法是将所有内容打包到一个 Jar 文件中。默认屏幕确实显示了一个具有一些小的自定义能力的进度条。您可以编写自定义代码来跟踪、管理和下载文件,但我个人建议不要使用这种方法。如果您搜索小程序加载程序,您会发现更多信息。

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

  3. 您可能会遇到的最大问题是动画和EDT。我早些时候问过这个问题

这个页面有一大堆有用的游戏开发链接。Pulp core是一个值得一试的开源框架——即使您不使用该框架,您也可以研究代码。

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

Things have changed in the applet world recently. Since 1.6 update 10 it is much more competitive with Flash - the download size is smaller (at typically under 4Mb), the startup time is reduced and a new scaling look and feel was introduced.

于 2009-05-23T09:31:02.987 回答
0

Q1 = 1% 的时间。

Q2 = 40% 的时间。

Q3 = 59% 的时间。

您可能会问我如何为 Web 浏览器编写 Halo3。

目标稍微低一点开始......

于 2009-05-22T18:02:31.790 回答
0

博弈论与设计的开放课件课程。它还附带一个阅读清单

于 2009-05-22T18:04:31.863 回答
0

由于我无法添加评论,因此我将添加答案。我建议不要使用线程来移动角色等。对于文件加载、播放声音,甚至服务器端网络,它运行良好,但任何类型的 AI/图形,它往往会导致无休止的头痛。

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

于 2009-05-22T19:18:06.307 回答
-1

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

无论您的长期目标是制作 Java 小程序、Flash 游戏,还是想使用带有 OpenGL 的 C/C++ 工作,XNA 都是忽略渲染/声音/等所有繁琐实现细节的好方法。当你只是想制作你的第一场比赛时,这非常有帮助,相信我。

于 2009-05-22T18:35:58.740 回答
-1

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

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

Gamedev是一个很好的通用游戏编程资源

和 ...

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

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

于 2009-05-22T19:26:10.580 回答