Here we go, designing the dungeon and all its wonders. Let's start off with the dungeon dimensions as a whole:
The dungeon is a 4 x 16 room placement (Four rooms across, 16 rooms down) for a total of 64 rooms, each room being 64 blocks by 12 blocks, and each block 16 x 16 pixels. This means the dungeon is a total of 256 blocks across and 192 blocks down. That equates to a dungeon that is 4096 x 3024 pixels. And if we where to equate that to the 64 x 64 blockset, the dungeon dimensions are a whopping 16384 x 12288 pixels! My computer is sweating just thinking about it. So how would we go about constructing the dungeon? Well, we have an idea. Instead of creating 64 rooms in GM and laying out the tiles, we're going to create the room from plain text. We'll have one 4096 x 768 room for the dungeon, and using a room creation object, lay out the room depending on a variable received from the game.
So, in simple terms, we create two ASCII versions of the room, one for background tiles and one for the objects, and when the game lets the room know which room it's in, the room will draw itself.
Here is an example of what I mean:
This is what the first room looks like (MSX2):
Now this is the object layout in ASCII:
1211111111111111111111111111111111111111111111111111111111111111
1200000000000000000000000000000000000000000000000000000000000000
1200000000000000000000000000000000000111111111111100000000000000
1211111111111000000000000000000011111000000000000111011110000000
1200002000003000000001111111111100000011111111100000000111100000
1200012000001111111110000000000000011110000011111111111100000000
1200012000001111000000000000000111110000000000011000000000110000
1200012000000111000011111111000000000011111111001111100000000000
1111112000000011110000000000211111111111100000000000000000000011
1000002000000010000000000000200000000000000000000000000000000000
1000002000000010000000000001200000000000000111111111111000000000
1000002000000011111111111111111111111111111111111111111111211111
Here, 1 equals a wall, 2 equals a ladder, and 3 equals an interacting block. 0 equals nothing.
Now, using a for loop, we'll have the game put an object depending on the number in the corresponding place in the room.
We'll use this same technique for placing all the images from a tileset for the background.
Note: The wall and ladder objects will be invisible, but because of the tiles in the background, you'll still see the walls.
Now that we got that concept out of the way, let's go through each room and dissect it.