Skullgirls 2nd Encore

Skullgirls 2nd Encore is a spectacularly creative PC and console fighting that oozes personality.

Skullgirls 2nd Encore on PC and consoles is a classic 2D fighting game with lush, vibrant graphics and tight controls. It is currently available on Steam (Windows, Mac, and Linux), PS4, PS5, Xbox One, Xbox Series, and Nintendo Switch.

Development

Skullgirls 2nd Encore began development nearly a decade ago, and was originally released in the early 2010s. Hidden Variable took over development in early 2020, with the goal of adding new content and platforms.

This game was a bit different from other Hidden Variable games, since we inherited a large and mature codebase for a proprietary engine. Though the engine was new to us, we were also fairly familiar with most of the concepts present in the game and underlying technology, having utilized them in the development of Skullgirls Mobile.

I was responsible for a number of cool augmentations to SG2E that I’ll highlight next!

CMake Integration

One of the first things I did was convert SG2E to use a CMake. Originally, SG2E maintained separate IDE project files for each platform, which was error-prone and difficult to maintain. By using CMake, we were able to configure all platforms in a central place, and we were able to generate IDE project files on-the-fly rather than committing them to version control.

Network Refactor

When we took over SG2E development, the lobby and network code was very complex and difficult to use. I was tasked with fixing a few lobby bugs, but it was nearly impossible to find the cause!

To alleviate this, I overhauled the network code to create a much clearer architecture and delineation between class responsibilities. Code that wasn’t platform-specific was moved to a platform-agnostic area. Code duplication was removed and everything was heavily commented and organized.

The result of this effort was that it was actually possible to fix many network and lobby bugs we were aware of, AND those fixes would usually apply to all platforms with no additional effort. Furthermore, integrating additional network systems for Xbox and Switch was greatly simplified.

Graphics Refactor

Similar to the above, the graphics implementation in SG2E was fairly difficult to maintain. Rather than graphics calls being abstracted behind an interface, the platform-specific code was scattered throughout the codebase, often with significant duplication.

Once again, to alleviate this, I implemented a GFX interface that allowed the game to manipulate the graphics system without having specific knowledge of the underlying system in use. This allows 99% of the codebase to use graphics capabilities without worrying about whether it is DirectX or OpenGL or Vulkan or whatever.

Gameplay Screenshot

This refactor proved absolutely vital when we later implemented Xbox One and Nintendo Switch versions of the game, which required us to add DirectX 12 and Vulkan support respectively. Without doing this first, I don’t know how sustainable that would have been.

Resurrecting PS4

Though SG2E had previously launched on PS4, it had not been maintained for several years. I took on the task of “resurrecting” it: updating to the latest SDKs, refactoring various systems, adding DLC, adding achievements, fixing bugs, and integrating some new features.

Since PS5 is backwards compatible with PS4, we also ensured PS5 compatibility at this time.

This was a very cool experience, and I learned a lot about PS4 development along the way! Developing a game for a PlayStation platform has long been a goal of mine, so I was glad to get the opportunity.

Xbox One

SG2E had released on Xbox 360 long ago, but it had never released on Xbox One or Xbox Series consoles. I was responsible for porting the game to Xbox One, which would in turn run on Xbox Series consoles due to backwards compatibility.

This involved implementing the Xbox variants of various systems, such as DLC, achievements, and networking with Xbox Live. However, by far the most involved aspect was re-implementing graphics in DirectX 12.

Though I curse Microsoft for not simply allowing DirectX 9 to run on Xbox One (which would have made development way easier for this port), I am glad in hindsight to have had the opportunity to learn the new “modern” approach to graphics represented by DirectX 12.

Vulkan

Speaking of graphics, I also ported the graphics system to support Vulkan. Since I already had reps refactoring the graphics system and implementing DirectX 12, I went ahead and also added Vulkan support when the Nintendo Switch port required it.

Conclusion

Skullgirls 2nd Encore is a special game that has enjoyed more than a decade of commercial and critical success. It’s a super unique IP with a dedicated fanbase. I feel quite honored and privileged to have been able to contribute to its ongoing development and success.

For my professional development, SG2E was most valuable as a way to gain a ton of experience with Steam, Sony, Microsoft, and Nintendo development and publishing. I also learned a lot about legacy and modern graphics APIs. Finally, it gave me a ton of valuable experience in C++. As with SGM, my professional development exploded while working on this project.