void MainGame::gameLoop() { Bengine::FpsLimiter fpsLimiter; fpsLimiter.setMaxFPS(60.0f); // Main loop while (_gameState == GameState::PLAY) { fpsLimiter.begin(); checkVictory(); if (_timeElapsed > 100 && !_soldiersSpawned) initSoldiers(); else _timeElapsed++; processInput(); updateAgents(); updateBullets(); _camera.setPosition(_player->getPosition()); _camera.update(); drawGame(); _fps = fpsLimiter.end(); } }
void MainGame::gameLoop() { HackEngine::FpsLimiter fpsLimiter; fpsLimiter.setMaxFps(60.0f); while (_gameState == GameState::PLAY){ fpsLimiter.begin(); processInput(); updateAgents(); _camera.setPosition(_player->getPosition()); _camera.update(); drawGame(); _fps = fpsLimiter.end(); } }
void MainGame::gameLoop() { // Some helpful constants. const float DESIRED_FPS = 60.0f; // FPS the game is designed to run at const int MAX_PHYSICS_STEPS = 6; // Max number of physics steps per frame const float MS_PER_SECOND = 1000; // Number of milliseconds in a second const float DESIRED_FRAMETIME = MS_PER_SECOND / DESIRED_FPS; // The desired frame time per frame const float MAX_DELTA_TIME = 1.0f; // Maximum size of deltaTime // Used to cap the FPS Adina::FpsLimiter fpsLimiter; fpsLimiter.setMaxtFPS(60000.0f); // Zoom out the camera by 4x const float CAMERA_SCALE = 1.0f / 3.0f; m_camera.setScaleFactor(CAMERA_SCALE); // Start our previousTicks variable float previousTicks = SDL_GetTicks(); // Main loop while (m_gameState == GameState::PLAY) { fpsLimiter.begin(); // Calculate the frameTime in milliseconds float newTicks = SDL_GetTicks(); float frameTime = newTicks - previousTicks; previousTicks = newTicks; // Store newTicks in previousTicks so we can use it next frame // Get the total delta time float totalDeltaTime = frameTime / DESIRED_FRAMETIME; checkVictory(); m_inputManager.update(); processInput(); int i = 0; // This counter makes sure we don't spiral to death! // Loop while we still have steps to process. while (totalDeltaTime > 0.0f && i < MAX_PHYSICS_STEPS) { // The deltaTime should be the the smaller of the totalDeltaTime and MAX_DELTA_TIME float deltaTime = std::min(totalDeltaTime, MAX_DELTA_TIME); // Update all physics here and pass in deltaTime updateAgents(deltaTime); updateBullets(deltaTime); m_particleEngine2D.update(deltaTime); // Since we just took a step that is length deltaTime, subtract from totalDeltaTime totalDeltaTime -= deltaTime; // Increment our frame counter so we can limit steps to MAX_PHYSICS_STEPS i++; } // Make sure the camera is bound to the player position m_camera.setPosition(m_player->getPosition()); m_camera.update(); m_hudCamera.update(); drawGame(); // End the frame, limit the FPS, and get the current FPS. m_fps = fpsLimiter.end(); //std::cout << m_fps << std::endl; } }