@Override
  public Scene onLoadScene() {
    EventBus.clear();
    EventBus.register(this);

    CollisionHandler.instance().clear();
    this.getEngine().registerUpdateHandler(CollisionHandler.instance());

    ObjectHandler.clear();

    setupNetwork();

    final FPSLogger fpsLogger = new FPSLogger();
    this.mEngine.registerUpdateHandler(fpsLogger);

    GameScene scene = new GameScene(this.camera);

    final ChangeableText fpsText =
        new ChangeableText(5, 5, Fonts.gameFont16p, "FPS:", "FPS: XXXXX".length());
    this.camera.getHUD().getTopLayer().addEntity(fpsText);
    scene.registerUpdateHandler(
        new TimerHandler(
            1 / 20.0f,
            true,
            new ITimerCallback() {
              @Override
              public void onTimePassed(final TimerHandler pTimerHandler) {
                fpsText.setText("FPS: " + fpsLogger.getFPS());
              }
            }));

    return scene;
  }
  @Override
  protected void onPositionChanged() {
    super.onPositionChanged();

    final float x = this.getX();
    final float y = this.getY();
    if (x < 0 || x > GameActivity.WORLD_WIDTH || y < 0 || y > GameActivity.WORLD_HEIGHT) {
      explosionSoundEvent.set(Sounds.explosion1, x, y);
      EventBus.dispatch(explosionSoundEvent);
      explosionEvent.set(x, y);
      EventBus.dispatch(explosionEvent);

      ObjectHandler.recycleItem(this);
    }
  }