TL;DR: I'm upgrading Cosmoteer to a new, more modern technology platform and could use your help testing it. Prototype download link below.
As you might already know, Cosmoteer is written in the C# programming language, which itself runs on top of a technology platform created by Microsoft called the ".NET Framework". Although it still works great and has been updated over the years, .NET Framework is fundamentally a pretty old technology, having been around since 2001. Over the past few years, Microsoft has been working on a successor to .NET Framework called ".NET Core", a more modern and much improved technology. Earlier this year, Microsoft announced that further development of .NET Framework was being stopped in favor of concentrating on .NET Core. And just a couple weeks ago .NET Core 3.0 was released, which now includes all the features I need for Cosmoteer. So I think it's time for Cosmoteer to switch from .NET Framework to .NET Core!
While .NET Framework isn't going to suddenly stop working, there are a bunch of advantages to switching to .NET Core:
Performance should in theory be improved due to many optimizations in .NET Core that don't exist in .NET Framework. Although I've done very little testing with Cosmoteer, what little testing I have done has given some pretty great results: I've seen 1.5-2x improvements in framerates in CPU-intensive scenarios.
.NET Core doesn't require a separate framework to be installed on the player's computer. Having to install the .NET Framework on every player's computer took time and was error-prone, and some players just couldn't get it to work at all. .NET Core has an option to package up everything it needs to run inside the application itself, greatly simplifying installation.
.NET Core appears to allow 32-bit and 64-bit players to play together. .NET Framework produced slightly different calculations depending on whether it was running on a 32-bit or 64-bit operating system, causing multiplayer desyncs. .NET Core appears to produce identical calculations, thus allowing players to play together regardless of operating system. (In fact, it appears to be identical across Windows, Mac, and Linux, which will eventually allow for cross-platform multiplayer once Cosmoteer is ported to those OS'es.)
.NET Core itself is cross-platform and runs great on Windows, Mac, and Linux. While this by itself doesn't get Cosmoteer running on Mac or Linux (Cosmoteer still depends on the Windows-only DirectX technology), it's a big step towards Mac and Linux support.
.NET Core is "future proof". Microsoft is putting all their efforts into improving and supporting .NET Core, unlike .NET Framework which is no longer being updated.
There is, as far as I can tell, only one significant downside to switching to .NET Core:
- Cosmoteer's download and installation size is much larger, because it no longer installs the .NET Framework separately and has to include everything it needs to run within the application itself. The new installer is about 200 MB, more than twice as big as the old installer. (The installer is actually bigger than strictly necessary because it includes both the 32-bit and 64-bit versions of Cosmoteer. I could make two separate, smaller installers, but that'd be potentially confusing for less techno-saavy players and would require fixes to the in-game auto-updater.)
Upgrading Cosmoteer to .NET Core turned out to be a much easier process than I anticipated with only a couple minor things that I needed to fix in the code. As far as I can tell, the game is working great on .NET Core. But I'd really like to get more testing before permanently deciding to switch to .NET Core for good. So if you have time, I would greatly appreciate you downloading the below prototype and testing it on your computer.
Download Cosmoteer .NET Core Prototype 1
In particular, please test and let me know:
Whether the game installs and runs fine on your computer. (Please let me know if you're on 32-bit or 64-bit Windows.)
How performance and framerate compare to 0.15.3 (which still uses .NET Framework), especially in CPU-intensive scenarios like big ship battles.
Whether you can connect to the test server and play multiplayer.
If you have access to both a 32-bit and a 64-bit computer, whether multiplayer works without frequently desyncing when one player is 32-bit and another is 64-bit.
If you have access to Mac or Linux and are familiar with WINE/Proton, whether the .NET Core version of Cosmoteer runs on WINE/Proton.
Thanks so much for your help testing this! I really appreciate it!