如何实现可以面向任何方向的预渲染2D精灵?


28

我一直在谷歌搜索《部落冲突》之类的游戏如何渲染他们的部队,而且看来他们在运行时将3D模型预先渲染到2D精灵表中,并在运行时渲染那些2D图像。但是,部落冲突中的部队可以面对任何方向。

在我的类似游戏中,如果我要在动画的每一帧为每种部队类型(有18种类型)的每个方向(0-360度)创建图像,则他们将不得不生成大量图像。我无法想象这是其他开发人员正在做的事情,那么我如何才能真正做到这一点?


2
顺便说一句,您所指的技术称为“广告牌”。
Weckar E.

Answers:


45
  1. 通常,少于360个方向。常见的情况是8或16。动画也很短。

  2. 自动化是您的朋友。编写Blender / 3DMax / etc脚本以从列表中加载模型,并在每个所需的帧和方向将其渲染到图像。根据内容标记图像并在游戏中寻址它们。

  3. 将所有内容打包到纹理地图集(又名Sprite表格)中,以加快访问速度。

最后,您将获得数以千计的精灵,它们被整齐地包装在几十个地图集中。没什么大不了;)

我找不到来自CoC的图像,但这是暗黑破坏神II,它对角色动画使用了相同的方法。例如,亚马逊近战攻击:

在此处输入图片说明


4
渲染能力/时间与存储空间和下载时间之间的平衡。
M. Mimpen'17

3
什么是“地图集”?有任何联系吗?
BЈовић

7
@BЈовић查找“纹理图集”。这是非常普遍的概念。
克罗姆斯特说支持莫妮卡

2
可能值得注意的是,在Blizzard North的开发人员对这种技术的讨论中,他们基本上得出的结论是,处理PC图形功能的尴尬时刻是一种怪异的权宜之计,即使如此,它也并没有真正最终值得。对此进行了一次采访,最后花了很多时间重新渲染所有内容,总的结论是这不是一个好方法(他们的下一款游戏肯定是3D的)。
KRyan

1
@KRyan好加成!我猜这是由于D2中NPC和装备的数量庞大所致。对于CoC和移动平台而言,两者之间的平衡有所不同。
克罗姆斯特说,支持莫妮卡

8

还请记住这些图像的分辨率较低。您还可以做一些其他事情来节省空间,尽管我不知道《部落冲突》使用的是哪些:

  • 您可以使部队的定位偏向于面向标准方向(N,E,S,W,NE,SE,SW,NW),然后最多进行调整,然后仅针对标准方向进行优化。

  • 您可以采用组合方法,仅预先渲染一些指示。在帧期间,您可以渲染与现有图像不匹配的部队,或者如果时间用完,则使用最近的图像。

  • 尽可能使用左右对称性将存储的帧数减少一半。

  • 您可以确定某些动画的优先级,例如行走和休息,并为此存储更多的方向和帧。然后将其他动画(例如,剑的挥杆)的优先级降低,在其中存储较少的方向和帧(我建议在挥杆的第一帧和最后一帧中保留更多的方向)。

  • 您可以使用最接近的图像然后拉伸它来伪造其余方向。

总体而言,我们可能谈论的是18个单位(最多8个方向),可能是每秒20帧,平均64x64像素和每像素2个字节的2秒动画。那是18x2x20x64x64x2 = 50 MB。他们还可以根据设备的功能和地图上使用的单位数来缩放方向,分辨率和帧数。


2
如果放大到某个对象,也可以从广告牌切换到3d模型-因此它是3d附近,然后在背景中有很多东西时使用更快的2d。但是,平稳地处理过渡可能很棘手。
Tim B

@TimB这特别好,因为您最终会渲染高分辨率,而将图像用于低分辨率。
彼得

2

除了@Kromster答案之外,请注意,图像通常会被显着压缩,而在大型“图集”图像中,其中包含许多重复元素(例如,空白背景),则压缩效果非常显着。因此,图像的最终“大小”不只是单个图像大小的直接乘积。


5
GPU的压缩与jpeg的压缩不同,尤其是在编写《部落冲突》的设备中使用移动GPU。en.wikipedia.org/wiki/S3_Texture_Compression换句话说:空白背景100%与纹理压缩无关。
彼得

-2

对于经典示例,建议您下载原始的《毁灭战士》,它在伪3D环境中使用了2D精灵。精灵具有8个朝向的方向(相对于玩家的视角),并且随着距离的增加,内存中大约有8种不同的大小。这是非常明显的,但是对于游戏来说已经可以接受了。当然,在Clash或其他等距视图游戏中,无需考虑距离。


没有大小不同。渲染只是根据需要天真地放大/缩小了最近邻居。
R.,

@R ..感谢您的指正。自从我玩了已经有几年了!:)
Graham

1
抱歉,但这根本不能回答“我如何实现..”问题。
克罗姆斯特表示支持莫妮卡(Monica),2017年

@Kromster因此,对于一个问“我该如何实现?”的问题,我并没有快速概述实现它的经典游戏(以8个角度而不是360个角度)来回答这个问题,而是提到他们是如何做到的。播放时很容易看到,因为OP显然无法在Clash中分辨出来?还注意到等轴测图的一般情况与特定情况之间的区别吗?我会自由地承认它的回答不如您的回答好,但是低质量的回答与不回答问题之间是有区别的。
Graham
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.