Upgrading Unity Version
Design Challenge
This devlog contributes to the design challenge: "Improve the sustainability and expandability of an existing game so future developers can add and edit the game more easily in the future."
Context
When I first got the project from my company mentor, he told me they still used Unity version 2017.4.40f1. However, this is a very old version in which a lot of the new features, performance fixes and security patches didn't exist. They kept it like this because, well, it worked. As an expert, I advised them to upgrade the version because first of all it'd be easier to work with, would cost them nothing and above all, it'd be safer with all new security updates in place. Upon hearing this advice and "Apple" threatening to revoke their licence because the Unity version had too many security issues after such a long time, they told me to work on upgrading the version.
How to upgrade a Unity project from a 2017 version a newer version while ensuring the quality of the project?
Methods
Library - Best, Good & Bad Practices
What Unity version should I upgrade to?
Because Unity has very frequent updates, I had to do some research. I watched this video to learn more about different Unity versions. I decided to choose the latest LTS version (v. 2020.3.28f1 at the time) to make sure the version will be applicable for frequent security updates in the long term.
Workshop - Gap Analysis
After doing the usual "Click on button to upgrade", I encountered some significant errors. Using gap analysis, I created a list of problems to solve for the project to be functional once again.

Library - Expert Interview
I asked my company mentor about problems regarding a submodule with a library I couldn't access. He told me this submodule is owned by the company who worked on the project in the early stages. Because of this, he sent me the files as a local folder and told me to replace the submodule with them.
Workshop - Prototyping
Using prototyping, I tried fixing the remaining problems. They made use of a very popular package back in the day, however because of updates in C# and Unity, this package became obsolete. Luckily there is a replacement available for newer versions made by the same company. This resulted in an easy fix. TextMeshPro was also used in the older versions but the new versions of Unity adopted TMP so this was another easy fix of just removing the old one and replacing it with the new adopted version.
Result & Validation
To validate the upgrade was successful, I tested the game about 10 times on multiple target devices including tablets, android smartphones, windows laptop and even WebGL. All of these worked perfectly fine. In fact, the old version got stuck at the loading screen on smartphones however this seemed to be fixed by simply updating the Unity version. I showed my company mentor and the stakeholders the end result and they were pleased.
Next step
The Unity version being upgraded opens lots of doors for the future. With this upgrade, the company can now develop for IOS devices again, make use of most new advanced tools to create an even better game and even get a better performance out of it.
Sources
Monkey, C. [Code Monkey]. (2021, March 16). Which Unity Version should you Choose? 2021? LTS? [Video]. YouTube. https://www.youtube.com/watch?v=LLYhTWEX2Wc