Jump to content

  • Log In with Google      Sign In   
  • Create Account

FREE SOFTWARE GIVEAWAY

We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.


Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


client side prediction on leaps/movement abilities


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 Valoo   Members   -  Reputation: 407

Like
0Likes
Like

Posted 08 August 2014 - 02:39 AM

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?


Edited by Valoo, 08 August 2014 - 02:40 AM.


Sponsor:

#2 flodihn   Members   -  Reputation: 254

Like
0Likes
Like

Posted 08 August 2014 - 05:22 AM

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



#3 Valoo   Members   -  Reputation: 407

Like
0Likes
Like

Posted 08 August 2014 - 11:29 AM

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)



#4 Valoo   Members   -  Reputation: 407

Like
0Likes
Like

Posted 15 August 2014 - 08:04 AM

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.



#5 hplus0603   Moderators   -  Reputation: 5723

Like
0Likes
Like

Posted 15 August 2014 - 12:30 PM

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




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS