O desenvolvedor solo Grow Now! Games lançou uma versão jogável online de sua cidade cyberpunk em ASCII. Esta metrópole text-based roda em um motor Rust WebAssembly de apenas 283KB, utilizando um renderizador WebGL para dar vida aos visuais.
O coração do projeto é o módulo ascii-city-engine_bg-DqjAhqbp.wasm, um arquivo de 283KB que, ao iniciar, reserva 1.152KB de memória. A geração do mundo é feita em Rust, que então envia arrays de bytes compactados em base64 para o JavaScript, contendo dados como alturas de edifícios, tipos de telhas, superfícies, matizes, saturações e estilos de janelas.
city.rs, world.rs, population.rs, interiors.rs e rendering.rs são os pilares da criação deste universo.O renderizador solicita um contexto WebGL e compila um par de shaders de vértice e fragmento. Os caracteres são desenhados em um atlas canvas usando fillText, armazenados em cache por combinação de caractere e cor, e depois carregados na GPU para serem renderizados como quads texturizados.
drawArrays por quadro.Canvas 2D drawImage para quando o WebGL não está disponível, ou um fillText por célula via parâmetro de URL.A experiência visual se adapta ao dispositivo:
A Grow Now! Games se orgulha de criar experiências sem depender de motores de jogos comerciais como Unity ou Unreal, e sem modelos 3D tradicionais, texturas ou shaders. Projetos anteriores incluem: