We have a number of modelers, builders,
and world owners out there, and the constant problem all
of them end up facing is, "How can I reduce lag and
download times in my world? Not to mention, how did I
ever run out of space on my object path!!!" I don't
think I've ever seen a really good list of tips, tricks,
and guides listed in full all in one spot and yet it's
something that comes up so often in so many ways. While
this will not be a complete list, it will be a good start.
1. Textures. Believe it or not, this
more than anything seems to be the biggest offender I've
seen for long download times, as well as eating up valuable
object path space. Most of us get our textures from off
the wonderful world wide web and there's no doubt that
some of them are awesome. Unfortunately, most are never
optimized for use in AW. Having textures that are huge,
whether in file size or pixel size, will create a number
of issues.
This article https://www.activeworlds.com/newsletter/0102/010206.html
is one of the best I've ever seen detailing the ins and
outs of efficient textures. Following those guidelines
will reduce download time, sometimes in half, and will
also open up a huge chunk of space on your object path.
I cannot stress enough how important this first tip is.
2. Polygon count. I think this one is something
that most people are unaware of. For those who are not
modelers, polygon count is the number of faces an object
is made up of. This can be in triangles or quads, but
they play an important part in how much lag will be in
your world .I quote this next part from an internet game
source: "This is especially true when you have to
carefully limit the total number of polygons in a mesh,
as you do in a real-time 3D game. Probably the most essential
skill to building 3D models in polygons is learning to
make the most of the available polygon budget and to optimize
the appearance of low-poly surfaces to make the most of
what you’ve got." Hmm, in English perhaps?
Essentially, for real-time 3D environments (AW is one
of these), it is best to make objects as low-polygon as
you can, making up for what you lose in smooth definition
with well-done textures.
Why? Because in a real-time environment, it has to render
all those faces and detect collision on them on the fly,
as well as what textures they have and if they are masked.
The more polygons it has to do this on, the harder it
has to work to render something, slowing down the framerate.
Something that is high-polygonal may look really great,
but in a 3D environment, it can bring things to a standstill.
Most high-polygonal models are made for artists intent
on making detailed, photo-realistic pictures...they were
not designed for 3D environments. An occasional hi-poly
object, say something that is 1000 polygons, is okay.
But if you have numerous items that have an extreme polycount,
not only will your download time be long, many people
will only be able to crawl in your world.
For you modelers out there, this was an article that was
posted in the past on what to consider when making objects:
https://www.activeworlds.com/newsletter/0801/08013.html
I'd like to add something to number 4 in that article
that has been a
valuable trick to me in helping to reduce polygon count.
Take into account, when making an object, some faces will
not be seen by anyone, because they are inside something
else on the object.
We'll use this chair as an example. Note it has 78 faces
(polygons). By either deleting the hidden faces (marked
in bright green), or painting a texture named delete on
those faces so we can identify which ones to take out
in the .rwx later, we can eliminate 8 polygons on that
chair. Doesn't seem like much, does it. But let's now
say you use 10 of those chairs in a room in your world.
You just saved the AW engine from having to render 80
unnecessary polygons. And if you do this on every object
you make, there is no telling how many polygons you'll
save on.
Now, another trick I'd like to share: Know that globe
in the Gate? It is a lot rounder, less jagged, then we
had in the past. How did we get away with having something
hi-poly like that without lagging everyone that's in there?
We made use of a command in the .rwx file called Collision
Off. This is why no one is able to stand on it, because
we took the collision
detection off it. But by doing this, it allows the browser
to basically ignore all those polygons because it doesn't
have to check collision on all of them. If you wish to
have a few hi-polygon objects in your world and basically
want to cheat the browser into thinking it isn't there,
this is a great way. It will lower lag greatly, while
allowing you to have a few
beautiful sculptures or objects. I might also add, if
collision is something you'd like for the object, why
not encase it in an invisible cube or low-poly globe.
a lot easier on the browser to check collision on a cube
with 6 polygons then it is a 5,000 polygon object. Here's
an example of where to place the command in the .rwx.
Most times it will be placed near the end.
Triangle 2 5 4
Triangle 3 2 1
ProtoEnd # sphere_0_0
ClumpBegin
Collision Off
Rotate 0 1 0 180
Rotate 1 0 0 -90
Scale .1 .1 .1
ProtoInstance sphere_0_0
ClumpEnd
ModelEnd
3. Lighting. There has been endless debate
on how many lights AW can render at one time. Regardless
of how many it CAN handle, the more important issue should
be how many would be reasonable to put in one area. The
more you add, the more processing power is eaten up on
your computer. Quoted from the help pages for the light
command: "Note that light sources require additional
CPU time to render and thus should be used sparingly.
Each new light source added to a scene will reduce the
frame rate by a small amount. Excessive use of extra lights
can severely impact the performance of an area or world.
Some graphics cards or drivers may limit the number of
light sources which will render at the same time on a
given computer system." Lights, especially those
with large radii or brightnesses can cause quite a hit.
Moderation, and tricking the eye, is the key. Instead
of putting a light source on every lamppost or light,
try putting it on every other one, or even better, use
one that is centered in the middle of the group on an
invisible object. This will give the impression that the
lampposts are lighting the area, while you save on processing
power by using only one or two lights.
This article is great for modelers who would like to learn
some tricks to lighting objects WITHOUT using any in-world
light sources. It can have a profound impact on your objects
in the dark, and it's not limited to just white light.
Experiment with various prelighting colors. https://www.activeworlds.com/newsletter/1201/1206.html
Below is an example of using the Prelight command.
ModelBegin
ProtoBegin sphere_0_0
TextureModes Lit
OpacityFix off
Transform 15.546917 0. 0. 0. 0. 15.531262 0. 0. 0. 0.
15.5 0. 0. 0. 23.9 1.
Vertex 0. 0. 1. UV 0.014286 0. Prelight 0. 0. 0. # 1
Vertex 0.088199 0.016006 0.995974 UV 0.028571 0.028571
Prelight .02 .02 .02 # 2
Vertex 0.089639 0. 0.995974 UV 0. 0.028571 # 3
Vertex 0. 0. 1. UV 0.042857 0. Prelight 0. 0. 0. # 4
Vertex 0.083923 0.031497 0.995974 UV 0.057143 0.028571
Prelight .02 .02 .02 # 5
Vertex 0. 0. 1. UV 0.071429 0. Prelight 0. 0. 0. # 6
Note the Prelight 0. 0. 0. is no prelighting at all, and
Prelight 1. 1. 1. is 100% lit. If you want to light an
object with all the same prelight setting, it is only
necessary to put the command on the #1 vertex(tices) and
it will apply it automatically to all the vertices that
follow it. And to see how awesome something can look with
Prelight, here's a picture of a tiki hut house....no light
sources were used to achieve this effect, not even for
the little lanterns. All prelighting.
4. Coronas. How many people remember
the times before the AW cleanup around GZ last spring
and summer? Remember all those coronas the size of your
screen that blinded you no matter where you went? Or how
about the hit to framerate you experience when you come
to an area where there are a flock of coronas, all circling
and gyrating here and there. There are endless uses for
coronas, and they definitely add a lot of effect, but
like anything else, there can be overkill, resulting in
decreased framerate for some, and computer crashes on
those with older video cards that can't handle the barrage
those 30+ coronas are putting on them. So moderation really
is the key when using those incredible coronas.
5. Transparencies. One of the hardest
things to balance in AW is the use of what we call transparencies,
or alphas. Trees, sprites (facers), plants, windows, glass,
water, and numerous other objects take advantage of this
feature. As if it wasn't hard enough just to make them
all play nice together (I think all of us have had our
share of experiences in trying to get masked objects to
not have issues when they are near each other), it's also
true that masks can cause lag. It's a lot for the engine
to render, because it's busy cutting out parts of objects
and letting other objects behind it show through. The
more polygons it has to do this on, the worse the framerate
will be. That's why if you walk into a huge forest of
trees, your framerate can drop drastically. Therefore,
try to take this into account when building and when making
models that will use transparencies.
Whew! You as tired as I am? Lots of info
to take in there. Maybe all these points are new to you
and you are overwhelmed by it all. Try one or two of them
out for starters. You'll be glad you made the effort.
As ever, if you have questions about the articles, or
have something you'd like to see answered in here, please
email me at:
stacey@activeworlds.com
|