Super Hexagon Neo

Super Hexagon: The Neo Update (Part 1)

There is now a public beta branch on Steam for Windows/Linux/macOS, which contains an update we've internally codenamed "Neo".

Screenshot of Super Hexagon neo branch

This was jokingly named after the Doom 3 "neo" folder, since id Tech 4 was a pretty major rewrite of Tech 3; in addition to new features, supposedly one of the reasons for their rewrite was easier long-term maintenance. This update sits firmly in the latter category: We've gone into the old source code and made significant changes to the engine, while keeping the game itself exactly as you remember (minus the bugs, hopefully!).

There's a lot of technical goo in this update, so here's a short version that skips most of the details:

  • The framework got completely replaced with a new one built just for Super Hexagon

  • It should be more stable and in some cases quite a bit faster

  • The window is now resizable, and macOS/Wayland now have high-DPI support

  • Controller support is better and the UI now accounts for controller input

  • The game should now work on macOS Catalina and newer (sorry this took so long!)

  • A "part 2" is coming "eventually"

  • Send us any bugs you find!

The long version:

What to expect from Neo Part 1:

The framework has been completely rewritten from scratch, so 100% of the system-level code is brand new and shared across all three desktop OSes. Super Hexagon was originally written with openFrameworks, and each platform ended up having its own unique version, meaning every platform behaved differently, had different features, was buggy in different ways, and so on. This problem is mostly our fault as the application maintainers; normally you try to stay in sync with upstream, but for various reasons this didn't happen and we diverged enough to where it was easier to take a small, rough version of the ABI we used and write something that was made just for the PC version of this game.

With the Neo update, all three desktop platforms use exactly the same code with exactly the same features, and as weird as it sounds they should now all be buggy in exactly the same way, should bugs arise. Just about the only thing that was kept from the old framework was the text renderer, since most of the work gets done by FreeType anyway. Aside from that, it's such a big rewrite it had to be split up into sections:

  • The platform layer now uses SDL, which in addition to having robust window management (so yes, we finally made the window resizable!) it also brings vastly improved controller support. No more binding arbitrary button numbers to actions; if your controller is recognized by SDL (and in 2022 it almost definitely will be) it will map the controller automatically. It even does proper A/B swapping for Nintendo controllers! With this new input system we were also able to support hotplugging and dynamic input text, so when you have a controller plugged in the game will now present UI that matches controller bindings (i.e. "Press A" rather than "Press Space").

  • The renderer has been replaced with FNA3D, which while not intended for use outside of its parent framework was useful for Hexagon since the game really only needs to render textureless polygons and text. Previously the game used fixed-function immediate-mode OpenGL, it now uses more GPU-friendly data that can be rendered by OpenGL, Direct3D 11, and even Vulkan! And we're able to provide all of this in a single binary - there are no special versions needed, the engine will pick whichever works best for your PC. By default D3D11 is used on Windows while OpenGL is used on Linux and macOS; you can try Vulkan by passing "-renderer Vulkan" as a launch option but it shouldn't make a big difference. In addition to being more energy-efficient in general these performance improvements allow us to support features like high-DPI by default; on macOS and Wayland you should see proper scaling for your display, particularly in fullscreen mode. Despite not being a super graphically-intensive game it looks really good in 4K!

  • The audio engine has been replaced with FAudio, a reimplementation of the XAudio2 libraries. While the audio has generally not been an issue, we were using different engines on each platform, and some of them were proprietary even! With FAudio we're able to use the same FOSS engine everywhere, and since it's lower-level than all the other previous engines we were actually able to optimize things here too!

But what about Part 2?

The Neo update is being developed in parallel with a major update that's been deployed to Android and is in progress for iOS/tvOS and the Mac App Store - they're currently two separate branches, with the long-term goal being to merge them into a single, "final" version of the game. The idea is that the features that were a priority for mobile will eventually be folded into PC, and vice versa. Some of the mobile features include high-framerate support, robust touch support, and a new text engine that supports localized text! Part 2 doesn't have any deadline so it will be a while before that releases, but it seemed important to get all the other changes out and available for PC since the bit-rot was starting to set in and players were in some cases completely unable to play the game at all.

With that in mind, please give the Neo branch a try and let us know what you think!

Report issues with Super Hexagon Neo


flibitijibibo