Is there a reliable way to support mainstream console(including std)?

I'm engaged in game / engine development. Recently, I'm investigating the possibilities and problems of engine development by rust. The biggest problem is that the native support of console by rust is not good.I mean std can be used,not just core.

rust needs to provide some solutions to adapt to mainstream consoles such as Playstation / switch. Otherwise, big game manufacturers will not use rust to make games / engines. This will lose a large number of users.
Taking c# as an example, unity has brought a large number of developers to c#. Unity use il2cpp to solve cross platform problems because C language is supported by a large number of platforms。

If rust can provide mainstream console support or at least provide feasible solutions, many game developers will turn to rust.

This is generally not up to Rust, because NDAs mean that people working on it cannot contribute it back to the project. IIRC the Chucklefish people said it wasn't hard to get std running.

If the console manufacturers would provide the necessary support to get them up to at least Tier 2 (since Tier 1 might not be feasible as we probably can't CI on them) that'd be great.

10 Likes

But there's just a whitebook, no other userfull infomation.
Acually, i found that they are still recruiting C/C + + developers, not rust developers..i'm confused..

As scottmcm says, in order to get access to testing hardware, specifications documents, code libraries, and all the other material needed to develop full support for a gaming console, you generally have to sign an NDA and a development licensing agreement that heavily restricts what you're allowed to do with those tools. This is a business decision by the console manufacturers, to ensure their control over what gets released on the consoles, and if you violate that NDA, (a) your games get pulled from various app storefronts, (b) your code signing keys get yanked, and (c) sometimes you get sued, for not-insubstantial amounts of money.

I agree with you that it would be great if Rust, out of the box, supported cross complilation for the PS5 or the Switch. Chucklefish developers have stated that getting Rust working on the big-three consoles (at the time the PS4, Switch, and XBox One) was feasible, but they cannot contribute that work back to the Rust community without violating the NDA they signed to get access to the development materials in the first place, so they're kind of stuck. I've heard since then that the team is no longer using Rust, because of hiring issues rather than technical issues, so that work is likely no longer being maintained internally at Chucklefish, too.

Until such time as Sony, Nintendo, Microsoft, &c see fit to support Rust, sadly Rust will not have first-class support for consoles, no matter how committed the Rust community is to that support: developing and testing compilers targeting those platforms will require a change in how those businesses operate. As consoles use more and more off-the-shelf hardware, porting Rust will get easier and experiences like Chucklefish's may get to being more common, but for now, we're stuck. The most we can do is advocacy, and frankly, none of the big three have shown much interest in opening up their platforms to wider developer audiences. Even Microsoft has slowly moved away from programs like XNA, and that was pretty locked down even in its heyday.

9 Likes
1 Like

Thanks,this is very helpful.

Anyone who a) has not signed an NDA, and b) thinks this is worth-while, should of course be free to hack around and find out, and if they manage to get anything useful working contribute that to the open projects. It will of course be much harder than signing an NDA and getting access to proper documentation, but maybe also contribute a greater value to the community.

The rest of the Rust community would not be able and the console companies don't seem to be willing to provide much help, and I am not that person. I just want to make it clear that neither the companies creating the consoles or the people who have signed the NDA:s have any moral or legal power to stop anyone else fooling around and finding out (a.k.a. doing science).

2 Likes

In Microsoft's case they've got the GDK, which is their current replacement for their previous gaming efforts (Things like XNA)

  • Using Win32 + GDK is the primary, supported app model to build games for Xbox console, Xbox Game Pass (both Xbox and PC), and Xbox Game Streaming**.
  • Key Feature is that only Win32 + GDK fully supports all Microsoft Gameplay Services (Xbox Live identity, multiplayer, chat, leaderboards, achievements, commerce, etc.), and is required for Xbox Game Pass(1) on both console and PC.
  • For developers building Win32 games on PC today, Win32 + GDK builds on the Win32 C/C++ programming models to unify development across Xbox consoles and Windows 10 PCs with the Microsoft Game Development Kit (GDK).

Unfortunately, this is only for PC development, so while you could publicly make Rust bindings/implementations for these that's the extent of it.

  • Xbox console development requires the “Microsoft Game Development Kit with Xbox Extensions (GDKX)”. Games will need to retarget and rebuild for Xbox One or Xbox Series X|S with the GDKX installed.
  • You need to download, install, and retarget your project for Xbox consoles using the GDKX
  • The GDKX is currently only available under confidential license within an NDA Xbox program (e.g. ID@Xbox).
  • The GDKX is just a bundled installer of the GDK + Xbox Extensions. Building a game with the GDK shares around ~80% of the same interfaces, but does not include the Xbox environment APIs and tools included in the Xbox Extensions.

It's that last 20% that's the killer, as a individual/company you could test Rust with those things, but I'd expect any information/tooling that results to still fall under the terms of the NDA. Simple things too, like does the Xbox present a filesystem? On the PC that'd all be handled via normal file APIs (Which Rust obviously already supports), but the Xbox might have a custom storage API that's not public and so couldn't be supported.

Edit: Actually a filesystem might have been the worst example I could pick, the Xbox uses DirectStorage and that's available on PC as well.

2 Likes