Frames and Fans
Live
Peripherals

ASCII City

Solo developer Grow Now! Games has released a playable browser build of its walkable ASCII cyberpunk city

Peripherals: Fire, street parties, limbo, cottage, people working, city.

Grow Now! Games has put a playable browser build of its walkable ASCII cyberpunk city online, running on a 283KB Rust WebAssembly engine feeding a WebGL renderer. The build is accompanied by a second YouTube video, ASCII City Update: Interiors, Elevation & Skyscrapers, following the original video which has gained over a million views and 9,000 comments.

Technical Details

The city is built using a 283KB Rust module and two compiled shaders. According to the source, a page fetches ascii-city-engine_bg-DqjAhqbp.wasm, a 283KB module that reserves 1,152KB of linear memory at startup. The engine version is reported as 0.1.0 when instantiated outside the browser.

Rendering and Performance

The renderer requests a WebGL context and compiles a vertex and fragment shader pair. Characters are drawn once each into an atlas canvas with fillText, cached per character-and-color combination, uploaded to the GPU with one texImage2D call, and then drawn as textured quads with six vertices apiece. The performance of the city varies depending on the device, with desktop sessions rendering 180 columns by 80 rows, or 14,400 character cells, in 10px Consolas at nine pixels per row.

Comparison of Device Performance

The following table compares the performance of the ASCII city on different devices:

DeviceColumnsRowsCharacter Cells
Desktop1808014,400
Touch devices96-16848varies

Developer Background

Grow Now! Games described the original demo to PC Gamer as having no Unity, no Unreal, no 3D models, textures, or shaders. The developer has also worked on other projects, including a first-person Backrooms game for the 1994 Sega 32X and a multiplayer Doom tribute. The ASCII city is a testament to the developer's ability to create complex and engaging environments using limited resources. The city's character grid is redrawn using image models into full-motion visuals, similar to Thunder Lizard, an ASCII roguelike, which has had its character grid redrawn by image models into full-motion visuals at around 10 FPS. According to Tom's Hardware, the developer's use of Rust and WebGL has allowed for a high level of performance and detail in the city, with the vertex buffer preallocating 2.76MB and doubling when a frame overruns it.

Related coverage

More from Peripherals