What is the best way to develop platform specific versions of the same game?

If you make gamepad it should work on all platfroms out of the box, just remeber to bind action to gamepad and keys, only issue PC key rebinding if you want that, not sure if this is possible in blueprint only. Mouse will work with both PC and Mobile, but console if you think about them will require to make some emulation of mouse.

There a node in blueprint Get Platfrom Name which allows you to get information on which platfrom your game is curretly running and from tat you can make specific code for platfroms.

I have created my game, but certain things need to be different depending on the platform. For example, the desktop version should use the keyboard for controls, but mobile versions should show a UI for controls.

What is the best way to do this? Do I have to duplicate the entire project for each platform, and if so is there anyway to sync changes across those versions that should apply to all platforms?

Or is it something more simple, like getting the platform and changing things like camera ratio and the loaded HUD at runtime?

note: using blueprints

There is a platform name check, which is the simplest way if you only need to worry about it in a few places (Such as UI).