FAQ  •  Register  •  Login

Issues with getting the timers right

Moderator: MiRai

<<

oldgoat

Posts: 35

Joined: Mon Dec 29, 2014 2:01 pm

Post Fri Jan 02, 2015 1:00 pm

Re: Issues with getting the timers right

Update:

1. I changed all timers to be max 1 timer, and removed ALL references to "Reset Timer" (phew, thanks!)
2. I removed the "Disable Virtual Combat" Keymap instructions and replaced them with a Key map Step State instruction where I turn off/on again the Virtual Combat Hotkey

What SEEMS To happen is:
The DPS rotation runs appears to run all 8 steps pr. spam key for the first round, so it seems like the spell cooldown timer is not honored.

The spell duration timers appear to be working, but they get mixed up with cooldowns not apparently working/being honored.
<<

firescue17

User avatar

League of Extraordinary Multiboxers

Posts: 584

Joined: Wed Sep 19, 2012 7:37 am

Location: Omaha, NE

Post Fri Jan 02, 2015 3:14 pm

Re: Timers again.. I'm not getting it!

oldgoat wrote:I usually tend to get good results adding .3s to roundtrip commands such as /xtarget and 1.5s to spells. This has not failed me in the last 2 years
I can appreciate this. I use /pause 5 **in a /social.** I used /pause 6 for years, changed to /pause 5 when I got my new computer and quite frankly, I never tried to get it tighter. We're in the same ballpark. I thought maybe you were trying to refresh a dot exactly upon expiration, hence the reference to the "phantom tick." I believe various posts in this thread are on the right track in that 1/10 of a second from ISBoxer -> Client -> Server is going to be "different" than 1/10 of a second inside a /social directly from Client -> Server.

____________________________________________________________________________________________________________________________________________________________________________________________

oldgoat wrote:Now, getting my rotations right is essencial to getting the max dps out of each toon ... I tend to try to mix short-term buffs across characters, i.e. shaman epic + monk disciplines. This requires a very fine degree of timing to get done right, which is why I am obsessing about the timers
Timing abilities across / between / among Characters is an issue I have been working on it for almost 3 years :)

We're trying to mimic various iterations of complex logic with Virtualization and enabling / disabling Key Maps, Mapped Keys, and Mapped Key Steps:
Code:
IF Shaman Epic Timer Pool = 0 (ready to use) && Monk Discipline [x] Timer Pool = 0; THEN Do Mapped Key <Shaman - Monk Epic Burn>;
IF Shaman Epic Timer Pool = 0 and Monk Discipline Timer Pool < 30 seconds; THEN Do Mapped Key <something else to fill the gap until Monk Discipline Timer Pool = 0>;
ELSE Shaman Epic Timer Pool > 30 seconds && Monk Discipline Timer Pool > 30 seconds; THEN Do Mapped Key <some other filler>.

The above is some imaginary example to illustrate the point. As you mentioned, I'm not even going to debate the pros and cons of what stacks best with what lol.

____________________________________________________________________________________________________________________________________________________________________________________________

With that said;
oldgoat wrote: ... [DPS is] much lower for named /longer fights ...

My profile contains the best solution I have found *so far* for maximizing DPS on Named or Events which you have time to plan for. Max DPS is accomplished by adding a Virtualization Toggle to your DPS Rotations. The root discussion of which is posted here.

Code:
Mapped Key "Cycle Stances" in "000: HOTKEYS" Key Map:
Step 1: Do Mapped Key "Stance: Passive" in "010: TOGGLES" Key Map
        Mapped Key "Stance" in "010: VARIABLES" Key Map is now "Stance: Passive" in "050: VIRTUAL COMBAT: DPS TEMPLATE"
Step 2: Do Mapped Key "Stance: Aggressive" in "010: TOGGLES" Key Map
        Mapped Key "Stance" in "010: VARIABLES" Key map is now "Stance: Aggressive" in "050: VIRTUAL COMBAT: DPS TEMPLATE"
Step 3: Do Mapped Key "Stance: Balanced" in "010: TOGGLES" Key Map
        Mapped Key "Stance" in "010: VARIABLES" Key map is now "Stance: Aggressive" in "050: VIRTUAL COMBAT: DPS TEMPLATE"

