Forums › English Language Forums › General › Suggestions

Search

Reducing the effects of the lag (client-side vs server-side)

15 replies [Last post]
Thu, 07/21/2011 - 08:16
LeonAlabard
Legacy Username

So, I'm a old Phantasy Star Online player. And one of the cool things about PSO is how the single player mode works.
In PSO, you can choose how are you going to play: alone, with friends, with random people... (just like Spiral Knights).
When you play alone (a.k.a. "Single Player" mode), some of the elements of the game (monsters, keys, boxes) are handled via client-side (basically, "offline", manipulated by your PC only), but everything else (EXP, drops, money...) is handled on the server-side (so, the server controls the numbers and drops, away from the manipulation of the player and his PC).
So, if you lag, it's going to take a while before you can get the drops/money, but the battle will continue normally, unaffected by the lag.

---
Now, in SK, mostly everything works on the server-side, thus everything requires your Internet connection. If you lag, everything will be screwed.

So, my suggestion is: More client-side elements on single player groups on SK, just like PSO.

If you play alone AND perma-lock you party:

  • Your knight (and mecha knights), enemies and objects (keys, blocks, crystals...) will be "operated" on your computer. (so the lag wont kill my poor knight, because these "operations" will be offline)
  • BUT, crowns, energy (ME/CE), Basil "store", treasure boxes, and items/drops must stay on the server-side. (to avoid hacks, dumpers and such)

This way, the effect of the lag will be reduced (on single player adventures, at least). So, if you are having a lovely lagging day, at least you can play the game alone normally.

So, thoughts?

---------------------
TL;DR:
When playing alone, make monsters offline, keep drops online.
So if you are lagging like hell, you can still fight normally, because only the drops will suffer with the lag.

Thu, 07/21/2011 - 09:41
#1
Effrul's picture
Effrul
+1

This is a completely excellent idea.

Thu, 07/21/2011 - 09:45
#2
Madadder's picture
Madadder
but would this require SK to

but would this require SK to be recoded? seems a lot of work and might not be worth it to them

Thu, 07/21/2011 - 12:52
#3
LeonAlabard
Legacy Username
@monkeyman135

I don't think so.

IIRC, the first version of Phantasy Star Online Blue Burst (PC version of the game) had the money drop operated via client-side (and oh God, dumpers everywhere... but, "money" is kinda useless in PSO, so yeah. People now use a base rare drop, the Photon Drop, as the in-game currency now).

After a patch, the Devs changed it, and the money drop became a server-side operation.

So, I guess it's "kinda" simple to edit, just like a typical bugfix.

Fri, 07/22/2011 - 12:27
#4
Ghret's picture
Ghret
I read 2 things from your

I read 2 things from your post Leon. 1) It's easy to implement the server-to-client thing, and 2) Crowns and anything that can be converted to Crowns must remain on the server, no matter what. Also, what anout the Heat?

Sat, 07/23/2011 - 07:27
#5
LeonAlabard
Legacy Username
@eternity08

Exactly.
The exact amount of coding required to change this, I don't really know.
But I know that the Devs won't need to totally recode the game to implement this.

And yeah, I forgot about the heat. Like every drop, it must remain on the server-side, to avoid hackers.

Sun, 08/07/2011 - 23:03
#6
k2homie1
Legacy Username
I am totally with you on this

I am totally with you on this one. I would love to see this implemented into the game as I usually go solo. Now I admit I don't have the best internet service out there, but usually I was able to play the game without any problems. But since the Coliseum/PvP Update, I have noticed WAY more latency issues almost all the time. I am at the point now where SK is almost un-playable for me. I really hope that OOO sees this suggestion and really thinks about implementing it.

Mon, 08/08/2011 - 02:11
#7
Starlinvf's picture
Starlinvf
It causes 2 major problems

It causes 2 major problems though... it exposes server code to the local memory space (meaning it can't be trusted), and the server would need a way to validate data coming from the remote instance is genuine and not a memory hack. The only cost efficient way of blocking that would be using rootkits....err I mean memory space protection software like nProtect.

Another possible method is using mirrored instances between the main server and remote instance, only slimmed down to the point where the main instance would have to pre-determine all drops ahead of time and keep an inventory to check against the remote instance. But what do you do in places that spawn enemies with drops like Vanaduke or Royal Jelly?

Mon, 08/08/2011 - 02:25
#8
Voidreaper's picture
Voidreaper
Please... please... please... please... please...

Please Three Rings, PLEASE take this post seriously!!! Lots of us avid, loving players of Spiral Knights suffer from insane amounts of lag and latency issues, preventing us from being able to enjoy this game to the full. Please, either find a way to fix the lag, or try to implement this idea!!! I haven't been able to go down into the Clockworks for AGES cause for me it's literally suicide, so an alternative to that would REALLY be usefull!!!! Thanks :)

Mon, 08/08/2011 - 03:15
#9
Jeffreysgf's picture
Jeffreysgf
Potential Abuse

A few things to consider:
The main problems are time sensitive things, such as walking around (not as important, however people got angry at my friend when she was lagging and literally unable to get to the elevator and walked over spikes purely due to the lag) and battles. Boxes and drops can still be server side. I don't really mind if I need to wait a bit for a box to break or for things to get picked up, what I do mind is trying to shield to prevent damage/death, seeing my sheild get raised before I would get hit, and then still taking damage.
For the shield to have any significant use, rather than just being a rarely used item, it needs to react with the player, not taking 200+ milliseconds for me to see the monster about to attack or for me to see spikes about to pop up, and then another 200+ milliseconds for me raise my shield.

Regardless you will have problems with how the system works. With PvP you will either have players saying they shielded, or ran out of the way, only to get killed anyway, or if it is done client side, will have people complain about seeing shields come up after they should have been damaged. The latter isn't really an issue. It can already happen (I think). If person A raises their shield, the command gets sent to server and is acknowledged by server, bomb goes off, and then the person having their shield raise is registered by person B, so they see the shield raise after their bomb goes off. (it might not).

With walking, yes there is the potential for speedhacks, however it could be rendered fairly useless by requiring the server to still recognise the walking (and the required time to do such walking) before any action (other than attacking a monster) to take place, so even if they do try and speedhack their way to boxes, they still need to wait before they can break them.

With shielding, people could hack it to have it always on, but also rather than handling shield health and attacks only on the client, still keep it server side, just allow a short time after each attack for a client to say I had my shield up or I took x damage, if that doesn't happen, (or x is incorrect), dealing that damage to the client. When the shield breaks, the client will register it first, but then the server will as well and any attack that occurs after the shield would be broken will still have damage inflicted. Also keep peoples health both, client and server side, with the server calculating it after it has waited a tiny bit for a shield response.

Still handle the monsters server side, with them getting knocked back on the server, if they attack the client when they should be attacked, have it say they should have been knocked back (similar to shielding but shield health doesn't go down.

The only time where this could potentially become a significant problem is during PvP. If it does, then disable all client side stuff for PvP and leave it entirely server side.
Any abuse from this will be very minor and should not disrupt normal (non PvP) gameplay at all, except for those hacking.

Or, if you wish to trust your players, put most of that entirely client side.
Sure, you might have a few people cheat, but for the most part, the game will remain fine.

Mon, 08/08/2011 - 05:54
#10
Starlinvf's picture
Starlinvf
Your idea basically means the

Your idea basically means the server still has to validate all that information.... that doesn't solve the original problem when conflicts in data arises, and you end up with ghost damage or monsters possibly not dying when it should. Its just visually confusing when the 2 systems have to second guess each other.

Server side processing provides better synchronization at the cost of latency. Client side processing provides faster response, but at the cost of data integrity.

Mon, 08/08/2011 - 06:04
#11
Rage-Knight's picture
Rage-Knight
I have a simpler and more

I have a simpler and more effective offer:
Reduce amount of info sent to and from client.
Oh, wait, I have another brilliant idea:
Make a new server (server cluster?) based in Europe, so local players will have much less lag.

I'm not genius. Its just that someone else is stupid if they didn't think of it :P

PS: moving part of the game offline is a great idea and it will make my game much much easier (I often get hit when monsters pull me back to older position and hit me with attack I successfully evaded on my screen).

Mon, 08/08/2011 - 14:12
#12
Jeffreysgf's picture
Jeffreysgf
Teos_ef, the only players are

Teos_ef, the only players are not in Europe and North America. There are also players in Australia, and probable some in Asia and Africa and South America.
We know that more servers will help solve the problem, but there will still be some latency. It also costs significantly more. You will still have the problem of high latency unless you only plan on playing with people in your area, effectively preventing it from being a global game (as the current situation is).
Which do you think would be cheaper, setting up entire new servers, and then having some way to connect them all, so it will choose the best one for you, or just changing the code so some stuff is done on the client side, which actually effects the game-play and isn't purely cosmetic (like seeing your shield block the attack only to be hit by it)?

Also, reducing the amount of info sent to and from the client is similar to what has been suggested. Yes it will act identical (or slightly better) for those who play fair, but it will also enable people to cheat, such as give themselves god-mode.
What I think is the better idea is to have the client do things, and just verify it with the server.

Starlinvf, I thought I explained how conflicts would get handled. If the server things you should get damaged, it waits for a few hundred milliseconds, and then if it hasn't received the response from your client, it damages you, and any further info about that attack is ignored. If your client sends a response that it had a shield up, then it removes some health from the shield and doesn't hurt you.
On any online game (or even just lan) you will have conflicts with data. This already happens, OOO just decides to let the server always be right, so the conflicts are purely visual, but that does more damage to the game.

I was contemplating paying for the game, but OOO has to go and screw it up and make almost unplayable so often. I will not pay for a poorly made game that is unplayable so often, nor will I give money to people that don't give a crap about their customers.

Mon, 08/08/2011 - 18:38
#13
Soulstaker's picture
Soulstaker
I am usually pissed at lag

I am usually pissed at lag but lag at clockworks is just harsh.

Sun, 09/04/2011 - 03:11
#14
Rage-Knight's picture
Rage-Knight
Simply downloading monster

Simply downloading monster location and condition from server to client and then processing that monster on client side won't require "recoding the whole game" (lots of recoding is done daily), and will allow lag-free levels for solo players. At the same time it nearly guarantees knights will die less, which leads me to believe this will never be implemented in any way:

The more players get killed in solo, the more energy is given back to developers, the less energy exists in the game and the higher energy price becomes, resulting in a higher need to buy it for $$ - the whole point behind this game. Thus, by decreasing lags developers are hurting themselves (who cares about players, really? They only care about $$$.$$$).

Sun, 09/04/2011 - 06:14
#15
Starlinvf's picture
Starlinvf
*face palm* "I thought I

*face palm*

"I thought I explained how conflicts would get handled If the server things you should get damaged, it waits for a few hundred milliseconds, and then if it hasn't received the response from your client, it damages you, and any further info about that attack is ignored. If your client sends a response that it had a shield up, then it removes some health from the shield and doesn't hurt you." -jeffreysgf

Thats still trusting the client to be honest. On top of that, you are still suggesting synchronization is simply a matter of data moving back and forth, when it isn't just that. When you make the assumption that the client can both lie about something, or ignore feedback from the server, it vastly changes how you need to operate in order to maintain data integrity. Client hacks have existed for as long as theres been competitive multiplayer... if there is a way to cheat, someone will use it.

Powered by Drupal, an open source content management system