private boolean gameLoop() {

    updateFPS();
    double deltaTime = this.getDelta();

    if (!game.Input(deltaTime, mouse, keyboard)) { // If the Input fails, return false
      return false;
    }

    if (!game.Update(deltaTime)) { // If the Update fails, return false
      return false;
    }

    renderer.glSetup3D();
    GL11.glPushMatrix();
    {
      // Temp translate to see guide
      GL11.glTranslatef(0.0f, -3.0f, -10.0f);
      AxisGuide.draw3DAxisGuide();

      if (!game.Render3D(deltaTime)) { // If the Render fails, return false
        return false;
      }
    }
    GL11.glPopMatrix();

    renderer.glSetup2D();
    GL11.glPushMatrix();
    {
      if (!game.Render2D(deltaTime)) { // If the Render fails, return false
        return false;
      }
    }
    GL11.glPopMatrix();

    if (debugMenu) {
      GL11.glPushMatrix();

      GL11.glEnable(GL11.GL_BLEND);
      GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);

      GL11.glTranslatef(0.0f, 0.0f, -1.0f);

      int YtoDraw = 0;

      // Render debug information
      debugFont.drawString(0, YtoDraw, "Debug Menu", Color.white);
      YtoDraw += debugFont.getLineHeight();
      debugFont.drawString(0, YtoDraw, " - FPS: " + FPS + " (" + frameCount + ")", Color.white);
      YtoDraw += debugFont.getLineHeight();
      debugFont.drawString(0, YtoDraw, " - Mouse X: " + this.mouse.getX(), Color.white);
      YtoDraw += debugFont.getLineHeight();
      debugFont.drawString(0, YtoDraw, " - Mouse Y: " + this.mouse.getY(), Color.white);

      GL11.glDisable(GL11.GL_BLEND);
      GL11.glPopMatrix();
    }

    this.display.Update();
    return true;
  }