<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="pattern.xsl" ?>
<?DOCTYPE pattern SYSTEM "plml.1.00.dtd"?>
<pattern patternID="fast_forward" xmlns:html="http://www.w3.org/1999/xhtml">

<name>Fast Forward</name>
<author>Eelke Folmer</author>

<problem>
<usability>
Players have to wait for something to complete in the game.
</usability>
</problem>

<principle>Match between system and the real world
</principle>

<forces>
<force>
Players are impatient and do not want to wait.
</force>
<force>
Time manipulation cannot be implemented in multiplayer games.
</force>
<force>
If the game goes too fast, the player may miss important events.
</force>
</forces>

<context>
This is typical to simulation, real time strategy games, where the player has to wait for something to complete, e.g. building a house, gathering resources.
</context>

<pattlet>Allow the player to speed up the game</pattlet>

<solution>Rather than having the player wait and get annoyed; allow the player to manipulate time by making it go faster.  Multiple time controls can be combined in one graphical widget similar to the controls of a media player e.g pause, play, fast forward. One can allow the player to still interact with the game while it is sped up but doing so may be hard, so one may choose to resume the game at normal speed as soon as the player interacts with the game. If the game has been sped up and an event happens (such as an attack) one should automatically set the game speed to normal so the player has time to respond to such events. Fast forward can be implemented with multiples of the normal speed e.g. 2x / 4x etc. </solution>

<implementation>
Implementing a speedup should be fairly simple if the game uses a tick based system to schedule the simulation (there may be constraints however). Increasing the number of ticks may affect rendering: it may not be possible to still smoothly visualize the game and one may decide to revert to showing only intermediate states. 
</implementation>

<rationale>
Speeding up the game, improves efficiency as the player does not have to wait for activities to complete in real time. Being able to determine the pace of the game may give players a bigger sense of satisfaction. 
</rationale>

<example><html:IMG src="images/sims-fastforward.jpg" align="left"/>
<html:b>The Sims - </html:b>This simulation game focuses on the social development of virtual people by controlling their daily activities such as sleeping, eating, cooking etc. Such time consuming tasks can be sped up by putting the game in fast forward mode. There is a graphical widget at the left bottom of the main screen, allowing the player to pause the game, resume at normal speed or use two faster speed settings. 
</example>

<example><html:IMG src="images/msflight-fastforward.jpg" align="left"/>
<html:b>Microsoft Flight Simulator - </html:b>This flight simulator allows you to fly several planes in real time, however flying to a certain destination may take a while so it offers the option to speed up time to get through the tedious bits.
</example>

<example><html:IMG src="images/lemmings-fastforward.jpg" align="left"/>
<html:b>Lemmings - </html:b>This puzzle game requires you to guide a group of lemmings to a certain destination by giving individual lemmings various commands to overcome certain obstacles. It can take a while be fore the last lemming reaches the destination so by pressing the '+' button on can speed up the game. By pressing the '-' one can revert to normal speed.
</example>



</pattern>
