def run(self):
     # Pygame sound mixer init
     pygame.mixer.pre_init(22050, -16, 2, 2048)
     # Initialize pygame
     pygame.init()
     # Setup the event manager
     evManager = EventManager.EventManager()
     # Setup the input controller
     inputctrl = InputController.InputController(evManager)
     # Setup the tick controller
     ticker = TickController.TickController(evManager)
     # Setup a logger (this may be commented out after completion so that no logging occurs)
     GlobalServices.init(evManager)
     logger = Logger.Logger(evManager)
     GlobalServices.setLogger(logger)
     logger.setFilter([MapLoadingFailedEvent])
     evManager.register(logger)
     # Setup an audio device
     GlobalServices.setAudioDevice(AudioDevice.AudioDevice())
     # Setup the top-most view "controller"
     view = View.View(evManager)
     
     # Register different listeners at the event manager
     evManager.register(inputctrl)
     evManager.register(ticker)
     evManager.register(view)
     
     # Setup the game object providing access to game entities & register it as well
     game = Game.Game(evManager)
     evManager.register(game)
     
     # Start the tick controller, which then fires tick events and thereby "induces" the game loop
     ticker.run()