



Reputation: +14/-0

Offline

Gender:

Posts: 1399

Dungeon Design Contest (using GMare)



When does it start? - April 22nd

How and till when can I enter? - Post here before April 29th to enter

Till when will it run? - The contest will run till the 31st of May or until all the results have been send in



On April 22nd each participant will be presented with a GMare file preloaded with the relevant objects and tileset. No additional resources may be used. All particants attempt to build a dungeon before the end of the event, which will then get graded by the general public. The winning design will be converted into a stand alone game, so we actually see it in action. You'll also receive a little trophy by your name as prove.



Below will be a detailed description on how to build a dungeon, how to add object and so on. Please browse through the text when it is finished. Preferably before starting on your dungeon design. Check the final chapter for details on how to submit your endresult.





Registered contestants:

- Homegrownpwn

- infinitenintendo

- Jetstorm4

- Knighty

- shongshui







HELP INDEX:



How to build a dungeon?

Step 1. Downloading GMare & resources Step 2. Defining rooms Step 3. Tiling your rooms Step 4. Connecting your rooms Step 5. Placing doors Step 6. Placing chests Step 7. Placing containers Step 8. Placing ledges and lights Step 9. Placing switches and movables Step 10. Placing enemies Step 11. Understanding Keys Step 12. Understanding Events Step 13. Global dungeon design Step 14. Sending in your submission





How to build a dungeon?



Step 1. Downloading GMare & resources



GMare can be found here:

Resources can be found here:





Step 2. Defining rooms



When building your dungeon you will need to determine how large each individual room will be and where it is placed. To help you can do the following. First create a new layer, called Room Borders, at the default depth of -1000000000. Set your GMare grid to 320x320 and color the borders of the rooms you wish to use. Keep in mind that your dungeon may use no more than 16 blocks of 320x320 pixels . Here's an example:







The example shows that I want to build 3 rooms in my dungeon, using four blocks of 320x320 pixels.

Just a friendly warning: do not make rooms consisting of more then 6 blocks. It may murder the framerate if you are going place lots of objects in them later.



The following is an example that is wrong :





Rooms must always have a rectangular shape. The example above has a room that is a different shape and thus will not be usable.



After you have placed down the blocks to build your dungeon it is time to document the basic variables needed. Give each room a indexnumber starting from zero and create a separate textfile to document the following per room: room index / x / y / width / height



For the example I would have to document the following.





Code: [Select] // Room information

Index / x / y / width / height

0 / 0 / 0 / 320 / 320

1 / 320 / 0 / 320 / 320

2 / 0 / 320 / 640 / 320



Step 3. Tiling your rooms



When tiling rooms you have to keep an eye out for using the proper depths.



The two depthranges are:

- The upper floor (= all depths between 500 and 600)

- The lower floor (= all depths between 1600 and 1700)



Basically all basic floortiles may be placed within the lower depths. The exception to this is when Link (or any part/extention of Link) can pass under that piece of tiling. In that case the tiling has to be placed within the higher depths. I will demonstrate with the example below.



Upper Layer





Lower Layer







Step 4. Connecting your rooms



You'll want to connect your rooms with doorways, but it is important to understand that you can not just randomly place these anywhere. I'll try to explain and add some examples.



The reason lies in the in-game cameracontrol. When you are walking around in a room nothing outside of that room will be displayed on screen. This means that the camera does not always center on the main character. When you touch a doorway the screen will move in the direction of that doorway towards a new room. Upon arrival the game considers the new room as the current room and it checks if the camera can be centered yet again. If it then can than a nasty screenjump will occur. That's bad room design!



Let's say you want to add a doorway through a vertical wall:

- Place the doorways on both sides of the wall where you'd like to put them.

- Look at the center of your doorways and imagine an line going up 120 pixels and down 120 pixels (also see the example).

- If your line hits any room borders (which are the bright red area's in the example) and the same thing does not happen in both rooms equally then the doorway is not placed correctly. All other situations are fine.



Example 1 (Bad)



In this example I'm trying to place a doorway through a vertical wall. In the second image you can that I have marked the area 120 pixels up and down of the doorways. On the left side of the wall I hit the left room's border. This does not happen on the right side of the wall so my doorway is not placed correctly.



Example 2 (Good)



Here I am once again trying to place a doorway through a vertical wall. The second image highlights an area 120 pixels up and down from the center of the doorway. On both sides of the wall the upper border of the rooms is hit within those 120 pixels. This is fine! It happens, but it happens on both sides so there is no problem. If it would not have hit any borders then it would have been fine also.



Positioning a doorway through a vertical wall is basically the exact same thing. Only instead of looking 120 pixels up and down, you'll need to look 160 pixels left and right.



< I'm skipping the rest of this step to keep things simple. You will not have to worry about changing tiledepths between doors. Nor will you have to place the needed objects >





Step 5. Placing doors



There are currently 3 doorobjects:

- obj_Locked_Door_Small_Key

- obj_Locked_Door_Large_Key

- obj_Conditional_Door



Place these at the center of the doorway where you want them (see example below).

I will need a list of the following information per locked door: x / y / doorindex / small key or large key / opened or locked

I will also need a list of the following information per conditional door: x / y / doorindex / opened or closed



Doorindex = The indexnumber by which one or multiple doors may be referenced. The count starts at 0 and there is separate count for locked and conditional doors. Doors that share the same state (=opened or closed) and are dependant of each other (=open together or close together) should be given the same index number. Each other door should get it's own index number.



Here is an example placement and documentation.





Code: [Select] // Locked doors

// x / y / doorindex / small key or large key / opened or locked

104 / 264 / 0 / large / locked

104 / 360 / 0 / large / locked

472 / 384 / 1 / small / locked

472 / 240 / 1 / small / locked



// Conditional doors

// x / y / doorindex / opened or closed.

272 / 96 / 0 / closed

352 / 96 / 0 / closed



Step 6. Placing chests



To add a chest to your game, wether it is a large or small chest, first tile the bottom half of the chest into your room like you would the floor. Then place the object obj_Chest on top of it as show in the example below. Finally document the following information per chest: x / y / index / large or small chest / content



Possible chest content:

- Nothing

- Rupee (green/blue/red)

- Key (small* / master)

- Book of Mudora

- Bottle containing a fairy

- Compass

- Dungeonmap

- Pegasus boots

- Glove (silver / gold)

- Sword (default / master sword)

- Shield (default / upgraded shield)

- Tunic (upgraded tunic)

* more details can be found in step 11



Example placement and documentation:





Code: [Select] // Chests

// x / y / index / large or small chest / content

408 / 200 / 0 / small chest / master key

104 / 464 / 1 / large chest / pegasus boots



Step 7. Placing containers



To add a container to your game simply place the object obj_Container_Creation. Then add the creation coding as seen below. Containers basicly only need three input variables:

- depth_scale : meaning is the container positioned on the upper or lower floor.

- type : what kind of container you want it to be. The possible options are listed inside the creation coding example.

- item_index : what items should be created when the container gets destroyed.



Creation code:

Code: [Select] depth_scale = <fill in c_Upper or c_Lower>;



type = <fill in one of the numbers below>;

// 0 = vase normal

// 1 = bush lightworld

// 2 = skull

// 3 = small rock light

// 4 = small rock heavy

// 5 = gray square block

// 6 = large rock heavy

// 7 = large rock darkworld

// 8 = large rock light

// 9 = crate

// 10 = bush darkworld

// 11 = vase middle

// 12 = vase large

// 13 = barrel



item_index = <fill in one of the numbers below>;

// -1 = random

// 0 = none

// 1 = small magic bottle

// 2 = large magic bottle

// 3 = small heart

// 4 = single bomb

// 5 = five arrows,

// 6 = green rupee (1)

// 7 = blue rupee (5)

// 8 = red rupee (20)

// 9 = small key* * Check out step 11 for more information on adding keys



Overview of the available containers:







Overview of the different weights:



Light (no gloves needed)

0 = vase normal

1 = bush lightworld

2 = skull

10 = bush darkworld

11 = vase middle



Heavy (silver gloves needed)

3 = small rock light

8 = large rock light

9 = crate

12 = vase large

13 = barrel



Very heavy (golden gloves needed)

4 = small rock heavy

5 = gray square block

6 = large rock heavy

7 = large rock darkworld





Step 8. Placing ledges and lights



Ledges



Link can jump from ledges in a straight line. You will do not have to place objects needed for this, but as the designer you should make sure Link does not get stuck while landing. I will attempt to further explain this with two images.



Image 1:





The locations along the ledge that are marked red indicate bad locations to jump down. Moving in a straight line down from there will result in the character getting suck in the walls. The brown area is equally unsuited because moving down in a straight line will get the player stuck inside the chest or the stairs. Had the chest been positioned 8 pixels lower then the location would still be unsuited, since Link always links a tiny distance away from the wall. Had the chest been positioned 16 pixels lower and the stairs 8 pixels further to the right then it's all good. The green area is what remains and those are the positions where Link can jump down safely without any further adjustments.



Image 2:





Taking the comments from the first image into consideration your room might end up looking something like this (if you want Link to be able to jump done anywhere possible).





Lights (also named "torches")







1. Small torches

These are the lights you could light with the lantern in Alttp. In my game however you currently can't do anything special with it (yet) so adding one would just be for decoration purposes. Simply place the obj_Small_Torch somewhere in your dungeon and you're done.



2. Large torches

These are the larger lights (32x32 pixels), you sometimes see in dungeons, which are also just meant as decoration. Place the obj_Large_Torch somewhere in your dungeon and you are done.



3. Wall lighting

These are the lights you sometimes see attached to walls inside dungeons. Adding them is a small hazzle. First place a obj_Wall_Light on the wall like as seen in the example above. The add the following creation code:

Code: [Select] sprite_index = sprite_Wall_Light_A;

image_speed = 1/6;

Required_Facing = <fill in c_Left, c_Up, c_Right or c_Down>;

For required facing enter the character's facing when he's looking at the light on wall. If you are placing the light on the left side wall of your room then enter c_Left. Use c_Up for the upper wall, c_Down for the lower wall and c_Right for the right wall.





Step 9. Placing switches and movables



Switches have different means to activate and they are usefull for triggering events, which I'll explain in step 12.



Pressure plates

There are three types of pressure plates:

0. The switch is activate (once) when you stand on it

1. The switch is activate as long as you stand on it

2. The switch alters between an active and inactive state each time you stand on it



To add a pressure plate place an obj_Pressure_Plate somewhere in your dungeon. Next document its location, index number, type and sprite.

Code: [Select] // Pressure Plates

// index / x / y / type / sprite

0 / 150 / 320 / 0 / 1

1 / 20 / 764 / 1 / 1

2 / 66 / 320 / 2 / 2

There are two sprites to pick from (as seen in the image below). The first sprite is used for a default pressure plate you see under pots and elsewhere. The second is usefull as a more hidden pressure with a simular floorpatern.





Crash switches

A crash switch is an invisible switch that activates when the player crashes up against it using the running boots. To add one of these position an obj_Crash_Switch inside something solid (like a wall, large light or even a master chest) in a way that the player can walk up against it, but not over it.



Next give it the following creation code:

Code: [Select] index = <fill in the crash switch's index number>;

depth_scale = <fill in either c_Upper or c_Lower>;

And then document all of your crash switches:

Code: [Select] // Crash switches

// index / x / y

0 / 148 / 320

1 / 204 / 764

Movable objects



When defining a movable object you are given the option to disable each individual movement direction. You can forget about this if you want by allowing all movement. If want however it is possible to get creative.



Example 1: Using events (=step 12) you can use this to create a "pull switch". Let's say the movement object is placed at y = 90 and may only move downwards. When it is moved down to y = 98 you can use that as a trigger for an event like opening a door and/or lock any further movement with that movable object by disallowing all directions.



Example 2: Let's say you want a moveable object / statue in your room with a limited action radius. The object allows movement in all directions, but if x < 90 then you disable further movement in the left direction. Doing this for all directions allows you to define a nice (rectangular) area for the movable object to stay containt in. Like for instance, the statue may not move off the carpet on the floor.



To add a movable object place down a obj_Movable_Object somewhere in your dungeon. Next document its location, index number, sprite and which directions the object is allowed to move in.

Code: [Select] // Movable objects

// index / x / y / sprite / allow left / allow up / allow right / allow down

0 / 150 / 320 / 1 / true / true / true / true

There are two sprites to pick from (as seen in the image below).







Step 10. Placing enemies



To create an enemy you will have to place the following object in your dungeon: obj_Enemy_Creation. Next, right click on the created instance and fill in the creation code to specify the enemy parameters. I'll go over the needed creation code per type of enemy in a minute. The symbols <> indicate what values you may (or have to) change. First though there some variables to explain.



depth_scale - This variable tells wether the enemy is positioned on the upper or lower floor. Fill in either c_Upper or c_Lower for the respective floors.

facing - This variables tells which side the enemy should be facing at the time of his creation. Fill in either c_Left, c_Up, c_Right or c_Down.





Enemy creationcodes



Plant

Code: [Select] // parameters

name = "Plant";

depth_scale = <fill in c_Upper or c_Lower>;

enemy_type = 0;

item_index = -1;

active_outside_room = 0;

Stalfos (blue / red / yellow*)

Code: [Select] // parameters

name = "Skeleton Normal";

depth_scale = <fill in c_Upper or c_Lower>;

enemy_type = <fill in 0 for a blue and 1 for a stronger red stalfos>;

item_index = -1;

facing = <fill in c_Left, c_Up, c_Right or c_Down>

active_outside_room = 0; *Check out step 12 for information on how to add a the yellow stalfos (= the one falling from the ceiling)



Cyclops Guard (green / blue)

Code: [Select] // parameters

name = "Cyclops Guard";

depth_scale = <fill in c_Upper or c_Lower>;

enemy_type = <fill in 0 for a green and 2 for a stronger blue cyclops>;

item_index = -1;

facing = <fill in c_Left, c_Up, c_Right or c_Down>

active_outside_room = 0;

Anti-Faerie

Code: [Select] // parameters

name = "Anti-Faerie";

depth_scale = <fill in c_Upper or c_Lower>;

enemy_type = 0;

item_index = -1;

direction = <fill in any number from 0-360 to set the starting direction for this enemy>;

active_outside_room = 0;

Pol's Voice

Code: [Select] // parameters

name = "Pols Voice";

depth_scale = <fill in c_Upper or c_Lower>;

enemy_type = 0;

item_index = -1;

active_outside_room = 0;

Buzz Blob

Code: [Select] // parameters

name = "Buzz Blob";

depth_scale = <fill in c_Upper or c_Lower>;

enemy_type = 0;

item_index = -1;

active_outside_room = 0;



Step 11. Understanding keys



Adding small keys to your dungeon can be done in 5 ways, which I'll explain below.



Default - placing it on the floor

Place the obj_Common_Item somewhere on the map. Then document the location of the object plus the key index you want to give it.



Inside a container

Place a container on the map like you normally would. Then document the location of the container and the key index you want to give it.



Inside a chest

Add a chest and document it like you normally would (as seen in step 6). Next document the location of the chest (again) in the small key overview. This time in combination with the key index.



Held by an enemy

Place an enemy on the map like you normally would (as seen in step 10), giving it it's usual creation coding. Then document the location of that enemy in combination with the key index.



Falling from above

You may make use of keys that fall from the ceiling if the right conditions are met (see step 12). For example when all the enemies in the room have been killed. Do you not have to place an object in your room for this one. Simply document where you want the key to land and what it key index should be.





Each key needs it's own index (so they are one time occuring objects) and you'll need to document where it is located. This is important that there is one seperate listing for the small keys eventhough a key's location may also have already been documented elsewhere. Fragmented / scattered documentation is bad!



Example. If I place a key for each of the 5 possible I would have to document something like this:

Code: [Select] // Small Keys

// index / x / y / description

0 / 552 / 168 / default

1 / 180 / 180 / inside container

2 / 208 / 766 / inside chest

3 / 344 / 208 / held by enemy

4 / 500 / 504 / falling from above



Step 12. Understanding events



Events have to be coded in scripts, so the contestants will not have to actually do this. You can however (to keep it simple) add a default trigger + event to your dungeon by documenting a line like so:

Code: [Select] For room <index>: if <condition(s)> then <event(s)> Should your dungeon be the winner then I'll code the events for you using the given instructions. The conditions and events available are listed below. If however you feel a vital event or condition is missing then you should contact me. The conditions are stated as A = B, but you may also use A < B or A != B and so on. If-then-else is also possible.



Available conditions*:

-Entering room

-Chest [index] = opened

-Pressure Plate [index] = active

-Crash switch [index] = active

-Count enemies of type [name or all] = number

-Position [x or y] of Moveable object [index] = value

-Movable object [index] in contact with Pressure Plate [index] = true

-Permanent_condition <index> = value



Events:

-Conditional door <index> opens / closes

-Enemy <description> appears at position <x,y>*

-Enemy Yellow Stalfos falls down to position <x,y>*

-Pressure_Plate <index> state = active / inactive

-Crash switch <index> state = active / inactive

-Movable Object <index> allow movement in direction <direction> allow/disallow

-Drop small key <index> down at position <x,y>

-Permanent_condition <index> = value

*For enemies appearing/falling down make sure to also add the creation coding af that enemy to indicate it's type and so on.



Permanent conditions

You've probably noticed that I also listed something called permanent_condition both as an condition and event in the list below. That's a variable name that is stored for your dungeon. This will help you with your events if you want to make an event a one time occurance. Or if you want an event in one room have impact on another room.

To use permanent conditions first define them by documenting them:

Code: [Select] permanent conditions

index / starting value

0 / false

1 / 0

2 / -7

Examples

I'll give some examples of what events can do for your dungeon:



Example 1: When I enter room 3 I immediately want the doors to close and have 3 skeletons and 1 plant appear every time. When all enemies are dead the doors open.

Code: [Select] For room 3:

if enter room then

appear blue stalfos at (100,50) , (90,90) and (100,70) and appear plant at (80,80)

if count enemies of type all = 0 then

conditional door 0 opens and conditional door 4 opens

Example 2: I want the same as example 1 but it should only happen when I first enter the room. Remember: I have already documented that permanent_condition[0] = false.

Code: [Select] For room 3:

if enter room and permanent_condition 0 = false then

appear blue stalfos at (100,50) , (90,90) and (100,70) and appear plant at (80,80) and permanent_condition 0 = true.

if count enemies of type all = 0 and permanent_condition 0 = false then

conditional door 0 opens and conditional door 4 opens

Example 3: Let's say I have a room with a pressure plate and a movable object. The pressure plate is only active if you stand on it, but you need to stand on it to open a door. The player has to move the movable object on top of the plate to open the door.

Code: [Select] For room 2:

if movable object 0 in contact with pressure plate 0 = true then

conditional door 1 opens

else

conditional door 1 closes

Example 4: Let's say I have a door in room 0 that only opens if I use three switches in three of the other rooms

Code: [Select] For room 0:

if permant_condition 1 = true and permanent_condition 2 = true and permant_condition 3 = true then

conditional door 3 opens

For room 1:

if Crash switch 0 = active then

permanent_condition 2 = true

For room 4:

if Pressure_Plate 0 = active then

permanent_condition 3 = true

For room 5:

if Pressure Plate 2 = active then

permanent_condition 0 = true



Step 13. Global dungeon design



This step describes the two minor details to finish a dungeon: the start and end



The start of your game

Please fill in the following form to indicate where the character starts and what stats he should have.

Code: [Select] Starting conditions

Starting location: (x,y)

Health: (number of hearts)

Sword: (none / lv1)

Shield: (none / lv1)

Pegasus Boots: (none / collected)

Gloves (none / lv1 / lv2)

Bottle 1: (none / empty / life medicine / magic medicine / cure all / caught fairy)

Bottle 2: (none / empty / life medicine / magic medicine / cure all / caught fairy)

Bottle 3: (none / empty / life medicine / magic medicine / cure all / caught fairy)

Bottle 4: (none / empty / life medicine / magic medicine / cure all / caught fairy)

The endgoal of your game

To set the endgoal of your dungeon place the object called obj_Credits in your dungeon. This object is invisible for the player and if they touch it the credits will roll and the game ends. It is possible to make this object visible and use a different sprite, but that is up for you to decide should you win. I'm open for suggestions on that matter.





Step 14. Sending in your submission

< explanation is being worked on > - April 22nd- Post here before April 29th to enter- The contest will run till the 31st of May or until all the results have been send inOn April 22nd each participant will be presented with a GMare file preloaded with the relevant objects and tileset. No additional resources may be used. All particants attempt to build a dungeon before the end of the event, which will then get graded by the general public. The winning design will be converted into a stand alone game, so we actually see it in action. You'll also receive a little trophy by your name as prove.Below will be a detailed description on how to build a dungeon, how to add object and so on. Please browse through the text when it is finished. Preferably before starting on your dungeon design. Check the final chapter for details on how to submit your endresult.- infinitenintendo- Knighty- shongshuiGMare can be found here: http://gmare.codeplex.com/ Resources can be found here: http://www.mediafire.com/?dagrrcudf6amsa6 When building your dungeon you will need to determine how large each individual room will be and where it is placed. To help you can do the following. First create a new layer, called Room Borders, at the default depth of -1000000000. Set your GMare grid to 320x320 and color the borders of the rooms you wish to use. Keep in mind that your dungeon may. Here's an example:The example shows that I want to build 3 rooms in my dungeon, using four blocks of 320x320 pixels.Just a friendly warning: do not make rooms consisting of more then 6 blocks. It may murder the framerate if you are going place lots of objects in them later.Rooms must always have a rectangular shape. The example above has a room that is a different shape and thus will not be usable.After you have placed down the blocks to build your dungeon it is time to document the basic variables needed. Give each room a indexnumber starting from zero and create a separate textfile to document the following per room:For the example I would have to document the following.When tiling rooms you have to keep an eye out for using the proper depths.The two depthranges are:- The upper floor (= all depths between 500 and 600)- The lower floor (= all depths between 1600 and 1700)Basically all basic floortiles may be placed within the lower depths. The exception to this is when Link (or any part/extention of Link) can pass under that piece of tiling. In that case the tiling has to be placed within the higher depths. I will demonstrate with the example below.Upper LayerLower LayerYou'll want to connect your rooms with doorways, but it is important to understand that you can not just randomly place these anywhere. I'll try to explain and add some examples.The reason lies in the in-game cameracontrol. When you are walking around in a room nothing outside of that room will be displayed on screen. This means that the camera does not always center on the main character. When you touch a doorway the screen will move in the direction of that doorway towards a new room. Upon arrival the game considers the new room as the current room and it checks if the camera can be centered yet again. If it then can than a nasty screenjump will occur. That's bad room design!Let's say you want to add a doorway through a vertical wall:- Place the doorways on both sides of the wall where you'd like to put them.- Look at the center of your doorways and imagine an line going up 120 pixels and down 120 pixels (also see the example).- If your line hits any room borders (which are the bright red area's in the example) and the same thing does not happen in both rooms equally then the doorway is not placed correctly. All other situations are fine.In this example I'm trying to place a doorway through a vertical wall. In the second image you can that I have marked the area 120 pixels up and down of the doorways. On the left side of the wall I hit the left room's border. This does not happen on the right side of the wall so my doorway is not placed correctly.Here I am once again trying to place a doorway through a vertical wall. The second image highlights an area 120 pixels up and down from the center of the doorway. On both sides of the wall the upper border of the rooms is hit within those 120 pixels. This is fine! It happens, but it happens on both sides so there is no problem. If it would not have hit any borders then it would have been fine also.Positioning a doorway through a vertical wall is basically the exact same thing. Only instead of looking 120 pixels up and down, you'll need to look 160 pixels left and right.< I'm skipping the rest of this step to keep things simple. You will not have to worry about changing tiledepths between doors. Nor will you have to place the needed objects >There are currently 3 doorobjects:- obj_Locked_Door_Small_Key- obj_Locked_Door_Large_Key- obj_Conditional_DoorPlace these at the center of the doorway where you want them (see example below).I will need a list of the following information per locked door:I will also need a list of the following information per conditional door:= The indexnumber by which one or multiple doors may be referenced. The count starts at 0 and there is separate count for locked and conditional doors. Doors that share the same state (=opened or closed) and are dependant of each other (=open together or close together) should be given the same index number. Each other door should get it's own index number.Here is an example placement and documentation.To add a chest to your game, wether it is a large or small chest, first tile the bottom half of the chest into your room like you would the floor. Then place the object obj_Chest on top of it as show in the example below. Finally document the following information per chest:Possible chest content:- Nothing- Rupee (green/blue/red)- Key (small* / master)- Book of Mudora- Bottle containing a fairy- Compass- Dungeonmap- Pegasus boots- Glove (silver / gold)- Sword (default / master sword)- Shield (default / upgraded shield)- Tunic (upgraded tunic)* more details can be found in step 11Example placement and documentation:To add a container to your game simply place the object obj_Container_Creation. Then add the creation coding as seen below. Containers basicly only need three input variables:: meaning is the container positioned on the upper or lower floor.: what kind of container you want it to be. The possible options are listed inside the creation coding example.: what items should be created when the container gets destroyed.Creation code:* Check out step 11 for more information on adding keysOverview of the available containers:Overview of the different weights:Light (no gloves needed)0 = vase normal1 = bush lightworld2 = skull10 = bush darkworld11 = vase middleHeavy (silver gloves needed)3 = small rock light8 = large rock light9 = crate12 = vase large13 = barrelVery heavy (golden gloves needed)4 = small rock heavy5 = gray square block6 = large rock heavy7 = large rock darkworldLink can jump from ledges in a straight line. You will do not have to place objects needed for this, but as the designer you should make sure Link does not get stuck while landing. I will attempt to further explain this with two images.Image 1:The locations along the ledge that are markedindicate bad locations to jump down. Moving in a straight line down from there will result in the character getting suck in the walls. Thearea is equally unsuited because moving down in a straight line will get the player stuck inside the chest or the stairs. Had the chest been positioned 8 pixels lower then the location would still be unsuited, since Link always links a tiny distance away from the wall. Had the chest been positioned 16 pixels lower and the stairs 8 pixels further to the right then it's all good. Thearea is what remains and those are the positions where Link can jump down safely without any further adjustments.Image 2:Taking the comments from the first image into consideration your room might end up looking something like this (if you want Link to be able to jump done anywhere possible).1. Small torchesThese are the lights you could light with the lantern in Alttp. In my game however you currently can't do anything special with it (yet) so adding one would just be for decoration purposes. Simply place the obj_Small_Torch somewhere in your dungeon and you're done.2. Large torchesThese are the larger lights (32x32 pixels), you sometimes see in dungeons, which are also just meant as decoration. Place the obj_Large_Torch somewhere in your dungeon and you are done.3. Wall lightingThese are the lights you sometimes see attached to walls inside dungeons. Adding them is a small hazzle. First place a obj_Wall_Light on the wall like as seen in the example above. The add the following creation code:For required facing enter the character's facing when he's looking at the light on wall. If you are placing the light on the left side wall of your room then enter c_Left. Use c_Up for the upper wall, c_Down for the lower wall and c_Right for the right wall.Switches have different means to activate and they are usefull for triggering events, which I'll explain in step 12.There are three types of pressure plates:0. The switch is activate (once) when you stand on it1. The switch is activate as long as you stand on it2. The switch alters between an active and inactive state each time you stand on itTo add a pressure plate place an obj_Pressure_Plate somewhere in your dungeon. Next document its location, index number, type and sprite.There are two sprites to pick from (as seen in the image below). The first sprite is used for a default pressure plate you see under pots and elsewhere. The second is usefull as a more hidden pressure with a simular floorpatern.A crash switch is an invisible switch that activates when the player crashes up against it using the running boots. To add one of these position an obj_Crash_Switch inside something solid (like a wall, large light or even a master chest) in a way that the player can walk up against it, but not over it.Next give it the following creation code:And then document all of your crash switches:When defining a movable object you are given the option to disable each individual movement direction. You can forget about this if you want by allowing all movement. If want however it is possible to get creative.Example 1: Using events (=step 12) you can use this to create a "pull switch". Let's say the movement object is placed at y = 90 and may only move downwards. When it is moved down to y = 98 you can use that as a trigger for an event like opening a door and/or lock any further movement with that movable object by disallowing all directions.Example 2: Let's say you want a moveable object / statue in your room with a limited action radius. The object allows movement in all directions, but if x < 90 then you disable further movement in the left direction. Doing this for all directions allows you to define a nice (rectangular) area for the movable object to stay containt in. Like for instance, the statue may not move off the carpet on the floor.To add a movable object place down a obj_Movable_Object somewhere in your dungeon. Next document its location, index number, sprite and which directions the object is allowed to move in.There are two sprites to pick from (as seen in the image below).To create an enemy you will have to place the following object in your dungeon: obj_Enemy_Creation. Next, right click on the created instance and fill in the creation code to specify the enemy parameters. I'll go over the needed creation code per type of enemy in a minute. The symbols <> indicate what values you may (or have to) change. First though there some variables to explain.- This variable tells wether the enemy is positioned on the upper or lower floor. Fill in either c_Upper or c_Lower for the respective floors.- This variables tells which side the enemy should be facing at the time of his creation. Fill in either c_Left, c_Up, c_Right or c_Down.*Check out step 12 for information on how to add a the yellow stalfos (= the one falling from the ceiling)Adding small keys to your dungeon can be done in 5 ways, which I'll explain below.Place the obj_Common_Item somewhere on the map. Then document the location of the object plus the key index you want to give it.Place a container on the map like you normally would. Then document the location of the container and the key index you want to give it.Add a chest and document it like you normally would (as seen in step 6). Next document the location of the chest (again) in the small key overview. This time in combination with the key index.Place an enemy on the map like you normally would (as seen in step 10), giving it it's usual creation coding. Then document the location of that enemy in combination with the key index.You may make use of keys that fall from the ceiling if the right conditions are met (see step 12). For example when all the enemies in the room have been killed. Do you not have to place an object in your room for this one. Simply document where you want the key toand what it key index should be.Each key needs it's own index (so they are one time occuring objects) and you'll need to document where it is located. This is important that there is one seperate listing for the small keys eventhough a key's location may also have already been documented elsewhere. Fragmented / scattered documentation is bad!Example. If I place a key for each of the 5 possible I would have to document something like this:Events have to be coded in scripts, so the contestants will not have to actually do this. You can however (to keep it simple) add a default trigger + event to your dungeon by documenting a line like so:Should your dungeon be the winner then I'll code the events for you using the given instructions. The conditions and events available are listed below. If however you feel a vital event or condition is missing then you should contact me. The conditions are stated as A = B, but you may also use A < B or A != B and so on. If-then-else is also possible.-Entering room-Chest [index] = opened-Pressure Plate [index] = active-Crash switch [index] = active-Count enemies of type [name or all] = number-Position [x or y] of Moveable object [index] = value-Movable object [index] in contact with Pressure Plate [index] = true-Permanent_condition = value-Conditional door opens / closes-Enemy appears at position *-Enemy Yellow Stalfos falls down to position *-Pressure_Plate state = active / inactive-Crash switch state = active / inactive-Movable Object allow movement in direction allow/disallow-Drop small key down at position -Permanent_condition = value*For enemies appearing/falling down make sure to also add the creation coding af that enemy to indicate it's type and so on.You've probably noticed that I also listed something called permanent_condition both as an condition and event in the list below. That's a variable name that is stored for your dungeon. This will help you with your events if you want to make an event a one time occurance. Or if you want an event in one room have impact on another room.To use permanent conditions first define them by documenting them:I'll give some examples of what events can do for your dungeon:Example 1: When I enter room 3 I immediately want the doors to close and have 3 skeletons and 1 plant appear every time. When all enemies are dead the doors open.Example 2: I want the same as example 1 but it should only happen when I first enter the room. Remember: I have already documented that permanent_condition[0] = false.Example 3: Let's say I have a room with a pressure plate and a movable object. The pressure plate is only active if you stand on it, but you need to stand on it to open a door. The player has to move the movable object on top of the plate to open the door.Example 4: Let's say I have a door in room 0 that only opens if I use three switches in three of the other roomsThis step describes the two minor details to finish a dungeon: the start and endPlease fill in the following form to indicate where the character starts and what stats he should have.To set the endgoal of your dungeon place the object called obj_Credits in your dungeon. This object is invisible for the player and if they touch it the credits will roll and the game ends. It is possible to make this object visible and use a different sprite, but that is up for you to decide should you win. I'm open for suggestions on that matter. « Last Edit: May 16, 2011, 05:43:41 am by Martijn dh » Logged Logged