Cross Platform Utilities - Saving and Achievements on Steam, Switch, Playstation, XBOX, etc

I asked these questions in an earlier blitz day, so I wanted to restate them and see if there’s been any thoughts about development.

In essence, there’s a bunch of things that we want to do on all the pc/console platforms we might support (steam, GOG, xbox, switch, playstation), which have different APIs on each platform. In particular I’m thinking of things like file IO for saving and loading files, and achievement systems.

We, and probably every other dev on the earth, end up making a single achievement system for a game, and then writing platform-specific code to do things like “unlock achievement” etc. The same thing goes for saving and loading, as all of the platforms have wildly different things you have to take into consideration, but our application code really wants to be able to just say “add 1 to the player’s max HP, write the save game”

While Unity prides itself on supporting as many platforms as possilbe, there’s still a pretty substantial porting job, and a large chunk of that porting job is dealing with these issues. You deal pretty well with differences in how the platforms handle input and rendering, maybe you could help us deal with differences in how they handle achievements and IO?

2 Likes

Definitely agree!

To add to this, a system like Unity’s OpenXR is nice example for this already inside of the editor.

Have the utils for the most important platforms built in, and be able to add profiles/plugins per platform to add support for that platform. That sounds not too complicated to put together from Unity and is relatively easy to extend when working with smaller platforms

Hi folks, this is an area I care very deeply about and I’ve been investigating how unity might go about solving this problem in a truly cross platform way.

I hear you clearly on the file IO and achievements side of things, these are very important, but are there any other areas of cross platform development that you find Unity isn’t supporting you well on?

I’d also be interested in hearing what platforms you’re targeting and what kinds of games you’re working on for context.

Thanks!

We make Indie/AA 2D platformers and 3D action adventures. We target Desktop, Switch and Playstation primarilly, but also Xbox. We have hired people to port things to mobile, so we don’t have much in-house experience there.

I can think of two other systems where we could get more help than we’re currently getting; button hint icons and rumble.

Button Hint Icons
Every game needs these. The new input system has a system for getting the display name for an input, but what we actually need is icons. We have written systems that maps eg. the .buttonSouth on an xbox controller to a Sprite that shows the A key. This is used both in-game (press this button to jump), and for rebind menus.
The hard part here is to support as many controllers as possible, and to be compliant with specs - we have failed cert before because the shoulder buttons we had pictures that the console owner didn’t like.
A system here where we could have known compliant buttons for all known platforms would be a ton of help, so we don’t end up with everyone having to source/make these ourselves, and write the code to find the ones in use.
A good starting point for the assets might be licensing Kenney’s Input Prompts, but you could always make your own.

Rumble
This is a bit complex to make a cross platform system for, because the rumble hardware for the different consoles are so different. What we have made here to help us, which I think is generally a good idea, is a Rumble asset that you can reference in scripts and Start/Stop. The Rumble asset has sections for each relevant platform, so if we have eg. a “Big Damage” rumble, the dev doing porting for Playstation can modify that in a Playstation-centric way to feel good, and then all gameplay code can just trigger rumbles without caring about the platform.

Thank you for the follow-up question, and feel free to reach out if you want to talk more about this.

1 Like

Thanks for this context and information. I know a few folks here who would be interested in reading this feedback so I will make sure to pass it on. These are certainly areas that we could improve our cross platforms support on.