Last December,
Reality Jump
delivered to the Dreamcast community a gift on Christmas Eve in the form of the first playable
Driving Strikers
demo
. In the months that have followed, the game has been further developed and expanded into what is now the first ever indie Dreamcast release to support online multiplayer gaming!
Whilst the game isn’t ready for a final release yet (that will be in early 2023), Reality Jump have just released a
new demo
which includes much tighter controls and online multiplayer for everyone to try out.
Following this latest demo release, I caught up with programming wizard Luke '
Kazade
' Benstead to get all the juicy details on what promises to be by far the most ambitious indie release to date.
DCJY: Hi Luke, thanks for chatting to us again! So, what inspired you to first start work on Driving Strikers?
Luke Benstead:
Last October, Dave Reichelt and I worked on a Halloween demo called '
Tunnels
' - we thought it would be a nice little thing to put together to demonstrate the capabilities of my Simulant game engine, and Halloween was also an immovable deadline so it gave us something to focus on.
Following the release of Tunnels, we looked at the calendar and figured that a Christmas demo would be great. We threw together some ideas and Dave suggested a 2.5D Rocket League-style game. So we frantically spent November and early December 2021 putting together a quick and dirty multiplayer game.
I think as we approached Christmas we started discussing making it a full game, which is why we released it as '
Driving Strikers: Holiday Edition
' - with the idea to follow up with a full game in early 2022…that obviously didn’t happen.
Almost like Christmas NiGHTS... almost. What have been the biggest challenges with the development of Driving Strikers?
There are so many! Firstly, physics. Writing the physics of the game, where each car has suspension, etc, is hard enough on a modern game engine, on a modern PC. But when you’re trying to do it on a 200mhz CPU from 1998 - that’s a whole other level!
Second to the physics though is RAM. During development nearly every week we’ve hit an out of memory bug due to the fact that the Dreamcast only has 16M to play with, and almost 4M of that has gone before the app even starts! Optimising for limited RAM has been a huge chunk of work - large parts of Simulant have had to be rewritten (sometimes a couple of times) to optimise memory usage. Even now the game lobby is scraping the ceiling of the RAM limit due to the sheer number of UI widgets in play on that screen. Particularly the keyboard, the on-screen keyboard needs yet another rewrite to free up more RAM.
Thirdly, framerate. When
Tunnels
launched the frame-rate for that was around 20-22 fps. Like Driving Strikers it was using a full physics engine.
Driving Strikers
has more physics-based objects though; you’ve got the 4 cars, each with 4 wheels, each with calculations for friction, suspension, etc, and the ball. Trying to keep the framerate at around 30 fps has been really hard. I’m sure if we were working on this full time, we could refactor and profile, and optimise things to get it up to 60 fps but that’s totally unachievable when you’re coding things every evening after work!
We’ve also had problems with GD-ROM drives failing, serial cables breaking, DreamPi line voltage inducers breaking, parts of KallistiOS being stress-tested for the first time. One of the most frustrating problems was when my GD-ROM stopped reading things correctly and the only symptom was some graphical corruption on the menu screens. It took me about a week to realise where the real problem was!
Thanks for that technical breakdown on the challenges of Dreamcast development. What is your favourite feature of the game?
I love the multiplayer aspect - not just the online stuff which has been a monumental challenge - but the local multiplayer. I think
Driving Strikers
is an excellent party game!
What inspired you to make the first indie Dreamcast game to feature online multiplayer?
Feedback! When we released the Christmas demo last year, the goal was to launch the full game before the following March. But by far the biggest piece of feedback we got was “could you make this an online game?”.
Up until that point it had crossed my mind but I had a fairly good idea how much time it would take and tried to avoid thinking about it. But then I figured if I did it the right way, it could be reusable and I could make multiple online games with the code I developed. I guess truthfully I couldn’t resist the challenge!
What have been the biggest challenges with creating online multiplayer for a 22 year old system?
I think it’s important that people understand how many different moving parts there are to make an online multiplayer game work.
You need a matchmaking server, somewhere to register games, search for games etc. and because you need to protect against people doing bad things, you need an authentication system. All of this needs to be built using web technologies, it needs to be hosted somewhere etc.
But even when you have your matchmaking server, you need to be able to talk to it. The Dreamcast doesn’t have any built-in code to talk to web servers, so I had to write all that from scratch. So, before you even begin thinking about the game itself you’ve got a set of web services, and the plumbing to let the console talk to them - that’s weeks/months of work right there.
Then you look at the actual game - you need to decide how the game clients talk to each other. The modem speed is a hugely limiting factor. If
Driving Strikers
was Dreamcast only, and I could guarantee that it would only be built with a particular toolchain, then I could just send controller inputs across the internet and hope everything stays in sync. But I always wanted cross-play to work so instead you have to send the entire state of the game to all the clients around 20 times a second. That’s fine if you’re on broadband but on a modem you need to figure out how to get that compressed down as much as possible. That was a massive challenge.
We then had problems in the KallistiOS SDK, because people haven’t really heavily used say, the modem driver, or the networking stack. We had one bug where the modem would just stop working and it turned out to be a super low level driver problem - and we only caught it because someone happened to be on the Discord server who had literally just been reading about the modem specifications - that was the luckiest coincidence ever!
The last challenge was getting every edge case working. If you consider all the different places that a player might lose a connection for example. They might disconnect during the loading screen, they might disconnect in the lobby, they might disconnect during the game, or as a goal is scored, or as the match finishes, or after the match before you return to the lobby - all of these cases need to be handled. Testing and bug fixing these things is incredibly time consuming and hard work. It took weeks of play testing to get things stable enough to release the demo!
It's really fascinating to discover more about what goes on under the hood of these online games - thanks for sharing that. Do you think you’ve opened the door for future indie online multiplayer Dreamcast games?
I hope so! We’ve proven it works at least - we know it’s possible and what it entails. I’m hoping to merge most of the code I’ve written for networking into Simulant - and if any gamedev out there wants to leverage the matchmaking server then that’s also possible.
And of course, I’m planning more games after this one, and now putting them online is a much easier thing to do now.
When will we see the final release of Driving Strikers?
Q1 2023. I’d hoped it would be this year - hell, I hoped it would be May 2022 but things took a bit longer than expected! I’d like to “finish” the game before Christmas, ready for release in the New Year or early 2023.
We look forward to that with baited breath! Finally - will there be a physical release of Driving Strikers?
There will be if all goes well!
***
So there you have it - some great insight into the mind of an expert indie developer! Thank you so much to Luke for taking the time to answer my questions and hopefully give the community some background on this great game.
If you haven’t already tried
Driving Strikers
, make sure you
grab the demo
and provide the team with your feedback - they’re listening! Already tried it? Let us know what you think in the comments below.