An action platformer inspired by my love and appreciation for games from the early 2000s
I'm driven to make games for three main reasons:
I find my line of work as a gameplay programmer intrinsically fun and rewarding. The act of coding a clever or fun mechanic using 3D math and seeing it executed is something I find immense satisfaction in.
Games can help make the world a better place by bringing joy to people.
I have ideas for games that no one else is executing on that I genuinely want to see realized. So I'll take it upon myself to make them.
That third reason is primarily what sparked my desire to work on Project Radical Adventure (working title).
Ever since I played Sonic Adventure on the Sega Dreamcast in the early 2000s, I've had this itch to play something similar that no other game can quite scratch. At the time though, 3D platformers were abundant, so I had many other games to keep me satisfied throughout those years. Games like Jak and Daxter, Sly Cooper, and Mario Sunshine.
But in recent years, platformers haven't been at the forefront, so that itch to play something like Sonic Adventure, or any of the other platformers I mentioned above, has been even harder to scratch.
So one day in December of 2017, I thought "Why not try to make a game reminiscent of those games? Ya know, a spiritual successor? No one's stopping me."
In order to lay the groundwork for this game, I knew the first thing I needed to make sure I get right is the character controller. I looked at both Sonic Adventures 1 and 2 for ideas on how to make the character controller. Something I enjoyed greatly about those games was how running around as Sonic was in itself incredibly fun. The controls were responsive and there was a really great sense of freedom and momentum with how you could run on any angled surface. I couldn't quite get that same feeling out of any other game after Sonic Adventure 2.
So I started work on Radical Adventure trying to replicate that feeling. My goal wasn't to replicate exactly how those games played, but I wanted to evoke a very similar sense of freedom, momentum, and control.
So I knew the key features of the character controller included:
Being able to run on any angled surface as long as there is a viable path to reach it.
Matching the angle of the player to the surface they're standing on.
The player's input direction is always relative to the angle of the surface they're standing on. (This would allow the player to run in loops and on ceilings if there's curved architecture.)
The player needs to carry their momentum when running off of a surface and entering the falling state.
I went through five iterations of a character controller before settling on one. At first I thought I could make a simple controller that uses Unity's rigidbody physics to handle jumping, falling, wall collisions, etc. and I could just rotate the character model/collider to match the surface beneath it using raycasts. But whenever I tried this approach, the engine's physics would make too many assumptions about how I wanted the character to move around the environment. For example, if a player was standing on an incline at an angle with no directional input I would want them to hold still, but sometimes they would start to slowly slide down. Or when running from a level surface onto a downward slope that was slightly too steep, the player wouldn't stay snapped to the ground and start falling because gravity wasn't strong enough. This could've been addressed with some workarounds but that would've been less than ideal for this project.
After four attempts using Unity's built in physics, I decided that in order to have complete control over player locomotion, I needed to code the physics myself using raycasts to detect collisions and calls to transform.translate() to tell the engine exactly how the player should move. While this required a lot more work, it was important to take this approach in order to effectively achieve my design goals as the game needed to use custom movement very heavily.
This resulted in a much more solid and responsive character controller that's just really fun to run around open environments with. When playtesters are talking to me about their thoughts on the game, they'll usually be talking while aimlessly running around the open world I designed and be making comments along the lines of "yeah these characters are really fun to run around as, like you can see I'm just launching myself through the air for fun here and it feels great." I also often find myself aimlessly running around the open world for fun while working on the game. So this tells me that I made the right decision to code the physics myself.
So now that I've got a really solid character controller, what's next? What will the player be doing besides just aimlessly running around an open world?
In addition to hub worlds there will also be action stages. These are going to more linear, but still offer freedom by giving the player different accessible paths reachable through different means. The goal of the action stages is to offer players exciting, hand-crafted experiences that the hub worlds can't.
There will also be a story mode that will take the player through all of these hub worlds and action stages. The player will be able to experience the game's narrative three times from the three different perspectives of each playable character. Each character has their own set of abilities that give them specific strengths and weaknesses.
Each character will go through the stages in different orders based on their role in the story, and every level will have altered layouts for each character to better suit their abilities.
With all this in mind, the fun and responsive character controller and the fascinating world to explore, I hope to make Radical Adventure into a game that captures the spirit of what made those platformers from the early 2000s so much fun. I want this game to be easy to pick up and play, but still have depth to it. The depth wouldn't come from complex systems the player has to spend time min/maxing, but it'd come from clever, emergent interactions with the environment.
For now, the game is being treated as an early access game with new builds being put on the Itch.io storefront as progress is made so that the team can get feedback and course-correct while developing the game.