|
|
Frame Rate : The better way to make things faster |
|
|
|
All of you, and dont deny it, complain "Why doesn't the GCS run as fast as Quake does?"
The truth : BSP
Binary Space Partitioning is what it stands for. It is the core of Quake games or Unreal Games that make them so fast.
So, what does the GCS have (or GWEDIT now)?
Oh, there are many. Sooo many in fact, if used right you could exceed frame rates of 60 or even 80 on a standard 300
MHZ system.
Really?! You ask. Yes, really.
Most of you are in a rush to finish a game or level. Mistake #1. Dont do this. Never do this. It will kill your reputation among
you. Level Design is an art. I repeat an art. I remember Ken Simkins creator of House of the Cathalon wrote a big
documentation on Level Design that I kept, and read, and re-read, and re-read, but not only read it, learned from it.
The following things will make your game smooth :
FTC
Sectoring
Dont Draw BackSides
Scaling
MD2 Clip Dist.
Cull Floor Ceilings
Now I will break them apart :
Floor to Ceiling, this attribute if set to a wall tells it to not draw anything behind it. This is really one of the main things that will
totally help you in your quest for speed. The following picture is a demonstration of it :
The areas with the red circle indicate where FTC is implemented. As you can see, when the player is facing the wall, anything
behind that wall by default will be drawn. This wastes alot of CPU cycles and totally slows down the game. It makes it choppy,
but thats what FTC is for. IT makes it so any objects behind the wall its set to will not be drawn from the players point of view.
Dont apply FTC on an object which is small and has other objects behind it which can be seen. It will make them disiappear
from view. Also, dont apply it to windows since they draw everything behind it and it will totally lose the whole point of it.
To apply FTC using the DOS editor : Select the walls which you wish to apply and go to "edit" and then "edit attributes". A
box comes up and has those four "Dangerous red boxes" Ignore the red boxes and look above that. There will be a list of
properties you can apply it to. Select " Set FTC on walls" and voila!
To apply FTC using GWEDIT LITE or GWEDIT : Select the walls which you wish to modify. Right click and go to
properties. If it isn't up, the properties box will appear asking for what you want. In the list of checkboxes, select "FTC" and it
is done.
This attribute sets it so that anything within the sector you are currently in and sector 0 are drawn. Anything out of the sector
isn't. Here is a picture with diffirent colors to represent sectors :
By default, all the floors in your game are set to sector 0. This makes it a "neutral" sector and will always be drawn. Always.
However, you can select certain floors and tell the engine to make it a diffirent sector. Anything in another sector will not be
drawn except sector 0. Thus, the floor either in EFE or GWEDIT will be drawn a diffirent color. BTW : sector 0 is always
drawn gray.
Now as you can see in the picture, the "windy hallway" is drawn gray, thus it is sector 0. The blue sector is sector 1. And the
Green Sector is sector 2.
If the player were to stand in the green sectorm nothing in the blue sector will be drawn because it is in another sector. The only
sector that will be drawn is the green sector and the gray sector (sector 0) See what I mean? If the player were to be in the
blue sector, then only objects in the blue sector and gray sector will be drawn, anything in the blue sector wont be drawn, thus
the engine is now free of calculating objects in the green sector and can process objects in the blue sector alot faster, creating
alot more frames.
Why is sector 0 always drawn? This is necessary in order to "connect" rooms together. Lets give another example :
Youre in the green sector and your looking left. You can see the hallway. The hallway is gray, sector 0. It is always drawn for a
purpose, to make the player see the hallway. If it werent to be drawn, then the player wont see it and it will result in a disiaster.
but the other sectors arent drawn at all.
Always place Sector 0 in rooms or hallways to connect larger rooms. Place sectoring in places that the player cant view when
in sector 1, but can see past sector 0, but around the corner is sector 2. This may seem a bit confusing, but re-read it and youll
understand it.
To apply SECTORING using the DOS editor : Start up EFE and open the "Floor/Ceiling" mode. In the Lower right hand
corner there is a box labeled "Show Sector" Enable it and all the floors should be gray if Sectoring hasn't been previousely
implemented. Now, select the Floors you want to sector and it should have an "X" In the sector box, it should say by default
"0" unless it is already part of another sector other than 0. Now, put in any sector number 1-8 you want it to be and it should
change colors indicating it is another sector.
To apply SECTORING using GWEDIT LITE or GWEDIT : Go to "view","Floor/Ceiling mode" and select it. Now there
should be a box with preperties for floors. In the Lower right hand corner there is a box labeled "Show Sector" Enable it and
all the floors should be gray if Sectoring hasn't been previousely implemented. Now, select the Floors you want to sector and it
should have an "X" In the sector box, it should say by default "0" unless it is already part of another sector other than 0. Now,
put in any sector number 1-8 you want it to be and it should change colors indicating it is another sector.
This is rarely used. Not known. Hidden. The most powerful thing you can use surpirisingly. This feature tells the engine to not
draw objects at a certain distance. This feature should only be used in indoor scenarios. Outdoor will produce bizarre effects
unless that is what your acheiving.
To find out what your Clip Distance should be in an indoor level : Find the longest distance that will be able to view, from one
point to another. Measure it and add 600 cm to it and then use that as your distance :
This picture shows the GameWide options :
To apply Object Clip Dist. using the DOS editor : Start up the EFE editor and go to "Options","Gamewide options" and
there should be a new window. Go to the bottom right of the windpw and there should be a box labelled "Object Clip Dist."
There input the number you want.
To apply Object Clip Dist. using GWEDIT LITE or GWEDIT : Go to "Options","GameWide Options" and a window
should appear as shown above. In the bottom right hand corner there is a box labelled "Object Clip Dist." There is where you
input the desired number.
MD2 CLIP DIST.
MD2's are always drawn. Always, this really bogs down the system a whole bunch. Now, this is the same thing as Object Clip
Dist. but it applies to MD2's. Refer to the directions above. The picture above shows where it is located. Keep this low so that
the MD2's arent always drawn.
The ceilings and floors of the game world is always drawn both sides. This isn't useful for indoor type games. In order to have
the engine not draw the backsides of the floor or ceiling, follow the isntructions for Object Clip Dist. and within the gamewide
options over the Object Clip Dist. there is a checkbox labelled "Cull Floor/Ceiling Backsides" Just check this box and it willl be
applied. This speeds up the level about 5 frames per second but take everthing you can get.
To tell the truth, even the players speed affects the gameplay. Think about it, the faster the player walks (or runs) the quicker
the engine will have to generate the world. IF you slow the player down a bit, then the engine will produce a smoother
gameplay.. Give it a try and youll see what I mean.
With all this, you should be able to produce a smooth game.
The engine will always draw the both sides of a wall. Always. Well, unless the user instructs it not to. What this does is make
the back of a wall not be drawn, therefore speeding up framerate considerably. Apporixiametely you will gain 1 frame rate for
every 2 you do. May seem small but they add up. Here is a picture to see what is
It may be a bit hard to see, but the gray line that extends behind the yellow line reperestents the back of the wall. When you
place down a wall, you should really pay attention to its angle you put it in. You can save alot of Frame Rates by putting the
backs of the wall torward the world which may not be seen by the player at all.
To apply "Dont Draw Backsides" in the DOS Editor : Select the walls which you wish to apply and go to "edit" and then
"edit attributes". A box comes up and has those four "Dangerous red boxes" Ignore the red boxes and look above that. There
will be a list of properties you can apply it to. Select "Dont Draw Backsides" and voila!
To apply "Dont Draw Backsideds" in GWEDIT LITE or GWEDIT : Select the walls which you wish to apply this feature
to and right click, then go to "properties" The property box should come up if it isn't already and there should be alot of
checkboxes to choose from. Select "Dont Draw Backsides" and it is implemented.
|