Skip to content
/ SRB2 Public
forked from STJr/SRB2

A 3D Sonic the Hedgehog fangame built from Doom. See README for my contributions.

License

Notifications You must be signed in to change notification settings

mazmazz/SRB2

 
 

Repository files navigation

Sonic Robo Blast 2

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.

Accomplishments

Cross-Platform Releases via Continuous Integration

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.

64-bit Releases and Benchmarking

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.

Fading Platforms

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.

srb20011 srb20002

Music Features

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.

YouTube Level Tutorial

I directed and narrated a tutorial series on building NiGHTS levels, which are the most complicated type of level to create for the game.

Links

About

A 3D Sonic the Hedgehog fangame built from Doom. See README for my contributions.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 76.8%
  • C++ 13.5%
  • Shell 2.2%
  • Visual Basic .NET 1.2%
  • PHP 1.0%
  • Roff 0.9%
  • Other 4.4%