fuzzy notepad

Atom feed everything

[dev] fox flux, three years later

I’m working on a video game! Like, a serious one.

The past

I wrote the original game (very slightly NSFW) for my own “horny” game jam, Strawberry Jam (more likely to be NSFW), way back in February 2017.

You play as Lexy, my shameless Floraverse self-insert, who owns an enchanted collar that (among other things) makes her basically indestructible and allows her to easy to transform into… whatever, given some kind of sensible trigger. And then you do some puzzle-platforming to collect “strawberry hearts” and gain access to new areas, much of which (surprise!) involves getting turned into things.

For example, this chain-link fence blocks you:

Screenshot of the player being stuck on one side of a fence

But if you let that green blob in the grass turn you into slime, you can walk right through it.

Screenshot of the same area, but the player is now green slime and free to pass through the fence

There are also spikes, which you get stuck on if you land on them… but slime can walk right through them, glass can stand on top of them, and stone outright destroys them. And so on. As a jam game, it’s not very expansive, but many of the puzzle elements interact differently with many of the handful of Lexy variants, which provided enough potential to make eight levels.

Post-jam

The jam game was rough, but I really liked the concept and wanted to expand on it. I spent a good chunk of the summer of 2017 on it, but it was a struggle. I was still fairly new to pretty much every aspect of actually creating a game — I’d only been drawing for two years, I’d sometimes hit big gaps in the design with no idea how to fill them, and I wasn’t yet entirely comfortable with complex physics or shaders. The art in particular was a huge problem; it took me a long time to produce sprites that I was only passably happy with. My spouse Ash is an artist, and we’ve made several games together where they produced all the art, but this was my idea and I was determined to draw it myself.

Then 2018 hit, which was a whole entire mess, and I didn’t really touch fox flux at all for over a year. I made a couple of other games with Ash, some finished, some not, and kept drawing intermittently.

I returned to fox flux for the middle of 2019, and decided… I’m not sure what I decided, exactly. I guess I’d gotten better at all the things that had been difficult for me before, so I set about trying to improve every aspect of the game at once.

  • I realized the (many, many) improved sprites I’d drawn in 2017 were not actually very good, and drew a new Lexy design from scratch that absolutely blew me away… which meant throwing away all the existing art.

  • I’d come up with a few new things for Lexy to turn into, each of which altered her behavior pretty significantly, and her code was becoming a spaghetti disaster. So I spent some time completely refactoring actors into bags of components, which I was unsure about until very recently and which ended up breaking pretty much every single object in the game, sometimes in subtle ways.

  • I decided to add water, which unraveled into a whole pile of decisions and problems.

  • I tried to make consistent or interesting physics for pushing things (e.g. wooden crates), and that became a nightmare. I easily spent weeks on this, trapped in a cycle of finding some edge case that couldn’t be fixed without considerably expanding what I was simulating, struggling to do that expansion while keeping all the basic stuff working, and then finding a new and different edge case.

Did I mention that I tried to do all of these things at the same time, while also trying to nail down the design of a game that’s naturally prone to a combinatoric explosion of interactions?

At a certain point it just felt hopeless. I’d poured easily over a year into this game, and all I had to show for it was a jumbled pile of stuff that didn’t work, strewn about a couple test maps that didn’t even contain any puzzles.

The present

I don’t know what happened, exactly. I’d given up on the heavily-simulated push physics last year, at least, so that wasn’t so much of a concern any more. But I still had a mess. I’d long since written git status off as unusable.

Until this past month, when I sat down and just started powering through the mess. One by one, I fixed the serious breakages that the component refactor had caused. I dedicated a day or two just to figuring out water physics, put a little more thought into it, and ended up with something that looks and plays quite nicely. I finished redrawing basic Lexy, and even added frames I hadn’t had before.

I think the difference was… fear. I’d previously hesitated so much, both in the art and the gnarlier code. It was such a struggle to get something working at all that changing it in any way was terrifying — what if I broke it and couldn’t even get it back to how it’d been?

I don’t know how to describe exactly how this felt, and I also don’t know how to explain what changed. It was like a switch flipped. I think it started when I drew new dirt tiles, and it didn’t even take that long, and I loved them. I’ve always had a hard time drawing terrain, and for once I just sat down and did it and it came out well and it looked like mine, like my style, which was a thing I hadn’t even really grasped I have before. After that I just cranked out a mountain of new sprite art, faster and better than anything I’d done before. Like I’d been accumulating XP over the past few years and just now decided to spend it all on levelling up.

Over the past six weeks, I have:

  • Redesigned the terrain
  • Vastly improved the palette
  • Completely finished redrawing Lexy
  • Redesigned the HUD
  • Mocked up a new dialogue layout
  • Drawn a new font
  • Drawn and implemented new consistent level entrances
  • Animated a treasure chest opening cutscene
  • Animated getting a key
  • Added a completely new tally at the end of a level
  • Added transitions for entering and leaving levels
  • Added swimming behavior
  • Redrawn the old gecko as a much more visible bananalizard
  • Animated the hearts and several other pickups
  • Ported the original forest levels to use all the new stuff
  • I don’t even know there has been just so much

Just look at the style evolution! God damn.

Three versions of Lexy in dirt tiles; over time, the style becomes more colorful and relies on stronger shapes and silhouettes

Here’s that same level from above:

Slime Lexy once again passing freely through the fence, but using newer assets

A lot of the last few weeks went towards level transitions, which previously… kind of worked. They were always a hasty jam hack that I never liked; there was a quick screen fade when going through a door, there was barely any notion of being “in a level” vs not, and the game even counted the fucking hearts in a level on the fly the first time you entered it. It was all very silly.

But now (please pardon the occasional frame drops from my screen recorder):

GIF of Lexy entering a level with a transition, collecting candy, exiting with another transition, and seeing the level tally

I finally feel like I’m making some real progress. I finally feel like this could be something I take seriously, that it could be a real game, something more than half an hour long. At some point it just became an absolute joy to look at and run around in.

The idea

The basic concept is the same, but I want to add some structure to it. The jam game was four single-room levels you could tackle in any order without much guidance, then another set of the same. Which is fine, but doesn’t give me much wiggle room in the design.

In the full game, levels will contain not just hearts, but also a treasure (a la Wario Land 3), some amount of candy (usable at the shop to buy things of some description), and an explicit exit. The overworld will function a bit more like a world map, and though you’ll still need to collect N hearts to get to the next zone, there may sometimes be obstacles that can only be overcome by finding the right treasure in a level.

I also intend to give Lexy some active abilities, for example this blown kiss (recorded with older art) that can toggle pink objects between two states:

Lexy blows a kiss towards a pink brick wall, which changes it into a pink grating

I even have a plot in mind! The jam game had only a teeny tiny one.

The future

Ash is currently busy with their own game, so I think this is gonna be The Thing I Do for a while. To that end, I’m in the middle of setting up some infrastructure:

Also, I recently created a secret Discord channel on the same server, where I intend to do planning and design work that I’m not ready to make public yet! Spoilers will abound, but if you’re interested and okay with that, you can get in by pledging at least $4 on Patreon and letting me know to give you the role. (I don’t use Patreon’s native Discord integration because it does rude things like forcibly rejoin you to the server even if you manually leave.)

Specific priorities

I’d like to finish porting the old levels over to new artwork, the new level infrastructure, etc. It’d make for a nice little Patreon demo or something, it gives me a milestone with pretty clear goals, and it’ll leave me with at least a small palette of puzzle elements that I know work correctly.

I’d like to write about what I’m doing sometimes on this dang blog. I’ve found that structured writing is really, really, really hard when my head is a mess, and it has been extremely a mess for the last two and a half years (sorry), but jotting down what I’m already doing should be much easier than the more elaborate posts I’ve written, which need research and tooling and whatnot.

I have a good handful of puzzle elements — some of which even work — and a bunch of ideas for more, but I haven’t actually tried building levels since I made the original game! That’s kind of the important part, so I’d love to do some of it now that the dust is finally settling.

I still have some design decisions to make, though they’re getting trickier since I’ve already decided all the easy stuff. But I’ll save that for the generous folks who give me four dollars, I guess.

The elephant in the room

So. As I mentioned at the beginning, this game was originally made for a “horny” game jam. Given that it’s mostly platforming, you might be wondering why that is. I already feel like I’m crossing the streams somehow by even mentioning this on this blog, so I’ll try very hard not to get TMI here.

I have a foot in “TF” (transformation) kink circles, and one thing that’s always struck me about that subculture is how much of it is completely non-sexual. You can find no end of artwork of, say, someone being turned into one of those inflatable pooltoys — where both the artist and the audience are obviously having a good time with it — yet with no hint of sexual elements whatsoever. It’s a form of sexuality that doesn’t need to be sexual at all.

I started Strawberry Jam because I wanted to see some adult games that were more creative with their gameplay. Much of the genre consists of otherwise regular games that occasionally show you some explicit artwork, and while that’s a perfectly fine way to design a game, I felt that the medium surely had more potential. It turns out that a non-sexual fantasy kink works wonders as a gameplay element; rather than just giving you a picture, the game takes a concept and has you experience it yourself, even figure out by experimentation how it’s altered the way you interact with the world.

This puts me in a slightly awkward position. I do, genuinely and platonically, love these kinds of gameplay themes! I adore changes in how you perceive or interact with a world — the dark world in Metroid Prime 2, the time reversal in Braid, the “dimension” swapping in Quantum Conundrum, etc. I think this is a great concept that anyone can have a good time with, and I feel like this game is a love letter to the Wario Land series.

At the same time, I do also appreciate the kink inspiration. Even Lexy’s collar was originally conceived as a gimmick I could use for drawing adult artwork. The jam game contains a lot of suggestive dialogue, since Lexy herself also appreciates the kink aspect. And that was a lot of fun to write, and I’m sure it enhanced the experience for other folks with similar leanings.

But this is such a good concept that I want it to be playable as just a regular puzzle-platformer as well. I think it would have fairly broad appeal, and I don’t want to hamstring myself by totally fucking weirding people out when it dawns on them that “oh the dev is kinda Into This huh”. And yet I don’t want to completely sterilize the game, either, because… well, ultimately, it’s my game and I like the suggestive parts.

This is a tough line to draw, and I’m not yet sure how to do it. I’ve considered just making alternative dialogue that you can opt into when you start the game, but given that Lexy already speaks differently depending on what form she’s in, I have no idea how feasible that is.

I don’t know how to gauge this. I’ve always been up to my armpits in the side of the internet that just posts porn and talks about sexuality casually, whereas I’m dimly aware that most people see sexuality as this completely distinct part of life that you hide in a small box, far away from the eyes of polite society. But maybe I’m overestimating that? Does anyone actually care if the protagonist of a game comments “hey this is hot” about something weird but innocuous?

Or maybe that’s exactly where the line is. I remember Nier: Automata, a game that is all too happy to show off the protagonist’s immaculately-rendered ass, which is clearly meant for the enjoyment of both the creator and the players. But nobody comments on it within the game, which makes it seem incidental, somehow. I can’t explain why that is, and it feels slightly dishonest to me.

Am I overthinking this? If you’re not involved in any kind of kink circles and played the original jam game, I’m curious to hear how it read to you. Was it at all uncomfortable, like perhaps the game was expecting you to heavily empathize with a feeling you don’t share at all? Or does putting that feeling on a character, rather than aiming it at the human player, make it something you can easily shrug off? The full game will have more stuff going on, so there should be lots more dialogue that isn’t solely about Lexy’s feelings, if that helps.


Hm, I thought I would have more to say here! I have a lot of ideas, but only a handful of them are implemented yet, and I guess it’s hard to show what a game will be like before most of it works.

I hope this is enough to whet some appetites, at least! I haven’t been excited like this about anything in far too long.

[blog] Old CSS, new CSS

I first got into web design/development in the late 90s, and only as I type this sentence do I realize how long ago that was.

And boy, it was horrendous. I mean, being able to make stuff and put it online where other people could see it was pretty slick, but we did not have very much to work with.

I’ve been taking for granted that most folks doing web stuff still remember those days, or at least the decade that followed, but I think that assumption might be a wee bit out of date. Some time ago I encountered a tweet marvelling at what we had to do without border-radius. I still remember waiting with bated breath for it to be unprefixed!

But then, I suspect I also know a number of folks who only tried web design in the old days, and assume nothing about it has changed since.

I’m here to tell all of you to get off my lawn. Here’s a history of CSS and web design, as I remember it.

[release] Doom text generator

Screenshot of a generator with controls for the font, color, scale, and alignment

🔗 Doom text generator, locally hosted

I’ve been mad my entire life that one of these didn’t seem to exist. ZDoom can print arbitrary text, of course, but only if you fuck around writing and compiling an ACS script or whatever! There’s no console command for it! Outrageous!!!

So I finally made this. It took like ten hours, which I have to say, is fucking incredible.

[blog] Goodbye, Twigs

Twigs lounging in a cat tree, while a bright sunbeam illuminates him from behind

I did not expect my return to writing to be like this.

Twigs, our nine-year-old sphynx cat, has died.

He is survived by Pearl, his lovely niece; Anise, his best friend and sparring partner; Cheeseball, his wrestling protégé; and Napoleon, his oldest and dearest friend.

[dev] Weekly roundup: Somewhere

I would not say I’ve been having a great time.

  • fox flux: I fixed some bugs with pushing on flat ground, and did a bunch of math.

[dev] Weekly roundup: Foglights

Hello!! This is just the year of endless interruptions. I switched medication and I’m functional, but I think I have withdrawal from going off the old stuff, so I’ve been a little spacey for about a week. Hoping it passes soon! Also some other distractions happened. But in the meantime I’ve been drawing a lot.

  • art: I’ve been joining Ash’s commission streams for the past week or so and mostly doodling porn, but after doing that for a while, I decided I should try coloring stuff again, so now I’m doing that also. Definitely need the practice, but really enjoying seeing myself produce more finished work again. I guess I could go put some of that work in the canonical place, too.

  • blog: I did a whole bunch of work on a blog post which is going to be preposterously long, but hey, what a way to come back. Hoping to finish it by the end of the month, if I can get my brain working again.

  • alice: Still writing for this…

[dev] Weekly roundup: All that glistens

  • fox flux: I’ve been kind of taking a break from physics, but I did have some ideas about how extrinsic velocity could work, got them working for a conveyor belt, and then extended the same concept to a rough rework of pushing. It works surprisingly well given how little time I spent on it, so that’s very promising.

  • gleam: I put together the first production VN with it, and although I had to cheat and hand-edit a bit, GLEAM grew a bunch of useful stubs of features along the way! It’s getting there. Also I discovered a fascinating edge case in Firefox when you have 800 images visible but all but one of them have zero opacity.

[dev] Weekly roundup: Waste not, want not

Wee bit late, but I’ve been busy.

  • fox flux: I wrote some push physics tests, now that it’s possible to do that. Removed some old obsolete garbage I’ve hated for like a year, hooray. And then I got stuck in a horrible loop of coming up with a new idea for how to do pushing, realizing it won’t work in some case, making a thousand notes, rinse and repeat.

    I can’t even fall back to spriting, because my tablet broke! Argh.

  • doom: I made WasteNot, a ridiculous ZDoom mod that tracks how much ammo/health/armor you lose by grabbing items when you’re close to the max amount you can carry. Also I put some Doom stuff on Itch and the landing page here.

Very exciting week. I spent a lot of it exhausted, after rushing to invert my sleep schedule in not very much time.

[dev] Weekly roundup: Breaking up (code) is hard to do

  • irl: I went to the dentist, which I think was the last of the errand backlog, hallelujah.

  • fox flux: Continuing on from last week, I threw myself headfirst into this idea of splitting up base actor code.

    I tried it against Isaac’s Descent HD (my LÖVE port of Isaac’s Descent that I only ever released on Patreon), since it has a very small number of abilities and objects, and just went hog wild.

    The results have been promising! Most of it went much more smoothly than I expected. A little bit was much more horrible than I expected. But within the space of a week I’d gotten a rough first attempt working, ported it to fox flux, and gotten the game… um… mostly limping along. There’s still some lingering fallout, and I haven’t even gotten to Lexy herself yet, but it seems like this will be an overall improvement. I can even write tests now! Tests!

    I also did some more work on the revamped Lexy sprites, but then my tablet broke — again — so that came to a screeching halt.

  • blog: I started on a second post (without finishing the first, hm), or more specifically, I started on a complicated but very cool interactive doohickey to accompany the second post. Very excited. Should probably, like, finish one of them.

  • alice: Planning, writing.

[dev] Weekly roundup: Chugging

I’m discovering all kinds of ancient damage in myself, but I’m chugging along!

  • irl: We’re making our way through an endless backlog of errands. There are so many. But they’re getting done, which is good! Also the internet was out for a day so that was fun.

  • gleam: It got a big ol’ refactor, which left it working exactly the same, so that’s fun! Stubbed out enough features that it’s now (technically…) possible to use it to make a VN from scratch, rather than just previewing and making minor edits to an existing one. I split apart the player from the editor and ensured the player works standalone; I added a loading screen; and I finally got around to adding back music support. It’s coming along!

  • art: I did like half a dozen daily comics? You know. “Daily”. The last one was… oops, almost a week ago. I’m sure I’ll get back to them real soon now.

    Also some sketching! I’ve almost filled a real physical sketchbook for only the second time in my life.

  • stream: I took a crack at Sigil on UV, trying for 100% kills and secrets, with… mixed results! Great fun, I guess.

  • fox flux: I am admittedly struggling a bit.

    We played Cadence of Hyrule; I found the art style inspiring; I tried to glean something from it that I could apply to my sprite work; and I realized basically everything I’ve drawn is counter to what I most like in pixel art. It was a struggle just to produce the few tiles I have so far, so I don’t know what to feel or do here.

    At Ash’s suggestion, I started trying to draw some Dewclaw tiles, but boy! That’s difficult. How do you design small pieces that can be put together into something sufficiently reminiscent of a city? I don’t even know how to draw a city, not really; I’m remarkably terrible at filling in small details of a concrete place or situation.

    And then I tried to do something technical and split up Lexy’s code — since historically it’s been littered with a ton of if self.form == 'foo' then ... special cases — only to discover that it breaks everything. Now I’m trying a different approach, which is not breaking everything quite as badly, but which has massive repercussions and possibly slows the game down by double-digit percent. Love game development.

  • alice: Still plodding along on Alice’s Day Off. I wrote a half-draft, half-outline of another route. Just been hard to get in the right mood, lately.

  • blog: I started on a post! Wow! Remember when I used to write posts? I’d like to do that again. I’ve got one half-done and ideas for a few more, if I can just get some momentum going again.

I’ll get there.

[dev] Weekly roundup: GLEAM

Hello. I don’t know how I am! But I did some stuff.

  • fox flux: Workin’ on a new walk animation.

  • gleam: After years of saying I should totally do so, I finally started making a little editor for the Floraverse web VN engine. I’ve been gradually teaching it to load and play back the existing VNs (from scratch, because the old code is Quite Bad), and it’s finally hitting the point where it’s possible to make something from scratch. Sort of. I mean, there’s no saving or loading or exporting, and a bunch of stuff is broken, but you know. Getting there. Maybe I’ll even make a VN myself.

  • art: I started doing daily comics again and then forgot after day 1.

GLEAM has basically taken up my whole week; turns out that while client-side web stuff has improved dramatically, writing an editor is still an incredible pain in the ass. Getting somewhere, though.

Oh, and that marks the end of my journal! Cool, I guess. I don’t tend to fill up notebooks very often.

[dev] Weekly roundup: Recharging

Hello. I’m kinda up and down but recovering, I think.

  • art: I drew a bunch of porn, most of which is on my porn gallery (warning: porn). I even wrote some stuff, which will never see the light of day.

    I also finished putting all my 2015 art on my clean gallery, if you want to see the arc of my art journey, which slowed considerably after the first couple years. Kinda bummed about that.

  • irl: We have done so many fucking errands you have no idea.

  • gleam: I put together another Floraverse VN, but more importantly (to me anyway?), I’ve actually made some inroads on making a little editor for these things. It’s not entirely functional yet — did you know that drag-and-drop is a huge pain in the ass — but it resembles something and I’m making swift progress. Hallelujah.

  • fox flux: I gathered up like a dozen pages of dense notes and kinda consolidated them into one place, which is nice.

    I also, accidentally, uh, okay funny story, I was taking notes on paper and I doodled Lexy pulling a lever, and later I tried to sprite it based on her current sprite, and I didn’t like it a lot, so I pixel-traced over the drawing instead, and it was way better, and this led me on a journey that ended up with a completely different sprite design. It’s a thousand times better in every possible way, but I’ve also invented a massive pile of work for myself, because now I have to redesign a dozen variants of her and redraw like 200 sprite frames. It kind of feels like I’m back to square one and have accomplished nothing at all on this game, in fact! But fuck me it’s so much better

Next week marks a fun milestone. I’m now on the very last page of the book I’ve been using to jot this stuff down, one week per page. It spans almost four years. I should probably find another one real quick.

[dev] Weekly roundup: Vacay

I’m burnt out. I just can’t get into anything. And I’ve been dealing with a huge stack of accumulated errands from last month. And it’s fucking hot in here and that just pisses me off all the time???

So I’m trying to step back and chill and draw and hang out with folks and whatever. Sorry. I don’t know why I’m apologizing.

  • fox flux: Added some sparkles to a key.

  • mario maker: Made Star Anise’s Dream Land (5TQ-JG0-MNG), a happy-go-lucky level inspired by my cat, and Koopa Valley (463-9CJ-PVG), an attempt at some standard friendly SMW-like fare. Also made half of like six other levels, but I’m having trouble even finishing those.

  • art: I’ve been drawing, just, a bunch of porn. It’s nice to be getting back into that. Drawing, I mean, not porn. But porn too.

See you next week.