• 🏆 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!

Corruptor Arena BETA 0.5

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Eight great heroes lead their endless army to defeat the most horrible foe of their age - the Corruptor. But as they enter the foul creature's lair, they and their men are themselves corrupted, and the course of the ensuing battle will be determined by the willpower of the heroes just as much as by their prowess.

Features:
- An extremely EPIC battle that will probably cause LAGS on slow computers.
- Ultra-fast paced Hero-Arena-ish Gameplay that will definitely challenge you.
- Alliances are decided by vote, and can change in mid-battle as wills are broken or break free.
- A boss that favors players with good timing but can theoretically be beaten by noobs.
- Existing AI Support, bots should able to beat noobs!
- You can play ALONE and DICTATE alliances since you are 100% of the voters!
- A pretty unique respawn system - the better you fight, the longer will your soul resist corruption.
- BETA Version of my first uploaded map ever - now with 100% less Guarantee and a 200% higher chance to find bugs!

Keywords:
Chaos, Hero Arena, Boss Fight, Survival, AoS, Arena, Boss, Aeon of Strife
Contents

Corruptor Arena BETA 0.5 (Map)

Reviews
22:46, 8th Mar 2010 ap0calypse: Rejected Check the first post for a full review. Any comments on the review are welcome.

Moderator

M

Moderator

22:46, 8th Mar 2010
ap0calypse: Rejected

Check the first post for a full review.
Any comments on the review are welcome.
 
Level 28
Joined
Jan 26, 2007
Messages
4,789
Review - Version BETA 0.5

Hello, I have read your request for a review and decided to give you a full review, something I haven't done in a long time...
I you believe anything I have said is not fair towards you, or is incorrect, please say so and I will edit my review if the reason you have given is good enough.

