Not a suggestion since it's waaaaaaaaaay too late to do anything about it given that it's almost certainly in the very fundamentals of the game and changing anything about it would break everything else, but I had a random thought while playing today: How come the hit detection is done server-side? In a PvE game like Spiral Knights predominantly is, is there really any drawback to making hit detection client-side?
Maybe you would get rubber-banding enemies, or maybe there's an issue if two people hit a monster at the same time on their screen, sure. But you also would block when it looks like you blocked, and hit when it looks like you hit, and other good things like that. I don't see much of a downside given that AI enemies can't get annoyed when an attack hits them that looked like it shouldn't have, while humans definitely can (and do, a lot, I would know).
Is there a reason why it was made to all be done server-side? (was it for consistency, did it help against cheating somehow, was it just simpler to program?)
I mean I'm not the devs but I coded my own thing kinda like SK and it makes a lot of the sense the way it's done which is sorta half and half.
Basically, server contains entities and client mirrors them. Then the client misses like half the packets for no reason and fills in the blanks i.e. if you hit a wall it does detect that for you on your client, so that it looks correct and because that's efficient. It also assumes things just sorta keep going so if your buddy is traveling north and you remove the server, the client projects them running forever away.
Hit detection for bullets, enemies, attacks, etc. is done on the server though because of security (Hello Mr. Server I hit the devilite 1000 times :D) and because of synchronization issues like lets say I hit the devilite with a blitz and you hit it with a supernova does it bounce back or.... like the server would have to figure that out and send a result and it would be really jarring.