I’d like to convert one of my mobile games over to PC with nicer graphics and controller support.
Should I make a copy of my project and begin conversion?
Keep the same project and use platform dependencies and new scenes for upgraded scenes for PC.
Something else I’m unaware of…
I’m thinking 2. would be best & creating new scenes with improved graphics. As long as I uncheck those PC scenes from any future mobile builds it shouldn’t effect build size etc should it?
I’d copy the project personally, the conversion with Unity shouldn’t be too hard to do… Whip in some better / heavier post (ACES, SSR, up quality of probes etc.), use a heavier GGX implementation with proper lighting falloff curve (like in Alloy, potentally use area lights where needed). Up the res / lower compression of textures, up the shadow cascades, spend a bit of time colour grading etc. etc.
Just spend a couple of days to a week tweaking the graphics with PC grade implementations and see where it takes you. Even if the artwork is relatively simple, you can still make it look gorgeous if the scene and lighting is set up right.
How different are the two versions going to be? And are you continuing as a multi-platform project, or are you transitioning to the new platform and dropping the old?
I’ve run multi-platform projects in a single Unity project before, and I’d generally suggest doing that so that you get the most value out of platform-agnostic work. This really requires effective design of both the user experience and of your software, though. Ideally your project will be aware of the platform that it’s running on and automatically behave accordingly.
You’ll also have to consider control schemes, UI layout, and so on. That said, I’d most likely use the same project* and set it up so it knows what to use based on the platform it’s running on.
I use Rewired from the asset store for my controls and button presses so most of the input is taken care of already. Just need to work on UI changes.
Yeah everything is in my Synology server using SVN.
So would you create new scenes for the PC version with new graphics etc? This would make most sense to me. My level select menu could point to the new PC scenes if it’s the PC version and I could uncheck them from the build on mobile.
ill have to create more quality settings as I only have 3 for mobile, although that might be fine.
What I’m unsure about is if I have a npc in the PC version only for example and spawn it with an if(PC version) etc will the npc add to the build size of the mobile version even though it’s not instantiated. I assume it will?
I would figure out a way to automate that, and the best approach is going to depend on the differences between your versions. If the PC scenes are strictly “mobile + extra stuff” I think I’d plan on some way to keep them as the same scene. Otherwise it’s a bit of a maintenance nightmare as every tweak needs to be made twice.
But yes, any asset referenced from a scene is going to be included in the build, even if the code to instantiate it is never called, because the Editor can’t know that ahead of time.
i would make a pc and mobile branch on svn, then work common features on master branch that you merge to the two other branch later. would be the most stable workflow if your project grow
I can’t think how I’d do that with adding extra unneeded assets to the mobile build.
I was thinking about this but I’m not sure how it works, does each branch only change things in that branch but changes to the master branch change all other branches?
One thing I’d consider is using AssetBundles, and then you can deploy each build with either mobile or PC versions of the AssetBundles containing only what is relevant.
Another way, depending on what assets are different, are to have the import settings for the PC-only assets make them tiny. This way there are still small placeholders, but the full sized asset is not present and everything fits into the asset pipeline as-is. (Plus, if there’s some kind of bug that loads the wrong asset you’ll get a low res something instead of a crash or breaking error.)
@Damien-Delmarle idea is an excellent one as long as it works with Unity’s data formats. It could be worth doing a few experiments and seeing if it does work.
it does work, In the company i worked before we had 10 people working on same game in same time, some were responsible for ios branch while other for android branch and i managed apple tv branch. took a few second to swap platform