Morale Boost Games
Morale Boost Games is a small indie game company, founded by Fil and Matt. After getting our bachelor degrees in Game Development and Simulation Programming, we got right to work on our first big project, Ancient Arena .

Updates

Update 10/6

10/6/2016

Comments

 
  • Implemented multiple adjustments to some base code and lots of cleanup to hopefully help improve performance. I have a bigger list of the exact changes that I'll put at the bottom just so you know the ins and outs (even if you don't fully understand them).
  • Fixed bosses being launched by certain events and becoming stuck in a launching phase.
  • Fixed bosses being poisoned and stuck in a poisoned state forever.
  • Fixed enemies becoming stuck from certain flag variables (isRolling and tookDamage) and becoming unkillable.
  • Fixed leaderboards saving the wrong values when exiting a game.
  • Fixed crash when trying to start a second game because it was looking for a certain value in the leaderboards and the leaderboards were empty.
  • Fixed certain textures disappearing when minimizing the game.
  • Removed the need to press a button to go from the loading screen to the splash screen, now it's automatic after loading is finished.

Performance Updates
There were 5 different areas that jumped out the most from the last trace report that could be improved to better performance. These 5 areas were the ScreenManager.GetScreensToUpdate(), LevelManager.UpdateScoreboard(), Camera.Update(), Game1.Draw(), and Numbers.Draw().
  • The ScreenManager calls GetScreensToUpdate to build the list of screens that are being used, and updating/drawing those screens. This function was called every game loop as it was in the normal ScreenManager.Update function, and thus used up a ton of resources. Basically the only thing that controlled what screen was displayed was the current game state, so now game states have been changed to call that update function only when they themselves have been changed.
  • In a similar fashion, LevelManager.UpdateScoreboard is called constantly from the normal LevelManager.Update function. Now when any value on the scoreboard actually changes (kills, deaths, points, waves/survival stages completed, chest secondary health) the UpdateScoreboard function will be called.
  • The Camera.Update function would use a lot of resources just trying to determine where to place the camera. Since the introduction of multi threading, this was a perfect solution. The Camera.Update is now called on a seperate thread so game resources aren't being used just to place the camera.
  • In Game1.Draw, a lot of text is drawn using the custom Alignment class, but not in the ideal way, specifically the website and version number since they are drawn constantly on basically every screen. Instead of creating variables to hold specific Alignment values and then drawing them using the variable, it was condensed into one action, where the Alignment class was called directly to draw the text inside the Game1.Draw. This uses more memory because it has to create a new variable every time it gets drawn. Now there are variables before hand to hold the Alignment values, and those variables are then drawn later.
  • This was also the same case for the Numbers class. This class holds all the data pertaining to damage numbers being drawn and updated. This was also changed in a similar way to above, where there is now a list of Alignment variables that are created before hand, and then drawn later.
From these 5 adjustments alone, I already see a noticeable improvement in performance. One good area to compare is when a barrel explosion hits about 10+ enemies, before there would be about a 1 second pause, now that pause is virtually gone. There's more to be done, I need to do a better job being more aware of certain functions that are called every single game loop because there are still a few out there (such as UpdateDazed() and UpdateLayers() in the AI class) that could be cleaned up, but this is definitely a solid improvement.
Comments
Lead Programmer     Lead Artist
Matt Slotnick         Fil Fortes

Morale Boost Games