Loading...
  OR  Zero-K Name:    Password:   

Brackman's Tools of Witchcraft and Widgetery

22 posts, 1755 views
Post comment
Filter:    Player:  
Page of 2 (22 records)
sort
I made various widgets that I have tested for some time now. Today, I share the best ones with you!

I publish each of them under GNU GPL v2. They all deactivate themselves if no longer needed, for example if spectating.

Overshooter 3.4
AoE units overshoot on closest enemy outside range

This one became famous as the insane Badger widget in this battle. But that is only the tip of the iceberg of what it can do. Due to AoE, many units have a higher effective range than their nominal range. This widget makes full use of it. For example, Warrior=Reaver has higher range than Scallop. But a Scallop with my widget has higher range than a Warrior without it. A Warrior with my widget has even higher range than a Scallop with my widget.
Scallop < Warrior < Brackman's Scallop < Brackman's Warrior
Here you can see a picture of ranged Warriors in action. (Yes, they are actually damaging those buildings.)
My widget extends the range of the following units: Glaive, Warrior=Reaver, Pyro, Wolverine=Badger, Tremor, Scallop, Venom, Recluse, Brawler=Nimbus, Spidermonkey, Tiamat, Kodachi, Corsair, Dooms Day Machine=Desolator. The units usually attempt to overshoot their range by 200. Only Tremor overshoots by 500 and Wolverine by infinity.

My widget keeps track of the overshooter units, iterates through them efficiently and makes sure that no more than 1 command per frame is sent to not overload the server with commands. If done naively, an overshooter widget wouldn't work properly for units that move away from the enemy because then, the target would become out of range until the next update or one would have to reduce range in general. In order to use maximum range without too high update frequency, my widget considers the future 3D movement of the unit until the next update in the target calculation.

It does not interfere with player commands: By keeping track of which commands are from the player and which ones are from the widget, it gives priority to player commands. It also obeys fire states and treats "return fire" as "fire if not cloaked". Nowadays, return fire is only accessible through the GUI as default state, though. It also removes its own commands if enemy units enter the nominal range because then, the target priority widget is more important than distance minimization.

Nano Factory Assist 2.0
When newly built or received from other player, Nanotowers assist closest own factory in range or closest allied factory if no own in range

It's not a perfect nano widget, but in contrast to other ones, it ensures that nanotowers do their most important job reliably: assist the factory. Strider Hubs are also treated as nanotowers and Missile Silo and Strider Hub are also treated as factory. If you already have nanotowers, you can just place the nanoframe of another one and walk away to expand. The other nanotowers will automatically finish the new one and then go back to assisting the factory that they had previously assisted. They will remember if you have changed their target factory manually.

Scorcher Close Attack 1.1
If Scorcher receives an attack command, a move command close to the target is inserted before

If you attack with Scorcher, you want to get close. You usually don't want to stop when you barely have your enemy in range. I was wondering why my widget's behavior was not the default. My widget also works as it should if a queue of multiple commands is given to multiple units of which some are Scorchers.

Idle Factory Reminder 2.0
Reminds oneself of own idle factories

This is the most simple but also most useful widget. It outputs notifications about your idle factories and triggers a warning sound.

Squad Autojoin 3.1
Invites players of own team with < own WHR-500 if they are the only ally to join squad

I have experimented with different settings for squad joining. My first intuition was to only join with good players. My tests have shown that this makes players less proactive and less willing to do good risky and creative strategies. Also, commands of front units may inerfere. It is much better to join with noobs as they don't have the APM to meaningfully interfere with you, but you can do a lot of good with their idle units. So I have come to the conclusion to only join with players whose WHR is smaller than yours by 500. The widget also explains how to join to the invited players automatically.

These widgets are not perfect, but probably good enough to be helpful.
+14 / -2
3 years ago
I've always wished that both the Overshooter and Scorcher widgets' behavior had been the default. It just makes sense to me that units (their AI) would know their own range and how to use their weapon most effectively. On the other hand, in the case of Soorchers you sometimes want to keep away from things, so it's not always good to come in close for maximum damage... another button on the UI if this makes it into the core game eventually?..

And thank you for translating some of the old unit names to new ones in your post. Those who joined in the last few years (yes, years!) would not know offhand what a Warrior or a Wolverine is if they are not familiar with the game's lineage.
+3 / -0


3 years ago
quote:
If Scorcher receives an attack command, a move command close to the target is inserted before

If you attack with Scorcher, you want to get close. You usually don't want to stop when you barely have your enemy in range. I was wondering why my widget's behavior was not the default. My widget also works as it should if a queue of multiple commands is given to multiple units of which some are Scorchers.

This is the default behaviour, with exceptions for targets where the behaviour would be annoying or lead to hugging explosive units. The decision to dive or kite is an important one for a lot of Scorcher matchups. Make PRs to fix the behaviour if it is broken or to tweak the list of dive units if you think its appropriate.
+2 / -0


3 years ago
quote:
Overshooter 3.3
AoE units overshoot on closest enemy outside range

Perhaps you could put your 3D range and movement prediction code to use here: https://github.com/ZeroK-RTS/Zero-K/issues/4479

ZK already has 3D range utilities so perhaps you could compare them.
+1 / -0
quote:
Idle Factory Reminder 1.2
Reminds oneself of own idle factories


Nice to have, but doesn`t just remind yourself but is readably to all spectators as well (and probably to allies? have never been in a team with the user).

Is there a way to make the notification exclusively for the user so it doesn`t clutter the chat? Especially if, say, 11 ppl out of 16 in a team are using it?

Less important: It could also say: "Construction-queue finshed" or something like that.

[Spoiler]
+2 / -0
Most of these widgets I see are more of a player preference as to whether they want to use them, however the Overshooter widget seems incredibly powerful.

I imagine we need to have either no-one using this widget or everyone using it ASAP to maintain an even playing field for all players, as this isn't down to preference - no one will want to play glaive vs glaive with a range disadvantage.

With this in mind I imagine we have two options to maintain game integrity and balance, get this widget default as soon as practicable, or have the widget banned.

I imagine as you put time and effort into this widget you'd much prefer it to be integrated into the game and balance changes made to make the relationships between units back to an even state. With this in mind do you have any values which those that make the balance changes ( AUrankAdminGoogleFrog + ?) could use as a baseline? By this I mean things like the range value glaives would need to be given with your widget to be equal to current glaives, without widget. I've no idea how badger would be balanced, as before this widget I consider them an S tier unit and they look insane now.
+3 / -0
3 years ago
AUrankAdminGoogleFrog
So do you want to make set target commands to a position out of range fire at the edge of the range by default? And consider command option keys with it? Or which problem are you trying to solve?

If this is it, then this part of my widget is certainly a good way to do it. I can also think of a different way to do it gadget-side with pros and cons. If you send a link to those 3D range utilities, I can probably take a look.

GBrankPRO_rANDY
I think that all possible widgets should already be considered in balance. That's probably not the case, though. Exact numbers are hard but possible to give because DPS falls off quickly with overshooter range.

