实体是可以加入你的关卡的外部物体。这有4中实体:模型,精灵,地图和地形。
模型是活动的3D物体,用扩展名"mdl"的文件储存。模型可以用建模软件来创建,如Med,3D Studio Max, Maya, Lightwave, Milkshape等等。一个模型包含很多联合在一起的三角形,一个覆盖在上面的皮肤。无论何时我们需要3D动画物体(玩家,敌人,动物等等),我们都要使用模型。
如果你打算创建一个商业性质的游戏,你应该进行多边形预算。如果每个游戏里的角色都有几千个多边形,就需要很高性能的PC来运行。OK,可能你有个很好的电脑但你的客户呢?他们也有吗?我不这么认为……
这听起来对于3DGS学徒只是临时的,但我们不是生活在“完美”的虚拟世界。如果你打算用你的游戏赚钱你应该小心盘算。同一时间有多少妖怪可见?对于树目我应该用模型还是简单的2D图片?我确实需要那么好的爆炸效果吗?
现在在这个PC上来创建一个测试关卡。这是Pentium 4 2GHz、GeForce4 TI 4200显卡。OK,我建了8个球,每个有10,000个多边形。总共有8万个多边形,帧速率大约30fps。我知道我的潜在的客户有更慢的PC,因此我把预算设为3万多边形。如果你想创建3D策略游戏并且我打算同一时间有50单位的可见物体,它们应该有30,000 / 50 = 600多边形每个,没错吧?
保持模型多边形数目尽量少是个好主意。来看下面的图片:
两个士兵看起来相当不错,但右边的模型比左边的节省了250个多边形。这允许我同一时间放46个模型代替原来放33个!
重要提示:只有屏幕内可见的模型才影响速率。如果你有300个敌人但是玩家同一时间只能看到不超过10个,别担心:引擎会想到只有10个敌人在这,因此速率会保持在较高。
每个人都可以做一个有巨大数量多边形的模型,但一个好的模型设计者可以作出好看的模型而不需要太多的3角形。请记住不只是角色吃掉宝贵的计算机资源:如果你有一个房子,汽车或其他物体,它也会使用额外的资源。好消息是Acknex提供好工具可以优化你的关卡。我们会讨论它们在C-Script keywords。
打开任何模型在Med中,选视图-模型属性,你会看到多边形的数量:
精灵不过就是用画图软件创建的2D图象。它们不是3D物体。来想象一下它们是非常薄的纸片。我们可以用精灵做面板,街道招牌,图画,2D游戏,特效……我们甚至可以用它们伪造3D物体:树,灌木丛,草,等等。
在你喜欢的画图程序中创建一个位图。保存为pcx, bmp或tga文件,拷贝到你的游戏文件夹。你可以添加它到关卡中,就象下面:
任何精灵都可以有透明的部分,就象面板的覆盖标记。你可以用RGB = 000做透明部分。
现在来看这精灵在关卡中看起来如何:
如果玩家不能爬上墙壁,不需要一个罐子的模型,一个简单的精灵就可以看起来相似并且它会使用较少的显存。
精灵可以可以按如下任意一条设置:
1)有方向的精灵,就象挂在墙上的画:
如果我旋转一个有方向的精灵我可以看到那不过就是个2D物体。因此我们知道有方向的精灵可以用来做招牌,油画,墙上的血迹等等。
2)永远面向玩家的精灵。
这是你经常用的精灵种类,用来伪造3D物体来最大化在低档PC上的速度。你可以转动任意次-它总是显示它的正面。
如何创建一个普通的精灵?答案很简单:我们在Wed加入精灵到关卡就好了。我们得到了一个普通的精灵,一个任何时候都面向玩家的广告牌。
如何创建一个有方向的精灵?我们添加一个精灵在Wed并改变它的一个角度。这样我们创建的精灵可以用来做地毯,图画等等,由它的角度决定。右击精灵,选择物体属性,然后设置:
红色椭圆包围的3个角度可以改变。这些(默认的)值90,0,0是普通精灵(不是有方向的!)的水平,倾斜和滚动值。调整任何角度你会转动这个规则的精灵为一个有方向的。你可以设置水平为90.001度,倾斜为0.001度或滚动为55.000。任何值都可以但你要保证你喜欢在Wed中所得到的。
在移动到地图实体前的最后想法:一些旧的3D加速器不能显示精灵如果它们大于 256x256象素。保证你的精灵小于256 x 256,如果你想让你的游戏跑在Voodoo2或Voodoo3显卡上。
一个地图实体是一个严格的3D物体,由Wed创建并保存为.wmb文件。地图实体可以作为关卡可以移动或消失的部分,如可以破坏的墙壁,门,站台,电梯和车辆。这些实体不过是小的编译过的关卡地图,因此它们不能运行时改变大小-使用模型或精灵如果你需要这个特性。你可以在Wed中载入或创建wmp文件来转换任何关卡文件(可以是简单的门)到一个地图实体,组建它们并且拷贝wmp和结果的wmp文件到当前的关卡文件夹。你会找到许多预先定义的门,家具,车辆等等,可以在/prefabs文件夹中组建。
一个地形由一个映射在大的高度矩形栅格上的纹理组成,就象下面这样:
覆盖在地形上的纹理包含路,雪和岩石等等。来丛其他方面看看地形,这次是映射纹理的:
这副图来自Med,地形在游戏中会看起来更好!
你可以用强大的“磁铁”工具在Med中创建地形实体,或者可以导入用其他程序创建的高度图。一个典型的高度图是一个灰色比例图片看起来象下面:
这副图会被转换成一个地形实体在Med中。白色地区有较高的海拔,黑色较低。
地形实体用.hmp文件储存。它们在标准的引擎版本是不可用的。尽管如此,你可以创建像样的地形用Wed和关卡块。一些大公司继续用关卡块创建地形因为它们看起来不错并且使用较少的内存。
这有个例子是使用关卡块的地形:
你可以在Wed的帮助文件中找到各种实体种类的详细描述。实体可以用这些方法的一种创建:
-用Wed把它们放到关卡中。就象下面:
-用ent_create函数来在关卡中实时创建,就象下面:
ent_create (drone_mdl, temp, start_drone); // create a drone
-在脚本中写下“实体”定义:
entity rocket_ent
{
type = <launcher.mdl>;
layer = 10;
view = camera;
x = 20;
y = -10;
z = -10;
}
我们不讨论代码但我希望你你看到它看起来怎么样-用实体来工作不是很复杂-如果你用Acknex引擎。
当你添加实体到关卡中为什么用Wed?可能因为你想用可见的子弹,或者当子弹打到墙壁时一大堆粒子。如果你打算用多种枪发射100发子弹,那么把它们放到关卡中是不明智的。你最好ent_create它们当你需要的时候。
实体用“实体”定义创建应该用于玩家的枪,手等等因为它们有特殊的属性:它们对于玩家是可见的但它们在3D世界中不真正存在。这些实体可以是3D模型但它们不会碰到任何关卡中的东西,因此你可以确定它们永远不会刺入墙壁,这对我们是个优势。
现在进入尾声了,但我希望给你些新的表格,阅读它们你每次会选择正确的实体种类。