An open-world driving game


I get a lot of comments on Car Parking Challenge and Truck Driving Challenge asking for more levels, a larger world, or "free-roam". The levels in those games are deliberately small and it is a compromise due to Scratch's many unfortunate limitations.

Asset size & count

Despite the small and few levels, the projects are around 40-50 MB. This is somewhat large for a Scratch project. Not everyone has a fast internet connection and for many it is notably slow to download.

Scratch is inefficient with RAM usage for costumes. This is a problem on some devices, particularly Chromebooks and those made by Apple. It seems the Safari browser has a common tendency to forcefully reload (resulting in many players saying the game keeps restarting). What a pain this was to figure out. I didn't know for years. I always received vague comments like "doesn't work" or "can't play level 5".

Costumes with large dimensions also have a risk of not being displayed correctly.

There is a risk that the costumes fail to load resulting in the infamous "question mark glitch" (costumes that failed to load are substituted with a question mark). The risk appears related to the number of assets as this was a significant problem with Submersible, having over 1000.

Drawing with pen is an alternative to using costumes. This comes with its own limitations — it is much slower (again preventing low-end devices from playing it) and data must account for the 5MB project.json limit and 200000 list item limit.

Necessary features

An open-world driving game needs traffic, right? This isn't easy to solve. Both Car Parking Challenge and Truck Driving Challenge only have levels with a single intersection. Additionally, all but one level has traffic moving in straight lines. This is still an unsolved problem. Road Network Designer shows some things are possible but notes that intersections aren't processed fully by the agents — there is no intersection priority. Scratch has variables and lists as ways to store data, and custom blocks local to each sprite. Scratch lacks conveniences that other programming languages come with. As a result, Road Network Designer is 17000 blocks and I expect an open-world driving game to be similarly difficult and time-consuming to develop.

What about collisions? The current games simply pause when a collision is detected, requiring the player to retry the level. This doesn't make sense for an open-world game. Vehicles should be knocked around and deflect off barriers. The collision detection needs to be performant for moving traffic and all the static objects.

Creating the world

Each level in the existing games took a few hours to create. It's clearly not feasible for a larger world. The problem is: What will replace it? I've thought about using the background prop technique seen in Submersible, but this still requires a lot of time to create and place each object. This also doesn't solve creating collision geometry or paths for traffic to follow. There are no existing editors for any of this as far as I know, custom tooling is required. If anyone knows of useful tools, please let me know.