I know that this review is extremely long (and quite negative to be honest), but if you want to continue your 'mapping-carreer', I really suggest you read this (The Hints/Tips aren't necessary though).

Review:


Presentation:

The presentation on the hive is weak, you have given one and a half sentence as a prologue and then listed some features (without BB-codes, just plain old text).
The word choice was also not my taste, words such as "EPIC" and "ultra" are allowed to be used, but not when promoting your map, this looks very unprofessional.
When I read the sentence "cause LAGS on slow computers." I immediately thought of memory leaks (more about that later), so it is a very negative sentence.

The loading screen was done according to the little rules: (X presents Y - game modes, etc...), not really my style, but not bad either.
You have added quite a lot of info-quests for such a small map, I have to admit that that is a good point, a few typo's (such as "archieve"), but nothing too serious.
This in-game appeal decreases very fast when reading the tooltips, apparantly you didn't bother enough to change some standard tooltips to something more... appealing.


Triggers:

I am guessing your main weakness is efficiency and leaks... no wonder some PC's are going to lag, you've got 4 triggers which create 10-20 times 0-30 units at a location and then you move those units somewhere.
There are a few problems in this:
- The first one is the massive amount of leaks... let's say 1 trigger creates 15 * 15 units (the avarage of both 10-20 and 0-30), that gives us 225 units/trigger, 4 triggers = 900 units, thus 900 leaks.
With the "move"-command, this becomes about 1000 leaks... every 20 seconds (unless the food > 750).
- The second problem is that you move "last created unit", but since you create a random amount of units (max 26-35, depending on the trigger), you only move one unit, not all units that were spawned.
If we add all the other leaks here, we've got a very leaky map.

Apparantly you do not undersetand what leaks are, so I will tell you right now: leaks (memory leaks) are small pieces of data that warcraft remembers, these include locations, unit groups, player groups - every time you access one of these things, warcraft will remember it (even though you've used the same location before, it will store it again), this will increase the memory that warcraft uses (therefore 'Memory' leaks) and it will slow the game (aka lag).

Only player 1 (Red) can zoom in the camera, all the other players are screwed if they zoom out too far.

The triggers are highly inefficient (integer A/B instead of variables, unnecesary high amount of triggers.


Objects:

In case you did not know, objects include everything that can be found in the object editor (spells, units, buffs etc...).
Although most units have a nice fixed damage, some do not and I can only describe this as a lack of knowledge on the object editor.
The Earth Focus tower, for example, has 400-697 damage, while you probably wanted it to be 400-700, yet the 'maximum' Damage sides per die is 100, so you just accepted it.
Well, by SHIFT + clicking the value, you can set it to 101, which will make the damage 400-700, adding another eye-candy to the map (although a user can't select the tower it really annoys me).

Most units are plain standard, a very negative point and something you should certainly change, in case you wish to update this map.
The same goes for the abilities: you copy/pasted the spells you wanted to use and didn't really do much with them: some have a decreased cooldown, most a different damage dealt (and you didn't change the tooltips in those cases), but they remain basically standard, I didn't see any custom spells (doesn't need to be triggered, every spell you used just resembles the standard warcraft 3 spells in every possible way).
And when you did find time to change the name of the ability, you didn't change the buff description (so when you're hit by Dragon's Breath, it says "This units has been hit by Breath of Fire").

Other objects, such as items, are hardly found in the map (there were a few item drops, but yet again: these were all standard).


Terrain:

The terrain is very basic: started out with a small, flat map, added a few cliffs on the side and in the middle, raised the land here and there, added a few caves/trees and changed the tileset a little.
Nothing to be proud of.
I didn't really like the terrain, I do realise that a winter terrain isn't the easiest, but there is a lot of room for improvement without affecting the gameplay too much (or perhaps it would be a good thing to affect the game play).
Either way: the amount of environmental doodads is way too low and extra's (such as a fog) aren't present.

The terrain has a small factor in the game, which is that the cliffs at the sides are natural safe-spots, for the rest it doesn't affect the game.


Gameplay:

The basic gameplay is not original at all (Kill X to win), you have added a LOT of unit spawns with some bosses (heroes) in addition.
Then again: these units/heroes are often standard and due to the leaks, people with slower PC's will soon realise that they can't do a lot after a while.
The game modes added somewhat a little variety in the game, but in truth they only change some of the teams, so the game remains pretty much the same.

I also believe that Cenarius is a lot harder than The Corrputor (Cenarius with 12.5k HP, 0 Divine armor and ress / the Corruptor with 100k HP, 10 fortified armor).
In this case, I would make Cenarius weaker, unless you want a side-boss to be stronger than the main boss...


Overall:

Due to the high amount of leaks, this game will get unplayable after a while for people with slow-avarage PC's, luckily I've got a pretty good PC, yet not everyone does, try to keep the leaks to a minimum (none if possible, but in GUI it's not possible, so a minimum is all I ask).
The general gameplay is very repetitive, not original and pretty hard (in ffa at least).

I certainly didn't like to see so many standard objects, it erased whatever fun factor there was left.

I will set the status of this map to Rejected (permantently) with a 1/5 rating, but if you do wish to update it, please tell me.
I personally think that it would be a waste of time, but I am not in the correct position to say so and will give you the chance of updating it if you wish.




Newb Guide Template



Triggering (GUI)


Basics

One of the first things you need to know is how to fix leaks, though I will go over something else first.
Variables.

You will need variables in every map you make, the only exceptions are melee-maps.
Variables are needed to count kills, remember heroes, fix leaks, basically everything that you need to recall.

The variable editor can be opened by pressing CTRL + B inside the trigger editor (or by pressing the yellow 'X' on top of the screen).
Now you can create variables by pressing the green 'X'-button, after that you can create any variable you wish.
Variables you will need in every map are:
Point variable (name doesn't matter) with an array
Group variable without array
Player Group variable without array
(these are to fix leaks)


Leaks cause lag and can crash your maps, so it's important to fix them.

For information on what leaks, check This tutorial
I would suggest reading this tutorial completely, you will get used to fixing them after a while.

Efficient Triggering

If you have triggers like:

  • Melee Initialization
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Unit - Create 1 Footman for Player 1 (Red) at (Player 1 (Red) start location) facing Default building facing degrees
      • Unit - Create 1 Footman for Player 2 (Blue) at (Player 2 (Blue) start location) facing Default building facing degrees
      • Unit - Create 1 Footman for Player 3 (Teal) at (Player 3 (Teal) start location) facing Default building facing degrees
      • Unit - Create 1 Footman for Player 4 (Purple) at (Player 4 (Purple) start location) facing Default building facing degrees
      • Unit - Create 1 Footman for Player 5 (Yellow) at (Player 5 (Yellow) start location) facing Default building facing degrees
Then you are doing something terribly wrong...
The better option would be:

  • Melee Initialization
    • Events
      • Map initialization
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 5, do (Actions)
        • Loop - Actions
          • Set loc[1] = ((Player((Integer A))) start location)
          • Unit - Create 1 Footman for (Player((Integer A))) at loc[1] facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_loc[1])
Where "loc" is a point variable with array.
This does exactly the same, but the difference is that this is easier and it does not create lag (the other trigger does).

For Each Integer X info: this action will set integer X (can be any integer) from the starting value (in this case 1) to the end value (5).
Every time the integer increases, it will trigger the actions in it, so this trigger will activate 5 times, but every time it does something slightly different.
In more general terms, they're called "loops".

As you can see, loops are very useful for efficiency, but there is more...
The If/Then/Else-function is also very useful when talking about efficiency.

I will explain this with dialogs (if you do not know what dialogs are, or how to form them, Check this tutorial.
Note: the tutorial given above is not efficient, I will do it otherwise - the tutorial is just to show what it is and how it's formed!


I will skip the dialog init trigger and just go straight to the dialog buttons trigger.
Let's just say the dialog is a hero-choose dialog with 3 buttons (Ranger, Warrior, Mage).


  • Dialog Buttons
    • Events
      • Dialog - A dialog button is clicked for Dialog
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Clicked dialog button) Equal to DialogButton[1]
        • Then - Actions
          • Set loc[1] = (Center of (Playable map area))
          • Unit - Create 1 Ranger for (Triggering player) at loc[1] facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_loc[1])
          • Game - Display to (All players) for 8.00 seconds the text: (|c00444488 + ((Name of (Triggering player)) + '|r has chosen the Ranger))
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Clicked dialog button) Equal to DialogButton[2]
        • Then - Actions
          • Set loc[1] = (Center of (Playable map area))
          • Unit - Create 1 Warrior for (Triggering player) at loc[1] facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_loc[1])
          • Game - Display to (All players) for 8.00 seconds the text: (|c00444488 + ((Name of (Triggering player)) + '|r has chosen the Warrior))
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Clicked dialog button) Equal to DialogButton[3]
        • Then - Actions
          • Set loc[1] = (Center of (Playable map area))
          • Unit - Create 1 Mage for (Triggering player) at loc[1] facing Default building facing degrees
          • Custom script: call RemoveLocation(udg_loc[1])
          • Game - Display to (All players) for 8.00 seconds the text: (|c00444488 + ((Name of (Triggering player)) + '|r has chosen the Mage))
        • Else - Actions
As you can see, I can combine all dialog buttons for all dialogs into 1 trigger, making it a lot easier to scroll through the triggers...
(Triggering Player is the player clicking the dialog).



Kick-triggers are often done like this by newbs:

  • Kick
    • Events
      • Player - Player 1 (Red) types a chat message containing -kick blue as An exact match
    • Conditions
    • Actions
      • Game - Defeat Player 2 (Blue) with the message: LOLOL NOOB!!!!
  • Kick
    • Events
      • Player - Player 1 (Red) types a chat message containing -kick teal as An exact match
    • Conditions
    • Actions
      • Game - Defeat Player 3 (Teal) with the message: LOLOL NOOB!!!!
  • Kick
    • Events
      • Player - Player 1 (Red) types a chat message containing -kick purple as An exact match
    • Conditions
    • Actions
      • Game - Defeat Player 4 (Purple) with the message: LOLOL NOOB!!!!
And this for every player...

As you can see, there are 2 mistakes:
  1. You will need a lot of stupid triggers for this
  2. "LOLOL NOOB!!!!" makes the map look like crap

I prefer one of these methods:

  • Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set Color[1] = blue
      • Set Color[2] = teal
      • Set Color[3] = purple
      • Set Color[4] = yellow
      • Set Color[5] = orange
      • Set Color[6] = green
This sets up the colors... obviously (it's best to merge this with an already existing map init trigger)

  • Kick
    • Events
      • Player - Player 1 (Red) types a chat message containing -kick as A substring
    • Conditions
    • Actions
      • For each (Integer i) from 1 to 6, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Entered chat string) Equal to (-kick + Color[i])
            • Then - Actions
              • Game - Defeat (Player((i + 1))) with the message: You have been kicked
              • Game - Display to (All players) for 7.00 seconds the text: (|c00444488 + ((Name of (Player((i + 1)))) + |r has been kicked))
            • Else - Actions
And this is the kick-trigger, if the message is -kick + (color defined in map init), then the player matching that color will be kicked.
Easy and efficient...


This method is even easier, but a bit different: red will have to say -kick X (where X is a number)
  • Kick
    • Events
      • Player - Player 1 (Red) types a chat message containing -kick as A substring
    • Conditions
    • Actions
      • For each (Integer i) from 1 to 6, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Entered chat string) Equal to (-kick + (String((i + 1))))
            • Then - Actions
              • Game - Defeat (Player((i + 1))) with the message: You have been kicked
              • Game - Display to (All players) for 7.00 seconds the text: (|c00444488 + ((Name of (Player((i + 1)))) + |r has been kicked))
            • Else - Actions
That's it... the entire kick-trigger, that's easy, right?



Objects


Units

I shall start with perhaps the most annoying thing: tooltips and hotkeys.
If your tooltips/hotkeys are insufficient or wrong, the game won't progress smooth.
A good tooltip contains all necessary information without it being too long, TD's are the best example: those tooltips really need Damage, Attack Speed, Range, Abilties (and additionally DPS, Ground/Air).
Tooltips are meant to provide information, not te be a part of the story/lore!.

Hotkeys should be easy to use and to remember.
In my TD, I have used:
E - R - T - Y - U - - - P
D - F - G
C - V - B

This is the same on both QWERTY and AZERTY!
The main block (left) is used to build towers, Y is for spells, U is for upgrades and P is to Sell towers (the other side of the keyboard).
Randomly using hotkeys is better than nothing at all, as long as they do not override eachother and they must be correct.

Important: use structure!
Put all units that belong together in the same race (e.g.: all heroes in human, all creeps in orc, all neutrals in Night Elf, ...).
If you ever need to change an object, you'll know exactly where to find it, this will save a lot of time (believe me... it will).

Spells/Buffs

About the same as units: the tooltip and hotkeys are important for the spells.

Do not use standard spells in a custom map! Change them as much as possible - or just so it fits in the map!

When you change the name of a spell, change the name of the buff as well!
e.g.: If you cast 'Ghost Form' (based of Wind Walk) and the buff says "Wind Walk: This unit is..." - that's just painful.


Terrain


Basic Info

Do not abuse the cliffs, WEU and JNGP have a better terrain-tool so you can use the terrain height-tool to make cliffs.
(Note: only use WEU for terraining purposes)
Use the terrain height tool a lot... a flat terrain sucks (don't overdo it, when you notice you're overdoing it, use the smooth tool).

When creating cities, make it look like a city...
A city is not a place where houses have been randomly placed, nor does it contain any other random props... a city is structured, thus you must also do so.


Doodads

Spammed cinematic doodads do not look good, avoid using them.

Use environmental doodads and don't be afraid to use too many of them... they're meant to be used more than other doodads.
When creating a forest, you will really need to use a lot of them: shrubs, rocks, fallen trees. hollow tree trunks, flowers, ... all of these are very common in forests, then why not use them in a forest in warcraft?


Description


A description is highly important, it will attract people to play your map and bad descriptions make the creator of the map look like a beginner.
To learn more about this, read my tutorial about it.
 
Last edited:
Top