Recent Resources
-
GLSL 4.0: Discarding Fragments to Create a Perf...
-
GLSL 4.0: Using Subroutines to Select Shader Fu...
-
Building a Complete Board-based Puzzle Game wit...
-
JIRA: Programming Workflows
-
.NET Generics 4.0: Container Patterns and Best...
-
Raw Meat: Game Design Tips from Team Meat's...
-
Sedge: An Automated Error Reporting Tool
Dynamic Tile Maps 1.0
By Lee French | Published Sep 15 1999 05:34 PM in Game Programming
I've heard a lot of people recently asking about dynamic arrays for maps of any size within tile editors. Well here is a tutorial that should help you get started pronto.
First of all, lets consider what we want as map data. We want a list of tile ID's that correspond to tiles within a datafile, we want the tiles type (e.g. whether it is walkable, animated etc).
So we'd define a structure such as:-
So we have created a new type called map tile. Now we need to know how to declare our map tile. If we had fixed map sizes we could declare it as follows:-
And that's it, simple. No error checking has been included here but a cannot overemphasize enough how important this is.
Now we want to access the map pointer to initialize the values:-
And that's it, a simple way to create a dynamic map array.
Please do not hesitate to contact me if you have any comments to make on this tutorial. In fact this is my first ever attempt at a tutorial so be easy
Dynamic Tile Maps 1.0 is copyright 1999 Lee French. All rights reserved. Freely distributable if unmodified and in its entirety.
http://members.tripod.co.uk/lpfglc/
leef@pronexus.co.uk
March 1999
First of all, lets consider what we want as map data. We want a list of tile ID's that correspond to tiles within a datafile, we want the tiles type (e.g. whether it is walkable, animated etc).
So we'd define a structure such as:-
typedef struct
{
unsigned char TileID; // The ID of this tile
unsigned char Type; // What type of tile is this
} MAPTILE:
So we have created a new type called map tile. Now we need to know how to declare our map tile. If we had fixed map sizes we could declare it as follows:-
MAPTILE Map[MAPX][MAPY];Since we want a variable sized map, we have to think a bit more cleverly. Also, we want to implement variable layers into the map. In order to use variable map sizes we have to setup the Map like this:-
MAPTILE ***Map;Looks strange doesn't it? Trust me, I thought this at first. What we now want to do is dynamically add each element to the Map pointer:-
// Allocate memory for the maps Layers elements
Map = malloc(sizeof(int**) * MapLayers);
// Allocate memory for the maps X elements
for(lyr = 0; lyr < MapLayers; lyr++)
{
Map[lyr] = malloc(sizeof(int*) * MapWidth);
// Allocate memory for the maps Y elements
for(x = 0; x < MapWidth; x++)
{
Map[lyr][x] = malloc(sizeof(int) * MapHeight);
}
}
}
And that's it, simple. No error checking has been included here but a cannot overemphasize enough how important this is.
Now we want to access the map pointer to initialize the values:-
// Initialize the elements of the map
for(lyr = 0; lyr < MapLayers; lyr++)
{
for(x = 0; x < MapWidth; x++)
{
for(y = 0; y < MapHeight; y++)
{
Map[lyr][x][y].TileID = NOTILE;
Map[lyr][x][y].Walkable = WALKABLE;
}
}
}
And that's it, a simple way to create a dynamic map array.
Please do not hesitate to contact me if you have any comments to make on this tutorial. In fact this is my first ever attempt at a tutorial so be easy
Dynamic Tile Maps 1.0 is copyright 1999 Lee French. All rights reserved. Freely distributable if unmodified and in its entirety.
http://members.tripod.co.uk/lpfglc/
leef@pronexus.co.uk
March 1999


















