一两天内的Java游戏[关闭]


9

我们三个人将要作为学校项目(大学,一年级)用Java编写简单的游戏。游戏必须是面向对象的。我们没有太多时间,上班10-20小时。我们都没有任何游戏开发经验,但是我们所有人都有一定的Java技能。

我们可以准确选择哪种游戏,这就是问题所在。我们应该瞄准多少?由于涉及比赛,所以我们确实想在拥有的时间内创造出最好的比赛。3D游戏不现实吗?我们应该使用任何游戏引擎/库吗?我们应该避免哪种功能?


4
考虑到您没有游戏开发经验,无论时间如何,3D的目标都太高了。; P
共产党鸭子

可悲的是,我认为:P
–Øyvind

乒乓球!桨,球都有自己的物体,加分。球击中桨,将方向乘以-1。如果球超过另一支球队的球拍点,则将球发给另一名球员。还是太容易了?>
惊吓

我认为也许我们应该针对一个更好,更具创意的概念,尽管这个概念很容易开发……
–Øyvind

1
与我们分享您的游戏怎么样?:)
ashes999

Answers:


23

避免使用3D,因为您将需要知道如何制作3D模型或找到好的模型,因此您将需要知道如何加载此类模型(不幸的是,这通常是一项史诗般的任务),以及如何在屏幕上绘制它们(例如OpenGL或DirectX花费很多精力却很少,甚至jMonkeyEngine之类的引擎也需要有关如何利用该引擎的知识,以及基本的3D知识。在屏幕上绘制2D图像并将其四处移动比处理顶点,材质,视图矩阵,变换等要简单得多。我想您明白了。

坚持使用内置的Java库和类:Graphics2D,ImageIO,AWT鼠标和键盘侦听器,Canvas,Java Sound API等。坚持使用这些而不是寻找其他库的好处包括:您已经知道它们(在某种程度上),知道它们已经过良好测试和稳定,并且通常是有意义的,在线文档和资源丰富,并且它们可移植,因此您不必担心会在本机库和其他所有库中安装额外的库。

提前建立一些代码片断库。这些操作包括加载图像,将图像绘制到屏幕上的某个位置,缩放图像和其他效果,播放声音,循环播放背景音乐,边界框碰撞检测,绘制文本。还有一个骨架应用程序,该应用程序打开一个Frame(或Applet),向其中添加Canvas,并且应该重写canvas的paint和repaint方法,并且线程应该循环执行canvas repaint方法(或调用它的计时器)。如果搜寻,您可以学到这些Java 2D game programming。假设您可以使用大学的图书馆,那么您应该掌握许多精通Java的游戏书籍;检查一下它们,然后浏览一下上面提到的代码片段,以及其他我错过的片段。

提前与您的团队练习源代码控制和工作分配。您要使用Subversion,Git,Mercurial还是其他工具?每个人的计算机是否都设置为相同的Java最新版本?创建您的存储库,提交/推送一些文件,确保每个人都已检出该存储库并准备好在您的系统上运行。也许提交一个“ hello world”应用程序,并确保每个人都能拉,修改和提交它;并确保您知道如何处理合并(无论是通过良好的沟通还是结对编程完全避免合并,还是知道如何使用合并工具)。或者,如果您不熟悉源代码管理,请确保找到一个可行的解决方案。无论是在第三人称做艺术或声音时进行配对编程,还是要确保从一开始就将其组织起来,否则您将浪费大量时间。

书签链接指向提供免费媒体的网站。这里的其他问题中已经列出了许多这类站点。像freesound这样的网站当您没有时间从头开始制作有用的媒体时,它是完美的选择。当然,请为此站点添加书签,这样您就可以提出问题,以防卡在某个东西上。将诸如gamedev.net论坛之类的论坛添加为书签,以便您可以搜索它们的答案。如果您选择使用第三方库,请在其网站上添加书签。将这些书签组织到文件夹中并尽可能多地抓取它们,并确保共享它们,以便你们三个人都拥有相同的有用的书签库。它并不需要花费很多时间来收集这些书签并按类型/主题组织它们,但是当您不必记住项目中间的所有这些网站时,它可以节省大量时间。

有关更多建议,请参阅我的问题“如何为游戏开发竞赛做准备?”的答案


要解决您的其余问题...一般建议是:不要把目标定得很高。但是,取决于您的准备程度(即,我上面的建议)和您的Java技能,其差异可能很大。这很大程度上是根据您的历史做出的个人判断,但是由于你们中没有一个人有过制作游戏的历史(因此无法判断所需的时间),因此瞄准目标确实很低。提出一个可以在2D中轻松实现的基本概念,而无需任何高级概念(例如,避免像素碰撞,疯狂的物理计算,粒子效果等)。但是然后创建一个优先列表尽可能详细地了解游戏的功能(例如,将每个功能分解为尽可能多的单独任务)。这样,您就可以尽可能地从列表中向下移动,并且如果您不执行某些低优先级的任务,那么这也不是什么大问题。这必须仔细完成(您仍然需要在最后使用功能性游戏,因此需要完成的任务最少,有些任务依赖于其他任务),但总的来说,我认为这是不知道需要多长时间的最佳方法。


那是极好的建议。
亚历山大·盖斯勒

1
好点。尽管我认为源代码控制也会使初学者变得更加复杂(想像有人弄乱了仓库)。当时间很紧迫时,不应该开始使用新工具。但是,如果您已经熟悉VCS,则一定要使用它。
bummzack 2011年

4
Ricket的建议是降低目标和使用优先级列表,这是很棒的建议–它们是关于最大程度地降低风险和增加迭代次数。您要避免在运行任何东西之前必须工作8个小时的情况。如果它无法解决问题,或者花费的时间超过您可能会一无所获。取而代之的是尝试在不到1小时的时间内运行游戏,然后花10个小时的剩余时间添加内容,进行测试和完善。在玩游戏时,您会不断发现更多要添加的内容。
阿米普2011年

@bummzack同意!它可以真正解决问题,因此实践和确定它是关键,但如果使用得当,它也可以非常出色和有用。
Ricket

如何使事情快速运行的最好的办法是以极端的编程方式(比svns更好)来完成它,这意味着整个团队都坐在一台计算机前。在小型团队中效果很好(最多2-3个)。彼此支持,问题得以更快解决-您不会感到沮丧。
Notabene 2011年

2

瞄准不要太高。选择您感兴趣的东西,并以此为基础构建简单的东西。示例:也许您真的对学习物理引擎感兴趣。为什么不建立像图腾驱逐舰之类的物理难题呢?尝试围绕核心元素旋转,不要包含其他复杂的内容,例如AI,复杂的渲染/图形/着色器等。

专注于一个方面,并设法找到一个游戏机械师适合所。如果您对3D感兴趣,则您的游戏可能像井字游戏一样简单,但要专注于在屏幕上获得优质的3D图形。

不要尝试一次学习太多的新知识。尽可能利用现有的框架/工具。

为了解决这个问题,这里有一些关于“入门”游戏的想法:什么是“赚钱”的好游戏?

更新:由于您的时间确实很短,因此我将“学习的新东西”减少到绝对最低限度。如果您以前从未使用过物理引擎,那可能已经过头了。还要选择一个您已经知道的游戏机制,最好使用定义明确的小规则集和有限数量的游戏状态。


2

如果您没有编写3D游戏的经验,我会立即放弃3D创意。相反,应将重点放在一个简单的游戏概念上,并尝试使用简单的2D图形来实现它。确保你实现游戏机制第一次 -如果你早完了,你仍然可以添加复杂的视觉效果。

但是没有游戏玩法的游戏不是游戏,而没有令人惊叹的图形的游戏仍然很有趣。

20-30个工作小时对于一个好的游戏来说是很少的时间,因此您确实需要仔细计划和确定任务的优先级,否则您将永远无法获得适当的结果。


的确是个好点子:)
–Øyvind
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.