Advertisement

Which is better to use

Started by December 18, 2000 09:53 AM
22 comments, last by Shogun 24 years, 1 month ago
Davaris:
1. I''m found what BioWare use 4-bit bitmap for pathfinding. Do you know something about it?

2. If I have one big bitmap instead tiles what about objects behind wich hero can stand.

3. Link to your demo don''t work.

4. You screenshots looks like fallout, but not Baldur''s Gate.
Some folks mentioned in another thread mixing the two. That is, you use a tile map for your terrain/bldgs and another layer for the unit movement/combat that is pixel based.

Too complicated?
Advertisement
O1eg:

>1. I''m found what BioWare use 4-bit bitmap for pathfinding. Do you know something about it?

I could only guess about that. It would be better for you to search the internet for the exact answer to that. Or
ask at the sites that are hacking that engine.

>2. If I have one big bitmap instead tiles what about objects behind wich hero can stand.

Yeah I''ve heard they use an Xor or something like that.
I understand someone has to mark all the covering walls and
buildings so the engine knows when a critter is behind
it. Again as I have not written an engine like this I don''t
know the exact method.

>3. Link to your demo don''t work.

Yeah I''ve taken that down as it was getting too old.
My new demo will be up some time in January.

>4. You screenshots looks like fallout, but not Baldur''s Gate.

Yep Fallout is my favorite game ever. My engine uses
the same techniques that were used in Fallout. So I
know the pit falls of the tile based method.


Anonymous Poster:

>Some folks mentioned in another thread mixing the two. That is, >you use a tile map for your terrain/bldgs and another layer for >the unit movement/combat that is pixel based.

>Too complicated?

Thats what I had to do in the end to make it work.
There are lots of

pixel_y *= -2; // Convert to real space

Do real vector math here

pixel_y /= -2; // Convert back to iso space


in my code and its damned ugly. If I had known I
would have to do this I would have put all the
pixel_y /= -2; in the drawing sections of my code
and worked entirely in real space but it will take me too
long to fix it now.






"I am a pitbull on the pantleg of opportunity."George W. Bush
quote: Original post by O1eg
2. If I have one big bitmap instead tiles what about objects behind wich hero can stand.


We are using a 3D renderer to do the scenes/objects and exporting the Zbuffer to accomplish this.

Let's say we have modelled a bridge and you want the player
to walk under it. Basically the rendered image will have a
Z value for every pixel that ended up being plotted.

Sprites have Z as well with this method so it's a simple check for occlusion.

If you don't have access to a 3D renderer then you would have
to manually enter the values for the image.

You could also mark images with an overlay vector (trace) and
clip your sprites against this.

One note on Z buffers. The really slow thing in a normal 3D environment is the constant checking/read/write pixel that goes on.

Remember here that the Z buffer has been precomputed so this step is not necessary.

Another thing with Zbuffers is that they allow you to do some pretty neat tricks because they allow intersecting surfaces and are totally accurate for hidden surfaces.

Another tip is that you could draw a background and then merge objects into it that *will* cause occlusion. This way you could have a sparse Zbuffer only for the actual objects.

Ignore the quality of the image because of the compression I
chose wasn't too great! But this is an actual shot from the
game in progress. Notice the trees in the background and notice
the characters how they clip perfectly against everything and
each other.






It may be overkill but we want this level of sophistication. This is ALL prerendered stuff and the characters can walk about freely. It's a real 3D space but in a 2D enviroment.



Edited by - ancientcoder on December 21, 2000 3:01:23 PM
quote: Original post by Davaris

I haven''t seen any artists that can create tile sets that blend seamlessly.

Well, you haven''t but my isometric engine supports it out-of-the-box and blends the textures automatically, the artist doesn''t have to worry about that, unless he wants a special way to blend the textures (like a sharp edge or so).


