在3D游戏中飞行?

8
我想知道为什么很少有3D游戏有机制允许玩家在地图上飞行,并在喜欢的时候降落。在3D游戏中实现这个功能很难吗,还是在技术上不可行?

“在3D游戏中编程飞行有多可行?”这与编程有关,怎么可能不是呢? - hasen
不,我只是看不到它。我认为你的问题可能写得不好,而且它似乎有点主观,我真的看不出它与3D游戏编程有什么特定关系。 - 1800 INFORMATION
如果我询问如何构建某个功能以及是否可行,那么这涉及编程。 - Ali
从游戏程序员的角度出发,考虑实现某项功能的技术影响。 - Ali
@点击点赞:你的背景可能与Java有关,但这个问题并不特定于Java。 - Joachim Sauer
显示剩余4条评论
13个回答

7
当然,这取决于你想要多接近真实飞行的程度,技术上并没有限制飞行。游戏设计师可能出于游戏性的考虑,选择限制玩家在地图上的移动。
许多团队/战术类游戏(射击游戏)依赖于玩家在地面战斗中的互动,如果玩家可以自由飞行,则游戏将大不相同。
进一步思考,从技术角度来看,也许有反对飞行的理由,因为更高的视角和更快的整体移动速度可能会对渲染子系统产生更高的需求。例如,考虑景观渲染,如果你知道视角总是保持在地表附近,那么你可以进行优化,但如果你可以飞到数百米高处,则无法进行该优化。

从任何距离渲染风景都相当容易,因为大型风景通常需要一些基于距离的LOD。城市景观要困难得多,因为遮挡几何体经常用于剔除不可见对象。从天空中看需要建筑物也有LOD。 - TrayMan
当然,团队游戏可以通过它得到改进 - 如果你与你的团队分开,并且不知道敌人可能从哪个方向来... - Peter Boughton
这更可能是一种懒惰的游戏/关卡设计问题(甚至只是没有考虑到这个想法),而不是某种具体的游戏玩法决策。 - Peter Boughton
在网络游戏中,游戏服务器是否会将数据发送到仅限于玩家区域的客户端?这对于大型多人在线角色扮演游戏来说是必须的,但我不确定第一人称射击游戏是否也采用了这种方式。高海拔和速度会有效地增加服务器需要发送的相关信息的半径。 - Spencer Ruport

7
我怀疑从技术角度来看,这不是一件难事,然而使用短距离绘制物体的游戏可能看起来很糟糕,因为只有玩家周围的即时区域被绘制了出来。
我猜这样做的原因之一是,如果玩家可以从任何地方开始并走到任何地方,那么从游戏玩法的角度来看,这会使关卡设计变得更加困难。

7

有两个原因:

  • 对于大多数游戏来说,游戏的难度(和乐趣)的重要部分取决于你必须克服某些障碍才能从起点到达关卡的出口。如果你可以飞行,游戏将变得更容易/更无聊,并且设计这种情况下的关卡将是毫无意义的。
  • 大多数3D游戏都集中在使景观详细和漂亮上,这需要很多工作。因此,为了赶上发布日期,3D艺术家会省略玩家无法从关卡内看到的一切。如果您黑客入侵“飞行模式”,您将突然发现山丘没有背面,远处的山脉是悬浮在空气中的平面,而海洋有一个明显的重复纹理。要使景观近距离和远距离看起来都漂亮将需要更多的工作(和推迟发布日期)。

2
这是一个程序员的网站,以下是开发者的角度回答:
Position TeleportHere = {10, 10};

Player.Position = TeleportHere;

将额外的动画加入只为从点A到点B没有意义。

从游戏玩家的角度来看,这取决于游戏设计师。如果他们想要飞行,就可以做到,并且程序员会编写相关机制(当然还需要动画效果)。


