我应该为我的游戏选择3D吗?如果是,应该走多远并且有哪些好的教程可用?

5
我已经在开发一个Java模拟游戏(以我自己的方式重新制作“医院主题”的游戏)一段时间了。目前为止,我使用方块和圆等2D图形完成了所有工作。我曾在网上搜索Java中如何制作3D图形的教程,找到了Coke and Code,但我不确定这是否是我需要使用的内容。我的想法是要么制作简单的平面3D图形,要么制作真正的3D图形,但后者需要更多的工作和技术难度。我真的很想听听大家对制作3D游戏的想法。以下是我几个月前的进展视频(http://screenjel.ly/bdO7Rj8DVl8)。2D图形非常不起眼。我想继续取得进展,但是如果我最终要制作3D游戏,我不知道是否应该继续在2D中进行开发。
此外,我不知道制作3D图形有多难。理想情况下,我希望实现完全旋转的3D效果。我知道这相当雄心勃勃,但与用圆和方块代替人物和物品相比,我可以接受使用像素块。是否有任何关于Java制作3D图形及其旋转的好的教程?
如果有其他想法或评论,也请分享。
谢谢。

1
+1 给《医院大亨》游戏 :D - sfussenegger
谢谢。这确实是一场很棒的比赛! :) - Relequestual
4个回答

9

走向3D将会使内容创作成本增加7倍。(很抱歉,无法引用该研究,但是NCsoft韩国进行了调查,并报告了7倍的增长)原因在于创造出可行、高效和好看的资产需要多种技能。所以请记住这一点。许多人认为转向3D会神奇地使他们的游戏“看起来更好”。这是一个谬论。只有当资产足够好,才能创建比之前更好的沉浸感。

保持2D给你很多自由。你可以真正创造一种艺术风格,专注于游戏玩法等。一旦进入3D,你将花费大部分时间优化客户端而不是制作更好的游戏。

因此,最终的决定取决于您,我们不能为您做出决定。

如果您决定走向3D,那么您需要决定您的目标是什么。如果只是为了创建游戏,那么您可能需要考虑使用引擎来减少开发。如果你想学习3D图形的基础知识,可以直接使用JOGL或LWJGL来使用OpenGL。

一些要查看的引擎:

  • jMonkeyEngine (我有偏见)。
  • Ardor3D
  • jPCT

祝你好运。


感谢您权衡双方的利弊。我不是很擅长艺术,所以无论是2D还是3D,我可能都不会做任何图形。 我对实际使用游戏引擎知之甚少。这是我的第一个游戏,所以我希望能够学习 :) 对于这个规模的项目来说,jME看起来有点太大了。我计划将3D图形保留在一个z平面上(我想),也就是一次只有一个楼层,因此物品只会有x和y,而z始终为0。 看了一下jPCT,很有趣... - Relequestual

4

使用等轴投影

我认为不需要“真正的3D”来重现《医院大亨》的外观。您只需要为每个方向(如果您想像原始版本一样让用户选择4个视角)和每个对象创建一个图像。简单地将垂直光栅线弯曲45度,并使您的对象看起来是3D的(并在相邻单元格之上绘制自己),以创建一个具有3D外观的效果,而不会向您的代码添加额外的复杂性,例如OpenGL。

我希望我表达清楚了我的观点。否则,请问我:)

好吧,我没有表达清楚 - 就像预期的那样:) 我也不是专家,抱歉。我上面所说的“弯曲”被称为“剪切”(至少在Gimp中是这样)。基本思想是创建一个3D外观,而不实际进行3D操作 - 就像您在纸上画一个3D立方体一样。也许一个(确实相当丑陋的)示例可以帮助:

looks 3D but isn't

这不是3D - 不需要三维空间中的坐标,只需要位图来创建一致的外观。


1
抱歉,我对图形方面了解甚少...您说的“只需将垂直光栅线弯曲45度”是什么意思?我不确定是否完全采用《医院大亨》的外观,因为已经有两个项目在使用原始图形。我希望游戏在图形上有独特之处。 - Relequestual
1
那被称为等距视图。 - Blindy
1
太棒了,终于有一位专家加入了对话 :) 谢谢! - sfussenegger
谢谢提供这个例子。它看起来与原版《主题医院》非常相似。我试图与使用原始图形的其他项目有所区别。我的最初想法是让人物图形只覆盖一个正方形,因此相同,但没有斜坡。感谢您的建议! :) - Relequestual

2

《主题医院》-美好的回忆 :)

如果这是一个学习项目,我肯定会建议从2D开始。你会更快地完成更多工作,并获得一个可用的游戏。在此阶段添加3D只会增加复杂性。

而且,《主题医院》在3D中看起来会很奇怪!


呵呵,是啊,好回忆啊!这是我第一个规模不小的项目,所以我正在学习并已经学到了很多!我只是想在以后有选择地转向3D。可能比我想象的要困难。 - Relequestual
我会建议你先在2D环境下完成所有操作,然后当你想要进入3D时,选择一个更简单的开始方式。也许到那时你可以重新考虑使用Java Hospital... - Skilldrick
是的,我同意。我觉得3D声音听起来不错,但是要在我的第一个项目中引入这么复杂的功能...嗯,谢谢你的建议 :) - Relequestual

1
如果你要做3D,几乎肯定最好使用类似OpenGL(例如通过JOGL)这样的东西。在这种情况下,您基本上描述了您的对象在3D空间中的位置和颜色(例如墙壁的位置和颜色,灯光的位置和颜色等)。然后,您指定当前的“相机”位置。旋转通常是通过为相机指定不同的方向来处理的。
学习OpenGL API并不是微不足道的事情,但很有可能你所关注的是错误的事情——举个例子,完整的3D旋转是相当微不足道的。创建逼真的照明(特别是如果您想包括阴影)需要更多的工作。

嗯,好的,我能理解你的观点。如果是我,我肯定会选择OpenGL。对我来说,光照只是次要问题,虽然有它也不错。 - Relequestual

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