Archived

This topic is now archived and is closed to further replies.

Guest Anonymous Poster

Question about RTS's

Recommended Posts

If you only have/allow 1 building (or buidling segment) per map cell, you could include the building (or a pointer to it) in your map cell data structure.

You would still need to draw the terrain background before drawing the building on top of it.

I have an article submitted to GameDev about "base data structures" for RTS-style games. Hopefully that will be up in a few weeks.

------------------
DavidRM
Samu Games

Share this post


Link to post
Share on other sites
Presumably a lot of your buildings will be larger than a single tile, and you will probably want them to be destructable (or even moveable, like StarCraft). You will also want correct Z-ordering. Hence buildings should probably be unit-based, for easier management, even if they are tile-aligned.

Share this post


Link to post
Share on other sites

Let's say I have square tiles, each 32x32 pixels, like
the old Warcraft game. And one building is placed in
the middle of 9 tiles, 3 tiles wide x 3 tiles high. How
exactly is the building image stored and drawn? Let's remove
the concept of units for the moment and just focus on the
ground and buildings.

I can think of two ways:

1. Everything is stored as 32x32 pixels. This means the
buildings are cut up into 32x32 pixel images with transparent
outlines to let the background show through when blitted.
For each tile, the background is drawn, and then the corresponding
building section is drawn on top. This is drawn together
in one sweep.

2. Only the background is stored as 32x32 pixels. The buildings
are stored as full images. So in this case, this building
would be stored as a complete 96x96 pixel image with a transparent
outline. The full background is drawn first in one sweep,
The the buildings are transparently in a second sweep.

Which way is better and are there other ways of doing it?

Reaver

Share this post


Link to post
Share on other sites
My guess would be the second option, becuse it's less of a pain to not have to cut up and your images, and because it's less blits. You could still hold the data in the map structure in a 3X3 section with out cutting the tiles up.

------------------
--Orion McClelland

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Does the 2nd method applys to both RTS and
RPG type of games? And how do we actually
implement it? Will it slow down the blt?

Share this post


Link to post
Share on other sites
For buildings that are 96x96 in a 32x32 tiled world, I would have the first sector of the 3x3 tile to hold the graphics info like the width and the height. Everything else that the building coverd should be NULL because that space is occupied. Looping through the array from left-right-up-down would produce correct results. The building would be drawn where the info is. Everything that is nulled should be skipped.

A 3x3 building placed in a 9x9 map.

xxxxxxxxx // x = tile junk
xINNxxxxx // I = building info
xNNNxxxxx // N = NULL
xNNNxxxxx
xxxxxxxxx
xxxxxxxxx

For the isometric view, have it at the end of the tileset so everything behind the building would be overlapped.

[This message has been edited by Ðragun (edited November 03, 1999).]

Share this post


Link to post
Share on other sites

I also agree I prefer drawing the full building (even if it covers more
than one tile) in one blit, because you might want to move them around
like in Starcraft, or do some kind of neat alpha effects on the whole
image.

But I don't think I would want to store building data in the tilemap
itself (is this what you are doing Dragun?), since most tiles on a large
world map will be empty background tiles. Maybe a separate building
list would be better.

Reaver

Share this post


Link to post
Share on other sites

When you say NULL, are you referring to a struct pointer of building
info that is dynamically allocated and deleted when not needed?
Or are you referring to variables that are fixed in memory
like an array that are NULLed out and not used?

A lot of people here seem to use their own terminology when
referring to tiles, cells, sectors, etc., so just to clearify
myself, when I say tilemap, I am referring to an 2D array that
only contains the background or ground tiles.

I'm sure there are lot of ways to do it, so I'm just looking for
the way that works best for my situation too.

Reaver

Share this post


Link to post
Share on other sites
Hell. When I wrote 'NULL' it meant undefined. Also, storing building data directly inside the tilemap (an array of a structure that defines a single map cell) is perfectly fine. When the hell would there be two instances of a building on one given tile cell? It's a RTS! But then I would just have a background tile and and list of entities (mask layer, objects, etc.) ordered by z value.

Share this post


Link to post
Share on other sites

If you feel somehow offended by my questioning of your methods,
well, don't be. I'm simply here to discuss and exchange ideas,
and I wouldn't give it second thought if someone remotely implied
that I was wrong. I don't give care about that. I welcome new
ideas.

Reaver

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
In a Real-time strategy game, would it be better to hold buildings as a layer of tiles, or as objects on top of tiles??

Share this post


Link to post
Share on other sites