Post

i recently finished v2.0 of my browser-based World of Warcraft level viewer! so here's a thread on what it is, how it works, and a visual history of its development check it out at noclip.website by searching "World of Warcraft", finding a zone you wanna explore, and fly around w/ WASD + mouse

one nice thing about noclip is it'll save your current camera position in the URL, so to share a specific location, just share the URL: noclip.website#WorldOfWarcr... you'll want a decent computer and internet connection to use it. also, these flythrough videos are all from noclip's builtin tooling

getting the project to this point took a truly insane amount of time, research, and debugging that's kinda difficult for me to wrap my head around now. it all started about a year and a half ago when i was looking for a new hobby project to sink my teeth into

i'd already spent a fair amount of time using @jasperrlz.bsky.social's noclip framework writing a Halo level viewer, and as a recovering WoW subscriber from back in the vanilla days, i wondered how feasible getting an older game like WoW classic into noclip would be

it also seemed like a better use of time then resubbing

0 reposts0 likes

but first, it might be helpful to outline how exactly noclip.website works. Jasper's put together a really nice TypeScript & Rust framework for building scenes in WebGL/WebGPU, plus a ton of utilities for the kinds of math, debugging, and camera manipulation one commonly does in 3D graphics

one core tenet of noclip.website development is that its game viewers should, as much as possible, work from native game files. this means that each viewer is a bespoke parser of the original game file formats, and writing one usually means recreating a reasonable portion of the game's engine

as such, my WoW viewer needed to understand the file formats as they shipped w/ vanilla WoW. or, to be precise, as they shipped with WoW Classic. and to get things started, i began with the game's texture format, BLP in all of the following posts, check image alt text for more dev details

(as an aside, all of the screenshots following this were recovered from my discord DMs w/ Jasper, so what follows is a roughly chronological account of what my viewer looked like through development)