2
\$\begingroup\$

I am currently using C# XNA Framework to simply connect some development concepts that I've learned/used over the past few months. Right now I have a Web Service that keeps track of connected clients and their 2D positions. I have a very small map that uses triangles to represent clients and their positions.

What I am seeing is my client updates very smooth (because I update my own position locally before sending it off to the web service), however, other triangles come in and appear choppy.

I use a web service that is called approximately every 20ms (and responds pretty quickly might I add). However, I know that XNA framework calls its update/draw methods approximately 60 times per second correct? Given this, there is ALWAYS going to be the appearance of choppiness.

Is there some strategy or pattern to handling this? I thought about implementing a method on the client side that basically says, give me start position and end position and I'll transition the triangle between the two points smoothly. But this may not be the right answer.

What are folks thoughts?

I am using a NetTcpBinding from WCF (Duplex). Is this technology simply too slow?

Is the right strategy simply to let the Service always tell me where the other clients are and the client simply draws them there?

Or does the client compute other information and make assumptions etc?

Thanks for any information on this topic!

\$\endgroup\$
2
  • \$\begingroup\$ So many views and no comments! Where are you folks at! \$\endgroup\$
    – Tada
    Jan 4, 2014 at 3:06
  • \$\begingroup\$ How fast is pretty quickly? \$\endgroup\$ Jan 4, 2014 at 7:34

1 Answer 1

0
\$\begingroup\$

Or does the client compute other information and make assumptions etc?

I think what your looking for is Client Side prediction. You need to predict where other clients are going to move using previous movements. Whenever you get an update from the server, you need to start reconciling the errors introduced by your prediction algorithm. Your prediction algorithm doesn't need to be brilliant, calculating a player's trajectory based on previous positions would be fine.

When you reconcile errors, you might want to consider using curves to interpolate your value displayed on the player's screen to the actual value received from the server. If you just snap to the correct value, you will get a lot of jitter in your output.

Really good links for further reading:

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .