• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 394
  • Last Modified:

Network Interpolation

How can I achieve a good network interpolation for realtime games. I want to write code that does the same that is done in Quake. If you have packet loss or if packets arrive in a wrong order the game should still behave approximately as it usually behaves (as in Quake). Please help.
0
MarcoHelmers
Asked:
MarcoHelmers
  • 7
  • 4
  • 2
1 Solution
 
nil_dibCommented:
Why dont you use stream sockets?
Are you sure that games like quake works with datagram sockets?
0
 
jkrCommented:
My usual answer to this kind of problem is taking a look at RPC, which makes life easier concerning all the different network transports (TCP, IPX, NetBios etc.)... You might want to take a look at the 'Hello' sample that comes with VC++ ('\DEVSTUDIO\VC\SAMPLES\SDK\RPC\HELLO') before we continue...
0
 
jkrCommented:
nil_dib - sockets are usually OK, but what to do if there's no TCP/IP installed...?
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
nil_dibCommented:
mhh but in MFC I have socket support for DECNet, TCP/IP, IPX/SPX, NetBui ...
I think its also a problem to decide on which layer to put on ..4,5,6 ...
0
 
MarcoHelmersAuthor Commented:
I think you did not understand my problem. I have no problem sending packets or so (I use DirectPlay) ... I only want to know how to interpolate movement in a realtime (3D) game like Quake when you have situations where packets arrive very late (e.g. internet) ! In Quake the server in some way interpolates the movement of the clients so that the game seems to run smooth (even if no packets arrive for a while !!). Can you tell me a good way how to do it ?
0
 
jkrCommented:
I'd recommend keeping track of the recent packets and 'extrapolate' the movement sequence from the behaviour in the near past (liear or nonlinear, depends on what applies better...)
0
 
MarcoHelmersAuthor Commented:
Does that really help ? What if a person ran directly towards a wall and shortly before he can turn around no packets arrive any longer ? Shall he run against the wall for a few seconds ?
0
 
jkrCommented:
Nope ;-)
But the player has to remain there, as you hardly can make an assumption on what could be done...
0
 
MarcoHelmersAuthor Commented:
Ok ... perhaps I did not completely understand you proposal ... could you explain it more precisely or perhaps even give some pseudo-coude to illustrate it ?
0
 
jkrCommented:
OK ;-)
Think of the following:
- you maintain a list of the last (let's say 2 for explanation purposes...) movement notifications

if there's a packet, all's well, add it to the list & remove the last

if there's no packet, calculate the (vectorial) difference of the last 2 moves and add the difference to the last move to create a new one and use it as if it was the arrived packet (this e.g. helps to maintain a circular movement - ok, it _could_ turn out to give a rediculus result)

if you decide to use more moving states, it might come in handy to treat them as a vectorial signal and use signal processing algorithms to extrapolate it (you see, i usually don't write games, but have done quite a lot signal processing... ;-)
0
 
jkrCommented:
Hmm, what's gonna happen with this Q? ;-)
0
 
MarcoHelmersAuthor Commented:
Ok ... it would have been great if there would have been other ideas and suggestions but as this is not the case:
jkr: Please lock the question so that I can give you the points.
0
 
jkrCommented:
Thanx ;-)

BTW/PS: 'MarcoHelmers' sounds quite 'german', so: 'Gruß aus Schwaben' ;-)
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 7
  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now