Java 2D游戏编程-新手问题

3

我们是一位程序员和一位设计师组成的团队,想要制作一个中等规模的Java游戏并将其作为应用程序在Web浏览器中玩。我(程序员)有3年的普通开发经验,但我以前没有做过任何游戏编程。

我们假设:

  • 我们将决定游戏的情节、故事情节等等。

  • 我们将创建所需的资源列表(图像),例如玩家图像、怪物图像、城镇、建筑物、树木、物体等(目前不添加任何音乐/声音效果)。

  • 设计师将开始创建这些图像,同时我会完成阅读我购买的一些游戏编程书籍。设计师将创建游戏的第一个城镇/关卡,然后将这些图像传递给我,我将开始编写第一个级别的代码,他将开始下一个级别,经过4-5个级别后我们将发布v.1版本的游戏。

问题1: 这是否是该项目使用的正确方法?

问题2: 设计师应该用什么格式创建这些图像?它们应该是.bmp、.jpeg还是.gif文件?他会将所有这些图像放在一个文件中,还是将每个怪物/对象/建筑物放在自己的文件中?注意:我们目前只使用2D,不进行3D。

问题3: 我看到一些游戏艺术软件,其中会有一个文件用于存储怪物,并在该文件中存在大约3-4个怪物不同方向的图像,我认为这是因为它们是动画的一部分。以下是一个说明:

[怪物向右看] ... [怪物正面] ... [怪物向左看]

它们都在一个文件中。他是否需要以这种方式提供这些动画给我呢?

我想知道的是,他将以哪种格式提供设计好的图像给我,以便我能够轻松地在Java代码中访问/操作它们。

感谢所有回答 :)

7个回答

6

我对每个问题都有一些评论。

问题1:你说你将逐一编写1、2级别的代码。我建议你创建一个可重用的框架,或者从整体上考虑。根据你提供的信息,我认为你要制作某种RPG游戏。有许多东西可以在不同级别之间共享,例如商店、对话系统等。所以要注重可扩展性。

为什么要等设计师提供图片?你可以从自己创建的伪图形文件开始编码。这样你可以与设计师并行工作。以后你可以用设计师提供的真正的图形文件替换伪图形文件。

问题2:JPG不适合像素艺术风格的图像,在大多数2D游戏中经常出现。而GIF只支持256种颜色。对我来说,最好的选择似乎是PNG。

设计师应该始终保留原始艺术品的可编辑格式。未来可能需要更改图形。

问题3:这要看情况。所提到的格式,即将角色动画保存在单个文件中的格式,称为Sprite。如果您的资源采用此精灵格式,则需要通过指定坐标来读取每个子图像,这需要一些工作。但是,精灵有助于使事物井然有序。所有与“僵尸”角色相关的2D图形都保存在一个位置。因此易于维护。

开始使用伪图形进行工作的好建议。但是我在哪里可以找到这样的图形呢?有什么建议吗? - Ali
1
你可以使用简单的程序,如Paint、Photoshop或Paint.NET,按照设计师所需的相同格式自己创建一个。它不必像设计师的那样看起来很酷,但它将使你立即开始编程。 - Gant
而且你可以随时搜索“免费游戏精灵”。这应该会返回许多结果。 - Gant

4
关于图片格式:不要让设计师交付任何jpg格式的东西,因为这样会失去质量。相反,让他发送png格式的文件,并根据需要将其转换为您喜欢的格式。此外,请记得让他发送源文件(例如Photoshop / Illustrator / 3dsMax /等),以防您需要进行微小的更改而无需聘请平面设计师。谁知道他在未来是否还会可用。

谢谢。一个问题。设计师应该给我每个帧一个文件还是每个角色一个文件,其中包含所有动画?哪种方式更好? - Ali
应该使用“精灵表”,将许多相关的精灵放在同一张图像中。 - asleep

3
我建议您在做任何有关工作流程的决定之前,与同事一起查看JavaFX,并查看它是否是最符合您需求的工具包。 http://java.sun.com/javafx/

谢谢。如果我们使用它,设计师需要以什么格式提供图像? - Ali
JavaFX的目的是为您提供许多选择,以便在这方面进行操作-请查看介绍视频。 - jwpfox

1

自从我开始窥探游戏数据以来,[怪物向右看]...[怪物正视前方]...[怪物向左看]的动画分割风格已经存在了很长一段时间,因此我建议沿着这条路走。


1

我正要发表与Wouter相同的评论:使用PNG,这是一种现代格式,高度压缩(与BMP相反),无损(与Jpeg相反),具有完整的颜色和多个透明级别(与Gif相反)。

为什么人们会将几个精灵放在同一张图像中?实际上,对于Java,如果图像是jar的一部分...我不确定。我知道在CSS中很有趣,因为它可以减少要下载的图像数量,从而减少服务器上的访问次数,这是众所周知的Web优化。对于硬盘上的游戏,减少小文件的数量也可能很有趣。
设计师也可以欣赏这一点。至少在精灵使用调色板的时代:你只有一个图像,使用相同的调色板:更容易编辑,并略微减小整体大小(在内存昂贵的时代!)。

我无法回答方法论问题,我从未在团队中制作过游戏...如果它符合您的需求,那么它可能是正确的方法...

duncan指向了JavaFX,我会指向pulpcore,这似乎是一个有前途的库。当然,还有很多其他的库,比如JGame等。


Pulpcore似乎已经消失了,但PlayN或libgdx似乎是它的继承者。 - canadiancreed

1

1

这并没有回答任何问题。但是如果您需要参考游戏开发/模拟引擎学习,可以看一下:

http://www.cs.chalmers.se/idc/ituniv/kurser/08/simul/

这是哥德堡查尔姆斯大学模拟引擎课程的课堂讲义链接。教师曾就职于游戏公司,讲解非常好。请查看我们上课时使用的幻灯片,或许能对你有所帮助。

哦,是的,尽管这是一所瑞典大学,但所有内容都是用英语的! - fmsf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接