• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Zephyr Challenge #10 - Results

Status
Not open for further replies.
Level 37
Joined
Mar 6, 2006
Messages
9,243
160036-albums4747-picture59500.png


160036-albums4747-picture68394.png

160036-albums4747-picture68609.png

"...and through the shadows, a circular entity emerged. I couldn't distinguish it's substance; one would say that it was a portal. What could possibly lie on the other side? Was it an entrance to another dimension or was it an exit to our dimension...?"

Create an ability that demonstrates a unique way of teleportation or summoning through a portal.

____________________________________

160036-albums4747-picture59709.png

____________________________________


160036-albums4747-picture59712.png




Rift of Mana § Adiktuz § 26/40


UNIQUENESS - 5/10

The submission lacks in terms of wow factor. I had a hard time seeing the theme, to me the effects do not resemble a portal. There is no interesting twist to the summons.


CODING - 16/20

In OnFinish and OnDamageyou use GetUnitAbilityLevel to get the ability level. In some rare scenarios, the player could abuse this, cast the spell and then level it up. It is also more logical to use the level at the time of casting.

In OnDamage, you null u variable but it is not always set. You could use elseifthere to improve readability of the code. Mana2 is less than desireable name for a variable, it could be more descriptive.

Two simultaneous casts of level 3 of the ability causes a drastic FPS frop.

THe submission is MUI and lekless, it has proper configuration options and it uses external libraries well. The coding is fine but I would have wanted to see more of your coding abilities. The main code is quite short and basic.


VISUALS - 5/10

Choosing to use thunderclap effect was not the best decision. It is overused and it adds a ground texture which does not look good when stacked. As you create so many effects, the sound integrated into the effect does not play consistently. The effects are looped in a circular shape which is not that interesting. The charm effect is alright.

The tooltip is good but the learned version text could be shorter.




Gate of Cosmic Dreamworld § Almia § 31/40


UNIQUENESS - 8/10

Most of the uniqueness from this ability comes from the effects that are mostly fine and good looking. But some minor issues arise when inspecting the spell more carefully. More details can be read in coding and visuals categories.

The submission follows the theme better than most of the other submissions.


CODING - 16/20

There is plenty of configuration options, but one thing is missing and that is the loop period. You use the value 0.04 here and there and that is the interval of updating everything in the spell. In my opinion the value is too high, the loop should update more often to provide smoother movement.

There could also be a variable for the dummy. If the spell is imported into another map, the raw code of the dummy will be different most likely and it is a chore to find all the places where the raw code is used. I counted twice in the casting trigger and twice in the looping trigger. It would be much easier to change set it only once in the configuration trigger.

Number if units in a group check is relatively slow operation, you could have an integer keeping track of the number of instances instead. The check should be done when a unit is removed from the group. This way you could cut more than 50% of the checks off when only one instance of the spell is running. With two instances, the amount of check would still be lower. Only with three simultaneous checks is your way better, but I doubt that will happen.

The spell causes heavy FPS frop with more than one instance running, and it causes a bit of strain on a computer even with only one instance. There is a FPS drop spike towards the end of the spell.

You could remove the GroupId == 4 check since it is the only option at that point. There are four different ids and you have previously checkd that it is not 1, 2 or 3.

There is a location leak since you forgot to remove GDC_Loc in the looping trigger.

A lot of repeated calculations are performed, Cos(angle*bj_DEGTORAD) and the same for Sin. You could load those values from variables.

Generally the triggering is solid, the spell is MUI and you use SetUnitX/Y to improve performance. There are no major issues, only small ones.


VISUALS - 7/10

The tooltip has some issues like a typo in the name of the spell, it says comic instead of cosmic. You shold have a space after commas and dots. The "Level Data" and "Description" texts are something that could be removed.

The special effects are lovely, but you are spamming them a lot. The spell covers a huge area and the effects are large and there's a lot of them.

The sounds are nice and there certainly is no lack of them. You are on the verge of overusing sounds but they end up complimenting the effects extremely well.

The wisps could exit the portal in a more randomized order, now it follows a pattern.




Medusas Head § Cokemonkey11 § 31/40


UNIQUENESS - 7/10

This submission is arquably the most original one. There are interesting twists like having to charge the item and the medusa being bound by a certain radius.

The summoning can be seen as happening through a portal but to me the portal is not visualized strongly enough. The effects seem too random. The Dark summoning effect appears on the ground and the arrow circle rises from ground level also before dissipating. After that the medusa falls from the sky. I think it is too disconnected.

The contest rules states that no more than one sub-ability is allowed. The summon has four abilities so that could be seen as bending the rules.


CODING - 17/20

In scope Agony function h, you could get dmg only if the conditions return true.

