• 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.

GUI Duel Challenge - Results

Status
Not open for further replies.
Level 26
Joined
Oct 2, 2011
Messages
2,490
232216.jpg

RHEIKO WINS!
Rheiko +7 Reputation
Daffa the Mage -7 reputation
(Reputation will be adjusted soon)


FinalScore = (30*PollVotes/POLL_VOTES_TOTAL) + (70*JudgeScore/JUDGE_SCORE_TOTAL)

Poll Score:
Daffa the Mage - 0 (0 votes, 0%)
Rheiko - 30 (9 votes, 100%)

Judge Score:
Daffa the Mage - 58.6
Rheiko - 57.3

Total:
Daffa the Mage - 58.6
Rheiko - 87.3


Judging by KILLCIDE

  • Code - 16.50 / 20.00
    • Code Interface (4.00 / 5.00)
      • Configurability (3.00)
      • Documentation (1.00)
        • -1.0 -> Config trigger had clear and concise documentation. However, the triggers that ran the core of the spell had zero documentation. I understand that the spell concept was not complex, resulting in straight forward code. However, documentation is to help everyone understand your thinking process / logic a lot easier for everyone. At the very least, you could have left comments about your If/Then/Else blocks.
    • Code Performance (12.50 / 15.00)
      • Efficiency (8.50)
        • -0.25 -> Judge_PercentDamage[] / 100 is a constant which could have been calculated on map init instead of being recalculated for every affected unit
        • -0.50 -> (Owner of Judge_Source) should have been stored in a variable instead of calling the function every iteration in the unit group loop
        • -0.25 -> Judge_DPS[] x Judge_LOOPTIME is a constant which could have been calculated on map init instead of being recalculated for every affected unit
        • -0.50 -> I do not understand the purpose of the first If/Then/Else block in your loop that adds Judge_EffectPos. Why could this not have been done on cast? You also destroy an effect that is possibly never created (this would only work for units that were already affected by another instance, but this type of check should still be done on cast)
      • Leaks (3.00)
      • Errors (1.00)
        • -0.50 -> Units are not properly filtered by the spell. As of right now, your ability can hit magic immune units, dead units, and structures
        • -0.50 -> Set Life is not a proper way to deal damage to enemy units as it does not account for armor types and will not register any DDS
    • Other Suggestions
      • There is no need to initialize non-array unit groups as they are already initialized on map init by default
      • Each SFX should have its own attachment point as some effects do not always look good on overhead, origin, etc.
      • On cast, you store the Key of (Picked unit) instead of Judge_Victim
      • Instead of checking if the loop trigger is already on, it would be faster to use integers (Judge_COUNT >= 1)
      • On loop, you store the Key of (Picked unit) instead of Judge_Victim
      • Turn off (This trigger) -> Turn off Judge Loop

  • Concept - 8.00/10.00
    • I am personally not a fan of the concept because of its simplicity. The only feature of the spell that stands out is the inability for the spell to kill enemy units. However, the simplicity is also an advantage as it will easily find its place in any melee or custom game.

  • Visuals - 9.00/10.00
    • Tooltip described mechanics of the spell in a concise manner. Chosen effects fit the spell concept perfectly. However, it would have been better to see a different effect for enemy units.

  • Total - 33.50/40.00



  • Code - 14.75 / 20.00
    • Code Interface (4.25 / 5.00)
      • Configurability (2.25)
        • -0.25 -> SFX should have a configurable attachment point
        • -0.25 -> Loop timer should have been configurable
        • -0.25 -> Attack type and damage type should have been configurable
      • Documentation (2.00)
    • Code Performance (10.50 / 15.00)
      • Efficiency (7.00)
        • -0.50 -> You should preload effects / unit data. There is an extremely noticeable stutter when you first cast the spell
        • -0.25 -> 360 / FFO_Numbers[] is a constant which could have been calculated on map init instead of being recalculated for every newly created dummy unit
        • -0.50 -> (On cast, (Owner of FFO_Caster[]) should have been stored into a variable instead of calling the function per loop iteration
        • -0.50 -> The distance at which the dummies spawn and travel to the caster is constant. With that in mind, instead of calculating the distance between every dummy and the caster, just keep track of how much distance it moved
        • -0.25 -> FFO_Damage[] x 0.03 is a constant which could have been calculated on map init instead of being recalculated everytime you need to deal damage
        • -0.50 -> Instead of creating a dummy caster for every unit that is hit by the spell, create one on map init and just move that one around
        • -0.50 -> When you create the dummy caster, store it into a variable and reference that instead of calling the (Last created unit) function 3 times
      • Leaks (2.00)
        • -1.00 -> Special effect leak on cast when you create the dummy units
      • Errors (1.50)
        • -0.50 -> Ability can damage magic immune units
    • Other Suggestions
      • The speed configurable should note if the value represents per loop iteration or over a second
      • You stored Slow (Ice) as a configurable on map init, but you never used it and still referenced the ability directly
      • You use RemoveLocation(udg_FFO_Loc[1]) in Stage 1, but I do not see you storing or using Loc[1] anywhere in that stage
      • It is not necessary to null the global variables; especially when you are using dynamic indexing
      • Turn off (This trigger) ->Turn off FFO Loop

  • Concept - 8.00/10.00
    • The concept at first looks interesting, but it is rather simple. I would have added another mechanic where getting hit twice by the ability will freeze you. The slow was a nice addition as it will give units or heroes that use this ability a nice utility.

  • Visuals - 10.00/10.00
    • Tooltip described mechanics of the spell in a concise manner. Chosen effects fit the spell concept perfectly. Spamming the spell did not cause any noticeable drops in FPS, but my computer is rather beefy, so that might be something to consider.

  • Total - 32.75/40.00
 

Rheiko

Spell Reviewer
Level 26
Joined
Aug 27, 2013
Messages
4,215
Well, I lose in term of Judge score. :p It was real close though. XD
HAHAHA!

This is amusing. It is quite a match, @Rheiko :)
Indeed. Guess, you need to consider some pleasing effect on your spell next time. :p

@KILLCIDE
You stored Slow (Ice) as a configurable on map init, but you never used it and still referenced the ability directly
Yeah, well, I forgot about it because I was trying to finish it asap I missed that one when I doing a recheck before submitting. XD

Turn off (This trigger) ->Turn off FFO Loop
I didn't know it actually made a difference so just wondering. How did that make a difference? o_O
 
Well, I lose in term of Judge score. :p It was real close though. XD
Yeah, it's quite a battle.

Indeed. Guess, you need to consider some pleasing effect on your spell next time. :p
I'll take that note next time our sword cross.

"The next time our blades cross, I shall emerge victorious."
 
In regards to judging, I just wanted to note out that the initial damage is meant to always get below 100% (try the math) :>
What are you referring to?

I didn't know it actually made a difference so just wondering. How did that make a difference? o_O
Very little, but that is why I put it under "Other Suggestions". Any comments made there did not come with point deductions.
 
SetLife is not a proper way to deal damage to enemyunits as it does notaccount for armor typesand will not register anyDDS

This one. Unless I was mistaking it.

Anyway, even with max judge score, I still lost :p

I'm just checking if I get the right idea so I can get the content improved.
 
Long live the GUI!

Oh okay I see. Although, I still dont quite understand what you mean by "to always get below 100%"? I don't see how using a proper Deal Damage function would inhibit that.
@KILLCIDE
True that. I guess it just occurs to me I should use the set health to gain the 'PURE' damage effect I aimed there.
 

EdgeOfChaos

E

EdgeOfChaos

Enhanced damage type should pierce armor.
SetLife also works, as long as it's appropriate for the map. However in a system, I suppose that's not good.
 
Level 3
Joined
May 12, 2015
Messages
32
I have found the combination, it's Chaos + Universal according to my research. Could be troublematic if Chaos gets modified though.
Except that this deals no damage to ethereal units. To properly deal pure damage you need to use Magic + Universal with magic dealing 100% to all armor types (changed in gameplay constants) if unit is ethereal (and use Chaos + Universal otherwise) or use a workaround with damage systems.
 
Except that this deals no damage to ethereal units. To properly deal pure damage you need to use Magic + Universal with magic dealing 100% to all armor types (changed in gameplay constants) if unit is ethereal (and use Chaos + Universal otherwise) or use a workaround with damage systems.
True that, in the end, it's better with the current setup.
 
Status
Not open for further replies.
Top