Releasing multiple Unity games in a single iOS app

I’m new to Unity and am hoping to get some help in researching a tricky situation:

I’m looking into if it’s possible to put multiple Unity games within one iOS app. For example, the user would launch the app, pick a game from a menu, the game would start, the user could exit the game to return to the app’s menu. All of that would happen within a single iOS app. Note that a similar question was asked before (Multiple unity games in 1 app in ios and adroid - Questions & Answers - Unity Discussions) but it’s a couple of years old and I’d like to cover a few things that I think are unique to my situation.

My reading of Apple’s App Store rules are that it’s allowed as long as all the executable code is bundled within the app and that the app isn’t trying to create its own app store.

That leaves whether or not it’s technically possible. From other discussions (e.g. https://forum.unity3d.com/threads/one-unity-game-app-with-multiple-games-inside.239583/) I take it that one strategy would be to make each game a scene within one Unity project (and use Apple’s On-Demand Resources feature to download game/scene-specific assets to keep the app’s size down).

  1. How difficult or problematic would that each-game-is-a-scene setup be to pull off if the games are being developed by multiple teams?

  2. Would that each-game-is-a-scene setup make it difficult (i.e. a lot of extra development effort) to release some of the games independently as well? For example, say Game 1 is released as a standalone iOS app but is also included within the multi-game iOS app.

  3. Instead, if each game were a separate Unity project, is there a way to then release them all as one iOS app?

Thanks for the help!

  1. Should be easy enough. I would ask the teams to use namespaces for their code, to avoid e.g. two teams having a “GameManager” class. And they would ideally keep everything in a single folder per team, so you can easily add/remove it. It may be a problem if the games are more complex and require different setups (e.g. different inputs in InputManager if you use a joystick or something like that), but I imagine these are just simple mini-games (ask the teams to tell you if they need to change any settings for their games). It may also be a problem if two teams use the same plugin, make sure you check with them if they use anything from the Asset Store or any kind of iOS native plugins. One more thing to consider is if you want any kind of “joint” functionality, such as a “mute” button or other options, any kind of login system for all games etc.
  2. Aside from the problems listed above, it would be pretty easy to just copy it over to a new project.
  3. I am not aware of any.

Either way, I’d recommend having one programmer to be in charge of the merge, keep in touch with the other teams and see if they’re doing anything that would make things difficult down the road.