Tree of Savior Forum

[New Attribute]: Auto-Attack in batches (high-ping-compromise)

Many users are complaining about the high ping, as in, “the high ping completely destroys auto attack builds!!” Well, yeah. Of course, the server waits for the client after every attack, can’t get helped.

So I thought, what if the attacks aren’t single based and rather compelled to a salvo/batch? And thats my suggestion:

New attribute for basic classes: Attack in batches (toggleable, cancelable via jump/skillactivation/dmg)

lvl 1: Attack two times in a row.
lvl 2: Attack three times in a row.
lvl 3: Attack four times in a row.
lvl 4: Attack five times in a row.
lvl 5: Attack six times in a row.

Yes, its basically an auto-attack makro, serverside and limited by 6 at max. Being severside gives high ping people the advantage of having the same autoattack speed of low ping people.

You could call that one of these easy workaround for major problems IMC likes so much. Ofc IMC never had to adress the high ping issue before, having korea with only korean players (officially).

At least the auto-attack high ping issue will be pretty much solved with that. The disadvantages would be a slight increase of server-side processing and an slight increase of comfort for auto-lvl-bots (not much tho, knowing that you could just place a weight on the z key as well and call it super-perma-auto-attack-hacking-tool!!)

3 Likes

I still don’t understand why this is called a salve. I’d understand batch or bundle or similar, but salve? Well, anyway…

If you click on an enemy doesn’t it already lock on to the enemy and attack “endless times in a row” until either you cancel or the enemy dies?

It’s basically how the server handles the input coming from your client. For now, the server always waits for the client until it attacks again. And if the delay for these signals is higher than the actual attackspeed (200ms+ ping), the autoattack gets a delay. Attacking in salves skips that, basically.

So instead of:

Client: Attack one time!
Server: Attacks. Wait for input.
Client: Attack one time!

It’s:

Client: Attack 6 times!
Server: Attacks 6 times. Wait for input.
Client: Attack 6 times!

This attribute is a cheap way to change how the client is communicating with the server. An easy to execute solution, instead of changing some fundamental mechanics deep in the code.

You could exchange salvo with “serverside makro-autoattack” if you want. It just have to be a toggleable attribute to set it off if you dont want it anymore and limited to 6 to make sure you don’t make it too comfortable for bots.

Let me explain why I have a “problem” with the word salve. (I don’t have a real problem; I just don’t understand it.) As far as I know, a salve is an ointment or a cream of sorts. I’ve never seen it used in this way, and I don’t know where the word comes from. It seems like a weird, nonsensical way to use the word. Even looking it up in the dictionary I don’t see any definition of salve that could mean how you use it. It’d be the same as calling it a banana or a chair.

And hm… Instead of these salves, why not make the game behave this way by default? Have the server attack the monster at the proper ASPD when you click on it, until you cancel. So, basically:

Client: Attack
Server: Attacking once every 1.02 second (arbitrarily chosen attack speed)
Client: Stop
Server: Stopping attack

1 Like

Oh looks the the actual term I had in mind is salvo instead of salve

Definition
(noun) rapid simultaneous discharge of firearms
Synonyms : burst , fusillade , volley

I’ll change it to batch to make it more common.

I fear changing things like this requires more effort in matters of programming. There are probably some routines linked to it already making it difficult to change. Thats why you could see my suggestion as a dirty workaround.

The word “burst” could actually work really well. Guns have a burst mode where they fire like 3 bullets “at a time”

Maybe the word comes from Latin?

In portuguese we have a word like that is: Salva. And the definition is exactly what Seiryuu said here:

It has other definitions depending on the context tho.

Mhh… its salve in German, salvo in English, salva in Spanish and Portuguese and salwa in Polnish xD

I suppose IMC didn’t implement attacks this way because it would affect server performance.
I think current implementation looks similar to this:
Client: Attack please
Server: Current time is T1 and requested attack’s time is d. Ignore all attack requests till T1+d. Begin the attack.

  • less than d time passes
    Client: Attack please
    Server: Current time is T2 < T1+d. Ignore.
  • more time passes
    Client: Attack please
    Server: Current time is T3 >= T1+d. Ignore all attack requests till T3+d. Begin the attack.

If you want server to repeat the attack without incoming requests you need to set up a timer. Possible ways:

  1. Timer checks if there was request to stop the attack in the time interval of the last attack / attack of different kind was requested. If not, it repeats the action and creates the new timer. This is a bit tricky, will affect performance and requires a buffer where requests will be stored.
  2. Timer simply repeats the action by interval. When different request comes in, it clears the timer. This one is more straightforward, but can be unsafe. Will affect performance (possibly even more because it requires a large amount of mutexes, not sure about this part).
    Well compared to everything else it may be not as heavy as I think, but implementing this on current stage of development may be painful. Same goes for OP’s suggestion.
    Actually they must have such mechanics for multi-hit skills which may be encapsulated in it’s implementation, but I doubt they will do something about repeating skills/autoattacks. It’s easier to open regional servers, really. And attack speed isn’t the only issue caused by high ping.

I won’t claim to be an expert, because I’m not, but the current implementation doesn’t seem to be any more server resource efficient than the implementation I proposed

I’m trying to avoid major changes in any of these base routines (same as the programmers), trying to suggest an easy to implement feature on top of it, solving at least the issue adressing auto-attack builds.

Couldn’t auto attack just be toggled and handled server side?

Essentially, the client starts it and interrupts it via movement or using an ability, but has no influence on its execution. Pretty sure this would be less resource intensive than the server having to bounce a packet for every swing.

I already mentioned that and it has been discussed. Be prepared to either get no answers or the same answers

1 Like

I’m pretty sure IMC thought about this as well and ultimately decided to not do it - for whatever reason. My suggestion builds up on that decision~

I’m trying to word it differently!

1 Like

Ha, you totally did! Sorry about that.

No worries. I didn’t mean it as criticism or anything. Just preparing you for potential disappointment

So if this did infact get implemented couldn’t people with good ping just abuse it?

It wouldn’t change anything for them. Besides not needing to press the z button for another 5 times, that is.

I like the idea of “Lock On and Endless Attack” and the “toggle-able Auto attack” option. It works for a lot of other MMOs.

My finestra and runner gunner build is in shambles because of the ping delay and no amount of internet speed can solve it.

or they could use a system like WoW, it works great