This page contains an interactive applet, which will only be run if your browser supports the Java programming language. The applet is about 108 K, so it will take some time to load.
In the game of Quantum Soccer, the aim is to shape the wave function of a quantum-mechanical “ball” so that the probability of it being inside one of the goals rises above a set threshold. This is achieved by using the motion of the players to alter the energy spectrum of the wave function: when a player moves across the field, the energy that this action provides (or absorbs) enables transitions between certain modes of the wave function. The pairs of modes involved depend on the player's velocity; the exact rules are spelt out in the mathematical details, but it's easy to experiment using trial and error.
|The velocity control sets the x- and y-velocities of a player in metres per second. Click or drag the mouse on this control to set the velocities, then select a player. If a player has already been selected, the new velocity will be applied immediately.||The goal control selects the probability threshold for the ball being inside one of the goals in order to score.||The resolution control sets the size of the grid on which the wave function is computed.|
|If the auto-reverse option is checked, players reverse automatically when they encounter an obstacle. Otherwise, they halt.||The RESTART button starts the game again from scratch.|
|The demo buttons play scripted demonstrations, in which the two teams cooperate to show how goals can be achieved. (Real play, of course, would include very different tactics.)|
Players are selected by clicking on them; click on an empty spot to de-select the player.
The green panel represents the playing field (which is 100 metres by 50 metres). The “ball” is a wave function confined to lie within the borders of the field (it can't tunnel out, since the energy barrier is assumed to be infinitely high). The wave function is drawn as contours of the square of its magnitude, with phase indicated by the colour of the contour lines.
The probability of the ball lying within the goals is shown above each one. If the value crosses the threshold, the goal flashes white and the players and wave function are reset to the starting configuration.
The blue panel displays the spectrum of the wave function: the amplitude of each of the possible modes, with the phase indicated by a dial, and the frequency of the mode (in milliHertz, i.e. cycles per 1000 seconds) shown beneath it. Links are drawn in grey between pairs of states for which transitions are enabled by the current motion of the players; also, if you click-and-hold (or click-and-drag) on the velocity control, the links for the velocity you specify will appear temporarily in red on the spectrum panel.
You can preview a single mode by clicking on it: this displays it on the field, without affecting the wave function of the ball or registering any goals. You can also display the best possible goal-scoring spectrum, by holding down the shift key and clicking anywhere on the blue panel. This wave function produces peaks of over 50% probability in alternate goals whenever the time is a multiple of 50 seconds. (If more modes were included, these peaks would be even higher.)
The following functions can be performed with the keyboard, after clicking somewhere on the applet first, so it receives the keystrokes rather than your browser.
|Setting velocities with the keyboard|
|Keys that alter the x-velocity (when typed alone), or the y-velocity (when combined with the SHIFT key):||preceded by the MINUS (-) key for a negative velocity||the digit keys, 0-9, SELECT a velocity.|
|the UP arrow key INCREASES the velocity.|
|the DOWN arrow key DECREASES the velocity.|
|R REVERSES the velocity.|
|Keys that alter BOTH x- and y-velocities:||B reverses BOTH x and y velocities.|
|Z sets both x and y velocities to ZERO.|
|H HALTS all players.|
|Selecting players with the keyboard|
|RIGHT ARROW||selects the NEXT player, in team order|
|LEFT ARROW||selects the PREVIOUS player|
|SHIFT RIGHT ARROW||selects the next MOVING player|
|SHIFT LEFT ARROW||selects the PREVIOUS MOVING player|