Peter Fedak
pzfedak.bsky.social
Peter Fedak
@pzfedak.bsky.social
23 followers 52 following 10 posts
Interested in all things puzzly
Posts Media Videos Starter Packs
I've made a large update to FFX levels on noclip.website, adding particle effects, actors, and more! noclip.website#ffx/010
Reposted by Peter Fedak
Reposted by Peter Fedak
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
Pretty nifty, the wheel behavior scripts choose a frame for the sprite based on the camera position. You never seen them from above in game (the billboarding would look different). They also incorporate the direction the camera is facing, though, which doesn't seem correct (last few seconds).
The constant allows for some tuning, but this is still a (possibly scaled) upper half plane model. Then the "correct" flight paths are the horocycle geodesics, which as it turns out are easy to compute analytically (see "hyperbola" in the shader).
The other idea is around optical flow, looking at pixel motion speeds. Panning a distance s moves everything by s/y, the pan as a fraction of the viewport. Zooming from y to y+dy scales everything by (y+dy)/y, so the total flow is dy/y times whatever average of pixel radii we want (a constant).
Panning a distance s at fixed zoom requires loading roughly s/y images (assume the viewport the size of an image). Zooming from y_0 to y_1 loads log_2(y_1/y_0) images, which we can pretend is a cost ds=dy/y for an infinitesimal zoom. But this is ds^2=(dx^2+dy^2)/y^2, exactly the hyperbolic metric!
The first is inspired by digital maps, where there's a grid of images and each image turns into a 2x2 grid on the next level down. Consider the number of loaded images on your flight path as a cost to minimize. Call x the position of the center of the view, and y the side length of the viewport.
the drool is now sufficiently game-accurate