2010-15 Stunt Rally 🏁

    • Biggest💥, C++➕, Featured⭐️, Games🎮, Long Read, New, Open Source

⏱️Overview

Stunt Rally is the game I started in Dec 2009, having first release in Apr 2010 and last (2.6) in Sep 2015. It was my biggest project by far, I developed it for 5 years almost continuously.

Update: I started developing again after about 5 years break, and continued with new version 2.7 and moved to newer Ogre-Next in upcoming Stunt Rally 3.

The game works on GNU/Linux and Windows. It features its own Track Editor. Simulation for cars comes from VDrift and rendering using OGRE 3D engine, more info here.

I’m proud of what it became, but most importantly from the people I met, who contributed to this project, especially developers and track creators. The experiences gained and things learned with this project are significant. And it was a lot of fun.

🔍Detail

I created the 📖SR presentation book, it has 196 pages with lots of screenshots and explanations of the whole project (until version 2.6).

You can read and see more on Stunt Rally website.

There are few gameplay Videos and a huge Gallery (about 2000 screenshots) with a fun development gallery of same size. You can find complete documentation and even Track and Vehicle browsers.

So, the game’s documentation will tell you everything about the game, track editor and tools.
But it won’t tell you the history behind it. While the presentation book covers whole project (both the game and editor) in general, this post tells how it all started.

That’s why I made this page. It’s also my dearest project and I get very sentimental every time I play it or even look at screens or videos. So I think it deserves it, and could be informative.

📜History

Around Dec 2009 I started looking for open source racing games, from which I could use the simulation code. My previous projects from 2008 and 2007 already showed me the limits of using only physics engine’s included car demo’s code for games. So PhysX and Newton Dynamics respectively. Bullet had its own car/vehicle demo too, so I knew it could only be fit for a basic arcade game.

I was aiming at a simulation and wanted the most complicated code. After all I was playing Richard Burns Rally already for a long time (on keyboard), liked WRC (on gravel and from 2004-6 mostly) and actually despised any other car simulation games for being too simple (maybe RBR fans of that time know what I mean).

Open source racing games

There were actually just 3 games: some old code from Racer, TORCS (now SpeedDreams) and VDrift. I played them somewhat, then compiled all and tested. After that and decided that VDrift is the best, simulation code was quite sophisticated.

The projects I didn’t consider were: SuperTuxCart (too basic, and for kids) and RigsOfRods (not a racing game, just a sophisticated vehicle simulation, but also using OGRE).

VDrift was also still actively developed at the time. And I liked their move to also use bullet. That was simply needed to have any collision with environment.

I edited the .car file a lot to find if it is possible to use VDrfit for gravel rally, later posting the results. It was good and fun, I played VDrift somewhat with my setups (gravel, wet, ice) since the original game was quite unplayable for me.

Compiling VDrift and adding OGRE

The beginning part was the most difficult. I was at the time just Windows programmer (but really liked GNU/Linux thanks to this project). So compiling a Linux project on Windows in Visual Studio wasn’t easy. When I finally managed to do it (IIRC after 2-3 weeks), I started tinkering with it, removing code I don’t want, etc. Still using the OpenGL renderer.

Then on side, I started a simple OGRE app with just few models on scene. Later connected both. Getting the VDrift meshes to show right was a bit work (different x,y,z axes, 3D models). But without it, I wouldn’t see anything, so it was crucial.

Once all worked I made the first release pack in April 2010. Was Windows only and most likely it wouldn’t even start without proper MSVC framework installed and such.

It had only 1 car, VDrift tracks and no GUI. I compared the performance and started a topic on VDrift forum. It was terribly bad because of their tracks having thousands of meshes. So using OGRE for VDrift would be a bad idea. But that wasn’t my point. I knew OGRE already and in my previous attempt had a big terrain with good look and performance. I knew what I wanted in my own game and how to do it now.

What happened next was fast (given only my free time) and needed a lot of coding and testing. But it was easier than the previous part. You can check the screenshots of funny situations from versions 0.1 to 0.5 in the first development gallery.

Terrain

I quickly added tire trails and particles, since they were already in OGRE and it was easy. Trails were never in VDrift and particles weren’t great. At the time VDrift moved to using bullet and that was perfect, since it was needed for any car collisions with environment. Then I added the Terrain component and tweaked code to have proper fitted heightmap triangles in bullet world too.

Next I added PagedGeometry (I knew it already) to have some jungle vegetation, that came with Ogitor (same project we had textures from, for a very long time).

Later I also added MyGUI. The options looked quite similar to my previous project, but this GUI system was much better and there were already more tabs.

Also included 2 more cars. Then made the 0.2 release pack in Jun 2010, and started the topic on OGRE forum.

Road

Since there was no road plugin for OGRE, I started coding my own. Based on a Catmull-Rom spline, which is probably the easiest to edit and most intuitive, it just interpolates between points.

Terrain already had its own LOD (level of detail) system. Road surely needed one too, to not quickly produce extreme counts of triangles visible. I thought of just 4 LOD levels for each road segment (auto generated in code), and a simple distance to camera check to pick one accordingly, showing less triangles further. Picture here. It wasn’t the easiest code to write, but I’m glad that I did it. It became the base for road and was extended few times later. Nothing else would fit so perfectly as own written system.

📖Presentation

I focused on creating the SR presentation book, which covers not just our history but the whole project with all of its aspects and implementation.
The presentation has 196 pages with lots of screenshots and explanations.

⏩Fast Forward

  • 📜History of added features in each release in Old changelog.
  • 📈Statistics. Showing releases and data increases.

What came next is summarized below in short points, in more detail than on presentation.

Key steps of project:

  1. As described on previous pages the start was in Dec 2009 when I found VDrift and experimented with its car settings.
  2. I created the project on Google Code in 2010 to hold releases.
  3. My first release was in Apr 2010.
  4. Then came first issues.
  5. The game ran only on Windows at start. I suspected it would be rather easy to port to GNU/Linux (since both VDrift and OGRE did work).
  6. I was doing screenshot galleries on each release and game video every few. In a year I made nearly 10 releases (“Release quickly, release often”). I didn’t have a repo.
  7. After a year in Mar 2011 two guys (scrawl and Tapio) have joined and did quickly port game to Linux. Also added CMake build system.
  8. Also in Mar 2011 I created repository. Initially was Mercurial, because Google Code didn’t have Git. But then we quickly moved to GitHub (in Apr 2011 or so).
  9. At the same time we started using IRC on freenode to quickly communicate,
  10. Translations was surely one good thing done by new guys at start.
  11. In version 1.0 (Jan 2011) my track editor was ready and fully functional. I made a series of tutorials on how to use it. I was developing it further too (only I did that).
  12. Game was featured on freegamer blog, first with version 1.0. It did boost game’s popularity. Every time a post appeared after too.
  13. Since version 1.2, we started uploading the Releases to Source Forge. Google Code and its 100 then 200 MB limit were a problem. At that point it only was for homepage and issues (that view was very nice and customizable though).
  14. At some point the game was also added on playdeb, and on lgdb. I think those were (or are) the biggest Linux gaming sites and they helped with game’s popularity too.
  15. Scrawl did many things in the game. A lot of related to input (for controllers), post process effects, shaders, split screen, water in 1.5, etc.
  16. In version 1.5 we finally finalized multiplayer, done by Tapio. I was doing the Gui part. It took him a year to finish it, but I was glad anyway, since I could do other things at the time. I posted on Vdrift forum. I think, VDrift project was developing more slowly then.
  17. Scrawl did a wonderful task of creating a material generator once, and then even a second version called shiny (as a separate library for OGRE). And this thing made us reach a great look with nicely coded shaders (generated for both DirectX and OpenGL) at a higher level. I loved using it.
  18. Scrawl and Tapio were mainly active for about a year. Then I was developing alone again.
  19. We started a forum for the project, somewhat later in version 1.8, Nov 2012.
  20. Forum was great on freegamer, since there were many users already.
    It attracted the greatest people, artists creating tracks (and even sceneries) for the game using my track editor that I was also developed with the game. The best being: rubberduck who also made many buildings and objects, and Wuzzy.
  21. I guess I should also mention Calinou. He was always on IRC and had an opinion whenever I asked. This is already a useful skill. A couple of his many tracks went into the game.
  22. At some point I found out the greatest Nobiax CC0 textures and replaced all tracks terrain look, also implementing own blendmap with noise (for mixing them). There were a few such revamps of all tracks (big artistic task, bit tedious), for shaders, waters, skies. Terrain was the biggest.
  23. Project’s website was done very late in 2015, more info about it here.

⚖️Contributors

There were few other people e.g. a guy who let me use his IRC bouncer. Tapio was later doing translation syncs, until I someday finally learned that. He was also hosting multiplayer game list server on his PC for years. Scrawl did later a VM setup and was making GNU/Linux binary packages on each version release. There were also few people translating the game to other languages than English (9, 5 of them fully).
Finally, I can not forget to mention all those artist sharing their CC-BY 3D models on blendswap, also textures, vegetation, objects, and even 0 A.D. buildings. I was gathering all authors and website urls in txt files in our data/ directory each time I added something (later visible in Credits page in game).
Naturally all the open source libraries used (including OGRE and VDrift) have to be mentioned here too, since without them the game would be completely different.

All that was great and helpful. I want to thank all who contributed to this project.

➡️Break

I was constantly developing Stunt Rally for 4.5 years. I was thinking of finishing the development a couple of times.

I first ended developing in Nov 2014. But I returned after about 9 months for 3 more, rewriting sound system, replay files, adding pace notes and more.

I announced development end on 19 Sep 2015. It was version 2.6, the 26th since start.

Lastly, I have to add, it wasn’t just the 5 years it took to create all this. I took many years before that, of me learning from my projects, and having more experience every year doing so.

Update: It wasn’t the end, but a few years break. I resumed the project 6 years later as Stunt Rally 3 since 2022.