• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

WIP: Maze Making.

Another Tutorial on
Maze Making

1) Terrain types and use.

Some terrain types are thinner, some are thicker.
mazemaking01.jpg

Thinner terrain types are harder to work with, thicker ones are easier; let's say we want a thicker one.
Look at this picture as an example:
mazemaking02.jpg

The grass is thick up and down, but diagonally, it's thin. The marble is thick up and down, but CAN'T go corner-wise. Rock tiles are always thin.

Now look at this example:
mazemaking03.jpg
By using marble the tile is thick diagonally, unlike most others.

Before you decide which to use, consider this: WHY does the type of terrain kill you when you step on it?? In most mazes, grass is the tile that kills. WHY??? Grass in real life can be stepped on!!

Either make a storyline for it (The sorcerer put a curse on all the grass!) or make it a tile like lava:
mazemaking04.jpg
Which would, of course, kill you.

2) Triggers.

There are 2 ways to make terrain kill units.
This is the preferred method:
  • Lava Kills
    • Events
      • Time - Every .20 seconds of game time
    • Conditions
    • Actions
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick Every Unit in (Units in (Playable Map Area)) matching ((Unit-Type of (Matching Unit)) Equal to Maze Walker) and do actions
        • Loop - Actions
          • Set TempPoint = (Position of (Picked Unit))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain type at TempPoint) Equal to Dungeon - Lava
            • Then - Actions
              • Unit - Kill (Picked Unit)
            • Else - Actions
          • Custom script: call RemoveLocation( udg_TempPoint )
All this trigger does is check every 0.50 seconds to see if the terrain the maze walker is upon is lava. If it is, the unit will be instantly killed. Just copy this trigger for every player, and for every terrain type if you have more than one.

The other way, after you make the paths, put regions around all the edges. Then for every region, create a trigger like this:
  • Enters
    • Events
      • Unit - A unit enters Region blah blah blah...<gen>
    • Conditions
      • ((Triggering unit) belongs to an ally of Player 1 (Red)) Equal to True [[this is so patrolling units that kill you don’t get killed too]]
    • Actions
      • Unit - Explode (Triggering unit)

Which one should you use? For thin paths, regions are technically better, because with thin ones, you can walk off the path for a bit and not die if you use the other way. But if you have a very winding path:
mazemaking05.jpg
then you will have to make thousands of triggers for every little region, and if you’re making a big maze too, it would take a verly long time to do and could easily be really boring, hard, and it might be better just to use the other way to make it so players can go off the path a TINY SMALL LITTLE BIT: that’s hardly noticeable.

However, if your paths are long and simple:
mazemaking06.jpg
Regions shouldn't matter much in a maze like this.

3) Patrolling Units.

For patrolling units, give them a permanent immolation that deals 9999999 damage, and set the AOE to whatever you want, and give the unit locust. There is 2 ways to make them patrol. One way, they star at one place, walk to the end, and then wrap back and start walking again. The other way, they just normally patrol. For normally patrolling, you just do this:
  • Patrol
    • Events
      • Time - Elapsed game time is 1.00 seconds
    • Conditions
    • Actions
      • Unit - Order Maze Patroler 0007 <gen> to Patrol To (Center of (Region blah blah))
For the other one, do the parts:
  • Part 1
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Unit - Create 1 Evil Dude for Player 6 (Orange) at (Center of Region 000 <gen>) facing Default building facing degrees
[for making him start]

  • Part 2
    • Events
      • Unit - A unit enters Region 000 <gen>
    • Conditions
    • Actions
      • Unit - Order (Entering unit) to Move To (Center of Region 001 <gen>)
  • Part 3
    • Events
      • Unit - A unit enters Region 001 <gen>
    • Conditions
    • Actions
      • Unit - Move (Triggering unit) instantly to (Center of Region 000 <gen>)
      • Special Effect - Create a special effect attached to the foot of (Triggering unit) using Abilities\Spells\Human\MassTeleport\MassTeleportTarget.mdl

4) Levels part one: Reviving.

After each level, if the maze is hard enough, some of your allies might have gotten killed, or even you. If one of your teammates reach the end, however, then you should come back alive. The easy way to do this (and the smart way, I see no reason not to do it this way), is to make your maze walkers heroes, and the use this trigger to revive them:
  • Revive Level Two
    • Events
      • Unit - A unit enters Region Level 2 <gen>
    • Conditions
    • Actions
      • Unit Group - Pick every unit in (Units of type waze walkers) and do (Actions)
        • Loop - Actions
          • Hero - Instantly revive (Picked unit) at (Center of (Level 2)), Hide revival graphics
Also, you might find this a helpfuly thing to look at for maze makeing.

5) Levels part two.

A good mave wont just be paths to walk on, patroling units, and mortar teams bombing the path. The maze of sliding koopas, is a mave map with good ideas that might get you thinking.

If youre maze is muti player, you can take advatage of that and make things that require two or more people to finish the maze. If youre useing the "terrian type kills" trigger instead of regions, you can change the path in-game. At one point, make the path me blocked off by the terrian that kills. Then make it so if one player stays in a region, the path turns to not killing, but if he leaves the region the path turns back. That way, it takes two players: One to go across, one to make the path clear.

Use this to make the path turn walkible:
  • Walk through
    • Events
      • Unit - A unit enters (youre region) <gen>
    • Conditions
    • Actions
      • Environment - Change terrain type at (Center of (your region) <gen>) to (the terrian type that doesnt kill) using variation -1 in an area of size 1 and shape Circle
And use this so when he leaves, the terrian goes back to killing-type:

  • Close again
    • Events
      • Unit - A unit leaves (youre region) <gen>
    • Conditions
    • Actions
      • Environment - Change terrain type at (Center of (Youre Region) to (killing type again) using variation -1 in an area of size 1 and shape Circle
Credits too:
Purplepoot - Fixed my terrian kills trigger.
rageingspeedhorn - I linked to a maze tut of his.
Parrothead - Some suggestions, and he seems to acually like it, witch made me want to work on it more.

This is a WIP, if you could give ideas, point out errors, trigger leaks,grammar\spelling mistakes, or suggest anything else to change or add I would like it alot.

ALSO, ANY TOPICS YOU WANT ME TO ADD TO THIS THAT MOST TUTORIALS DON'T HAVE, TELL ME!
 
Last edited:
There are tons of spelling mistakes, one of them being "witch", it is which. Also words such as can't you spell cant and by you spell bye. There are many more which you should be able to find yourself if you read through the tutorial once again.

Also your first trigger leaks a lot and is not very effective.

I know.....

If you could tell me a not leaking one to but there unstead, I would like it..

EDIT: I am aware I suck at spelling, pointing them out more spificly would help more.

Thanks for the feedback btw.
 
Level 40
Joined
Dec 14, 2005
Messages
10,532
Your first trigger should pick every maze walker and check their position, to

A) use 1 trigger instead of (no. of players)
B) be easier to deleak
C) be neater

*specifically.

But just use a spellcheck in general, and then review it for misspellings that are still words.

Also, in my experience, the art doesn't matter, since the tiles are stored on a grid, and no matter how they look the tiles are always the same size. (like those diagonal tiles in marble: they don't actually connect (except at the corner, and only the corner (where the two corners touch)), they just appear to - the marble actually connects just as much)

Next, make use of Patrol. (as you did in the first trigger; the second one is thus useless)

Next, please seperate each trigger into a seperate tag.

Oh, also, in wc3, I suggest abandoning realism. If grass was touching lava, it would light on fire. If you were that close to lava, you would die. Also, why would you have to run down a path and avoid random units that would kill you for no apparent reason in reality?

Oh, and you can skip parts of the path with a .5 second interval. I recommend .25 at the absolute most.
 
Your first trigger should pick every maze walker and check their position, to

A) use 1 trigger instead of (no. of players)
B) be easier to deleak
C) be neater
Ok, thanks.

But just use a spellcheck in general, and then review it for misspellings that are still words.
I did spellcheck, but not for misspellings that are still words.

Also, in my experience, the art doesn't matter, since the tiles are stored on a grid, and no matter how they look the tiles are always the same size. (like those diagonal tiles in marble: they don't actually connect (except at the corner, and only the corner (where the two corners touch)), they just appear to - the marble actually connects just as much)
Maybe, but people playing the map might think that they cant go there.

Next, make use of Patrol. (as you did in the first trigger; the second one is thus useless)
Acually, Ive had tons of people ask how to do the second trigger....I dont know why, but apperently some really good maze map did it like that in some parts...its more like a seperate thing appart from patroling, not another way.

Next, please seperate each trigger into a seperate tag.
K.

Oh, also, in wc3, I suggest abandoning realism. If grass was touching lava, it would light on fire. If you were that close to lava, you would die. Also, why would you have to run down a path and avoid random units that would kill you for no apparent reason in reality?
Yeah, I know...lol...I just ment for generaly storyline purposes.

