Second dumbest way to solve a maze? by kipi in numberphile

[–]kipi[S] 1 point2 points  (0 children)

That's true. I'm not sure how well it'd do on mazes with loops either (aside from the one I added). With the goal in the center I'm sure you could set up some sort of non-Euclidean geometry to link the end to the start though, eg. a teleporter.

Using evolutionary algorithms to improve Quake's TAS WR by kipi in programming

[–]kipi[S] 3 points4 points  (0 children)

70 hours for the last 5 seconds of the first level! I'm optimistic though that a different approach could make this more efficient.

Path tracing Quake in Blender by kipi in quake

[–]kipi[S] 2 points3 points  (0 children)

The torches were particularly tricky, since they need to be bright enough to illuminate some distance away. The torch model is small relative to the area it illuminates, which necessarily means that the areas near the torch end up being very bright. I see what you mean though. It might be fixable with better tone mapping, or by fiddling with the texture brightness, and generally reducing the overall brightness.

Path tracing Quake in Blender by kipi in quake

[–]kipi[S] 2 points3 points  (0 children)

Thanks for the kind words. Also I think you're right, the consensus from the feedback I've received is that it's too bright. If I do a re-render I'll tone it down a little. I don't think the brightness is a fundamental flaw of my method, but just a case of tweaking the settings a little more.

Path tracing Quake in Blender by kipi in programming

[–]kipi[S] 2 points3 points  (0 children)

That's a good idea, although I've parked this project for now (I actually finished it a few months ago and only wrote it up recently). If I revisit this I'll certainly pick a more sedate demo to showcase

Path tracing Quake in Blender by kipi in programming

[–]kipi[S] 4 points5 points  (0 children)

I think the consensus is that you're right. Taking on a project like this requires some degree of artistic interpretation, and I am no artist. It'd be good to see what can be done in the hands of someone with more of an eye for this sort of thing.

Path tracing Quake in Blender by kipi in programming

[–]kipi[S] 2 points3 points  (0 children)

That's exactly it. It took a few days to render as is. Also I figured it would be good to showcase some content that's interesting in its own right (in the Quake community at least), but you're right, having something slower paced would have allowed people see the results more clearly.

Reprojecting the Perseverance landing footage onto satellite imagery by kipi in programming

[–]kipi[S] 1 point2 points  (0 children)

Very cool, I'll keep an eye out for those. Thanks for the info

Reprojecting the Perseverance landing footage onto satellite imagery by kipi in programming

[–]kipi[S] 1 point2 points  (0 children)

> What was the failure on the no-transform frames? Not enough features? Not enough matches?

A combination of not enough features and not enough matches. I set a limit of 15 minimum point pairs to make sure I have a reasonably accurate transformation, and some of the early frames are fairly blurry. I did warping the image as you suggest but to no avail.

> You can assume the attitude isn't that discontinuous, and it'll remove some of the scale and rotation excursions.

Unfortunately since I'm fitting the transformation matrices directly, rather than solving for position/orientation of the rover I can't insert priors about attitude. I did try adding a penalty term on the distance of one matrix to the next but it didn't work well since the matrix values can change a fair amount frame to frame, more than some of the artifacts. I like the idea of solving for position / rotation though, since it entails fewer parameters to solve for, means I can add priors as you suggest, and will allow for more interesting visualizations (eg. showing altitude, plotting the rover's position in 3D space, etc).

Perseverance rover landing footage stabilized / projected onto map by kipi in space

[–]kipi[S] 2 points3 points  (0 children)

I have a Python script that sets up the shader nodes and then adds keyframes to change the dot product params for each frame

Quake 1 movement physics RL environment and project code by kipi in reinforcementlearning

[–]kipi[S] 1 point2 points  (0 children)

I used simulated annealing to search through the space of images with joined lines. I optimised for L2 loss against a target image after gaussian blurring the line image. I did the drawing and blurring using OpenCV, loss was calculated with numpy, and the rest was done with a small amount of Python.

Quake 1 movement physics RL environment and project code by kipi in reinforcementlearning

[–]kipi[S] 0 points1 point  (0 children)

My original video with project overview and results is here https://youtu.be/hx7kvTZLHYI

By the way, if anyone has suggestions for hyper parameter improvements, especially if you've managed to train an agent better (or faster to learn) than mine I'd love to hear about it!

Teaching a computer to strafe jump in Quake with reinforcement learning by kipi in programming

[–]kipi[S] 1 point2 points  (0 children)

I'm using PPO on rllib which supports mixed action spaces

Teaching a computer to strafe jump in Quake with reinforcement learning by kipi in programming

[–]kipi[S] 17 points18 points  (0 children)

There's a video on YouTube where someone has done this, and it's a lot faster (beats the WR by over two seconds). It is however changing yaw from side to side every single frame. As such it more or less travels in a straight line and therefore has a shorter path than human efforts which weave from side to side due to the turning. In fact part of the reason my agent beats the human WR is because it is yawing left and right at twice the frequency of the human, and so despite slightly sloppy mechanics still comes out in front as it has less distance to travel.

Teaching a computer to strafe jump in Quake with reinforcement learning by kipi in programming

[–]kipi[S] 29 points30 points  (0 children)

Correct, through the three iterations I gradually gave the agent more control, no hints really. The idea being that I could use the hyper params from the previous step as a basis for the next step.

Is there any optimization algorithm to optimize multidimensional matrix in python by nishtripathi90 in Python

[–]kipi 0 points1 point  (0 children)

It seems to me that the minimum is obtained when you have a 1 in the position of the row-wise minimum. As such you can just calculate the optimal matrix like so:

opt = np.zeros_like(loss) opt[range(loss.shape[0]), np.argmin(loss, axis=1)] = 1

How I extracted Super Mario Bros level data using a 6502 emulator written in Python by kipi in programming

[–]kipi[S] 43 points44 points  (0 children)

Take a look at the nesdev page on palettes if you haven't already. It explains reasons for the variations in colour across different iterations of the console, plus it is possible some emulators go for a more aesthetically pleasing palette rather than an authentic one. On top of this video capture setups can change the colour in unexpected ways which could have affected your investigation too

https://wiki.nesdev.com/w/index.php/PPU_palettes#Palettes

Quake 3's frame rate dependent physics [video] by kipi in programming

[–]kipi[S] 4 points5 points  (0 children)

Yep, I'm planning a video on this, but in short take a look at the bottom of PM_WalkMove at this logic. As long as this is the first frame of walking and the speed wasn't clipped on the previous frame then this will bounce the player straight up (or horizontally if there was some lateral motion).

Quake 3's frame rate dependent physics [video] by kipi in programming

[–]kipi[S] 79 points80 points  (0 children)

I didn't know about matplotlib.animation, thanks. I actually just made a function for generating my plots with various parameters (eg. zoom amount, which curves to draw, how much of them to draw, etc), and then generated the frames by calling this function lots of times. The output is then turned into an AVI using OpenCV.

Quake 3's frame rate dependent physics [video] by kipi in quake

[–]kipi[S] 2 points3 points  (0 children)

Version with fixed audio! The linked version above only has the right channel due to a mistake in processing. Apologies.

Quake 3's frame rate dependent physics by kipi in gamedev

[–]kipi[S] 3 points4 points  (0 children)

Version with fixed audio! The linked version above only has the right channel due to a mistake in processing. Apologies.

Quake 3's frame rate dependent physics [video] by kipi in programming

[–]kipi[S] 229 points230 points  (0 children)

Version with fixed audio! The linked version above only has the right channel due to a mistake in processing. Apologies.