News

Unity Game Platform Details Plans for .NET and C#

Unity Technologies, known for its real-time development platform used widely for gaming apps, has detailed its plans for incorporating new changes in .NET and C# being pushed out by Microsoft.

The two companies have close ties, with the game platform replacing its Mono-based IDE with Visual Studio way back in 2018, after which Microsoft published Unity guidance in both videos and even a Build Unity Games with Visual Studio site:

Visual Studio Unity Site
[Click on image for larger view.] Visual Studio Unity Site (source: Microsoft).

There's also a Visual Studio Tools for Unity site that contains documentation for the same-named extension.

Unity testing and debugging was also beefed up in the recent release of Visual Studio for Mac v8.9.

Last week, Unity's Josh Peterson announced its plans in a forum post titled "Unity Future .NET Development Status," cautioning that the thread discussions shouldn't be considered official announcements:

We've had a good bit of interest on various forum threads about Unity's plans for C# and .NET in the future. Microsoft has been pushing the .NET ecosystem in a number of beneficial directions, and we at Unity want to bring those improvements to our users as soon as we can.

While we are not in a position to mention specific details about when various newer .NET features will come to Unity releases, we would like to provide more transparency into our ongoing work to bring these features to Unity.

Our goal with this forum thread is to provide updates on what we are working on, and when we think it will be available to Unity releases. As with any large software project, there are many unknowns, so everything discussed here is subject to change.

With that said, Peterson's first post detailed the following:

  • Update Unity's fork of Mono to the latest code from the upstream Mono repo: This is about two years behind the latest upstream code, and while the update won't provide new .NET features, it will help ship such features in future releases. Peterson further said:
    • So this effort pulls in many bug fixes from upstream Mono.
    • It also improves the managed debugger.
    • It will allow Mono to run in 32-bit floating point mode, improving floating point performance.
    • It brings in more .NET Core class library implementation, including many changes to the way the class library code interacts with platform-specific code.
  • Add support for .NET Standard 2.1: This will expose user-requested APIs such as Span and ranges. "We're planning to first add .NET Standard 2.1 support to Unity's existing .NET Framework-based ecosystem. Although .NET Framework does not support .NET Standard 2.1, Mono's class libraries do support it, so we should be able to provide a nice bridge to a .NET Core-based ecosystem."
  • Complete C# 8 support: This comes with the aforementioned .NET Standard support along with the latest Mono code that features default interface methods support.
  • Complete C# 9 support: "We'd like to have covariant return type support in Mono and IL2CPP for Unity 2021.2. This will bring full C# 9 support to Unity users as well."
  • .NET 6 support: Peterson described this as "still a bit fuzzy," with the company hoping to provide a preview around the time the landmark, unifying, milestone .NET 6 ships in November as a long-term support (LTS) release, meaning that "Unity will likely skip .NET 5 entirely." He described the biggest hurdles for this as:
    • This is a breaking change for all Unity users. Any assemblies compiled against mscorlib.dll from the .NET Framework ecosystem will not work, and must be recompiled.
    • The .NET Core ecosystem does not support domain reloading, which is a fundamental requirement of the Unity Editor. We have done work to use Assembly Load Context instead, but that will be a breaking change, and will require time to implement properly, both from the Unity side and in user projects.

Speaking to the popularity of Unity in the .NET development ecosystem, more than 100 comments were appended to the post, many going into great detail about technical issues and more broad comments, such as this one about Visual Studio integration:

This is great news and something I hope that comes sooner rather than later, and that you can stay up to date with the latest releases!

One thing I think you guys really need to get on is the Visual Studio integration. Unity projects are still dodgy and not real .csproj files, and lack features such as project references, which is really important for some projects such as Client/Server games, where multiple projects are needed, with shared projects between. Something I am working on. I was shocked to find out a few months ago that project references are not supported, and that I had to add post-build command arguments to copy the generated DLL files into the unity scripts folder to use them, this is just a bit dodgy and removes features such as debugging and being able to step into code from the shared project, as there is no code available in the DLLs, metadata.

About the Author

David Ramel is an editor and writer at Converge 360.

comments powered by Disqus

Featured

  • Hands On: New VS Code Insiders Build Creates Web Page from Image in Seconds

    New Vision support with GitHub Copilot in the latest Visual Studio Code Insiders build takes a user-supplied mockup image and creates a web page from it in seconds, handling all the HTML and CSS.

  • Naive Bayes Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the naive Bayes regression technique, where the goal is to predict a single numeric value. Compared to other machine learning regression techniques, naive Bayes regression is usually less accurate, but is simple, easy to implement and customize, works on both large and small datasets, is highly interpretable, and doesn't require tuning any hyperparameters.

  • VS Code Copilot Previews New GPT-4o AI Code Completion Model

    The 4o upgrade includes additional training on more than 275,000 high-quality public repositories in over 30 popular programming languages, said Microsoft-owned GitHub, which created the original "AI pair programmer" years ago.

  • Microsoft's Rust Embrace Continues with Azure SDK Beta

    "Rust's strong type system and ownership model help prevent common programming errors such as null pointer dereferencing and buffer overflows, leading to more secure and stable code."

  • Xcode IDE from Microsoft Archrival Apple Gets Copilot AI

    Just after expanding the reach of its Copilot AI coding assistant to the open-source Eclipse IDE, Microsoft showcased how it's going even further, providing details about a preview version for the Xcode IDE from archrival Apple.

Subscribe on YouTube

Upcoming Training Events