Advertisement

client side prediction on leaps/movement abilities

Started by August 08, 2014 08:39 AM
3 comments, last by hplus0603 10 years, 3 months ago

Hi,

my game depends on spells that grant the player abilities like leap, charge, levitate and so on.

As these hook into the movement i'm not sure whether i should include them in the client side prediction or just wait until the server initiates them.

When not including them i imagine i would just pause the prediction part, while 'transitioning' (i'm doing these inside a coroutine in Unity) and resume it after the Transition has finished. but i also imagine this may lead to some prediction problems with the missing part?

When including, i guess i would have to rewrite the way these work (and i'm not sure how, as they come from spells, not direct key input).

How do commercial games do it, or is there even a better way?

I would recommend you plan actions a some time in the future, like 100 ms. So when a player press jump, you will schedule a jump to handle in the client in 100 ms, put a timestamp on the message and send it to the other clients that will schedule in the same task, but take the time it took to send the message into the calculation.

For more detail I recommend this article:

http://www.gamasutra.com/view/feature/131503/1500_archers_on_a_288_network_.php

Advertisement

thanks for your answer, i read that article some time ago. i can't see an answer to my question in it, but i guess you mean i should try to predict the outcome of abilty-tied movement too?

It came to my mind that for each resimulation step that happens inside the predicted ability movement i kind of have to fire the spell for that move again, or something.

I'm completely lost how i could integrate the spell/ability system into the movement prediction (predicted movement is based on key input, but ability movement isn't).

Currently the player sends: i want to cast ChargeSpell

the server validates, then sends back DoCastBar()

after finishing it sends the outcome of the spell, in this case ChargeToEnemy(X)

ChargeToEnemy is a coroutine i would run on the server and the client, which disallowed regular movement, while 'charging' (doing its own movement calculation on the player) towards the enemy.

after the coroutine finished input movement was allowed again.

But recently i rewrote the movement code to use client side prediction (and not just telling the server where you are) and now i'm unsure how i can make both (spell/-movement + predicted input movement) work together.

Maybe i just have to redesign how spells/abilities work or the coroutine movement.

(i still consider myself a newbie, as most of what i code is kind of self-taught)

Shoud i try to predict dodges/leaps and similiar on the client, is this how it's usually done?

Guild wars 2 is an example for the types of movement tied to abilities i have and want to have working.

Try it both ways and see which one you and your players like the best.
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement