So today I completed the car. The wheels are spinning and the steering mechanism is working. I’ve added some simple physics to the car (springs in the pitch and roll of the car so it leans in corners and tilts when accelerating or braking. Still a lot of tuning needs to be done for the car to ‘feel’ right, but the basics are there. For more info about these ‘springs’: this article gave me the idea.
If you look carefully you’ll notice the lighting on the car changing when steering. It already moves in 3D space and the BasicEffect lighting is working.
The black square is the current active color. The short clip shows what the model looks like in the flat shaded mode. I’m getting more comfortable with the 3D stuff. With the BasicEffect though so Shaders will be something I’m going to dive into later.
I’m using Wings3D to create my 3D model. so far the editor is good enough for my purpose. The editor also has features for UV mapping, so if I ever become more proficient in creating 3D models this tool has got me covered for now.
Wings3D can export to DirectX format (.x) so models can be used in Monogame’s content pipeline. I plan to export the model as XML data first so I can do my own normal map calculations instead. So I may need to create a content project for this as well later on.
So I want to make a race game in 3D. I know my limitations; without the proper experience I’m not going to be able to create a full 3D racetrack with fancy graphics. So I’m going to generate the track geometry much like a slotcar racetrack.
I haven’t made a 3D racer before, but I did create a 2D (pseudo3D) race game. With some thought these principles can translate to 3D. It may be quite different from the way modern racers are made, so let’s see where this is headed.
As in the 2D racer, each track will be built up using segments. Each segment will have some properties to it: is it a curve? if yes, how sharp is the turn? Does it have kerbstones? What is the width? And so on. This can be expanded later with more properties.
Stringing theses sections together will create a track. The cars on the track will have knowledge of the section they’re on and the sections ahead of them. So internally the cars only work with these sections and not actually interact with the 3D model at all! The model of the track is just to display the game’s internal state.
Once the list of the sections is known, a 3D model of the track can be generated.
With the development of the 80s Racer I learned a lot about how a racegame works. As a kid we had an arcade nearby with Outrun and Hang-On, so as a kid I spend many hours in there. Imagine the amazement when I first saw Virtua Racing in the arcade. Sure we’ve had polygon games before, but nothing could beat the speed, the bright colors of Virtua Racing. Even today the game looks great.
I dabbled a little in 3D polygons so I’m tempted to start a new project: a race game inspired by Virtua Racing. The polygons are flat shaded, and fairly simple (looks can be deceiving though) but I think I can pull this off.
So my next project will be inspired by Virtua Racing! See the original game below: