Recreating the Pseudo-3D Look of Classic Arcade Racers.
by Vicente C.
Published |
36
Share
Jordan Martin shared a pseudo-3D racer in Godot, using segment-based tracks to recreate a retro look.
A hobbyist developer from the UK, Jordan Martin, shared a look at their prototype of a Super Hang-On-style racing game made in Godot, recreating the classic pseudo-3D effect, with some limitations inspired by Game Boy.

The project uses a 160x144 resolution and a limited color palette, which forces both the art and rendering to stay simple, but also gives it that distinctive retro look.
Instead of using real 3D, the game builds the track by dividing it into hundreds or even thousands of small segments. Each one represents a portion of the road with certain parameters, such as length, curvature, or whether other vehicles should appear. 

These segments are stored as a long list that defines the entire track. For example, one section might be a long straight, followed by a gentle curve or a sharper turn. 
In this case, each entry defines how long that segment lasts and what behavior it will have. It can also include tags like "Traffic1" or "Traffic2" to indicate that vehicles should be spawned in that section.

While a segment is active, the renderer draws the road using those values, and once it ends, it moves on to the next one.

The next step is projecting those segments onto the screen. As Jordan explains, the idea is simple: the farther something is, the smaller it should appear.
This is why we use the _project function: it takes a position in the world and transforms it into screen coordinates, using a scale value that depends on the distance from the camera.

That scale value is what allows the system to simulate depth, reducing the size of the road and objects as they move further away.

From there, the rest of the effect is built through small visual details. For example, the grass and road edges alternate colors every few segments to add to the sense of motion.
Objects on the side of the road, as well as other vehicles, use this same projection system to stay aligned with the track.

Another interesting detail Jordan mentioned is how sprites are handled at different distances. Instead of scaling them continuously, the system quantizes their size to avoid an “overly smooth” result.
This makes sprites “snap” between set sizes as they get closer, recreating the look of classic arcade games. Besides avoiding visual artifacts, it also helps keep the style consistent with the project’s constraints. 

If you want to see more from Jordan, you can find links below to their social media and other work. 

Interested in learning more?
If you are interested in shaders and the math behind game visuals, the Shaders Bible Collection brings together six books covering shader programming, procedural shapes, and core math concepts in Unity and Godot. 

This is for developers, students, and creatives who want a better understanding of shaders, strengthen their fundamentals, and improve the visual quality of their projects.
Jettelly wishes you success in your professional career! Did you find an error? No worries! Write to us at [email protected], and we'll fix it!

Subscribe to our newsletter to stay up to date with our latest offers

© 2026 Jettelly Inc. All rights reserved. Made with ❤️ in Toronto, Canada