Remastering World of Warcraft's textures with AI
Our first remaster: World of Warcraft as it was in 2006, running in an open-source client, with the textures of its first zone redrawn at four times the resolution and switchable in game with one key.
Only the art changes
Remasters usually cost so much because the game has to be rebuilt first. We wanted to see how far you get when it doesn't: keep a game exactly as it plays, and give it new art. World of Warcraft's 2006 version was the test, because an open-source client for it, benilla, written in Rust with the Bevy engine, already plays the whole game. Nothing about the world, the rules or the code had to be recreated.
Three small changes to the client were enough. Its asset loader checks a folder of replacement textures before the game's own archives. Ground layers can be larger than the 256 pixels the stock code assumed. And one key swaps the remastered textures in and out live, so every change can be judged in place, in the world, not in an image viewer.
The pipeline
- Extract
- Every texture a zone actually uses: ground, buildings, trees, props and the grass and flower cards. Elwynn Forest, the human starting zone, has 422.
- Redraw
- Each one is redrawn at four times the resolution by an open image model with a style tuned on the game's own look, kept close to the original so the shapes and layout don't move.
- Seams
- Ground textures repeat across the landscape, so they're redrawn twice, once shifted by half, and blended, so no edge shows where tiles meet.
- Match
- Colours are matched back to the original, channel by channel, and sharpened. Without it the redrawn grass came out soft and washed out next to the rest of the world.
- Pack
- Written back in the game's own texture format, with every smaller copy the engine needs for distance and the original's transparency.
| 4× | the original resolution, 256 to 1024 pixels on a side |
|---|---|
| 422 | textures used in the zone |
| 27 | redrawn so far, the ground first |
| ~20 s | per texture on a desktop graphics card, unattended overnight |
Why it's paused
The first overnight run was stopped after a handful of textures: the extraction had reached past Elwynn into the neighbouring zones. Blizzard names textures after the zone they were first made for, so some "Westfall" and "Duskwood" textures are really used in Elwynn, and the zone filter has to go by where things are placed, not by their names. That's fixed.
The bigger lesson was scale. A world this size needs a long run before you can judge the result as a whole, so we took the same idea to a game small enough to finish: a Sega classic remastered from the game's own memory.