Oh, and you can skip parts of the path with a .5 second interval. I recommend .25 at the absolute most.
At the most, or the least? o_O But ok.

Why dont you add a way to revive all the heroes when a new level started. It would be helpfull to people that let people choose there maze player. also add to the way you can die, like if someone uses a mortor and someone gets hit by the bullet.
OK, will do.
 
Level 40
Joined
Dec 14, 2005
Messages
10,532
Acually, Ive had tons of people ask how to do the second trigger....I dont know why, but apperently some really good maze map did it like that in some parts...its more like a seperate thing appart from patroling, not another way.
That's for 3+ locations to walk to, so you should mention not to do that for back-and-forth.

At the most, or the least? o_O But ok.
Most as in highest interval
 
That's for 3+ locations to walk to, so you should mention not to do that for back-and-forth.

Most as in highest interval

Ok.

And how would I make it check ALL of the maze walkers terrain in one trigger? Like this:
  • Lava Kills
    • Events
      • Time - Every 0.50 seconds of game time
    • Conditions
      • (Terrain type at (Position of Maze Walker: Fire Fighter 0002 <gen>)) Equal to Dungeon - Lava
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Terrain type at (Position of Maze Walker: Fire Fighter 0002 <gen>)) Equal to Dungeon - Lava
        • Then - Actions
          • Unit - Explode Maze Walker: Fire Fighter 0002 <gen>
        • Else - Actions
          • Do nothing
Ecept with more if/than/elses to check the rest?
 
Level 40
Joined
Dec 14, 2005
Messages
10,532
  • Lava Kills
    • Events
      • Time - Every .20 seconds of game time
    • Conditions
    • Actions
      • Custom script: set bj_wantDestroyGroup = true
      • Unit Group - Pick Every Unit in (Units in (Playable Map Area)) matching ((Unit-Type of (Matching Unit)) Equal to Maze Walker) and do actions
        • Loop - Actions
          • Set TempPoint = (Position of (Picked Unit))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Terrain type at TempPoint) Equal to Dungeon - Lava
            • Then - Actions
              • Unit - Kill (Picked Unit)
            • Else - Actions
          • Custom script: call RemoveLocation( udg_TempPoint )
 
This tutorial is usefull for mazing. Maybe add to what the people in the above post said.

I completle forgot about this, becaus I had to work on a map for a compition! I added most things people suggested, what ones were you talking about?


I sugest adding more things to it such as how you will die if you touch another unit and such.
|
v
For patrolling units, give them a permanent immolation that deals 9999999 damage, and set the AOE to whatever you want, and give the unit locust.
Although I havnt added "and such".
 
Level 40
Joined
Dec 14, 2005
Messages
10,532
Add in some points as to originality in mazes, and some ideas that show how a maze may be funner from a new twist.

It's always nice to see things (both aesthetic and gameplay wise) that make a maze unique, and I find that can be a deciding factor in the enjoyment of that maze; is it just another maze clone, or is it a new experience?
 
Level 3
Joined
Oct 14, 2007
Messages
37
Revive Trigger:

I have a small problem with your Revive trigger, with its current setting, players will get their heros killed upon revive and be like wtf, heres a solution:

  • Checkpoint 1
    • Events
      • Unit - A unit enters Checkpoint 1 <gen>
    • Conditions
    • Actions
      • Unit Group - Pick every unit in (Units of type Slider) and do (Actions)
        • Loop - Actions
          • Hero - Instantly revive (Picked unit) at (Center of Checkpoint 1 <gen>), Hide revival graphics
      • Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of (Picked unit)) Equal to Slider
            • Then - Actions
              • Unit - Move (Picked unit) instantly to (Random point in Checkpoint 1 <gen>)
              • Camera - Pan camera for (Owner of (Picked unit)) to (Center of Checkpoint 1 <gen>) over 0.00 seconds
              • Selection - Clear selection for (Owner of (Picked unit))
            • Else - Actions
What this does is, When a player gets to a checkpoint, all his allies and his hero get moved to the checkpoint and dead heros revive, also to prevent mass clickers from killing their heros by accident upon move, the disable selection takes care of that, players will have to reselect their hero and their camera gets moved
 
Level 3
Joined
Oct 14, 2007
Messages
37
Runnies dies if touches patroller

I did that a simple way, in the object editor, for each patrolling unit giveit an ability: Permanent Immolation, and set its AOE to something reasonable, so u wont get killed miles from the unit

Then set its attack to 999999 and your done
 
Top