code: def log_game_start(self, players, terrain, numbers, ports):
          
          self.reset()
          self._set_players(players)
          self._logln('{} v{}'.format(__name__, __version__))
          self._logln('timestamp: {0}'.format(self.timestamp_str()))
          self._log_players(players)
          self._log_board_terrain(terrain)
          self._log_board_numbers(numbers)
          self._log_board_ports(ports)
          self._logln('...CATAN!')
docs: Begin a game.
  
          Erase the log, set the timestamp, set the players, and write the log header.
  
          The robber is assumed to start on the desert (or off-board).
  
          :param players: iterable of catan.game.Player objects
          :param terrain: list of 19 catan.board.Terrain objects.
          :param numbers: list of 19 catan.board.HexNumber objects.
          :param ports: list of catan.board.Port objects.