In itemMedusasHeadPassive, you have a debug line that is missing call, therefore the code doesn't compile.

If TOCONVERT_COUNT is 1, the conversion does not take place.

Locust id does not need to be configurable.

You do not need to null local triggers if you do not destroy them. You could have use SpellEffectEvent library so the spell trigger runs only when this spell is cast, not when any spell is cast.

The medusa could have an expiration timer so one knows how long it still lasts.

Some of your function names could be more descriptive and the code could contain more comments.

StructuredDD system throws an error after a while about not being able to allocate an id for an object StructuredDD_ddBucket.

You should null the destroyed effects to avoid leaks.

Good coding, you know jass very well.


VISUALS - 7/10

The tooltips are clean and descriptive.

The effects are well chosen, however the skulls that rotate along with the medusa seem quite odd to me. The highlight to me is the effect that visualizes the range between the medusa and the item. The arrow circle looks sweet an a bit out of place at the same time. You are doing a good job in this category. Some might find the orb spam to be a bit too much.





Chaotic Deception § EliTe § 16/40


UNIQUENESS - 5/10

The ability misses the mark here, not going along with the theme all the way. There is no portal to be seen.

A lot of the functionality could have been achieved by using Blink as the base spell, it is not unique.


CODING - 5/20

It is good to see that you have a configuration trigger there to make it easier for people to edit the spell. But you could have a lot more options there like setting the ability, dummy unit type and damage. Two of the three effect paths set in the configuration trigger are never used.

The ability does not scale with levels which is a critical issue when it come to spell making in Warcraft 3.

Another critical issue is that the spell is not MUI or even MPI. It works correctly only for player 1. The dummies could be created for neutral passive.

A leak can be found in the triggers, when you create an effect on the dummy, but do not sore it. Another leaks emerge in CD loop trigger where locations are not removed. You also forgot to destroy the group you creare and store.

The error message should not be displayed for all players.

I'm perplexed as to why you index each instance three times in the cast trigger, once is enough.

The spell could have some way to limit the damage it does, either by having a maximum number of targets hit or only damaging each unit once.

The lack of documnentation is apparent.

The actual indexing works and the looping trigger is turned off when it should so you are doing something right.

I prefer aborting spells when the order is given. Using Starts the effect of an ability

Oveall it seems like an unfinished product. There are a number of flaws, maybe you just need more experience in triggering and concentration to finish what you started.


VISUALS - 6/10

Sounds make spells that much more appealing, unfortunately your spell makes no sound. That is a major flaw.

The icon looks like a brain mushroom growing out of a book. I have no idea how that represents the spell.

The grammar, hotkey and description are of very good quality.

I like the effect very much. It goes well with a teleportation spell. It has the splash when the unit teleports, it has a death animation and the duration is perfect.

A knockback system could have made the movement of affected units smoohter.





Nether Gate § Hell_Master § 11/40


UNIQUENESS - 3/10

A lack of connection between the portal and the summoned units is apparent. Yes there is a portal and units appear in front of it, but it doesn't feel like the units were really summoned through the portal.

The spell isn't inspiring or creative. Some original twist to make it more interesting would be in order.


CODING - 5/20

There could be a configuration trigger.

You use arrays when you don't need to, for example in Nether Gate Cast. That trigger doesn't need arrays.

The same effect is created at the same location three times at the same time. You propably forgot to change the index.

There are location and special effect leaks in Nether Gate Summon.

The triggers with Unit dies event could be turned off when there are not units whose death you want to detect.

The portal unit should be set to not decay.


VISUALS - 3/10

The tooltip doesn't have highlighted hotkey, doesn't list the level of the ability and the description isn't quite as much in Warcraft style as it should be. The icon doesn't fully match the ability.

The portal effect does its job, but is over used. A different effect could have made the spell more fresh.

The portal makes no sound effect. A loud bang can be heard when the summons appear, that is not the best choise you could have made.

The summons appear out of thin air. You could have masked their creation with some special effect and alternatively or additionally made them initially transparent and then quickly fully visible over time.




Devourer § Kyousuke Imadori § 26/40


UNIQUENESS - 3/10

The spell unfortunaltely lacks any kind of portal, which was integral to the theme of the contest. I found there to be a bit of creativity so you are not left with zero points.


CODING - 17/20


The triggers and variables could have a prefix in their name to avoid clashing with other spells and systems. There could be a variable used for te unit type and the ability for easier importing. I would have preferred if the level of units that can be consumed was configurable.

The constants should be set only one time and not during every cast. Have one configuration trigger that is run at map initialization, one with the A unit starts the effect of an ability, and one for the periodic timer.