The purpose of this toggle is to cycle among three discreet DPS Rotations: "Aggressive," "Balanced," and "Passive."
"Stance: Aggressive" is a separate DPS Rotation containing abilities with a cooldown greater than 15 minutes to be used in a Burn scenario;
"Stance: Balanced" is a separate DPS Rotation containing abilities with a cooldown between 5 minutes and 15 minutes to be used as soon as they're available to raise average DPS while grinding trash;
"Stance: Passive" is a separate DPS Rotation containing basic abilities with cooldowns between 0 minutes (instant recast) and 5 minutes such as auto-attack, spellcasting, and some AAs and clickies to be used when cooldowns need to be preserved or restored in preparation for a Burn.

EXAMPLE USE
I'm churning along in Balanced stance killing trash mobs. AAs, Epic Clicks, Swarm Pets, etc. are being used as soon as they come off cooldown. Mobs are dropping left and right. Bam! named pops up on tracking, or I've cleared to the end of the dungeon or whatever the case may be. Point being, I know I need to prepare for a big Kill somewhere in the next 10 minutes after I clear around the Named or down the last hallway, whatever ...

I toggle stances from Balanced to Passive. My characters stop using special abilities; only auto-attack and spell casting. Special ability Timer Pools keep ticking down as I refresh clickies and damage shields in preparation to pull the Named. If I planned appropriately, long duration discs on 30 to 45 minute cooldowns are ready (because I never used them in the first place). Medium and Short duration cooldowns are ready because I stopped using them as soon as I switched into Passive. I toggle one last time into Burn, pull the mob, set Rampage, and let loose with everything possible on all characters at once.

In addition, the Stance Toggle is the reason for building Mapped Key Step States with an explicit Timer Pool reset. Shaman AA Canni is used in four different DPS Rotations, AA Malos in five, AA Swarm Pet in five, Group Heal Spell in six. Each ability needs to disable the corresponding Step in multiple unrelated DPS Rotations.
<<

oldgoat

Posts: 35

Joined: Mon Dec 29, 2014 2:01 pm

Post Sat Jan 03, 2015 2:10 am

Re: Issues with getting the timers right

Thanks for all the great advice, firescue!

Reverting to "Keymap Off/on in .." works, as does disabling the mapped key "DPS rotation" in "Virtual Combat". These two are the only ones that seem to work.

I guess adding one second to all socials will have to do for now. I'm parsing the necro at 18k dps on long fights against combat dummy for the Combat Rotation (this I'm going to rename to "Trash Fight"), which will have to do. My monk, druid, and enchanter are around 12k dps for the same fights, ending up at around 44k dps - should be better, but then again, I haven't started looking for optimal dps rotations for each toon yet. and I'm extending my socials to do the AA's in conjuction with spells, i.e. "Scent of Terris AA" goes into the same EQ Social as one of the spells being cast.

Next is the different stances - I'm thinking if a named pops, I just change stance from "Trash Fight" to "Named Fight" and set up a rotation using more discs, AA's and such.

Would I be right in thinking that all I have to do to change stance, is to remap a virtual key in my "Combat Hotkeys" where I do the mapping?
<<

firescue17

User avatar

League of Extraordinary Multiboxers

Posts: 584

Joined: Wed Sep 19, 2012 7:37 am

Location: Omaha, NE

Post Sat Jan 03, 2015 3:31 am

Re: Issues with getting the timers right

oldgoat wrote:Next is the different stances - I'm thinking if a named pops, I just change stance from "Trash Fight" to "Named Fight" and set up a rotation using more discs, AA's and such.

Would I be right in thinking that all I have to do to change stance, is to remap a virtual key in my "Combat Hotkeys" where I do the mapping?

Your approach is slightly different than mine. I'm swapping out entire Key Maps whereas you're swapping out a single Mapped Key. Essentially it adds another layer of Virtualization (third or fourth layer) depending upon your approach.

