<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.cas.mcmaster.ca/skins/common/feed.css?207"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.cas.mcmaster.ca/index.php?feed=atom&amp;target=Simpsoa&amp;title=Special%3AContributions</id>
		<title>Computing and Software Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.cas.mcmaster.ca/index.php?feed=atom&amp;target=Simpsoa&amp;title=Special%3AContributions"/>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Special:Contributions/Simpsoa"/>
		<updated>2026-04-10T00:20:02Z</updated>
		<subtitle>From Computing and Software Wiki</subtitle>
		<generator>MediaWiki 1.15.1</generator>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-23T20:49:16Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;/* Menus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles''' originally presented by Ben Shneiderman in 1983 represent the five basic ways that humans interact with a computer interface. Each interaction style effects the overall efficiency and usability of the computer system, but that is not to say there are good or bad interaction styles. The styles all have benefits and trade offs when dealing with certain types of users and it is often in an interface designers best interest to use a combination of styles instead of anyone one style alone.&lt;br /&gt;
&lt;br /&gt;
= Shneiderman's Five Interaction Styles =&lt;br /&gt;
&lt;br /&gt;
== Visual representation ==&lt;br /&gt;
[[Image:DirectManipulation.jpg|thumb|300px|right|Simple example of file/folder metaphor in Windows Vista]]&lt;br /&gt;
&lt;br /&gt;
Visual representation (also known as [[Direct Manipulation]]) features a natural representation of task [http://www.cas.mcmaster.ca/wiki/index.php/The_Object-Action_%28or_visa-versa%29_model_and_its_applications objects and actions]. This helps present the process as actually performing a task itself directly even though it is being doing through an intermediary like a computer. The visual representation usually takes the form of a metaphor related to the actual task being performed. In this way well designed visual representation systems tend to make the interaction enjoyable for the users, which is excellent for novice users or complex tasks that can lead to anxiety.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Visual presentation of task concepts&lt;br /&gt;
* Allows easy learning&lt;br /&gt;
* Encourages exploration&lt;br /&gt;
* Users can immediately see if their actions are furthering their goals&lt;br /&gt;
* Users gain confidence because they feel in control and can predict system responses&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can be hard to implement&lt;br /&gt;
* Requires graphics display/pointing devices&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
[[Image:menus1.gif|thumb|100px|right|Example of a typical menu in Windows XP]]&lt;br /&gt;
[[Image:menus2.gif|thumb|100px|right|Microsoft Office's &amp;quot;ribbon&amp;quot; UI, an example of tabbed toolbars]]&lt;br /&gt;
&lt;br /&gt;
Menus provide a way to visually organise a very large set of actions. Menus are nearly ubiquitous in modern applications, with the most standard format being the &amp;quot;File/Edit&amp;quot; style strip located across the top of windows (such as in Microsoft Windows) or the user's workspace (such as in [[Multiple Document Interfaces]], or in Mac OS X). Menus do not have any obvious physical metaphor, and rely on users being able to tell the difference between an action, and a category which can be expanded into a child set of actions and/or further categories. Menus can also change depending on context, from enabling or disabling individual items depending on the program's state, to using &amp;quot;tabbed toolbars&amp;quot; to flip between item collections.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Accessible to novice and intermittent users &lt;br /&gt;
* Allows for a very large palette of structured commands which can be easily &amp;quot;explored&amp;quot;&lt;br /&gt;
* Facilitates Multiple Document Interfaces well&lt;br /&gt;
* Does not rely on parsing input&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can bury useful features under complex hierarchies&lt;br /&gt;
* Number of items limited by screen resolution&lt;br /&gt;
* Convention restricts how menu items are categorised&lt;br /&gt;
&lt;br /&gt;
== Fill-In-The-Blanks ==&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fields in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interaction style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognized'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
== Command Line ==&lt;br /&gt;
[[Image:Commandline.png|thumb|300px|right|Ubuntu command line showing basic commands]]&lt;br /&gt;
&lt;br /&gt;
Command line is the earliest used interaction style and is still seen predominantly in Unix operating systems though still usable to varying degrees on Windows and OSX. This style is mainly used by expert users by typing into a prompt that allows them to quickly execute commands. Unfortunately command line places a considerable burden on the user to learn and recall commands from memory. It is often the case that commands take parameters as well and most of the added benefits (mainly in the way of efficiency) come from using them. This leads to an unfriendly environment for both novice and intermediate users that may attempt to use this style. The large overhead in learning commands and minimal help for the user leaves this style almost exclusively in the domain of the expert user.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* quick and powerful for experienced users&lt;br /&gt;
* user-controlled interaction&lt;br /&gt;
* minimal amount of typing (no mouse use)&lt;br /&gt;
* can be used in conjunction with other user interfaces&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* little or no prompting&lt;br /&gt;
* requires user’s knowledge of system, programs&lt;br /&gt;
* relies on recall of commands and syntax&lt;br /&gt;
* difficult to learn&lt;br /&gt;
* error prone&lt;br /&gt;
&lt;br /&gt;
== Natural Language ==&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Motivations for the Studies of HCI]]&lt;br /&gt;
* [[Contexts for HCI]]&lt;br /&gt;
* [[Process for User-centered Development]]&lt;br /&gt;
* [[Social issues influencing HCI design and use]]&lt;br /&gt;
* [[HCI - Accommodating human diversity]]&lt;br /&gt;
* [[User Interface Standards]]&lt;br /&gt;
* [[The Object-Action (or visa-versa) model and its applications]]&lt;br /&gt;
* [[Direct Manipulation]]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
# Microsoft Office Online, &amp;quot;Use the Ribbon - Help and How-to&amp;quot;, Retrieved on November 23rd, 2009 from http://office.microsoft.com/en-us/help/HA100898951033.aspx&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 23:50, 21 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Frostd|Frostd]] 00:58, 22 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Simpsoa|Simpsoa]] 15:45, 23 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Menus2.gif</id>
		<title>File:Menus2.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Menus2.gif"/>
				<updated>2009-11-23T20:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;An example of the Ribbon UI in Microsoft Office.

Source: http://office.microsoft.com/en-us/help/HA100898951033.aspx&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An example of the Ribbon UI in Microsoft Office.&lt;br /&gt;
&lt;br /&gt;
Source: http://office.microsoft.com/en-us/help/HA100898951033.aspx&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Menus1.gif</id>
		<title>File:Menus1.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Menus1.gif"/>
				<updated>2009-11-23T20:47:57Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;An example of a Windows XP menu.

Source: http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An example of a Windows XP menu.&lt;br /&gt;
&lt;br /&gt;
Source: http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-23T20:47:15Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles''' originally presented by Ben Shneiderman in 1983 represent the five basic ways that humans interact with a computer interface. Each interaction style effects the overall efficiency and usability of the computer system, but that is not to say there are good or bad interaction styles. The styles all have benefits and trade offs when dealing with certain types of users and it is often in an interface designers best interest to use a combination of styles instead of anyone one style alone.&lt;br /&gt;
&lt;br /&gt;
= Shneiderman's Five Interaction Styles =&lt;br /&gt;
&lt;br /&gt;
== Visual representation ==&lt;br /&gt;
[[Image:DirectManipulation.jpg|thumb|300px|right|Simple example of file/folder metaphor in Windows Vista]]&lt;br /&gt;
&lt;br /&gt;
Visual representation (also known as [[Direct Manipulation]]) features a natural representation of task [http://www.cas.mcmaster.ca/wiki/index.php/The_Object-Action_%28or_visa-versa%29_model_and_its_applications objects and actions]. This helps present the process as actually performing a task itself directly even though it is being doing through an intermediary like a computer. The visual representation usually takes the form of a metaphor related to the actual task being performed. In this way well designed visual representation systems tend to make the interaction enjoyable for the users, which is excellent for novice users or complex tasks that can lead to anxiety.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Visual presentation of task concepts&lt;br /&gt;
* Allows easy learning&lt;br /&gt;
* Encourages exploration&lt;br /&gt;
* Users can immediately see if their actions are furthering their goals&lt;br /&gt;
* Users gain confidence because they feel in control and can predict system responses&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can be hard to implement&lt;br /&gt;
* Requires graphics display/pointing devices&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
[[Image:menus1.gif|thumb|300px|right|Example of a typical menu in Windows XP]]&lt;br /&gt;
[[Image:menus2.gif|thumb|300px|right|Microsoft Office's &amp;quot;ribbon&amp;quot; UI, an example of tabbed toolbars]]&lt;br /&gt;
&lt;br /&gt;
Menus provide a way to visually organise a very large set of actions. Menus are nearly ubiquitous in modern applications, with the most standard format being the &amp;quot;File/Edit&amp;quot; style strip located across the top of windows (such as in Microsoft Windows) or the user's workspace (such as in [[Multiple Document Interfaces]], or in Mac OS X). Menus do not have any obvious physical metaphor, and rely on users being able to tell the difference between an action, and a category which can be expanded into a child set of actions and/or further categories. Menus can also change depending on context, from enabling or disabling individual items depending on the program's state, to using &amp;quot;tabbed toolbars&amp;quot; to flip between item collections.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Accessible to novice and intermittent users &lt;br /&gt;
* Allows for a very large palette of structured commands which can be easily &amp;quot;explored&amp;quot;&lt;br /&gt;
* Facilitates Multiple Document Interfaces well&lt;br /&gt;
* Does not rely on parsing input&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can bury useful features under complex hierarchies&lt;br /&gt;
* Number of items limited by screen resolution&lt;br /&gt;
* Convention restricts how menu items are categorised&lt;br /&gt;
&lt;br /&gt;
== Fill-In-The-Blanks ==&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fields in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interaction style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognized'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
== Command Line ==&lt;br /&gt;
[[Image:Commandline.png|thumb|300px|right|Ubuntu command line showing basic commands]]&lt;br /&gt;
&lt;br /&gt;
Command line is the earliest used interaction style and is still seen predominantly in Unix operating systems though still usable to varying degrees on Windows and OSX. This style is mainly used by expert users by typing into a prompt that allows them to quickly execute commands. Unfortunately command line places a considerable burden on the user to learn and recall commands from memory. It is often the case that commands take parameters as well and most of the added benefits (mainly in the way of efficiency) come from using them. This leads to an unfriendly environment for both novice and intermediate users that may attempt to use this style. The large overhead in learning commands and minimal help for the user leaves this style almost exclusively in the domain of the expert user.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* quick and powerful for experienced users&lt;br /&gt;
* user-controlled interaction&lt;br /&gt;
* minimal amount of typing (no mouse use)&lt;br /&gt;
* can be used in conjunction with other user interfaces&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* little or no prompting&lt;br /&gt;
* requires user’s knowledge of system, programs&lt;br /&gt;
* relies on recall of commands and syntax&lt;br /&gt;
* difficult to learn&lt;br /&gt;
* error prone&lt;br /&gt;
&lt;br /&gt;
== Natural Language ==&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Motivations for the Studies of HCI]]&lt;br /&gt;
* [[Contexts for HCI]]&lt;br /&gt;
* [[Process for User-centered Development]]&lt;br /&gt;
* [[Social issues influencing HCI design and use]]&lt;br /&gt;
* [[HCI - Accommodating human diversity]]&lt;br /&gt;
* [[User Interface Standards]]&lt;br /&gt;
* [[The Object-Action (or visa-versa) model and its applications]]&lt;br /&gt;
* [[Direct Manipulation]]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
# Microsoft Office Online, &amp;quot;Use the Ribbon - Help and How-to&amp;quot;, Retrieved on November 23rd, 2009 from http://office.microsoft.com/en-us/help/HA100898951033.aspx&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 23:50, 21 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Frostd|Frostd]] 00:58, 22 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Simpsoa|Simpsoa]] 15:45, 23 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-23T20:44:18Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;/* Menus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles''' originally presented by Ben Shneiderman in 1983 represent the five basic ways that humans interact with a computer interface. Each interaction style effects the overall efficiency and usability of the computer system, but that is not to say there are good or bad interaction styles. The styles all have benefits and trade offs when dealing with certain types of users and it is often in an interface designers best interest to use a combination of styles instead of anyone one style alone.&lt;br /&gt;
&lt;br /&gt;
= Shneiderman's Five Interaction Styles =&lt;br /&gt;
&lt;br /&gt;
== Visual representation ==&lt;br /&gt;
[[Image:DirectManipulation.jpg|thumb|300px|right|Simple example of file/folder metaphor in Windows Vista]]&lt;br /&gt;
&lt;br /&gt;
Visual representation (also known as [[Direct Manipulation]]) features a natural representation of task [http://www.cas.mcmaster.ca/wiki/index.php/The_Object-Action_%28or_visa-versa%29_model_and_its_applications objects and actions]. This helps present the process as actually performing a task itself directly even though it is being doing through an intermediary like a computer. The visual representation usually takes the form of a metaphor related to the actual task being performed. In this way well designed visual representation systems tend to make the interaction enjoyable for the users, which is excellent for novice users or complex tasks that can lead to anxiety.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Visual presentation of task concepts&lt;br /&gt;
* Allows easy learning&lt;br /&gt;
* Encourages exploration&lt;br /&gt;
* Users can immediately see if their actions are furthering their goals&lt;br /&gt;
* Users gain confidence because they feel in control and can predict system responses&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can be hard to implement&lt;br /&gt;
* Requires graphics display/pointing devices&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
[[Image:menus1.gif|thumb|300px|right|Example of a typical menu in Windows XP]]&lt;br /&gt;
[[Image:menus2.gif|thumb|300px|right|Microsoft Office's &amp;quot;ribbon&amp;quot; UI, an example of tabbed toolbars]]&lt;br /&gt;
&lt;br /&gt;
Menus provide a way to visually organise a very large set of actions. Menus are nearly ubiquitous in modern applications, with the most standard format being the &amp;quot;File/Edit&amp;quot; style strip located across the top of windows (such as in Microsoft Windows) or the user's workspace (such as in [[Multiple Document Interfaces]], or in Mac OS X). Menus do not have any obvious physical metaphor, and rely on users being able to tell the difference between an action, and a category which can be expanded into a child set of actions and/or further categories. Menus can also change depending on context, from enabling or disabling individual items depending on the program's state, to using &amp;quot;tabbed toolbars&amp;quot; to flip between item collections.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Accessible to novice and intermittent users &lt;br /&gt;
* Allows for a very large palette of structured commands which can be easily &amp;quot;explored&amp;quot;&lt;br /&gt;
* Facilitates Multiple Document Interfaces well&lt;br /&gt;
* Does not rely on parsing input&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can bury useful features under complex hierarchies&lt;br /&gt;
* Number of items limited by screen resolution&lt;br /&gt;
* Convention restricts how menu items are categorised&lt;br /&gt;
&lt;br /&gt;
== Fill-In-The-Blanks ==&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fields in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interaction style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognized'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
== Command Line ==&lt;br /&gt;
[[Image:Commandline.png|thumb|300px|right|Ubuntu command line showing basic commands]]&lt;br /&gt;
&lt;br /&gt;
Command line is the earliest used interaction style and is still seen predominantly in Unix operating systems though still usable to varying degrees on Windows and OSX. This style is mainly used by expert users by typing into a prompt that allows them to quickly execute commands. Unfortunately command line places a considerable burden on the user to learn and recall commands from memory. It is often the case that commands take parameters as well and most of the added benefits (mainly in the way of efficiency) come from using them. This leads to an unfriendly environment for both novice and intermediate users that may attempt to use this style. The large overhead in learning commands and minimal help for the user leaves this style almost exclusively in the domain of the expert user.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* quick and powerful for experienced users&lt;br /&gt;
* user-controlled interaction&lt;br /&gt;
* minimal amount of typing (no mouse use)&lt;br /&gt;
* can be used in conjunction with other user interfaces&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* little or no prompting&lt;br /&gt;
* requires user’s knowledge of system, programs&lt;br /&gt;
* relies on recall of commands and syntax&lt;br /&gt;
* difficult to learn&lt;br /&gt;
* error prone&lt;br /&gt;
&lt;br /&gt;
== Natural Language ==&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Motivations for the Studies of HCI]]&lt;br /&gt;
* [[Contexts for HCI]]&lt;br /&gt;
* [[Process for User-centered Development]]&lt;br /&gt;
* [[Social issues influencing HCI design and use]]&lt;br /&gt;
* [[HCI - Accommodating human diversity]]&lt;br /&gt;
* [[User Interface Standards]]&lt;br /&gt;
* [[The Object-Action (or visa-versa) model and its applications]]&lt;br /&gt;
* [[Direct Manipulation]]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 23:50, 21 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Frostd|Frostd]] 00:58, 22 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles</id>
		<title>Five Interaction Styles</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Five_Interaction_Styles"/>
				<updated>2009-11-23T20:32:45Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;/* Menus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The '''Five Interaction Styles''' originally presented by Ben Shneiderman in 1983 represent the five basic ways that humans interact with a computer interface. Each interaction style effects the overall efficiency and usability of the computer system, but that is not to say there are good or bad interaction styles. The styles all have benefits and trade offs when dealing with certain types of users and it is often in an interface designers best interest to use a combination of styles instead of anyone one style alone.&lt;br /&gt;
&lt;br /&gt;
= Shneiderman's Five Interaction Styles =&lt;br /&gt;
&lt;br /&gt;
== Visual representation ==&lt;br /&gt;
&lt;br /&gt;
Visual representation (also known as [[Direct Manipulation]]) features a natural representation of task [http://www.cas.mcmaster.ca/wiki/index.php/The_Object-Action_%28or_visa-versa%29_model_and_its_applications objects and actions]. This helps present the process as actually performing a task itself directly even though it is being doing through an intermediary like a computer. The visual representation usually takes the form of a metaphor related to the actual task being performed. In this way well designed visual representation systems tend to make the interaction enjoyable for the users, which is excellent for novice users or complex tasks that can lead to anxiety.&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Visual presentation of task concepts&lt;br /&gt;
* Allows easy learning&lt;br /&gt;
* Encourages exploration&lt;br /&gt;
* Users can immediately see if their actions are furthering their goals&lt;br /&gt;
* Users gain confidence because they feel in control and can predict system responses&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can be hard to implement&lt;br /&gt;
* Requires graphics display/pointing devices&lt;br /&gt;
&lt;br /&gt;
== Menus ==&lt;br /&gt;
[[Image:menus1.gif|thumb|300px|right|Example of a typical menu in Windows XP]]&lt;br /&gt;
[[Image:menus2.gif|thumb|300px|right|Microsoft's new &amp;quot;ribbon&amp;quot; menu]]&lt;br /&gt;
&lt;br /&gt;
Menus provide a way to visually organise a very large set of actions. Menus are nearly ubiquitous in modern applications, with the most standard format being the &amp;quot;File/Edit&amp;quot; strip located across the top of windows (such as in Microsoft Windows) or the user's workspace (such as in Multiple Document Interfaces or in Mac OS X).&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Accessible to novice and intermittent users &lt;br /&gt;
* Allows for a very large pallette of structured commands which can be easily &amp;quot;explored&amp;quot;&lt;br /&gt;
* Facilitates Multiple Document Interfaces well&lt;br /&gt;
* Does not rely on parsing input&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Can bury useful features under complex hierarchies&lt;br /&gt;
* Number of items limited by screen resolution&lt;br /&gt;
* Convention restricts how menu items are categorised&lt;br /&gt;
&lt;br /&gt;
== Fill-In-The-Blanks ==&lt;br /&gt;
[[Image:formfillin1.gif|thumb|300px|right|Classic Fill-In-The-Blanks]]&lt;br /&gt;
[[Image:formfillin2.gif|thumb|300px|right|Modern-day Fill-In-The-Blanks]]&lt;br /&gt;
The Fill-In-The-Blanks interaction style (also known as &amp;quot;Form Fill-in&amp;quot;) is best suited to data input, which was aimed at a different set of users than command language, specially non-experts users. Originally Fill-In-The-Blanks is to arrange one or more fields in the form of a prose sentence or phrase, with the fields as &amp;quot;blanks&amp;quot; to be filled in by the user. The TAB-key was designed and is still being used to switch between the fields and ENTER to submit the form. Therefore a pointing device (such as a mouse) was not really needed at that time. However it's very common to mix forms with other interaction styles in software design, such as drop down menus, check boxes etc. The spreadsheet is a variation on the Form Fill-in interaction style. Even today, there are quite a few computers are still purely forms-based in the industry, like cash registers, financial systems, stock control systems, and so on. The main reason is because the Fill-In-The-Blanks interface is especially useful for routine, clerical work or those tasks require a great amount of data entry.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Simplifies data entry&lt;br /&gt;
* Minimal training - Shortens learning in that the fields are predefined and need only be 'recognized'.&lt;br /&gt;
* Gives convenient assistance - Guides the user via the predefined rules&lt;br /&gt;
* Permits use of form-management tools&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Screen space consuming&lt;br /&gt;
* requires more keystrokes&lt;br /&gt;
* requires handling typing errors (bad for users with poor typing skills)&lt;br /&gt;
&lt;br /&gt;
== Command Line ==&lt;br /&gt;
[[Image:Commandline.png|thumb|300px|right|Ubuntu command line showing basic commands]]&lt;br /&gt;
&lt;br /&gt;
Command line is the earliest used interaction style and is still seen predominantly in Unix operating systems though still usable to varying degrees on Windows and OSX. This style is mainly used by expert users by typing into a prompt that allows them to quickly execute commands. Unfortunately command line places a considerable burden on the user to learn and recall commands from memory. It is often the case that commands take parameters as well and most of the added benefits (mainly in the way of efficiency) come from using them. This leads to an unfriendly environment for both novice and intermediate users that may attempt to use this style. The large overhead in learning commands and minimal help for the user leaves this style almost exclusively in the domain of the expert user.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* quick and powerful for experienced users&lt;br /&gt;
* user-controlled interaction&lt;br /&gt;
* minimal amount of typing (no mouse use)&lt;br /&gt;
* can be used in conjunction with other user interfaces&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* little or no prompting&lt;br /&gt;
* requires user’s knowledge of system, programs&lt;br /&gt;
* relies on recall of commands and syntax&lt;br /&gt;
* difficult to learn&lt;br /&gt;
* error prone&lt;br /&gt;
&lt;br /&gt;
== Natural Language ==&lt;br /&gt;
Natural Language is an interaction style which allows the user to communicate with their computer through a series of spoken commands, similar to how one may issue spoken commands to another person. However the benefits and applicability of Natural Language systems thus far is very limited, largely due to the imprecise and verbose nature of spoken languages. A major issue with using spoken language is that to communicate with computer systems the vocabulary would need to be limited to a specific subset of a full natural language, in order to both reduce ambiguity and keep processing time within reasonable bounds. One solution to the ambiguity of spoken languages is to utilize gestural language, which is considered at least as natural as verbal language. At the same time, the definition of what makes a natural language is very important. It is not as though humans are born knowing spoken word or gestures; a natural language is simply one which can be grasped fluently by the time one is required to draw upon it. A language could be considered natural, if upon approaching a computer the typical user already possesses language skills adequate for communicating desired concepts in a fluent and articulate manner. So in a sense Natural Language could involve a kind of language humans develop with the sole purpose of communicating with computer systems, thus potentially eliminating the ambiguities of the current natural spoken languages. Thus far however Natural Language has not seen widespread use, and often requires each user to train the computer to recognize their own voice. Natural Language could be very useful for those with minimal keyboard skills, and once it more accurately interprets verbal commands may even see widespread use one day. &amp;lt;sup&amp;gt;[2][3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== + Advantages ===&lt;br /&gt;
* Allows users to communicate with their system naturally&lt;br /&gt;
* Can reduce or eliminate the need for keyboards, great for those with poor keyboard skills&lt;br /&gt;
* Once it is more accurate at interpreting speech, commands may be able to be spoken faster than they are typed&lt;br /&gt;
&lt;br /&gt;
=== - Disadvantages ===&lt;br /&gt;
* Currently cannot accurately interpret much of verbal language, which is too ambiguous&lt;br /&gt;
* Requires a lot of training for each user so it can interpret their verbal commands&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [[Motivations for the Studies of HCI]]&lt;br /&gt;
* [[Contexts for HCI]]&lt;br /&gt;
* [[Process for User-centered Development]]&lt;br /&gt;
* [[Social issues influencing HCI design and use]]&lt;br /&gt;
* [[HCI - Accommodating human diversity]]&lt;br /&gt;
* [[User Interface Standards]]&lt;br /&gt;
* [[The Object-Action (or visa-versa) model and its applications]]&lt;br /&gt;
* [[Direct Manipulation]]&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
# Mads Soegaard, &amp;quot;Interaction Styles&amp;quot;, interaction-design.org, http://www.interaction-design.org/encyclopedia/interaction_styles.html&lt;br /&gt;
# Byron Long, &amp;quot;Natural Language as an Interaction Style&amp;quot;, Retrieved on November 21st, 2009 from http://www.dgp.toronto.edu/people/byron/papers/nli.html&lt;br /&gt;
# Bill Buxton, &amp;quot;The &amp;quot;Natural&amp;quot; Language of Interaction&amp;quot;, Retrieved on November 21st, 2009 from http://www.billbuxton.com/natural.html&lt;br /&gt;
&lt;br /&gt;
= External links =&lt;br /&gt;
&lt;br /&gt;
--[[User:Shensw|Shensw]] 22:55, 20 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Collim|Collim]] 23:50, 21 November 2009 (EST)&lt;br /&gt;
&lt;br /&gt;
--[[User:Frostd|Frostd]] 00:58, 22 November 2009 (EST)&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-13T02:31:11Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;Finalising&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
Due to communication over large distances, [[satellite]] [[internet]] connections naturally have a large amount of latency regardless of bandwidth.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
[[Image:Ping.JPG|thumb|right|350px|Using Ping to calculate network latency in Microsoft Windows XP.]]&lt;br /&gt;
Network conditions constantly fluctuate, and so measuring the latency in transmitting a packet between the same two endpoints multiple times can have differing results. Because of this, the latency of any single packet may not be a meaningful measurement. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Round-trip communication times can be measured from a single host, and taking the average latency over several packets provides a reasonable estimate of the delay needed for future packets to arrive. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher. Also, the time a host takes to process packets is typically not included when calculating a round-trip time, but users and applications waiting for data will experience this delay just the same.&lt;br /&gt;
&lt;br /&gt;
Using [[Ping]] is a simple way to find your latency relative to some host address.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
===Streaming media===&lt;br /&gt;
Latency in [[streaming]] video or audio is not itself an issue, and (ideally) only delays receipt by an absolute amount roughly equal to the connection's average latency. Sudden spikes in latency may cause the stream to be interrupted, though [[buffering]] is effective at preventing this to a point. Latency however becomes an issue when communication or interactivity is involved. Live television broadcasts have noticeable latency due to the nature of their transmission, which becomes apparent during satellite interviews and the like. This delay is a common problem with [[VoIP]] services such as [http://www.skype.com/intl/en/ Skype]&lt;br /&gt;
&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|450px|An example of lag compensation in Counter-Strike: Source. The man running left shows the player's actual position on the server, whereas the coloured boxes show their position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' input and the game's response. Modern online games are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to manually compensate for the delay by performing actions earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine implement a number of lag compensation techniques&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;. To eliminate the perceived delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as ''client-side prediction''.&lt;br /&gt;
&lt;br /&gt;
In order to mitigate the discrepancies between the server and clients, latency can be factored into critical gamestate calculations. For example, suppose the server wants to check if player A shoots player B. Since the clients' predictions are not perfectly accurate, clients can never be sure of the server's exact gamestate, and a [[naive]] collision check would make it impossible to hit player B consistently. Instead, the server looks back in time (according to player A's round-trip latency) and checks to see if player A's hit would be successful according to that state. Though some mathematical imprecision may result, this much more closely aligns the events of the game with what each player is seeing (shown on the right).&lt;br /&gt;
&lt;br /&gt;
==Potential Uses==&lt;br /&gt;
Though reducing network latency is nearly always desireable, it is possible for applications to take advantage of its existence in order to provide services not otherwise possible. An article in Computer Networks journal describes a method whereby it is possible to implement a lag compensation system in an online multiplayer game using network latency that simulates a form of [[time dilation]].&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt; The end result is that through using what are called ''local perception filters'' a fully synchronized game can appear to be going in slow motion for short periods to some players but not others. If implemented naively, this disparity in game speeds would cause players to desynchronize.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*1. [http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking Source Engine Multiplayer Networking]&lt;br /&gt;
*2. [http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6VRG-4G94G99-2&amp;amp;_user=10&amp;amp;_rdoc=1&amp;amp;_fmt=&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;view=c&amp;amp;_acct=C000050221&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=10&amp;amp;md5=64b8d82ca3ba63232b0e8712ce061840 Realizing the bullet time effect in multiplayer games with local perception filters]&lt;br /&gt;
* [http://compnetworking.about.com/od/speedtests/a/network_latency.htm About.com, Network Bandwidth and Latency]&lt;br /&gt;
* [http://developer.valvesoftware.com/wiki/Lag_Compensation Valve development wiki page on lag compensation]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Packet-switching]]&lt;br /&gt;
*[[Multiplayer Games]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Computer Networking]]&lt;br /&gt;
*[[Bandwidth]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
*[http://www.michaelnygard.com/blog/2007/11/architecting_for_latency.html Wide Awake Developers, Architecting for Latency]&lt;br /&gt;
*[http://www.wikihow.com/Test-Network-and-Internet-Latency-(Lag)-in-Microsoft-Windows wikiHow, Instructions for testing latency in Microsoft Windows]&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-13T02:13:58Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
Due to communication over large distances, [[satellite]] [[internet]] connections naturally have a large amount of latency regardless of bandwidth.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
[[Image:Ping.JPG|thumb|right|350px|Using Ping to calculate network latency in Microsoft Windows XP.]]&lt;br /&gt;
Network conditions constantly fluctuate, and so measuring the latency in transmitting a packet between the same two endpoints multiple times can have differing results. Because of this, the latency of any single packet may not be a meaningful measurement. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Round-trip communication times can be measured from a single host, and taking the average latency over several packets provides a reasonable estimate of the delay needed for future packets to arrive. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher. Also, the time a host takes to process packets is typically not included when calculating a round-trip time, but users and applications waiting for data will experience this delay just the same.&lt;br /&gt;
&lt;br /&gt;
Using [[Ping]] is a simple way to find your latency relative to some host address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
===Streaming media===&lt;br /&gt;
Latency in [[streaming]] video or audio is not itself an issue, and (ideally) only delays by an absolute amount roughly equal to the packets' average latency. Sudden spikes in latency may cause the media to be interrupted, though [[buffering]] is effective at preventing this to a point. Latency however becomes an issue when communication or interactivity is involved. Live television broadcasts have noticeable latency due to the nature of their transmission, and becomes apparent during satellite interviews and the like.&lt;br /&gt;
&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|450px|An example of lag compensation in Counter-Strike: Source. The man running left shows the player's actual position on the server, whereas the coloured boxes show their position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' input and the game's response. Modern online games are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to manually compensate for the delay by performing actions earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine implement a number of lag compensation techniques&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt;. To eliminate the perceived delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as '''client-side prediction'''.&lt;br /&gt;
&lt;br /&gt;
In order to mitigate the discrepancies between the server and clients, latency can be factored into critical gamestate calculations. For example, suppose the server wants to check if player A shoots player B. Since the clients' predictions are not perfectly accurate, clients can never be sure of the server's exact gamestate, and a naive collision check would make it impossible to hit player B consistently. Instead, the server looks back in time (according to player A's round-trip latency) and checks to see if player A's hit would be successful according to that state. Though some mathematical imprecision may result, this much more closely aligns the events of the game with what each player is seeing (shown on the right).&lt;br /&gt;
&lt;br /&gt;
==Potential Uses==&lt;br /&gt;
&lt;br /&gt;
Though reducing network latency is nearly always desireable, it is possible for applications to take advantage of its existence in order to provide services not otherwise possible. An article in Computer Networks journal describes a method whereby it is possible to implement a lag compensation system in an online multiplayer game using network latency that simulates a form of [[time dilation]].&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt; The end result is that through using what are called ''local perception filters'' a fully synchronized game can appear to be going in slow motion for short periods to some players but not others.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*1. http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;br /&gt;
*2. http://www.sciencedirect.com/science?_ob=ArticleURL&amp;amp;_udi=B6VRG-4G94G99-2&amp;amp;_user=10&amp;amp;_rdoc=1&amp;amp;_fmt=&amp;amp;_orig=search&amp;amp;_sort=d&amp;amp;view=c&amp;amp;_acct=C000050221&amp;amp;_version=1&amp;amp;_urlVersion=0&amp;amp;_userid=10&amp;amp;md5=64b8d82ca3ba63232b0e8712ce061840&lt;br /&gt;
*3. https://developer.mozilla.org/En/Link_prefetching_FAQ&lt;br /&gt;
*4. http://developer.valvesoftware.com/wiki/Lag_Compensation&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Packet-switching]]&lt;br /&gt;
*[[Multiplayer Games]]&lt;br /&gt;
*[[Ping]]&lt;br /&gt;
*[[Computer Networking]]&lt;br /&gt;
*[[Bandwidth]]&lt;br /&gt;
==External Links==&lt;br /&gt;
http://www.michaelnygard.com/blog/2007/11/architecting_for_latency.html&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-13T00:35:27Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
[[Image:Ping.JPG|thumb|right|350px|Using Ping to calculate network latency in Microsoft Windows XP.]]&lt;br /&gt;
Network conditions constantly fluctuate, and so measuring the latency in transmitting a packet between the same two endpoints multiple times can have differing results. Because of this, the latency of any single packet may not be a meaningful measurement. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Round-trip communication times can be measured from a single host, and taking the average latency over several packets provides a reasonable estimate of the delay needed for future packets to arrive. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher. Also, the time a host takes to process packets is typically not included when calculating a round-trip time, but users and applications waiting for data will experience this delay just the same.&lt;br /&gt;
&lt;br /&gt;
Using [[Ping]] is a simple way to find your latency relative to some host address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
===Web Surfing===&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|500px|An example of lag compensation in Counter-Strike: Source. The man running left shows the player's actual position on the server, whereas the coloured boxes show their position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' input and the game's response. Modern online games are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to manually compensate for the delay by performing actions earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt; implement a number of lag compensation techniques. To eliminate the perceived delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as '''client-side prediction'''.&lt;br /&gt;
&lt;br /&gt;
In order to mitigate the discrepancies between the server and clients, latency can be factored into critical gamestate calculations. For example, suppose the server wants to check if player A shoots player B. Since the clients' predictions are not perfectly accurate, clients can never be sure of the server's exact gamestate, and a naive collision check would make it impossible to hit player B consistently. Instead, the server looks back in time (according to player A's round-trip latency) and checks to see if player A's hit would be successful according to that state. Though some mathematical imprecision may result, this much more closely aligns the events of the game with what each player is seeing (shown on the right).&lt;br /&gt;
&lt;br /&gt;
==Potential Uses==&lt;br /&gt;
&lt;br /&gt;
Though reducing network latency is nearly always desireable, it is possible for applications to take advantage of its existence in order to provide services not otherwise possible. An article in Computer Networks journal describes a method whereby it is possible to implement a lag compensation system in an online multiplayer game using network latency that simulates a form of [[time dilation]].&amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt; The end result is that through using what are called ''local perception filters'' a fully synchronized game can appear to be going in slow motion for short periods to some players but not others.&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
http://en.wikipedia.org/wiki/Link_prefetching&lt;br /&gt;
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;br /&gt;
==See Also==&lt;br /&gt;
http://www.michaelnygard.com/blog/2007/11/architecting_for_latency.html&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Ping.JPG</id>
		<title>File:Ping.JPG</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Ping.JPG"/>
				<updated>2009-04-13T00:08:08Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;Using Ping to calculate network latency in Microsoft Windows XP.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Using Ping to calculate network latency in Microsoft Windows XP.&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-12T23:59:57Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Network conditions constantly fluctuate, and so measuring the latency in transmitting a packet between the same two endpoints multiple times can have differing results. Because of this, the latency of any single packet may not be a meaningful measurement. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Round-trip communication times can be measured from a single host, and taking the average latency over several packets provides a reasonable estimate of the delay needed for future packets to arrive. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher. Also, the time a host takes to process packets is typically not included when calculating a round-trip time, but users and applications waiting for data will experience this delay just the same.&lt;br /&gt;
&lt;br /&gt;
Using [[Ping]] is a simple way to find your latency relative to some host address.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|600px|An example of lag compensation in Counter-Strike: Source. The man running shows the player's actual position on the server, whereas the coloured boxes show his position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' input and the game's response. Modern online games are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to manually compensate for the delay by performing actions earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt; implement a number of lag compensation techniques. To eliminate the perceived delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as '''client-side prediction'''.&lt;br /&gt;
&lt;br /&gt;
In order to mitigate the discrepancies between the server and clients, latency can be factored into critical gamestate calculations. For example, suppose the server wants to check if player A shoots player B. Since the clients' predictions are not perfectly accurate, clients can never be sure of the server's exact gamestate, and a naive collision check would make it impossible to hit player B consistently. Instead, the server looks back in time (according to player A's round-trip latency) and checks to see if player A's hit would be successful according to that state. Though some mathematical imprecision may result, this much more closely aligns the events of the game with what each player is seeing (shown on the right).&lt;br /&gt;
&lt;br /&gt;
==Compensating for latency==&lt;br /&gt;
When a noticeable latency is unavoidable, some method of hiding the latency from the user needs to be employed. One strategy for this is prefetching&lt;br /&gt;
&lt;br /&gt;
Suppose that a piece of real-time software needs to communicate with a server acting as an authority on the application's state, and that the network has a round-trip latency of 100 milliseconds. &lt;br /&gt;
===Prefetching===&lt;br /&gt;
Some web browsers (such as Mozilla Firefox &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
[[Image:Interpolation.gif|right|]]&lt;br /&gt;
Programs which &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
http://en.wikipedia.org/wiki/Link_prefetching&lt;br /&gt;
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;br /&gt;
==See Also==&lt;br /&gt;
http://www.michaelnygard.com/blog/2007/11/architecting_for_latency.html&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-12T22:45:53Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Issues caused ==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|600px|An example of lag compensation in Counter-Strike: Source. The man running shows the player's actual position on the server, whereas the coloured boxes show his position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' input and the game's response. Modern online games are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to manually compensate for the delay by performing actions earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt; implement a number of lag compensation techniques. To eliminate the perceived delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as '''client-side prediction'''.&lt;br /&gt;
&lt;br /&gt;
In order to mitigate the discrepancies between the server and clients, latency can be factored into critical gamestate calculations. For example, suppose the server wants to check if player A shoots player B. Since the clients' predictions are not perfectly accurate, clients can never be sure of the server's exact gamestate, and a naive collision check would make it impossible to hit player B consistently. Instead, the server looks back in time (according to player A's round-trip latency) and checks to see if player A's hit would be successful according to that state. Though some mathematical imprecision may result, this much more closely aligns the events of the game with what each player is seeing (shown on the right).&lt;br /&gt;
&lt;br /&gt;
==Compensating for latency==&lt;br /&gt;
When a noticeable latency is unavoidable, some method of hiding the latency from the user needs to be employed. One strategy for this is prefetching&lt;br /&gt;
&lt;br /&gt;
Suppose that a piece of real-time software needs to communicate with a server acting as an authority on the application's state, and that the network has a round-trip latency of 100 milliseconds. &lt;br /&gt;
===Prefetching===&lt;br /&gt;
Some web browsers (such as Mozilla Firefox &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
[[Image:Interpolation.gif|right|]]&lt;br /&gt;
Programs which &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
http://en.wikipedia.org/wiki/Link_prefetching&lt;br /&gt;
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;br /&gt;
==See Also==&lt;br /&gt;
http://www.michaelnygard.com/blog/2007/11/architecting_for_latency.html&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-12T22:22:28Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;/* Issues Caused by Latency and Solutions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Issues caused ==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|600px|An example of lag compensation in Counter-Strike: Source. The man running shows the player's actual position on the server, whereas the coloured boxes show his position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' input and the game's response. Modern online games are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to manually compensate for the delay by performing actions earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt; implement a number of lag compensation techniques. To eliminate the perceived delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as '''client-side prediction'''.&lt;br /&gt;
&lt;br /&gt;
In order to mitigate the discrepancies between the server and clients, latency can be factored into critical gamestate calculations. For example, suppose the server wants to check if player A shoots player B. Since the clients' predictions are not perfectly accurate, clients can never be sure of the server's exact gamestate, and a naive collision check would make it impossible to hit player B consistently. Instead, the server looks back in time (according to player A's round-trip latency) and checks to see if player A's hit would be successful according to that state. Though some mathematical imprecision may result, this much more closely aligns the events of the game with what each player is seeing (shown on the right).&lt;br /&gt;
&lt;br /&gt;
==Compensating for latency==&lt;br /&gt;
When a noticeable latency is unavoidable, some method of hiding the latency from the user needs to be employed. One strategy for this is prefetching&lt;br /&gt;
&lt;br /&gt;
Suppose that a piece of real-time software needs to communicate with a server acting as an authority on the application's state, and that the network has a round-trip latency of 100 milliseconds. &lt;br /&gt;
===Prefetching===&lt;br /&gt;
Some web browsers (such as Mozilla Firefox &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
[[Image:Interpolation.gif|right|]]&lt;br /&gt;
Programs which &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
http://en.wikipedia.org/wiki/Link_prefetching&lt;br /&gt;
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-12T22:02:36Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;/* Effects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Issues Caused by Latency and Solutions==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|600px|An example of lag compensation in Counter-Strike: Source. The man running shows the player's actual position on the server, whereas the coloured boxes show his position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' input and the game's response. Modern online games are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to manually compensate for the delay by performing actions earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt; implement a number of lag compensation techniques. To eliminate the perceived delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as '''client-side prediction'''.&lt;br /&gt;
&lt;br /&gt;
In order to mitigate the discrepancies between the server's gamestate and the clients', latency can be factored into critical gameplay calculations. For example, suppose the server wants to check if player A shoots player B. Since the clients' predictions are not perfectly accurate, clients can never be sure of the server's exact gamestate, and a naive collision check would make it impossible to hit player B consistently. Instead, the server looks back in time (according to player A's round-trip latency) and checks to see if player A's hit would be successful according to that state.&lt;br /&gt;
&lt;br /&gt;
==Compensating for latency==&lt;br /&gt;
When a noticeable latency is unavoidable, some method of hiding the latency from the user needs to be employed. One strategy for this is prefetching&lt;br /&gt;
&lt;br /&gt;
Suppose that a piece of real-time software needs to communicate with a server acting as an authority on the application's state, and that the network has a round-trip latency of 100 milliseconds. &lt;br /&gt;
===Prefetching===&lt;br /&gt;
Some web browsers (such as Mozilla Firefox &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
[[Image:Interpolation.gif|right|]]&lt;br /&gt;
Programs which &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
http://en.wikipedia.org/wiki/Link_prefetching&lt;br /&gt;
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-12T21:58:37Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;/* Real-Time Gaming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Effects==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|600px|An example of lag compensation in Counter-Strike: Source. The man running shows the player's actual position on the server, whereas the coloured boxes show his position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' input and the game's response. Modern online games are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to manually compensate for the delay by performing actions earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt; implement a number of lag compensation techniques. To eliminate the perceived delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as '''client-side prediction'''.&lt;br /&gt;
&lt;br /&gt;
In order to mitigate the discrepancies between the server's gamestate and the clients', latency can be factored into critical gameplay calculations. For example, suppose the server wants to check if player A shoots player B. Since the clients' predictions are not perfectly accurate, clients can never be sure of the server's exact gamestate, and a naive collision check would make it impossible to hit player B consistently. Instead, the server looks back in time (according to player A's round-trip latency) and checks to see if player A's hit would be successful according to that state.&lt;br /&gt;
&lt;br /&gt;
==Compensating for latency==&lt;br /&gt;
When a noticeable latency is unavoidable, some method of hiding the latency from the user needs to be employed. One strategy for this is prefetching&lt;br /&gt;
&lt;br /&gt;
Suppose that a piece of real-time software needs to communicate with a server acting as an authority on the application's state, and that the network has a round-trip latency of 100 milliseconds. &lt;br /&gt;
===Prefetching===&lt;br /&gt;
Some web browsers (such as Mozilla Firefox &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
[[Image:Interpolation.gif|right|]]&lt;br /&gt;
Programs which &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
http://en.wikipedia.org/wiki/Link_prefetching&lt;br /&gt;
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-12T21:22:27Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;Much new content in gaming section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Effects==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Image:Lag_compensation.jpg|thumb|right|600px|An example of lag compensation in Counter-Strike: Source. The man running shows the player's actual position on the server, whereas the coloured boxes show his position for gameplay purposes. The red boxes are what other clients see, and the blue boxes are the server's lag compensated position.]]&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' inputs and the game's response. Modern games of this type are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to mentally compensate for the delay by performing input earlier than actually desired.&lt;br /&gt;
&lt;br /&gt;
Modern [[game engines]] such as Valve Software's Source Engine &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt; implement a number of lag compensation techniques. To eliminate the apparent delay on a client, character animations and other responses which do not affect gamestate are played immediately. Actions which do affect the gamestate (such as a player walking forward) have their outcomes predicted on the client's end as if they have already happened, causing the player to immediately see themselves walking forward. The client is therefore seeing a real-time approximation of the server's current gamestate at any given moment. If any discrepancy is found once the server finally responds to the client, the client adjusts itself to match the server's new state in order to avoid [[desynchronization]] (this however can cause a sudden &amp;quot;jerking&amp;quot; effect known as &amp;quot;rubber-banding&amp;quot;). This method is known as '''client-side prediction'''.&lt;br /&gt;
&lt;br /&gt;
Client-side prediction is based off the assumption that basing gameplay events off of clients' individual latencies as well as the server's authoritative state provides a smoother experience. Whenever a predicted effect &lt;br /&gt;
&lt;br /&gt;
==Compensating for latency==&lt;br /&gt;
When a noticeable latency is unavoidable, some method of hiding the latency from the user needs to be employed. One strategy for this is prefetching&lt;br /&gt;
&lt;br /&gt;
Suppose that a piece of real-time software needs to communicate with a server acting as an authority on the application's state, and that the network has a round-trip latency of 100 milliseconds. &lt;br /&gt;
===Prefetching===&lt;br /&gt;
Some web browsers (such as Mozilla Firefox &amp;lt;sup&amp;gt;[x]&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Interpolation===&lt;br /&gt;
[[Image:Interpolation.gif|right|]]&lt;br /&gt;
Programs which &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
http://en.wikipedia.org/wiki/Link_prefetching&lt;br /&gt;
http://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Interpolation.gif</id>
		<title>File:Interpolation.gif</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Interpolation.gif"/>
				<updated>2009-04-12T17:54:46Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;A diagram describing a form of lag compensation known as entity interpolation.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A diagram describing a form of lag compensation known as entity interpolation.&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/File:Lag_compensation.jpg</id>
		<title>File:Lag compensation.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/File:Lag_compensation.jpg"/>
				<updated>2009-04-12T17:38:44Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;An example of lag compensation in Counter-Strike: Source.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An example of lag compensation in Counter-Strike: Source.&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-08T23:22:37Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
In [[online]] [[multiplayer games]], the round-trip time of a packet is commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Effects==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Real-time]] online multiplayer games suffer from network latency, causing a delay between the players' inputs and the game's response. Modern games of this type are typically designed to use a [[client-server networking]] model, though [[peer-to-peer]] implementations are also possible. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. During the infancy of online gaming the only workaround was for players to mentally compensate their actions for the delay, but most games now use some method of client-side prediction in order to avoid the need to.&lt;br /&gt;
&lt;br /&gt;
==Mitigation strategies==&lt;br /&gt;
===Prefetching===&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
===Interpolation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Ping</id>
		<title>Ping</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Ping"/>
				<updated>2009-04-05T17:58:19Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;Ping moved to Ping (disambiguation): This was originally intended as a disambiguation page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Ping (disambiguation)]]&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Ping_(disambiguation)</id>
		<title>Ping (disambiguation)</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Ping_(disambiguation)"/>
				<updated>2009-04-05T17:58:19Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;Ping moved to Ping (disambiguation): This was originally intended as a disambiguation page.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Ping''' may refer to:&lt;br /&gt;
&lt;br /&gt;
*[[Ping (utility)]], a computer networking tool used to test whether a particular host is reachable across an IP network.&lt;br /&gt;
*[[Network Latency]], in the context of online multiplayer games.&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Ping_(disambiguation)</id>
		<title>Ping (disambiguation)</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Ping_(disambiguation)"/>
				<updated>2009-04-05T17:57:30Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;New page: '''Ping''' may refer to:  *Ping (utility), a computer networking tool used to test whether a particular host is reachable across an IP network. *Network Latency, in the context of ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Ping''' may refer to:&lt;br /&gt;
&lt;br /&gt;
*[[Ping (utility)]], a computer networking tool used to test whether a particular host is reachable across an IP network.&lt;br /&gt;
*[[Network Latency]], in the context of online multiplayer games.&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Lag</id>
		<title>Lag</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Lag"/>
				<updated>2009-04-05T17:34:23Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;Redirecting to Network Latency&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Network Latency]]&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-04T00:15:08Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
The round-trip time of a packet is also commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Effects==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Space Exploration===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
[[Real-time]] [[online]] multiplayer [[games]] suffer from network latency, causing a delay between the players' inputs and the game's response. Games of this type are typically designed to use a [[client-server networking]] model. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players. Initially the only way to circumvent this was for players to mentally compensate their actions for the delay, but most games now use some method of client-side prediction in order to avoid the need to.&lt;br /&gt;
&lt;br /&gt;
==Mitigation strategies==&lt;br /&gt;
===Prefetching===&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
===Interpolation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-04T00:10:08Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
The round-trip time of a packet is also commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue is the fact that any latency measurements exchanged between hosts will themselves be subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Effects==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Space Exploration===&lt;br /&gt;
===Real-Time Gaming===&lt;br /&gt;
Real-time online multiplayer games suffer from network latency, in that a delay is caused between the players' inputs and the game's response. Games in this format are typically designed to use a client-server networking model, with one instance of the application acting as the authority on the game's current state, and client instances through which the players interface with the server. Latency means that the players' instructions to the game do not reach the server instantaneously, and the server's description of the current gamestate is slightly outdated by the time it reaches the players.&lt;br /&gt;
&lt;br /&gt;
==Mitigation strategies==&lt;br /&gt;
===Prefetching===&lt;br /&gt;
&lt;br /&gt;
===Prediction===&lt;br /&gt;
===Interpolation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-03T23:55:31Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect.&lt;br /&gt;
&lt;br /&gt;
In the context of [[packet-switching]] networks, latency can refer to any of the following:&lt;br /&gt;
&lt;br /&gt;
*The time from when a packet is sent to when that packet reaches its destination&lt;br /&gt;
*The round-trip time of a packet&lt;br /&gt;
*The perceived delay in communication between hosts&lt;br /&gt;
&lt;br /&gt;
The round-trip time of a packet is also commonly known as '''ping'''.&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
Any packets which are prevented from reaching their destination for any period of time will result in an increase in latency. Heavy network traffic can therefore increase latency, as [[bandwidth]] limitations and [[routing]] issues contribute to the time that a message spends in transit.&lt;br /&gt;
===Application performance===&lt;br /&gt;
Since every packet must at some point be created and sent by an application, any time taken in processing the information necessary to create or read a packet will cause additional latency. The perception of latency is also created when communication is delayed due to packets being dropped (from events such as [[packet collisions]]), because the user will only see the time from when the request was sent to when the message was successfully received.&lt;br /&gt;
===Distance===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity].  This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours. Because of this, [http://en.wikipedia.org/wiki/Rover_(space_exploration) rovers] must be programmed with some level of [[artificial intelligence]] so that moment-to-moment decisions can be made autonomously.&lt;br /&gt;
&lt;br /&gt;
==Measuring Latency==&lt;br /&gt;
Due to fluctuating network conditions, the latency of individual packets within the same session of communication can vary wildly. Because of this, the latency of any single packet may not be meaningful. Another issue with measuring latency is the fact that any communication between hosts reporting the latency experienced on either end will itself be information subject to delay on the network.&lt;br /&gt;
&lt;br /&gt;
A simple solution to both of these problems is calculating latency using average round-trip time. Finding the round-trip time of communication can be done from a single host, and taking the average latency over several packets provides a more stable and representative estimate of the expected delay in future packets. Extra steps may need to be taken, as dropped packets and temporary disconnections can skew the average latency measurement much higher.&lt;br /&gt;
&lt;br /&gt;
Note, the time that a remote host takes to process a packet is typically not included when calculating a round-trip time.&lt;br /&gt;
==Effects==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Space Exploration===&lt;br /&gt;
&lt;br /&gt;
==Mitigation==&lt;br /&gt;
===Prefetching===&lt;br /&gt;
===Prediction===&lt;br /&gt;
===Interpolation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-03T23:02:08Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;Added sections.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''Latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect. In computer networking,  '''Network Latency''' commonly refers to the round-trip time of a network [http://en.wikipedia.org/wiki/Packet_(information_technology) packet] (also known as &amp;quot;ping&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==Causes==&lt;br /&gt;
===Traffic Congestion===&lt;br /&gt;
===Distance===&lt;br /&gt;
===Application performance===&lt;br /&gt;
===Propagation===&lt;br /&gt;
Communication is naturally limited by the speed of light. Therefore the round-trip time of packets is unavoidably linked to the distance over which the packets are being sent, subject to the laws of [http://en.wikipedia.org/wiki/Relativity Relativity]. This is particularly an issue in the field of [http://en.wikipedia.org/wiki/Space_Exploration Space Exploration], where the round-trip time of communication is commonly measured in minutes or hours.&lt;br /&gt;
&lt;br /&gt;
==Effects==&lt;br /&gt;
===Quantum Computing===&lt;br /&gt;
===Space Exploration===&lt;br /&gt;
&lt;br /&gt;
==Mitigation==&lt;br /&gt;
===Prefetching===&lt;br /&gt;
===Prediction===&lt;br /&gt;
===Interpolation===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref&amp;gt;{{cite journal |title=Realizing the bullet time effect in multiplayer games with local perception filters |author=Jouni Smed, Henrik Niinisalo, and Harri Hakonen |journal=Computer Networks |volume=49 |issue=1 |pages=27-37 |date=31 May 2005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
==See Also==&lt;br /&gt;
==External Links==&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	<entry>
		<id>http://wiki.cas.mcmaster.ca/index.php/Network_Latency</id>
		<title>Network Latency</title>
		<link rel="alternate" type="text/html" href="http://wiki.cas.mcmaster.ca/index.php/Network_Latency"/>
				<updated>2009-04-03T19:49:17Z</updated>
		
		<summary type="html">&lt;p&gt;Simpsoa:&amp;#32;New page: As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''Latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect. In co...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As an [http://en.wikipedia.org/wiki/Engineering Engineering] term, '''Latency''' refers to the span of time taken from when some action is initiated to when it actually takes effect. In computer networking,  '''Network Latency''' commonly refers to the round-trip time of a network [http://en.wikipedia.org/wiki/Packet_(information_technology) packet] (also known as &amp;quot;ping&amp;quot;).&lt;/div&gt;</summary>
		<author><name>Simpsoa</name></author>	</entry>

	</feed>