A game server comprising: an input configured to receive user game data associated with a computer implemented game, the computer implemented game being played on a first user device, the user game data comprising game level information identifying a level of the computer implemented game, level seed information indicating an initial configuration of the level of the computer implemented game being played on the first user device, and information about one or more discrete moves made responsive to user input during playing of the level of the computer implemented game on the first user device; a first data store configured to store the user game data received from the first user device; a second data store configured to store game data; at least one processor configured to retrieve the stored user game data and game data to: generate an initial configuration of the level being played at the first user device based on the user game data and the game data; generate video data using the initial configuration, the information about the one or more discrete moves, and the game data, the video data re-creating said computer implemented game played on the first user device; and an output configured to output the video data to a second user device, whereby a second user is able to watch a video on the second user device showing the computer implemented game as played by the first user on the first user device. an input configured to receive user game data associated with a computer implemented game, the computer implemented game being played on a first user device, the user game data comprising game level information identifying a level of the computer implemented game, level seed information indicating an initial configuration of the level of the computer implemented game being played on the first user device, and information about one or more discrete moves made responsive to user input during playing of the level of the computer implemented game on the first user device; a first data store configured to store the user game data received from the first user device; a second data store configured to store game data; at least one processor configured to retrieve the stored user game data and game data to: generate an initial configuration of the level being played at the first user device based on the user game data and the game data; generate video data using the initial configuration, the information about the one or more discrete moves, and the game data, the video data re-creating said computer implemented game played on the first user device; and an output configured to output the video data to a second user device, whereby a second user is able to watch a video on the second user device showing the computer implemented game as played by the first user on the first user device. generate an initial configuration of the level being played at the first user device based on the user game data and the game data; generate video data using the initial configuration, the information about the one or more discrete moves, and the game data, the video data re-creating said computer implemented game played on the first user device; and an output configured to output the video data to a second user device, whereby a second user is able to watch a video on the second user device showing the computer implemented game as played by the first user on the first user device.