2008年04月03日
Local Perception Filters
Local Perception Filters
In this article I’m gonna go over a specialized method for reducing the visual artifacts caused by lag and latency. This method is called “Local Perception Filters”. The concept behind this method is to slow down or speed up time so the visual differences between networked computers are not noticable.
I want to first demonstrate this with the first example in Figure A. Let’s take two players A and B. Both A and B are on different machines across the world connected through the internet. They are in one game world and have a stable but slow connection between them. The time for one data packet to travel from A to B is 500ms. Let’s say that A fires a bullet towards player B. The bullet takes 3 seconds for the bullet to hit B. A’s screen would see the bullet hit B after 3 seconds (represented by the blue box). But in B’s screen the bullet wouldn’t register a hit until 3.5 seconds because we need to add 500ms for packet to travel across the internet to B. So how can we make it so that we see the bullet hit on both A’s and B’s screen at the same time? We can do this by slowing down the bullet on A’s side to match B’s position.
Figure A.
In the second example we increased the time it took for the bullet to hit B on A’s side (3.5 seconds).In doing so the bullet contacts at the same time on both screens.
Each player has a area around it which slows time based on their own lag and latency. This can be represented as an extra dimension called t. As t grows the rate that x moves slows down. This can be represented as a series of time slopes or cones depending on how many dimensions you have. If you want a more detailed explanation read “Realizing Bullet Time Effect in Multiplayer Games with Local Perception Filters” by Smed, Niinisalo and Hakonen.
I created a simple flash app demonstrating this method. When you start the app you should see a red and green player. These represent two players in one game world. Press space to fire a bullet from the red to the green player.
- The top red bullet represents the actual position of the bullet from the red player’s perspective.
- The green bullet represents the time warped bullet from the red player’s perspective.
- The bottom red bullet represents the actual position of the bullet from the green player’s perspective.
- The bottom blue bullet represents the time warped bullet from the green player’s perspective.
When you fire a bullet you should see the time warped bullets’ (green and blue) positions match up (there might be a difference because of the varying flash frame rate). You can modify the lag and latency by using the up and down arrows. For the best results run this in a standalone player because browsers usually limit the frame rates.
Download Application(right click to save it)
- Posted by brian on 18:26 filed in ActionScript, English
- パーマリンク


Leave a Comment
Trackbacked