DErankkatastrophe
quote:
Is there a way to make the notification exclusively for the user so it doesn`t clutter the chat?
Yes. Just replace line 34 by
        Spring.Echo(text.." is idIe")
line 36 by
        Spring.Echo(text.." is idle")
[Spoiler]and line 44 by
        SendNotification("game_message:"..spGetPlayerInfo(myPlayerID).."'s "..spGetHumanName(unitDef))
as Nano Factory Assist does it. It will not be highlighted with color and sound, though. According to FIrankAdminAlcur, you can also make a private big text by
gl.Text(text, textX, textY, fontSize, "o")
+0 / -0
quote:
DErankBrackman I think that all possible widgets should already be considered in balance. That's probably not the case, though. Exact numbers are hard but possible to give because DPS falls off quickly with overshooter range.


Balance changes to do with range are normally small tweaks (+/- single digit %). Here we have lots of units getting double digit % range changes. The game can't be balanced properly for a mix of haves and have nots for this widget.
+1 / -0
nvm
+0 / -0
3 years ago
I find it jarring that people are celebrating the release of these. It's only because he got caught.
+2 / -5
3 years ago
If I wanted to hide it, I could have released only the Badger part. But I have released the full Overshooter for the other units and other widgets as well and have advocated the introduction of a public MM widget archive.
+3 / -0
I share Randys opinion about the overshooter-widget and want to add another aspect about it: the audio. It makes it a lot harder to percieve what is going on by your ears. In https://zero-k.info/Battles/Detail/1185842 there was a moment at the beginning of the game where an enemy glaive just ran through our base shooting at nothing. I was confused because i thought an actual interaction would take place. Yes, that is maybe a minor issue and yes, it was possible to somehow do that on purpose before (ground-attack), but not to that extend.

Sorry DErankBrackman, i really don`t want to shit on your work, nor do I want to attack you as a person. I am sure you spend a lot of time on this. But I don`t get how someone would think that messing with the range of units is a good idea in the first place.

quote:
I think that all possible widgets should already be considered in balance.


Come up with a list of ALL POSSIBLE widgets... I mean, you cannot be serious with that, can you?


About the Idle-reminder:

Eh I am not sure I get that right. Do you want me to change the code of my own iteration of the widget or are you going to do it in the "main-version" that is downloadable? Because if you want me to change MY version, that doesn`t solve my problem. (I don`t want to have to set all the people that use this widget to "ignore".)
+2 / -0
3 years ago
If you quote me, then please do it right: I also said that while they should, they probably are not all considered. All possible strategies are supposed to be considered in balance. But they probably aren't either. Nonetheless, a list of all possible strategies is not necessary. A widget can just be seen as an implementation of a strategy. What is possible is clearly limited by gadgets.

I recommend to move longer arguments about widgets in general to this thread, potentially with a quote to here.

I will post an updated version of the Idle Factory Reminder with highlighting and without any spam.
+2 / -0
I can move it to the other thread, but any further comments are too specific. Maybe private conversation would be better.

(Ich hätte einfach ein paar Kritikpunkte an deinen Grundprämissen. Und irgendwie schaff ich es nicht richtig, nicht aggro zu wirken wenn ich Englisch benutze :D )

But: since I have nothing to say anyway, I can only put my trust into AUrankAdminGoogleFrog to find a way that this doesn`t ruin the game as I fear it has the potential to do so.
+0 / -0


3 years ago
See http://zero-k.info/Forum/Thread/34108?postID=243706
+0 / -0
3 years ago
I updated the Overshooter to version 3.4 in the first post. It now announces its use in public chat.

In contrast to that, the updated Idle Factory Reminder 2.0 does no longer spam the chat. It shows a private highlighted text and sound warning.
+3 / -0
3 years ago
quote:
Idle Factory Reminder

A similar small icon under "idle com icon" but for Factory/Plate would be nice.
+2 / -0
3 years ago
Going into icons is currently beyond what I find efficient to make. But someone who knows icons can take my widget and simply replace the text command with an icon command.
+0 / -0
3 years ago
Can the Idle Factory Reminder, Nano Factory Assist and Scorcher Close Attack widgets be added to the core game (probably not default UI)? I have tested them a fair bit for bugs and they just work.
+1 / -0


3 years ago
quote:
Can the Idle Factory Reminder, Nano Factory Assist and Scorcher Close Attack widgets be added to the core game (probably not default UI)? I have tested them a fair bit for bugs and they just work.

File them as pull requests, preferably separate.

Scorcher Attack sounds like something that should rather be part of the tactical AI gadget, and iirc it is already supposed to be this way.
+1 / -0
Page of 2 (22 records)