The Raspberry Pi RP2040 is versatile and cheap, but it’s by no means known as the most powerful microcontroller on the world. Regardless, it is capable of great things, as demonstrated by [Bernhard Strobl], who built a 3D open world game engine that runs on that very platform.
The game engine itself is built to run on the Pimoroni PicoSystem, which is essentially a handheld gaming platform built around the RP2040 chip. The engine takes advantage of the multi-core nature of the RP2040, using the second core as a dedicated rasterizer to keep frames pumping out.
The basic game [Bernhard] built in the engine features 50 NPC characters and 50 further zombies, all running at the same time. Specs are impressive, with the engine’s included game simulating a “world” of 120 x 120 meters in size. As a maximum limit, the engine can handle a 2.56 x 2.56 km world, thanks to the use of 8-bit integers for directional data. However, limited storage space would make it difficult to achieve such a large world in practice.
We don’t get to see much of the gameplay in the YouTube video, but the quality of the graphics is impressive for such a cheap microcontroller. It seems within the bounds of possibility that an actual open-world game could be practical on the PicoSystem if only enough storage were available. Video after the break.
I wonder if the RP2040 hardware interpolators could speed up the rasterizer. They seem like interesting hardware, but I haven’t seen them used much anywhere.
NPC? Near Person Communications?
Non Playable Character, I guess given the context.
NPC character?
Non PlayER Character, usually a friendly or neutral entity in a game. Technically the enemies are NPCs as well, but it gets confusing if you lump them all together.
It blows my mind how many insane things people are making with the RPi Pico. This is beyond cool.
The specs are not that much more amazing than STM32s which have existed for years, but we never hear about such cool projects on those platforms.
There are some amazing tech demos on STM32, you just have to find them. There are more powerful STM32, especially when it comes to graphic capabilities.
That already looks as good as mid-2000s mobile phone 3D games.
A larger world wouldn’t necessarily require more RAM, just a fast enough noise based terrain generator.
It seems the map data is accessed from flash. Even though the executable code on RP2040 is limited to 16 MB, there are up to 64 MB QSPI flash chips and the rest can be accessed for data storage.
Or use an SD card for map data?
Honestly the storage limit isn’t actually a big deal, filling up the world with meaningfull data is going to be a bigger issue and one reason the world in the prototype is only 12×12. A full 256×256 world takes 5 minutes of pure walking from the center to an edge. If anyone really wanted to make a map that big (or bigger) there would be plenty of creative ideas to lower storage consumption.
Getting serious Nokia N-Gage vibes seeing those aliased low poly graphics. Love it.
Awesome. Great Job!
such limited hardware and it still looks better than meta…..