AirMess – Release 7 – RT/W8/W7
August 9, 2014
The AirMess August (R7) Release is available, and is the first to be available both on Windows 8 RT, Windows 8 Desktop and Windows 7 with the same features! 🙂
Windows 8 RT
Windows Desktop (Windows 7 and 8)
Note that in order to play on Windows 7, you need to ensure that your OS is up to date with the latest DirectX and .NET Framework updates. You need to have at least:
- Platform update for Windows 7 SP1 and Windows Server 2008 R2 SP1, which update the DirectX API
- .NET Framework 4.5, that the game uses
Windows 8.1 already includes all of the needed dependencies so it will work just out of the box.
What’s in the box?
Lots of new features in this release:
- New races: Icarus and Deep Blue
- Each ship now have distinct handling and speed parameters. Some ships may be better for some tracks 🙂
- In survival on Windows RT your highest speed is also recorded (who’s up to try breaking the sound barrier? 🙂 ). Also displayed on Desktop even if high scores aren’t saved (yet)
- Various memory usage and gameplay improvements (those little things …)
Nerdy tech details
Making all of that possible was actually worth some work.
The ImagineCup version of AirMess was heavily using Desktop Api, and of course because based on XNA couldn’t run on Windows RT (and not even on the Xbox 360 because of how it was relying on Desktop Apis to do everything).
In the current AirMess, I have a completely different approach. All the game logic, features, physics, rendering, everything “Core” is done in Portable Class Libraries. Meaning? As long as there’s a .NET Framework it could run. Even on Windows Phone (but I’m not even trying as the hardware would be far too slow).
Of course, this isn’t completely true as I still have a dependency on SharpDX, but to get around it (the SharpDX runtime is not the same on all platform) I have various build configuration that can deliver the WinRT build (x86, x64, ARM), the Desktop Win8 build (x86, x64, only used for the designer and the content pipeline) and the Desktop Win7 build (x86, x64, compatible with both Windows 7 and Windows 8).
To handle all the platform specific stuff, I have .Desktop and .WinRT projects that deals with all the things that can’t be done in PCL like:
- The access to the actual Device handle, which is a SwapChainPanel on WinRT and a Form on Desktop
- FMODEx: fmod.dll and fmod64.dll on Desktop, fmodexWSA*.dll on WinRT
- The Menu, a simple WPF app on Desktop and a DirectX+XAML overlay on WinRT. I’m also thinking of a way to merge both UI using Direct2D not to have to maintain two separate UI …
- Settings, User Preferences, High scores (WinRT only for now), …
The content pipeline and the designer itself is Windows 8 Desktop only as it uses DirectX 11.2 (not fully available on Windows 7) and anyway, my devbox is Windows 8 so I don’t really need to care about that.
The assets themselves are built using an army of importers for various formats, and the output is a platform independent .kadma file which can then be read by the PCL libraries. The files themselves are packed into an un-compressed archive (.karc) for easier deployment and metadata tracking. The archive isn’t compressed as it would slow down the asset loading on low end devices and it’s not that big now (~300 Mo). When uploaded on the Windows Store it get compressed …
Will all of that, maybe it would be possible to have an Xbox One build … who knows 🙂
What’s next ?
Various things in my mind right now:
- Better balance ships: I made their stats independent, but tweaking the stats would be worth exploring
- Another race?
- Another race mode? Speed lap à la Wipeout HD?
- Better integration with the music: this is actually one of my favorite idea, but getting there is a long path … 🙂
Once again, feedback highly appreciated 🙂