好的。我理解为什么会有人给我负面评价,但是冒犯了吗?提问者问这是否可行,我回答了为什么开发人员不会这样做。我还回答说游戏设计师可以要求开发人员实现飞行机制。如果有人觉得这很冒犯,请给我反馈,以便我进行编辑。 - MrValdez
1
@MrValdez:也许有人已经在{10, 10}的位置了,你没有先检查位置是否为空就传送过去了,可能会冒犯到他们。=) - Sergio Acosta
我认为有些人滥用“冒犯”并将其作为“删除答案”的投票。 - hasen

1
在《国王的赏金:传说》中,你将从一个地方飞到另一个地方,这样你就可以看看它会是什么样子。问题在于,你的机器必须呈现更多的信息和更长的视线,才能使体验变得流畅。
在基于地面的景象中,你就像在一个舞台和一张背景图片中,这个背景图片的尺寸与你想让观众看到的尺寸相匹配,并通过绘画技巧获得透视效果。但如果你从错误的方向观看这些平面图片,视野就会被破坏。
因此,你不能使用图片作为背景,也必须呈现这些事物。(参见街头画家朱利安·比弗的图片)

1
制作一个好看的3D环境即使在今天的计算资源下也不是一件容易的事情。总会有一些微调,这些微调基于“没有人会注意到”的想法。
例如,杜克·尼科姆3D的3D引擎本质上是2D的。由于垂直透视没有正确实现(垂直边缘始终平行于显示器的侧边缘),因此无法直视向上或向下。除非你设法隐藏它们内部重叠的事实,否则不可能创建房间在房间之上。
更近期的例子是《魔兽世界》。在引入飞行坐骑后,它们起初不能在旧的“大陆”中使用,因为有太多的黑客来产生一个巨大世界的幻觉,一旦有人飞出预定路径,这个幻觉就会破裂。从上面看到暴风城“躺在那里”是不可能的,因为当不从地面看时,它将成为精灵和扭曲网格的混乱。就像西方城市的模型,只有正面真正存在。

如果你想让玩家自由飞行,那么这些技巧就不可能实现。你必须把一切都做完整。这意味着世界的设计师和建筑师要付出双倍的努力。我想你可以想象,在期限驱动的开发中,游戏公司非常渴望尽可能缩短时间。


1

在游戏世界中,建筑物通常只有一个或两个外墙被定义。这是因为在正常的游戏条件下,不可能看到建筑物的其他侧面。通过不定义多边形,优点如下:

  1. 对于艺术家来说,工作量减少,开发时间缩短;
  2. 对于渲染引擎来说,最佳优化是什么都不做,因此处理零多边形比剔除多边形要快得多;
  3. 您可以将这些节省下来的多边形用于玩家会看到的其他地方。您可以绘制的多边形数量是有限的。

我想这就像问为什么游戏中有不能打开的门?为什么不在游戏世界中建模每个建筑物的每个房间?这适用于赛车游戏吗?


1
以《魔兽世界》为例,作为一款有飞行功能但并非全地图通用的游戏:
  1. 在游戏原始区域(即玩家飞行引入之前建造的区域)中,你不能随意飞行,因为这些区域并不是为了让玩家飞行而设计的,除了交通系统提供的预设路线外,设计师们自己也指出了景观使用了其他地方提到的一些技巧(2D广告牌等)。

  2. 在第一个扩展包中,德鲁伊需要达到68级,其他职业需要达到70级才能飞行;在最新的扩展包中,需要达到77级。这是一个有意的选择,以确保玩家不会“跳过大量内容的区域”。


0
没有技术上的原因,但游戏编写者往往集中精力于实际游戏所需的功能。有些游戏会添加额外的功能,比如彩蛋,但它们的发行商可能更喜欢尽早发布游戏,而不冒险引入额外的错误。

0

ESF是半条命中的DBZ模组,实现了飞行角色(如DBZ角色一样飞行!)

youtube剪辑

这个模组是由一群爱好者制作的,受任何公司支持(据我所知),并且它在Half-Life 1引擎上运行(按今天的标准相当老),

因此肯定没有技术困难。


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