anchor.diff:              NameSize:?UCHAR>>,
             Name]}.
   
  +build_start(Tick, WallDiff) ->
  +  StartCommand = get_command(start),
  +  {Tick, [<<Tick:?USHORT,
  +            StartCommand:?UCHAR>>,
  +          build_diff(WallDiff)]}.
  +
   build_moved(UserId, Tick, Direction) ->
     MovedCommand = get_command(moved),
     {Tick, <<Tick:?USHORT, MovedCommand:?UCHAR, UserId:?UINT, Direction:?UCHAR>>}.
  
positive.code: handle_info({event, {serpent_added, _Serpent}}, State) ->
    % Do nothing, we already know this (we joined the guy!)
    {noreply, State};
  handle_info({event, {game_started, Game}}, State) ->
    lager:critical("game_started: ~p", [Game]),
    %NewGameUsers = send_event(NewEvents, GameUsers),
    {noreply, State};
  handle_info({event, {game_finished, Game}}, State = #state{games = Games}) ->
    lager:critical("game_finished"),
    NewGames = handle_game_finished(Game, Games),
    {noreply, State#state{games = NewGames}};
  handle_info({event, {game_updated, Game}}, State = #state{games = Games,
                                                            tick  = Tick}) ->
    lager:critical("game_updated"),
    NewGames = handle_game_updated(Game, Tick, Games),
    {noreply, State#state{games = NewGames}};
  handle_info({event, {game_countdown, _Game}}, State) ->
  
negative.code:       [NewGame | Tail]
    end.
  
  handle_game_started(Game, CurrentTick, Games) ->
    GameId = spts_games:numeric_id(Game),
    case lists:keytake(GameId, 1, Games) of
      false ->
        Games;
      {value, {GameId, GameName, GameUsers, {_OldFruits, OldCells}}, Tail} ->
        % Get the new cell data
        {_NewFruits, NewWalls} = condense_cells(spts_games:cells(Game)),
        NewSerpentCells = get_serpent_cells(spts_games:serpents(Game)),
        NewCells = NewWalls + NewSerpentCells,
        % Find the diffs
        CellDiff = get_cell_diff(OldCells, NewCells),
        % Make the event
        NewEvents = [build_start(CurrentTick, CellDiff)],
        NewGameUsers = [{User, Events ++ NewEvents} ||
                        {User, Events} <- GameUsers],
        % Build the new state
        NewGameState = {[], NewCells},
        % Compose the new game
        NewGame = {GameId, GameName, NewGameUsers, NewGameState},
        % Return the new game list
        [NewGame | Tail]
    end.
  
  %%==============================================================================
  %% Utils
  %%==============================================================================
  