3d Racing Game Project

Making a 3d racing game for SEGA Saturn.


This project tries to build a racing game engine for SEGA Saturn. Well, a wishlist of things people would like to have in a racing game is very looong, if not even endless. A racing game can't be done over night and probably can't be pushed to completion by a single person only.

View some screenshots.

So everyone who is interested is invited to join the project and contribute ideas, code, gfx like tracks, cars and background stuff.

from where it started

It started from the DRIVING, DRIVING2, SHOOTING and BIPLANE examples from the SGL. They include a space partitioned 3D world and a ground following / collsision detection system and a very simple driving simulation system.

The problems with these examples are that the tool to generate the polygon map and the collision data is not available. Also the code is loosely thrown together and full of redundancies.

creating new tracks

I made a tool called RB_SaturnMAP which generates the space partitioned 3D track data and which computes collision data as well.

Now the track can be replaced with custom tracks either completely selfmade or converted from other racing games.

In general, creating custom Saturn 3D data is possible, but requires a lot of work since all material properties and textures have to be applied by hand in the 3DEditor of SS-SDK (WGT from antimes page). The size restrictions of the 3DEditor can be worked around with my tool RB_SaturnMAP.

A new feature introduced here is to read and write binary track data, which will enable to load different tracks on Saturn, instead of using a hard coded one.


Significant optimizations were applied to the runtime collision detection method. While trying to understand the ground following system used in the SGL examples, I implemented a different one but went back to an optimized version of the method in the examples. It is an approximation which complies with and benefits from the Saturn quad texturing method.

The original source is not very modular. This has been changed and thus the base is made for 2 player games. Horizontal and vertical splitscreen is already implemented for polygons (but not yet for backgrounds).

The collision/ground detection routine is located in the RB library while the track rendering function is still in the racing game sourcode.

The system used to create and display tracks with ground/collision data can be used for other games, too (like SHOOTING and BIPLANE are no driving games).

Supportable by