For me, I recently had to revamp something because I was taught to use PlayerPrefs for saving all game data and had to move everything to a JSON in order to make cloud saves work or even just transfering save files to other devices.

  • ConorVernon
    link
    fedilink
    41 year ago

    Profilers for diagnosing performance issues.

    I had an experience where my general basic rendering knowledge (lots of draw calls / polys = bad) got me complacent in solving performance problems. I saw low FPS, I started simplifying meshes. But that’s not always the case, there can be runaway code, memory issues, specific render passes etc.

    In my case, I was trying to get a Unity game to run on a PS4 devkit but it kept crashing on a certain level. I wasted a lot of time simplifying the meshes used in that scene before jumping on a call with our tester (who had the devkit and was also inexperienced) and remotely profiling the game to determine the root causes.

    This turned out to be a memory overload. The amount of functional RAM/VRAM you have on a PS4 is actually pretty limited compared to a desktop PC. In our case, there were several things ramping it up and over the limit:

    • Unity’s static batching creating new combined meshes which added to memory cost
    • Like batching, mipmaps also generate new copies of a texture which take up memory
    • Excessively high-resolution textures for simple patterns (we hadn’t considered Texel Density at all for that project)
    • Erroneous use of high-memory textures where it was not necessary (e.g. a Visual effect was being driven by a 4k pure white texture, instead of just a vector colour)

    So now, while my knowledge has significantly improved from experience, I make use of profiling wherever possible to confirm what a problem is. As the saying goes; you don’t want to just mindlessly create solutions, you want to identify and solve problems