In the 4th semester project, called Tweeble, we decided that instead of focusing on one game, we wanted to create games in a game jam format with rapid ideation and implementation phases and then reflect on the project in a podcast. Early on I therefore started looking into how we could tie everything together nicely.
The idea was to create a launcher that downloads all the projects on-demand and thus grows over time. Looking at expanding games, I came across AssetBundles, the system used in Unity for packing and loading of content that is not shipped with the game.
I discovered that using Mono and reflection one could in-theory also load code but since we weren't entirely sure on the platforms and thus the restrictions and it being very tedious during the development, we discarded the idea and just bundled assets.
For some reason, I also couldn't get the built-in caching to work properly so I wrote my own system that uses a SHA256 hashes and thus makes sure the player always has the latest version available but is able to play without network. The whole launcher was a side project that was developed inbetween jams and thus very rough and unfinished but I did make it work in the end.
Knowledge from this was partially transferred into the 6th semester project Quarantine Companion but instead of using AssetBundles, I included Addressables. The system existed back then but was still in development and poorly documented which is why I couldn't use it.