- JQ
"It''s christmas time/again/it''s time to be nice to the people you can''t stand/all year/I''m growing tired of all this christmas cheer" -Blink 182, I Won''t Be Home For Christmas
~phil
I can see this turning into a flame war so I''ll try
to be a delicate as its possible for me to be. If your
engine blends the textures automatically, its
going to look ugly like a 3D game. I tried to
go to your website but it was down so I can''t
see any of your screen shots. The whole
reason for doing 2D Isometric games these days
is the artwork can have a far higher quality than
the 3D games. Otherwise if you are going
to have something that looks ugly like 3D you
may as well make a 3D engine.

BTW If you haven''t noticed I hate 3D games!
I don''t like looking at chunky polygons.
"I am a pitbull on the pantleg of opportunity."George W. Bush
Advertisement
quote: Original post by Davaris
to have something that looks ugly like 3D you
may as well make a 3D engine.


Yes that is true but utilising a 3D renderer to make the artwork
is not a bad idea at all. The only problem is that 3D rendered
artwork always looks like it''s been rendered. It''s too perfect
and the eye picks it up.

Another idea would to have hand painted artwork then use compositing software to create the Z occlusion buffers. In fact this is how they put CG characters onto live footage for movies so I don''t see why it couldn''t work in games.





I just had a thought (That hurt) if you don't want to use
3D rendered images and want to hand draw then why not take
a leaf out of traditional cell animation. They were doing
compositing before it was even invented.

If they wanted a character to walk behind something or whatever then they would draw on separate cells and overlay them in the right order. Sure we can do this with the painters algorithm and separate sprites. But we are talking about flattened bitmaps here not different layers.

Go into photoshop and create several transparent layers that
represent your scene. One one layer draw a tree on another draw a house, draw a whatever.

All we need now is a preprocessing step.

So describe the order of drawing in your program and mark each
layer has having an increasing Z. Store the Z for each of the
layer images skipping the transparency.

Now flatten this image and discard parts of the layers that have
been clipped by others.

What you have now is one big bitmap with a sparse Z buffer describing each occluding object and it's relative Z.

If you built your image out of stock objects you could provide
an editor. How? By suppyling a program that let's the user
put the various objects into layers. Now your program can flatten
this image automatically and hey presto.

can think of a million optimisations with this method.

All you have to do now is convince the artists to go watch Walt Disneys Pinochio

A Beautifully drawn movie.













Edited by - AncientCoder on December 21, 2000 5:17:13 PM
Z-buffers won''t work in an isometric engine!

The wall bitmaps and buildings are all tilted
in an isometric engine.
The left side of a wall can be closer than the
right side. So if you have that wall Z-buffered
how does it know if you are in front or behind
when you are on the left or right side of the walls edge. This
is fine if the wall is tiny ie the same size as the
creature but it won''t work with long walls.

"I am a pitbull on the pantleg of opportunity."George W. Bush
quote: Original post by Davaris
Z-buffers won't work in an isometric engine!


Erm sorry but what is an isometric engine? It's an isometric projection. That's the trouble with viewing it as a 2D space when in fact it is really a 3D space. It's just a different camera.

Basically we have set up an isometric projection in Maya,3D renderer. How does the 3D renderer know how to plot this? Because it uses a Z buffer.

The stumbling block here is thinking that an isometric engine is somewhat different than a 3D projection. It's just a different camera, that's all it is. In fact you start getting into trouble in an isometric engine when you don't think of it this way.

Imagine a bridge. Somebody is under the bridge and somebody is on top the bridge. If you don't have x,y,z you have no way of knowing what is above or below. Some engines use height which is effectivley the Y in a 3D space (depending on orientation)

quote:
The left side of a wall can be closer than the
right side. So if you have that wall Z-buffered


Because the left side of the wall *is* closer and the right side is further away. In fact the neat thing with an isometric projection is that the Z axis is parallel and at a constant slope because perspective has been thrown away.

If you don't believe me I will get the artist to render out an isometric projection in Maya with particle effects ,bridges and characters all perfectly clipping each other.

Isometric is a 3D projection and if you use tiles then they can have there own local Z as well.








Edited by - ancientcoder on December 22, 2000 3:30:40 AM

This topic is closed to new replies.

Advertisement