Skip to content

Blog

A look inside Awards Racing, a browser racing game where you smash design-award icons. Physical objects are drawn with two calls a frame, and the first visit downloads about 23 MB.

Published

Awards Racing is a browser drift racing game made by Ecofuture Technology Services. You smash blocks marked with design-software icons, collect likes, and dodge jurors and rival drivers.

It was FWA of the Day on 2026-09-09 with 84 points, and FWA of the Month for September 2026. Awwwards gave it an Honorable Mention.

Every number below comes from a technical teardown by rickcreates. We did not measure them again. The screens and clips were recorded by opening awards.racing ourselves.

Image: awards.racing

Video: gameplay from awards.racing, captioned by us

The game runs on its own renderer with a WebGL2 path and a WebGPU path. Every shader is written twice, in GLSL and in WGSL, and WebGL2 is the default.

The key is WEBGL_multi_draw. Physical objects such as boxes and mugs are not drawn kind by kind. They are batched: one call for the scene pass and one for the shadow pass, so two calls a frame. There are 34 kinds of object with up to 300 slots each. In practice about 92 are on screen in the garage and 290 to 415 during a race.

Not everything costs two calls, though. Ground, cars, characters, effects and post-processing use ordinary draws, 80 to 145 a frame on WebGL2. The WebGPU path draws each kind separately, 139 to 149 a frame. The two-call figure only applies to physical objects.

34 kindsup to 300 slots each
multi-draw callone per pass
Scene pass
Shadow pass
  • 34 kinds → multi-draw call
  • multi-draw call → Scene pass
  • multi-draw call → Shadow pass
Source: rickcreates teardown

Video: an explainer we made from the report's figures

A first visit downloads about 23.2 to 23.7 MB over about 332 requests. The biggest piece is images at 9.6 MB, and MP3 is second at 8.1 MB. That is six tracks of 1 to 1.5 MB each, and they download even with the sound off.

The 3D models are four .glb files, 1.9 MB together. The main script is 2.5 MB, or 0.7 MB compressed, and there are no analytics or ad scripts. Phones download the same files. The bars below show the four biggest pieces; there are more files than these, so the total is about 23.2 to 23.7 MB.

The biggest pieces of the first download

The biggest pieces of the first download
Images9.6
MP3 (six tracks)8.1
Script2.5
3D models (four)1.9

Source: rickcreates teardown

Video: an explainer we made from the report's figures

The characters have no skeletons. Each one is a sphere of point masses joined by springs, and four constraint passes a frame give it the squash and stretch.

Physics is Bullet, wrapped in C++ and compiled to 240 KB of WebAssembly. It runs 60 or 90 substeps a second depending on the device. Resting objects sit in grid cells and only wake up when something hits them.

The loading screen lists what the game is made with: three.js, Bullet3, GSAP, Vue.js, Vite, Howler.js, nippleJS and Tweakpane.

Image: awards.racing

In the report's measurements the game held 60 fps in the garage and in races, and no frame in a race took longer than 33 ms. The canvas renders at 1x on desktop and at 0.85x on phones at the lowest default quality.

The graphics go through a shadow map, deferred lighting and a separate forward pass for transparent objects, then post-processing with five levels of bloom.

데이터 표
Frame rate60 fps (garage and race)
Slowest frame33 ms or less (race)
Canvas scale1x on desktop, 0.85x on phones
First paint (FCP)1.3 to 1.6 s
First-visit downloadabout 23.2 to 23.7 MB

Source: rickcreates teardown

Video: the garage on awards.racing, captioned by us

Honestly, this is not a story about what is trending. We picked it because it is a rare chance to read the numbers inside an award-winning game.

Two things stood out. One is how few draw calls the physical objects need. The other is that MP3 takes 8.1 MB of the roughly 23 MB. Loading it only after the sound is switched on looks possible, but the report does not say why that was not done, so I do not know.

I would start by counting the draw calls per frame in our own 3D screens. Keep in mind that these figures come from a single report, and they may differ with the device and the network.

This post covers one topic only.