Code:
Layer 1: Hotkey                                                = Do Mapped Key "DPS Rotation" in "Virtual Combat" Key Map
Layer 2: Mapped Key "DPS Rotation" in "Virtual Combat" Key Map = Do Mapped Key "Stance" in "Variables" Key Map
Layer 3: Mapped Key "Stance" in "Variables" Key Map            = Do Mapped Key "Trash Fight" in "Class Combat" Key Map (this sets a default start value to pass)

Layer 4: Mapped Key "Trash Fight" in "Class Combat" Key Map    = Multi-step Mapped Key [x]
         Mapped Key "Named Fight" in "Class Combat" Key Map    = Multi-step Mapped Key [y]


At which point you would add a second Hotkey to cycle a two Step Mapped Key toggle:
Code:
Step 1: Mapped Key "Stance in "Variables" Key Map is now Mapped Key "Named Fight" in "Class Combat" Key Map
Step 2: Mapped Key "Stance in "Variables" Key Map is now Mapped Key "Trash Fight" in "Class Combat" Key Map


To use the same example as above with your Naming schema, you launch your Character Set, log-in and run around spamming DPS Rotation which outputs [x] steps in Mapped Key "Trash Fight" (the default value). Named pops, you cycle your Stance Toggler once, "Stance" is now "Named Fight." You kill the named spamming the same DPS Hotkey, which is now outputting [y] steps in Mapped Key "Named Fight." Named dies, get your phat loot, cycle Stances once more; "Named Fight" is now "Trash Fight" and continue on your merry way.

Great question! My Virtual Combat Queue is 9 layers deep. We're almost halfway done. A full blown explanation of which would require one awful disaster of a flow-chart :)
<<

oldgoat

Posts: 35

Joined: Mon Dec 29, 2014 2:01 pm

Post Thu Jan 08, 2015 1:36 am

Re: Issues with getting the timers right

I have found and resolved the issue around timing!

LAX please correct me if I'm wrong on any assumptions please.
Since IsBoxer operates on several layers, it is important to honor those when running it. Take for example my warrior:

Virtual Combat -> Combat HotKeys -> Warrior Combat -> DPS Rotation -> Sub-Rotations

Those are FIVE layers, each with a 0.1s delay, so it seems before passing the next key, there is already a 0.5s "lag" in the system that I have to honor. (LAX can you verify?)

Additionally, my EQ client usually has a client-server lag of around 50-60ms, which means I usually add 300ms to any roundrip command to be within safe limits. Hence my "/pause 3" (300ms) in front of actions such as "/xtarget target 1" in-game.

Now, my Warrior does the following sequence in his "DPS Rotation" steps:
Code:
1. Engage Defensives (Multi-Step Sub-Rotation)
2. Engage Aggro Building (Multi-Step Sub-Rotation)
3. Hit Battle Spam 1 (button with a bunch of AA abilities and discs)
4. Hit Battle Spam 2 (button with a bunch of AA abilities and discs)
5. Hit Battle Spam 3 (button with a bunch of AA abilities and discs)


Engage Defensives (Sub-Rotation):
Code:
1. Field Defender Button
2. Stout Defense Button


Engage Offensives (Sub-Rotation, this is not accurate as I'm writing it from work):
Code:
1. Phantom Agressor Button
2. Insult Button
3. Roar Button
+2 more forgot which ones.



So, the sub-rotation "Engage Defenses" is a 2-step sub-rotation that simply ensures Field Defender and Stout are up constantly. I do the usual "disable this step until it's clickable again"

The "Engage Offensives" is far more interesting. It does not give any meaning to just spam aggro keys over and over again on repop, so I've spaced them out with a 5 second interval. This means, the NEXT offensive disc/aa being used disables the entire sub-rotation in "DPS Steps" for 5 seconds. That way, I can take and keep aggro easilly over long fights, because there is always something that is up within the next 5 seconds that can be tossed at the mob.

So, when I'm spamming the Warrior combat key, here's what happens:

1. If defenses sub-rotation is enabled, then it hits (Field Defender, Stout Defense) before anything else. Then the entire "Defense" Sub-Rotation is disabled for 5 seconds
2. The first available aggro ability is invoked, then the entire "Agro" sub-rotation is disabled for 5 seconds
3. Spam Key 1 is hit
4. Spam Key 2 is hit
5. Spam key 3 is hit

It is VITAL that any multi-step rotation containing Sub-Rotations actually DISABLES the sub-rotation for some duration, or innerspace never leaves it. (lax, verify? is there a way around this?)

Also, there is a "Warrior Global Cooldown" timer that I use to disable and re-enable the "Virtual Combat DPS Rotation" for one full second after every keypress. Any mapped key that actually does a keypress invokes this "pause" so that I have a nice, decent queue of things that need to happen. I need to know if it is possible for me to reduce this amount of time (I can be very trigger-happy at times, and hammer that key like my life depended on it, but I see that Innerspace needs some internal time)

For Firescue
Lax is right indeed on that if you have 1 timer (and not 0) for any given thing, you do not need the reset timer instruction. This is working as intended for me.
I am operating with the following timers:

* Warrior Global Cooldown (invokes a pause on the Virtual Combat DPS Rotation key after each "real" in-game keypress)
* Warrior Defensive Sub-Rotation toggle timer (used to pause the sub-rotation to allow the rotation on DPS Rotation one layer up to continue to execute)
* Warrior Aggro abilities Sub-Rotation toggle timer (used to pause the sub-rotation to allow the rotation on DPS Rotation one layer up to continue to execute)
* ...and then a timer for every ability that has a 10s or more reuse timer

Assumption for Lax
I am assuming that STEPS in a mapped key execute sequentially, and that all Actions within a step is done either in parallel, or "asap". Is it correct of me to assume that you have hard-coded a minimal delay of 100ms for each step to execute within, or is that plain wrong?

Feature Request
For the innerspace debugger, it would help me ALOT to see:
* Mapped Key Duration - how long does a mapped key take to execute (sum of time spent executing steps in ms)
* Step Duration - how long does a single step take to execute (sum of time spent executing actions, in ms)
* Actions duration - how long does a single action take to execute (in ms)

Feature Request 2
Debug print as a new "Debug" action
In isboxer, be able to add some text that will only, and only appear when the debugger window is up, and it's only output is to that window. It would be VERY handy to use this together with the first feature request, i.e. "Debug.Print "Step 'Stout Defense' executed in {STEPDURATION} ms"

Feature Request 3
The last thing that I'm missing, that would be equally handy is a "Simulator", so that I don't have to be running an EQ Client in order to test out new configurations w/timings.

I'll volunteer for beta if you need a decent tester :)
<<

lax

User avatar

Site Admin

Posts: 7301

Joined: Tue Nov 17, 2009 9:32 pm

Post Thu Jan 08, 2015 6:59 am

Re: Issues with getting the timers right

Those are FIVE layers, each with a 0.1s delay, so it seems before passing the next key, there is already a 0.5s "lag" in the system that I have to honor. (LAX can you verify?)

No. Absolutely not. That would be terrible. Even if it were true that "each [has] a 0.1s delay" which it is not, it would not be cumulative. If you have 25 layers and each has "Do not advance for 0.1 seconds" and each does the next layer via "Do Mapped Key", all 25 of those should be in lock-step. The 0.1 from the first one should be the same as the 0.1 from the 25th one, and there is no 2.5 second "lag".

Additionally, my EQ client usually has a client-server lag of around 50-60ms, which means I usually add 300ms to any roundrip command to be within safe limits.

This is probably a lot more relevant

I am assuming that STEPS in a mapped key execute sequentially, and that all Actions within a step is done either in parallel, or "asap". Is it correct of me to assume that you have hard-coded a minimal delay of 100ms for each step to execute within, or is that plain wrong?

For any Step, all Actions execute from top to bottom with few exceptions (You are probably not running into one of the exceptions). There is no hard-coded 100ms anything. The "Do not advance" could be in hundredths but when you get to that timing resolution your framerate is going to start getting in the way. Say you want 0.01s instead of 0.1s, meaning you want it to activate 100 times a second. I can pretty much guarantee you're not getting 100 fps (this goes for basically everyone), so it's meaningless to say 0.01. The timing would not be particularly accurate. Likewise, if you're not getting 10+ fps, then your 0.1s resolution will not be particularly accurate either.
Previous

Return to ISBoxer Pro Configuration

Who is online

Users browsing this forum: No registered users and 5 guests