In Reply To #260
Let me tell you something here:
Press A in your controller, your character begins to kick. In response to that action, your opponent, who is sitting next to you will press B to guard the attack. Now this happens almost instantly if your opponent has good reflexes and knows what he's doing. Also, the only layer you have between the players is twice the distance to the TV.
When it comes to online multiplayer, you have to develope a communication protocol efficient enough to carry all the data at almost instant speeds. To give you an idea how internet connection works:
$ ping google.com
PING google.com (64.233.167.99) 56(84) bytes of data.
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=1 ttl=243 time=50.3 ms
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=2 ttl=243 time=51.0 ms
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=3 ttl=243 time=51.4 ms
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=4 ttl=243 time=51.7 ms
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=5 ttl=243 time=51.6 ms
64 bytes from py-in-f99.google.com (64.233.167.99): icmp_seq=6 ttl=244 time=42.2 ms
^C
--- google.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5618ms
rtt min/avg/max/mdev = 42.275/49.742/51.748/3.383 ms
$ ping gamespy.com
PING gamespy.com (216.35.123.102) 56(84) bytes of data.
64 bytes from redirect.ign.com (216.35.123.102): icmp_seq=1 ttl=236 time=101 ms
64 bytes from redirect.ign.com (216.35.123.102): icmp_seq=2 ttl=236 time=102 ms
64 bytes from redirect.ign.com (216.35.123.102): icmp_seq=3 ttl=236 time=111 ms
64 bytes from redirect.ign.com (216.35.123.102): icmp_seq=4 ttl=236 time=101 ms
64 bytes from redirect.ign.com (216.35.123.102): icmp_seq=5 ttl=236 time=103 ms
64 bytes from redirect.ign.com (216.35.123.102): icmp_seq=6 ttl=236 time=104 ms
^C
--- gamespy.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5755ms
rtt min/avg/max/mdev = 101.446/104.119/111.615/3.467 ms
Those numbers you see there are called the network latency. It represents how long a package takes to travel thru standard TCP/IP from your machine to a given host and then back. Now, in terms of our example. A kick usually lasts little on a video game. With a network latency of 104ms = ~.1 seconds (like our gamespy host here), you will have that much time as an advantage over your opponent. Imagine then you are streaming not only your kick, but also, the position of your character every fraction of a second, and you are also receiving that data from your opponent. If you don't handle these things in an efficient way, you'll be doomed to lag, and your online fighter will be doomed to fail.
These words come from a programmer. If you don't handle the stuff carefully, you'll fail at it, as I've failed before at creating real time multiplayer systems like these.