Avatar

fuzzy post-it

@lexyeevee / lexyeevee.tumblr.com

https://eev.ee/ ~ @eevee

tags

there are like 15 suggested tags made up of some combination of "game", "dev", and "indie", and i have no idea which to use and do not wish to use all 15. i think the list of suggestions is in a different order every time i see it so i don't trust it to put like, the most popular one first

but i found out that if you browse a tag, tumblr tells you how many people are following it. it will even suggest similar tags, but only tell you the follow count for the current tag. this sure is a ui decision but here are results of some Research™ at least for this particular case

  • #indie games — 2000k
  • #gamedev — 900k
  • #indiedev — 662k
  • #game development — 440k
  • #devlog — 240k
  • #game dev — 2k
  • #indie game — 2k
  • #indiegamedev — 1k
  • #gamedevelopment — ??? not shown
  • #indiegames — ??? not shown
  • #screenshotsaturday — ??? not shown
  • #screenshot saturday — ??? not shown

i can only guess that a missing count means under 1000 people are following it, which means... no one is following any permutation of screenshot saturday?? how is that possible

also tumblr has been really excited about suggesting #indiegamedev so i'm floored that it's orders of magnitude less followed than #indiedev

anyway this website and its design choices remain just ever so slightly incomprehensible to me. it's like, it mostly makes sense, but the moment i start to sit down in a normal-looking chair i realize it has five legs. keeps me slightly on edge all the time

i wonder if anyone actually follows #tumblr meta

Avatar

physics problems 3: potpourri

(crossposting from cohost)

here's just some stuff, though it ended up more related than i thought it would

collision responses

to zoom in on how motion is resolved a bit, the steps are basically like this

① compute the actor's instantaneous velocity. multiply by dt to get this frame's movement

② attempt to move. if you hit something, inform it of the collision (call its on-collide), project the remaining movement along the surface of the thing you hit, and repeat. (essentially, if you hit something at a slant, you slide along it.)

③ after movement is done, repeat the projection, but on the actor's velocity. (if you hit something at a slant, you don't keep trying to move in the same direction; you're now moving along the slant. also, if you hit something dead-on, you simply stop moving.) this technically cheats a bit because it only slides against the last thing you hit, but that's very unlikely to matter unless you're trying to go through a sonic loop-de-loop at 2 fps.

the questionable part is in step 2, where the collidee is informed of the collision. because this is in the middle of motion. there are several consequences of this. this post is going to consist of a lot of lists

• because of the sliding behavior, you might collide with something twice in a single motion. this means that a lot of objects that do stuff on passive collision, like candy, need to be a teeny bit careful that they're not double-collected. (candy sets itself "pending destruction" on collide which isn't actually removed from the map until the end of the frame, and arguably collision should be ignoring pending-destruction actors anyway, but candy is just a simple example of a more general problem)

• a handful of objects want to respond to collision by doing something to the collider's velocity, e.g. the bounce shroom, which launches things into the air. this is troublesome because the collider's velocity is essentially undefined during step 2, because it's still waiting to be slid in step 3. if you collide with something that alters your velocity, that change should probably not... also be subject to the collision? like at that point the collision has already happened, right. currently i slap a zero-second delay on a closure to do the velocity change but that seems uhhh questionable

• i think loading zones try to initiate a map transition in response to collision. it's not like this happens immediately since there's an animation but still, this is clearly insane to be doing in the middle of physics behavior, and i think also potentially subject to double trigger if you hit it just right. (but arguably scene changes shouldn't happen mid-frame anyway so that's a whole other thing—)

• starcow lexy can break stone blocks, but in the process she gets knocked backwards and the collision stops. i would like her to be able to break at least some things without being stopped. that's rather difficult to do without conditional collision. currently it is possible to change whether a collision happens from within a collision handler, but i virtually never do it, and i'd been thinking about removing the ability altogether. i guess this isn't a real problem but it's something that will factor in below

these are varying levels of Actual Problems so i have mixed feelings about how hard i want to try solving them. but i have the growing sense of something being just a bit messier that it needs to be, causing just a few too many minor headaches, and forcing me to keep just a few too many things in mind. it's just hard to pinpoint exactly what it is.

it would be nice if velocity changes were just plain safe to do from a collision handler. this suggests that collision handlers should happen after collision is completely done, when physics are back in a consistent state. that seems reasonable. like i also have a "collided-with" handler that i used to use a lot, but it's been almost entirely replaced by "after-collisions" which happens... after collisions. so i could just do that, but the other way around.

and here is where i feel like i'm in the middle of several decisions i was only ever 90% confident about.

see, "after-collisions" only receives the list of collisions from the last iteration of step 2. so it's possible, though relatively unlikely, to hit something that "after-collisions" doesn't know about. but it mostly cares about having either hit anything or ended up touching a particular thing, so glancing blows aren't very interesting.

i guess you could say the api mostly cares about where you end up? even though it might also be told about a collision with something that you aren't still touching by the time you stop moving. alas.

anyway the obvious thing is to similarly defer on-collide until later. that means remembering the actors i collided with and only telling them about it later. i don't love the added gc churn in this already fairly hot and heavy code, but whatever i guess. the bigger question is uhh which collision do i report? first? last? all, thus reinventing an annoyance i already have?

i'll also still need the immediate version for conditional collision, so that means i'll have four collision callbacks: immediate collider, immediate collidee, deferred collider, and deferred collidee. i guess the symmetry is satisfying, at least.

one more annoying wrinkle: after-collisions is actually called before velocity is updated, so it doesn't even solve this problem! the reason is that velocity is updated as part of the generic movement update, but an individual motion might happen outside of that (e.g. being pushed), and after-collisions is still called for those. but velocity can't be updated until the motion has finished, and after-collisions is called as the last step of the motions. wow! doing everything in the right order is a pain in the ass

an object i do not wish to disclose

there's a thing i have in mind that's activated when something lands on it from above. as in, specifically lands on it, not just walks onto it from the side.

i thought this was a pretty simple concept. alas

i found out by complete accident that it will trigger by accident if you create the following setup: position a crate so it's hanging over a ledge, near a mushroom. now just bounce the thing on the mushroom so that it hits the underside of the crate.

the problem is that the thing hits the crate, and stops. now it's the crate's turn to move. it's subject to gravity, so it tries to move downwards. in trying to move downwards, it hits two objects simultaneously — the thing, and the ground it's sitting on. the crate does not yet know that it's blocked, because on-collide is part of determining that, so it simply calls on-collide on both objects. the thing sees it's been hit, sees it was from above, and sees the velocity was downwards — remember, velocity hasn't been slid yet, and can't have been, because at this point we don't even know whether the crate is allowed to continue moving — so it triggers.

it's easy enough to look at this and go "well slap a threshold on that bad boy", and i maybe should anyway, but in this case it feels like papering over a problem that shouldn't exist in the first place. the thing just plain isn't being hit by an object moving downwards, and it's a clear api bug that it can even think that that's happening.

so changing on-collide as described above should fix it. more incentive i guess

only do it once

a recurring wrinkle is how to make a zone apply effects to any actor that touches it, without doubling the effect when crossing between two zones. anywhere this actually works is a goddamn miracle, though i don't know offhand if it comes up in the demo levels. but like i tried to make conveyor belt tiles once and that... that was... something.

or for example, the springs from the jam demo still exist, but they don't really handle being placed next to each other very well. springs depress based on what they're "carrying", and an actor can only be carried by one thing at a time. so if you straddle two springs, you're only carried by one of them arbitrarily, and it starts to depress, but you're still held up by the other spring, so you're no longer touching the first one, so it's no longer carrying you, so the second one is now carrying you, so the second one depresses, but in the meantime the first one returns to its original position, ad infinitum.

this one isn't a concrete problem it's just a category of problem that crops up every so often

expressing the situation correctly

ability spoiler i guess!! look away now if you don't want that

if you enter the farm level as starcow lexy and simply charge directly right or left, you will stick under the ceiling and... stay there. you won't move.

the reason is that the charge determines when to stop by looking for a specifically horizontal collision. otherwise, charging up a hill doesn't work correctly. but the geometry here prevents a horizontal collision — the ceiling is sloped and touches the corner of your hitbox, so the collision is diagonally downwards.

but if you hit the ceiling and the floor weren't there, you'd slide down along it, and that would be fine too.

i think the issue here is that what i really wanted was to say "if you end up in a position where you can no longer move, end the charge". that's kinda hard to express directly with the information you get back from collision. i thought a head-on collision would cover it, but i was wrong. luckily, there's a very easy way to make this work: simply wait one frame, and it becomes "if you don't move, end the charge".

anyway

i was aware of a lot of this stuff when i put the demo out, but i opted not to try to fix it then. i hope you can see why: a bunch of this touches some deep plumbing, and fixing it is the sort of thing that might unexpectedly break some obscure behavior somewhere else. but i'll keep sticking fingers in the dam holes until i'm pretty sure i've got them all

Avatar

physics problems 2: still player on a slope

(crossposting from cohost)

you have a player actor. great. heres one. it's lexy

[lexy sprite omitted because tumblr completely fucks it up]

she is standing on a slope. you are savvy at physics and understand that:

  1. gravity will attempt to pull her downwards
  2. she will immediately collide with the slope itself
  3. her remaining motion will be projected onto the slope (roughly equivalent to subtracting the normal force)
  4. she will then slide down the slope.

this is bad, because lexy is not trying to move. neither she nor the ground are made of ice, so surely she can hold herself in place.

but again, you are savvy at physics, so you know what holds her there: friction. so you say, ok, add a bunch of friction.

now you have a problem. the good news is that your physics engine is completely homegrown, so you can explain the problem in excruciating detail. the bad news is that it is your problem to solve for the same reasons. and the problem is that your movement code integrates everything upfront, then performs a motion.

that means you have your current velocity (presumably zero), gravity (pointing downwards), and friction (pointing up along the slope). you add them together in some fashion, and the result can never be zero, even with friction's natural capping behavior — this is just how vector addition works. so lexy will definitely try to accelerate in some direction, and the best you can hope for is that she will try to accelerate exactly towards the ground. but working out how to make that happen requires essentially working backwards from gravity (non-trivial because various effects can interact with gravity) and also just feels real dumb to be doing.

so where did you go wrong?

(an aside: the reason this doesn't happen in the demo is that i also have a cutoff on very small movement, so that little rounding-error levels of velocity don't make things shift a pixel at a time over the course of seconds. but that cutoff is too coarse, and in particular it makes some slow objects just not move on monitors with high refresh rates, so i've reduced it dramatically, and that has caused lexy to slide downhill. i thought i'd fixed this before but apparently i was just masking it by accident!)

i think the problem,

conceptually, is that friction happens at the wrong time. it's integrated with velocity and acceleration accumulated over the course of the last tic before movement is attempted, but friction isn't something that happens in a vacuum. i mean, literally, it won't happen if there's nothing else around. friction is an interaction with another object we're touching, and before we start moving, there aren't any of those!

so it seems like friction should only apply between steps 3 and 4 — after colliding with the ground, before actually moving along it. this is the point at which we know we are, in fact, sliding against the ground. and now we even have the ground available, so we don't need friction itself to be a vector at all, which is kinda convenient.

but that's in the guts of basic motion i... hesitate... to put something like friction in the middle of that. also, what happens if you collide and slide again? does friction apply again? probably not. so it only applies specifically the second time through a loop? that's rather weird. maybe it's okay that it's weird? it does add complexity for "out-of-turn" motion though, like being pushed or climbing a ladder, which probably won't have a big perf impact but does feel inappropriate.

other solutions

skip gravity

i could simply not apply gravity to a player on the ground. i've seen mention of that being done before. but that just feels goofy?? they are trying to move downwards, and on a slippery slope they even should move downwards.

also i have a bunch of objects that care about things landing on them, and this implies some weird special cases (in who knows how many places) for detecting that a player is walking on top of them without actually moving into them. and i have enough special cases as it is man. expressing a physics condition is so goddamn hard. i have the unsettling feeling that this would have other unforeseen consequences as well

a possible upside of this is that it could very well skip an entire movement iteration every tic — currently, a walking player tries to move sideways (for walking) + downwards (for gravity), immediately hits the ground, projects along the ground, and then tries to move a second time. without gravity in there, they'd skip the first collision and move exactly sideways from the beginning.

remember the ground

i do in fact remember the ground (tile or actor or whatever) for each actor, so i could use that to get the friction right upfront.

but what does that mean in practice? i guess it means that the motion vector would be projected along the ground before even attempting to move at all (and then that would be shortened by friction). so it's kind of like skipping gravity — if lexy is standing on flat ground, her attempted motion (straight down) will be projected along the ground (horizontal) and always come out zero.

i guess essentially this combines the other two options — it applies friction to the movement vector, but it skips ahead one attempt by making use of knowledge from the previous frame. it would get the friction stuff out of the movement core, which i like, but it would still make objects not push against the ground, which i don't like.

ah, all the options seem nebulously Not Great, which is always a sign of a fun problem. and don't worry, this gets even more complicated with physics problems part 3

unbelievable that the pan pride flag is so much better than the bi pride flag. conspiracy by Big Pan to sell more pans

Avatar

incredibly stupid physics problems

(crossposting from cohost)

i posted this in the secret fox flux $4 discord channel last night and it reveals A Problem

i mean, a problem besides the barrel's layering being kind of dubious

the pistons stop trying to extend as soon as they're blocked. and here, you may notice, the one extending left pushes the slime a little bit before giving up. this turns out to be caused by a combination of:

  • the piston is "moving", but it's not using the normal motion machinery (obviously), so it doesn't actually have any velocity.
  • when object A tries to push object B, if it determines that object B is moving away from it faster than A is moving, it doesn't bother. i don't remember what specific problem this was meant to solve, but it does make intuitive sense — if i'm pushing a boulder down a hill then it's just going to roll away from me and i am going to accomplish nothing. if i let the push happen, i'd make B move even faster (however briefly) which is silly.

as long as the slime is walking towards the piston, everything is fine. but the slime immediately notices it's blocked on one side, turns around, and starts walking the other way. now the slime has a leftwards velocity, but the piston has zero velocity, so the piston thinks the slime is speeding away from it. but that isn't happening, and the slime is still there, so the piston thinks it's now blocked and stops extending.

love it. chef kiss. pushing objects is the hardest thing in the world. anyway i guess i can think of two potential solutions here

① delete the special case for a pushee moving away. checking velocity in the middle of the (hairy) push code is already kind of weird, and it's only done for this specific case. it also shouldn't matter; even if we push something slightly this frame, if it really is moving away from us, then it should be beyond our reach next frame anyway.

i suspect this is a leftover from an older and vastly more complicated iteration of the push code that tried to conserve momentum and whatnot — in which case, doing this even for a single frame would have made A and B look like a single unit, combined their momentum, and given both the same velocity, which means B slows down. so that's bad. but that was an endless nightmare of increasingly obscure interactions so i eventually gave up and scrapped it all. the current implementation won't let you simulate newton's cradle, i guess, but that's not the kind of game this is so whatever?

on the other hand, if i'm wrong and this is still important in some exceptionally obscure case, it would be bad to remove it! exciting.

(if you're curious: what i do now is give lexy — or other push-capable actors — a maximum push mass, and then when she tries to push something, i scale her movement down proportional to how much she's pushing. for example, rubber lexy's push capacity is 8, and a wooden crate weighs 4, so she moves at half speed when pushing one crate and at zero speed when pushing two. i think if a sliding crate hits another one now, they'll both just move at the first one's original speed, but friction skids everything to a halt fast enough that it mostly doesn't come up.)

② give the piston a fake velocity to fool the check. i might want to do this anyway for stuff like climbing, where the player is moving but is considered to have zero velocity because it's being done manually. but lying like this feels like it'll come back to bite me somewhere down the line.

anyway this is just the sort of thing i bumble into occasionally. hope it's interesting. i should probably go try to fix it now

if this guy doesn't turn into a satori by the end of the game so help me god

