Sonic Robo Blast 2 is a 3D Sonic the Hedgehog fangame based on a modified version of Doom Legacy. Over 20 years, this project has enjoyed thousands of users, along with press attention and a skilled development team.
This README details my contributions to this project. I acted as a core programmer, pull request reviewer, and release manager for v2.1.21 thru v2.1.23. For those releases, I introduced significant new features and bugfixes within 200k lines of legacy code. I addressed issues swiftly in response to community feedback.
For repository information, see STJr/SRB2.
As release manager, I enabled native macOS and Linux releases by scripting Travis CI to upload installer builds to FTP and Linux repositories. In addition, I scripted AppVeyor to build Windows installers automatically.
Previously, the game was released only for Windows, and installers were built by hand.
- Pull request for macOS and Linux releases
- Pull request for Windows installers
- Code files for deployer scripts
- Documentation
I introduced the first 64-bit releases to the game. Previously, only 32-bit was released. I also constructed a benchmark series to compare 64-bit performance across levels and render modes.
Although anecdotal evidence suggested that heavy levels performed better under 64-bit, a battery of 1,000+ benchmarks did not demonstrate improved performance. As only a limited number of environments were tested, the game continues to be released for 64-bit.
- srb2-benchmark Python code
- Intel Core i7 (Skylake) benchmark results, using Excel Power Query
- Intel Celeron (Ivy Bridge) benchmark results
These features allow floating platforms to fade translucently and for colored lights to fade between different colors. This work involved a team effort in significantly rewriting the legacy lighting code. An associate cleaned up the old code, while I re-architected his cleanup work to allocate color data dynamically. Previously, colormaps were assigned to a limited number of entries.
This was merged for the next major version, currently in private development.
- Documentation and list of branches. Click on a branch name to view pull request code.
- Pull request for colormap code rewrite
- YouTube demos:
SRB2 uses the SDL Mixer library, which provides only basic playback features. Due to engine requirements, I implemented music fading and jingle switching by hand. I also implemented custom MIDI instruments by utilizing the SDL Mixer X library. I worked with a contributor to improve MOD playback by utilizing the libopenmpt library.
This work also involved a major rewrite of legacy code. I refactored the game's music code to eliminate an obsolete duality between MIDI and digital music playback. This resulted in a new, simpler API for music playback.
- Documentation and list of branches. Click on a branch name to view pull request code.
- Pull request for music code refactoring
- Watch this YouTube playlist to see the features in action.
I directed and narrated a tutorial series on building NiGHTS levels, which are the most complicated type of level to create for the game.