ARCHIVE

16:34 19.jun.51

Ok yeah I'm going to staple an SAT step on top of the thing I already had and probably that should make something good enough to actually use for games. Maybe just broken enough for funny glitches for the people who want to find them, too? Also, I said "normal" when I meant "tangent" in the last post and it's been bothering me since I spotted it like immediately after uploading
 

20:43 15.jun.51

an update on the collision engine: adding friction and elasticity was trivial and i did it like immediately. making moving world surfaces, on the other hand... they are pretty much evil, at least when there are any moving at different rates from each other. the only foolproof way i've found to interact with a single mover is to pretend like it is at rest and the player object is moving at its relative velocity to the mover, but once there are multiple objects, these multiple reference frames conflict and the player object phases through something.

tired of referring to this project in vague terms, so here's a brief description of the idea (i did no inital research in order to see if i could figure out a working system from first principles, so i don't know if this resembles something already existing): basically, the player object and all ground objects are convex polygons, and ideally you start the movement step with the player outside of the ground. each corner of the player casts a ray of the player's velocity (minus the other object's velocity, if checking a moving object) through each ground object, and the ground objects' corners cast exactly opposite rays through the player object. we choose the intersection point with minimum ("minimum" causes problems with ground objects moving with different velocities) distance from its casting point, and move the player the distance to this point, with some adjustment when the intersection is with a moving object as it will be in a different place next frame. we project the player velocity to be normal to the surface the ray intersected with and repeat until there are no intersections with the remaining velocity. this works great when none of the ground moves!

i've tried a lot of clunky strategies to resolve this issue, and will continue to try more until i find one that works or give up. i actually did some reading on collision at a particularly hopeless point and now know what a "Separating Axis Theorem" is. i tried rewriting the whole thing based on that concept but quickly ran into such head-scratchers as "what happens when you run into multiple objects in one time step" and more specifically "if the ground is split into two polygons how do you avoid getting repelled by the dividing edge when you try to scoot past it." i am sure people have solved such issues and i could learn how by reading more, but also i already solved the issues with the thing i already made and understand. i think the SAT method will come in handy with (crudely but ideally effectively enough) handling rotating ground objects, which obviously don't have a single linear velocity across all their perimeter so cannot be treated as easily as (I assumed...) normal moving objects could.
 

21:10 16.may.51

i... appear to have made a collision engine that more or less works? everything is frictionless and static right now so no there's telling yet whether it's really stable, but this is farther than i really expected to get after last time
 

21:08 12.may.51

turns out my hungry wisconsin ass could work in the cheese aisle
 

21:03 18.apr.54

i've had a bit of a data hoarding/archival itch these last few weeks... for the sake of my ssds i hope i can continue directing it at relatively small volumes of personally important non-video data until i can afford a ton of M-Discs or other such claimed-to-be-durable storage media. also, luckily for "my ability to keep promises on this site," "personally important non-video data" includes certain scratch games (see, oh god... march 51). i have, for the time being, redirected my energy to once again making an overkill collision engine to recreate them in js (i have not learned my lesson).
 

13:32 23.mar.54

it's been a while again. the short of it is that i still want to do most of the projects i've mentioned here, which puts the site dangerously closer to "another unmanageable dream" than "actual object that can match my idea of it" mental territory. nonetheless i haven't been thinking of much new to do so i'll probably catch up someday. along with this weblog update i've updated the buttons on the links page and fixed the music player (rip discord filehosting). the music button also now pauses the audio rather than just muting it, and your current position in the file should be retained across pages. apparently (given some unimplemented functions in the site js) i was in the middle of doing this before at some point and forgot, heh.

unasked for personal update: my life is in even worse stasis than when i was in college on account of either the job market is evil or i'm bad at job applications or both. if you or a loved one happen to have work for a "computer engineer" consider letting me know. i know this website isn't any kind of real portfolio, but i'm really just doing a bit right now because you don't get jobs by complaining on neocities, so whatever.