tumblr is adamant about showing me (a) thumbnails of the same few people on "tumblr live" and (b) twist's latest comic at the top of my dash no matter what i do. like the dashboard seems to be simple chronological except that this comic is stuck to the top?? i do not understand this website

Maybe if i make more posts i can bump it down

edit: lol they only let you SNOOZE tumblr live?? so they know people want to get rid of it but they're adamant about making you see it anyway. fucking incredible

the evolution of lexy, from the original jam game (#1) to what she looks like now (#4)

(well actually she looks a bit more colorful now because i've changed the palette since i took this screenshot, but it's nice to have the comparison only be across shapes with the palette the same)

the #2 sprite was drawn shortly after i released the jam game and was just What She Looked Like for several years. i drew most of a whole sheet of various lexy forms based on that.

but eventually i thought about how i draw lexy (as in, non-pixellated), and how it doesn't really look like #2 at all, and how #2 doesn't really have a silhouette it's just kind of a Block, and what if i could do better, and i should at least give it a shot

and i came up with #3 and it was kinda dumpy but it was something and that was interesting

and after much tweaking i ended up with #4

and i was crestfallen

because it was so, so much obviously better than #2, and i knew in my heart immediately that i would have to scratch all my lexy sprites and do them all over again, and they are so time-consuming and it would set me back so far. like i don't want to spoil everything right off the bat but to give you some idea, the old lexy spritesheet is 2688×1040

but anyway i did that and the game looks ridiculously better now. which makes sense because i drew the original sprite like 2 years into drawing at all and now it's some 6 years later

i made a side blog for @fox-flux. i don't know why exactly — on cohost i just use a tag — but i guess i'm like A/Bing here

a weird thing that can happen is for people to follow the game blog when they don't follow me, which i think happened on twitter

Avatar

after many bumps in the road there is at long last a

which has been described as "longer than i expected" and "how the fuck do i get that heart??" and "am i supposed to be able to do this"

this is my little puzzle-platformer about turning into things and collecting candy. i've been working on it for a long time and it's still not done but i hope you enjoy what there is so far! especially because one day it will be done and it would be cool if you bought it

glad to see you posting again! been following your posts on and off for years and when your twitter went dead i was afraid you might've moved to a cabin in Montana and started a new life sending CEOs pokémail

Avatar

i feel like i left twitter and immediately went on a walkabout

i've also spent the last few months buried in a VN that i thought would be a quick Thing To Release but that kind of grew out of control — not even in size, just in planning. so i've been trapped in that for what feels like forever

i also found out in april that i've been on the wrong dose of ADHD meds for like three years!! so that's fun

i feel like i've just emerged from a cave and i don't really know what i'm going to do now but i guess it'll be something

thank you for noticing haha

Avatar

Imperfect Hatred.wad: Imperfect Hatred MAP10: The Hateful Earth (154, 1136, 96) Author: Various, compiled by BluePineapple72 Date: 2021-05-14 Description: Imperfect Hatred is the sixth edition of PUSS, BluePineapple72’s monthly speedmapping series. These maps hate you, and you will love it. Maps were designed for pistol start. Using idclev warping to play each map is highly encouraged. Via MAPINFO, pistol starts are enforced on Zdoom based ports. It was created in February 2021 with the following gimmicks: - 6 hour time limit - Each map must tribute E4M2 of the Ultimate Doom - Each map had to have at minimum two of the following: - A Cyberdemon Turret guarding a secret BFG - A hot start with a caco swarm - A circular room with barons of hell on the perimeter. - A rocky cavern beset with lost souls and spectres/pinkies - A central platforming section connecting multiple areas. - A dangerous damaging floor central to the whole map only escapable by running up damaging stairs to the start. - DOOM 1 Monster Roster and No Super Shotgun - A large secret area, accessed where the secret exit would have been.

Avatar

i'm just reblogging an arbitrary one of these to make people aware of wadbot, which i adore. it's (i believe) totally automated — just downloads a wad and picks a map and tries to find some places that seem "interesting" to take screenshots. as you can see sometimes it chooses framing that's just slightly askew, which i think helps it feel more like a weird passing glimpse

you kinda just changed my brain chemistry like 30 mins ago when i looked at some of your different platforms. when you just post stuff while "learning how to draw" (I've always had to be good at something and never admit that im learning) made me feel really free to do whatever i want

i made a fursona and i actually really love her and she was inspired by lexy.

sorry if this is way outta left field. i just think you're really cool

Avatar

whoa hey thank you. i'm imagining your fursona right now and she's extremely good

honestly it is kind of wild to me still that i've done stuff like publish games where i did all the art and it's, like, fine. i'm not outstanding but, you know, people look at it and just think "yeah that seems like art". sometimes they even compliment it! and my games are more thinky than looky so that's fantastic tbh

sometimes i feel like i've performed an elaborate ruse where i've tricked everyone into thinking i'm an artist, but i think that might just be being an artist

it's still difficult sometimes, but i started with little scribbly comics and now i've even had a couple people ask if i do commissions! wild. give things a try, you never know what might happen

sorry everyone it seems like tumblr just straight up refuses to put paragraphs inside list items even if i explicitly write them out as html, which is why that last post is practically a single unbroken block of text. i guess i will edit it to use unicode bullets or something?? absolute clown website

it's wild to see myhouse having escaped the orbit of Doom People, because so much of it specifically riffs on doom in a way that is laser-targeted at Doom People, to the point that i just wouldn't have expected it to be nearly as interesting if you don't pick up on that stuff

right from the outset, "my house" is even a recognizable genre, because doom was among the first approachable platforms for creating a 3D space, and if you give random people the ability to create a 3D space then many of them will just try to recreate their own house. (i want to say jp lebreton even made an effort to play through every house map on the idgames archive at one point, though hell if i can find it now.) there was in fact already a "myhouse.wad", from 1995!

frankly it's incredible that someone (or someones) put so much effort into this map and then had the gall to simply post it on doomworld as "myhouse.wad", because that is a thread title that guarantees the fewest possible people will bother to look. there are posts in the thread where people outright admit that they only checked because they were surprised how many replies a "my house" wad got.

so anyway, okay, the "classic" doom wad experience is that you download a wad, it contains exactly 1 map, and it has zero custom textures or music or other frills. most wads from the 90s are like this; if you're lucky you might get a bad midi rendition of a metallica song. nowadays there are texture artists and musicians and everything collaborating on full map packs, but "just a map" is still kind of the default mapping experience and is recognizable to anyone who's been around doom for sufficiently long.

and myhouse riffs on absolutely every aspect of this:

• the music is the MAP01 music, Running From Evil, which is just the music you get if you supply your own map in the MAP01 slot and do nothing else. so a ton of 90s maps had this same track as their background music, so everyone has heard it a zillion times. it is ingrained into so many people's skulls. subtly fucking with it is a great way to fuck with the player

• the house uses only stock doom 2 textures, or occasionally light modifications of them. again this is just what you get if you make a map and don't supply any other resources, so the stock textures are very familiar. only later, with sufficient poking around, does the map introduce new textures, which really help sell the impression of being swept away to Somewhere Else

• if you take the exit, you go to MAP02, Underhalls. this is the expected experience because doom wads replace what's already there — you're not really supplying a "new map pack" or anything, you're overwriting a map from the original doom 2 progression. (there are ways to fiddle with this now, but in vanilla doom 2, the level progression was hardcoded.) so the "ending" of a no-frills single-map wad is always, always to transition to Underhalls. the opening shot of Underhalls is practically like seeing the credits. so roping Underhalls into the experience is completely unexpected, because Underhalls is the sign that you've escaped back to regular doom

• the super shotgun is "hidden" in Underhalls, in probably the best-known super shotgun location in the whole game, because it's the first time you can get it

• incidentally Underhalls itself feels uncanny, because the player camera height is higher than usual to make the house's proportions feel sensible. (part of the trouble with exact recreations of real spaces in doom is that the camera is weirdly low.) i was actually convinced that myhouse included a modified Underhalls, but no, it's stock doom 2 Underhalls, it just feels off when you're slightly taller

but wait, there's more

• silent teleporters are a feature from boom, a very early doom derivative that added a number of helpful mapping features and is basically considered only half a step beyond vanilla. so shifting between two versions of a space without interruption isn't completely unexpected. it's only later that the portal use becomes more obvious

• although if you're especially canny, you should notice that the second version of the house shows both the upstairs and downstairs windows in full, which is impossible — doom cannot do room-over-room. (in fact this is accomplished with a semi-obscure zdoom feature called sector portals — essentially, the whole second floor and the space outside it are a separate area, and the "ceiling" of the yard becomes a view up through the "floor" of that second space.)

• swinging doors are a hexen feature (polyobjects) that gzdoom inherited. (heretic and hexen were modifications of the doom engine, and zdoom started out as a merge of all three codebases into something that could play all three games.) they might also be in other fancy engines (eternity?), but they are very distinctly not a doom thing. if you're deeply familiar with doom's limitations then they'll jump out at you immediately, but if you're looking at doom like it's any old 3D game then maybe not so much

• recreations of other humble real-world locales are also a somewhat common theme, and remind me in particular of Doom City, from way back in 1995

• a very common desire for players is to "uv-max" a map, i.e. reach the exit on ultra-violence with 100% kills and secrets. if you can't do this, the map is (reasonably) considered broken. it is comically impossible to do this in myhouse, and anyone with the skill to create the map would be acutely aware of this

• the extra weapon frames look to be borrowed from the well-known smooth doom, which adds extra frames for everything and is just pretty dang slick overall. so it's not merely "ho ho, got you, smoother weapons" but specific integration of another familiar project

• this might be reaching a bit, but mirrors are specifically a nightmare in zdoom's software renderer because they work by rendering all visible geometry as if it were physically present on the other side of the mirror — and if there be any actual geometry back there, it will also get rendered and you will have a big fucking mess. so a mirror in the middle of a room is a laughable idea. this is somewhat less of a concern now that the hardware renderer is basically the default, but it's still a spectre looming over the very concept of mirrors, so the way mirrors play out in myhouse is very funny to me

there's probably more, like, the way it intercepts noclip is a stroke of genius and not something i've ever seen done before. but i hope you get the idea

immediately after making that last post i get followed by a blog named "eeveelol" which has zero posts and is only following me

and look, i don't know, it's really hard to convey what it's like to perceive a sniper's laser sight on me whenever i am on this website. i try to tell myself "well there's only one sniper among millions of other people" but somehow it's not reassuring

sometimes i think about trying to make use of tumblr again but like. well for one i don't even know who i know who uses it still

but also my associations with tumblr are mostly about callouts, from a time when blocking didn't even meaningfully work, which made them this inescapable plague because people just had like half a dozen ways to put things on your screen that you couldn't prevent.

like the post history of this blog is currently mostly people spewing vitriol and me being angry about that and spewing it right back, which is just unpleasant all around

but even before that... i think of stuff like posting about styx's then-incurable illness, which he was swiftly dying from. because i always liked trying to be open about personal things, and i liked the idea of keeping some kind of record of a major thing, even if it was a catastrophe. but now i associate that with someone misunderstanding the posts and straight up accusing me of killing my cat.

(by the way FIP is no longer a death sentence — there is an antiviral called merely GS-441524 that is not FDA approved for vet use because of some corporate malarkey so you have to get it yourself but it is unbelievably effective, this sounds so fake i know but it is extremely real and there are even like facebook groups where people pass their unused doses around)

anyway i guess that sort of thing makes it hard to dive back in

i cannot believe how much foone posts on here it is unreal. i followed them like two days ago and they are already 60% of my dash

USA 1984

PuzzlePanic aka Puzzle Panic (Epyx - C64/Atari 400/800)

Avatar

something i definitely love is 80s video game ads trying to make everything sound incredibly edgy and badass, which leads to stuff like 3-color puzzle games described as WE INVENTED A SUDOKU THAT WILL MAKE YOU PISS YOUR ENTIRE PANTS AND YOUR SHIRT TOO

also fun fact, epyx is the same company that made chip's challenge. no idea who ken uston is though