The spell is true MUI, meaning the same caster can have multiple instances of the same spell running, and that is a very good thing.

The Init trigger could precalculate some of the mathematic operations before the loop, like the 360/(Real(CrowCount)). And replace that 360 with 2*bj_PI for example and get rid of the bj_DEGTORAD.

There is no FPS drop to be noticed even at multiple instances running. Only the fourth simultaneous instance dropped my FPS from a constant 60 to about 55, so the spell is not too taxing FPS-wise. Using SetUnitX/Y with custom scripts instead of the GUI action for moving a unit instantly helps a lot here.

The Loop trigger could use some commenting as it is hard to follow the actions, for example loading a value with a key 10 from a hashtable and then checking it, or comparing values saved with keys -1 and 1 does not tell me much, I had to check what was saved with them in the other trigger. There are also a bit of unneeded repeating calculations going on, with angles.

When a unit is removed in the looping trigger, you still perform some other checks after that and even save a value into the hashtable using the handle id of the removed unit. It is not a good thing to do so and can even cause leaks.

You did a good job with the object editor, everything seems to be in order there.


VISUALS - 6/10

The expanding circle does look very...consuming. It reeks of dark atmospere. The flock of ravens or crows that appears when a unit is consuming is a nice addition.

So while the visuals do their job well, the audial effects are lacking. The circle makes no sound when it spins, nor does the consuming produce anything.

The tooltip is okay but there is a grammar error.




Assault Rift § Kyrbi0 § 17/40


UNIQUENESS - 5/10

The units basically teleport to the targeted location, and that is about it. The spell isn't that exciting or unique, but it feels good to cast, fluent. I don't see much of a portal there so you're missing the theme a bit.


CODING - 4/20

There is very little coding done. Only three actions. Two of the actions have memory leaks. There is not much configuration one can do. At least you used the correct event and the spell is MUI.

You should have set the cast point of the dummy to 0 so it instantly casts the ability when you want it to. Other than that, object editor work seems to be well done.


VISUALS - 8/10

The sound effect is very nice. The special effect that looks like Phoenix missile could be changed to something more subtle, something less fiery. It is also created on every unit so it can get a bit spammy if there are many units teleported. However it is not a bad choise.

The tooltip is written and formatted properly.




Zephyr Strike § MasterTrainer § 20/40


UNIQUENESS - 6/10

The concept isn't that original but the spell is quite cool still. More could have been done to make it go along with the theme.


CODING - 8/20

The ability has only one level which alone is a reason for a spell to be set to Needs Fix in the spell database. You are overwriting ZS_CasterLoc data in the looping trigger and therefore it leaks.

Using a variable for the ability would have been nice since the raw code changes very likely when imported into a different map.

For some reason you are playing an animation for the hero in a loop that you create dummies in. Maybe you were supposed to play the animation for the dummies.

In the looping trigger you are using arrays for groups and locations when you don't need to. Don't pick 1 random unit if the main group is empty.

The jumping system used is not ideal, it has some flaws that I covered here

You could have used a proper tree detection system.

The ability should not disable other abilities and the dummies give too much vision.

VISUALS - 6/10

The tooltip doesn't list the hotkey nor does is list the damage. There is no hotkey for learning the ability. The hero does not have the animation that the ability uses so the caster just stands there a while after casting. The effects are alright.




Swirling Portal § mckill2009 § 30/40


UNIQUENESS - 7/10

The spell is not extremely unique, but it holds its ground agains the other submissions.

The spell could be better with additional polish.


CODING - 16/20

The spell uses Jumper library, which uses PauseUnit. You should never use that for spells unless you instantly unpause the unit. implement CTLNull is optional and as you do not null anything, you do not need to iplement that module. The jump system can not make units jump directly upwards, distance can not be 0. That is a minor issue.

You should null c.effect[.casterId] after destroying it to prevent a leak.

In SP struct in the CTL loop, you declare variables for skeleton and missile. You could use a shared variable.

In CountUnits you declare a unit variable but only use it once.

You could have added an option for the summons to not use food.

When units are pulled close to the center, they jerk back and forth and it looks unpleasing.

Two simultaneous casts can cause a large FPS drop.

When units are in air and they encounter unpathable terrain, they are teleported directly to ground level and that does not look good.

The dummy units have build ability and they give a lot of vision.

Overall the coding is very good.


VISUALS - 7/10

There are the aforementioned issues with the Jump and Pull systems.

The portal looks pleasing. There is sounds for summoning and casting, but when channeling, there is no sound. Using a channeling sound could have improved the spell.




Evil Extirpation § moyackx § 30/40


UNIQUENESS - 7/10



The evil extracted form nearby enemies add to the character of the spell, it is a nice touch. The presence of a protal or portals could be more clear. If the theme had been just summoning involving no portal, your spell still would have fit the theme.


CODING - 17/20



You could have use SpellEffectEvent library so the spell trigger runs only when this spell is cast, not when any spell is cast. You don't need to null the local

trigger as it will never be destroyed.

You could have used static if ALOC since the boolean is constant. That way it does not get evaluated in-game, only when compiling.

If you add ALOC, you could set the x/y of the unit after that since the unit checks for collisions when it is created.

My opinion is that one should use the ability level at the time it is cast, you check the current ability level when channeling.

You create a unit first and then check if the unit is channeling. That can lead to a situation where the unit has not been casting for x amount of time, bt still summons a demon.

Traditionally Zephyr challenge has been a coding contest, and there is not much coding done here. But the coding is great.


VISUALS - 6/10



I have to say the dying wail of the shades is really disturning, and not in a good way.

The tooltip describes the spell accurately and it is worder well.

The effects obviously fit WC3 nicely but there is nothing exceptionally good.




Connotation § Pronto § 17/40


UNIQUENESS - 7/10

You have a somewhat unique way of creating the portal. However I just see the timers and the equation in my head when looking at the effects appear. It does its job but doesn't give me the awesome vibe that I'm looking for to score an antry highly.


CODING - 4/20

Using waits like you do breaks the spell if another unit casts it while the wait time is running. Waits are nit accurate, small waits get 0.1-0.2 seconds added to them even in single player.

Your entry is not designed to be casted by more than one unit at the same time, that will cost you some points.

The And - All (Conditions) is unnecessary.

Pause unit action pauses buffs and it can have other side effects, it should be avoided in spells.

I spotted several location leaks here and there, you should study a bit about how to avoid them. The amount of leaks is so great that it really limits the score.

In ImportImpact trigger you check the current level of the ability, however you should use the ability level at the time of casting it. Additionally the trigger could be compressed a lot. You use the same actions regardless off the ability level. Any such actions should be taken out of the if/then/else.

In my opinion you damage units way too often, once every 0.04 seconds. Spells in Warcraft 3 do not deal damage nearly that often.

The lack of easy configuration also costs you a point.

On a more positive note, you turn off looping triggers.


VISUALS - 6/10

The effects are ok and you have some sound effects there. The learn tooltip is good, though it has grammar errors. The learned tooltip could be better.




Chaos Envoy § Tank-Commander § 33/40


UNIQUENESS - 8/10

This is a great spell no doubt about it. The spell is smooth and fun to cast.

The concept is not totally clear in relation to the contests theme. The entities summoned do not do anything but orbit around, it is the vortex that throws units around. Maybe you could have made the entities grab and throw the units or attach to the units somehow.


CODING - 17/20

Function parameters do not need nulling and you should start them with non capital letter. Same thing with local variables.

Units with Locust are not picked by GroupEnumUnitsInRange so there is no need to filter them out.

In CE_GravityMove you have some repeated calculations and unneeded GetLocationX/Y function calls. In CE_ProjectileImpactDetection the unit group loop nulls u, you do not have to null it at the end of the function. Null pl only if you give it some value. When you destroy effects stored in variables, null the variable right away.

In some places you could work with radians and not in degrees since you only need the radian value. Avoid unneeded conversions.

Using a linked list would make the deindexing a lighter operation.

Instead of checking the current order of the caster 33 times per second, you could use an event.

You could have added some optional pathing detection to prevent units getting stuck in places they can't get out of.


VISUALS - 8/10

The tooltip is one of the best in the contest. The special effects are great but not perfect. The movement of the effects and units are very well done, I really like the upwards pull that grabs units. The only thing that bugs me is the lack of a sound effect when the spell is on.

Adjusting Art - maximum pitch/roll angles could have been good so the portal doesn't tilt so much when cast on the edges of cliffs for example.



Calculation Formula(Votes / Total Votes)*30 + Judge's Results*(70/40)
ContestantVotesPoll ScoreJudgeJudge ScoreTotal ScoreRank
Adiktuz32,32645,547,87th
Almia53,83154,358,12nd
Cokemonkey1121,53154,355,83rd
EliTe21,51628,044,08th
Hell_Master64,61119,323,912th
Kyousuke Imadori43,12645,548,66th
Kyrbi010,81729,830,610th
MasterTrainer21,52035,036,59th
mckill200932,33052,554,84th
moyackx21,53052,554,05th
Pronto10,81729,830,610th
TankCommander86,23357,864,01st

____________________________________

Tank-Commander
Almia
Cokemonkey11

____________________________________

Contest | Poll

 
Last edited:
Status
Not open for further replies.
Top