Peter Fedak
@pzfedak.bsky.social
23 followers 52 following 9 posts
Interested in all things puzzly
Posts Media Videos Starter Packs
pzfedak.bsky.social
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
wretched.computer
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
A scene from the video game World of Warcraft of the gates of Ironforge, a dwarven city embedded in the mountains A scene from the video game World of Warcraft of Orgrimmar, the orc capital city A scene from the video game World of Warcraft of the Dark Portal, a portal between the realm of Azeroth and Outland A scene from the video game World of Warcraft of Icecrown Citadel, the seat of the Lich King
pzfedak.bsky.social
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).
pzfedak.bsky.social
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).
pzfedak.bsky.social
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).
pzfedak.bsky.social
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!
pzfedak.bsky.social
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.
pzfedak.bsky.social
the drool is now sufficiently game-accurate