fuzzy notepad

Tagged: gamedev

[blog] Why LÖVE?

This month, IndustrialRobot asked my opinion of FOSS game engines — or, more specifically, why I chose LĂ–VE.

The short version is that it sort of landed in my lap, I tried it, I liked it, and I don’t know of anything I might like better. The long version is…

[dev] Weekly roundup: Strawberry jam END

Hi! It’s been a while. Per tradition, I didn’t write roundups while in the middle of frantically working on a video game.

  • fox flux: Mostly, I made a video game for a month-long game jam. It’s an hourish-long puzzle platformer and is somewhat NSFW but you can snag it from itch.io if you like. (If you install it via the itch app, it’ll patch automatically and more quickly in the future. Though I’m not sure how itch will handle the Linux “build”, which is just a LĂ–VE file.)

    My ever-evolving physics code got some improvements again, but the biggest time constraint by far was the art — I am not very fast, and I had to learn a lot of things as I went. I’ll be writing about some of that in the near future. Still, it’s pretty cool that (with Mel’s indispensable advice) I managed to produce enough art for a competent-looking game.

    I did all the sounds as well, though Mel composed the music, which made the whole thing much better.

    Post-release, I fixed a few critical bugs, and I’ve been working on some little vignettes to make the ending a bit less, er, anticlimactic.

  • bolthaven: I also worked on Mel’s game for the same jam, but the script turned out to be much longer than expected, so it wasn’t finished in time.

  • blog: I’ve started writing both a Patreon post for February and a spontaneous post on some art insights from the past month.

Lots of work, but a short summary. I’m exhausted and moving a bit pokily these last couple days, but I’m more inspired than ever. I’ve got a lot of stuff to catch up on and plenty more gamedev to do; hope you enjoy some of it!

[dev] Weekly roundup: Strawberry jam


  • flora: I wrote another twine for Flora.

  • music: I spent a day with MilkyTracker and managed to produce a remixed title theme for Isaac’s Descent HD! It’s not entirely terrible.

  • isaac: I redid all the sound effects, slapped together a title screen, fixed a ton of bugs, added a trivial ending, and finally released a demo on my $4 Patreon tier! It’s just a port of the original Isaac’s Descent levels, so nothing particularly new or exciting, but I’m happy to see it in a more polished form. And now that everything basically works, I’m free to experiment with puzzle mechanics.

  • neon: I released NEON PHASE 1.2, with a few bugfixes, most notably making the game not be glitchy as all hell when playing under fairly high framerates.

  • patreon: I wrote the monthly prologue, which is just so amazing, you can’t even imagine.

  • games: And then the latter half of the week went towards Strawberry Jam, my month-long horny game jam. I’m churning out art for a puzzle-platformer (surprise), while Mel is doing something more story-driven (surprise), and we’re both helping each other out. Rate of progress seems okay so far, but I do have to put together two games in only a month, and I’ve still got a couple other looming obligations as well. Fingers crossed.

    I’m tweeting bits of progress in a thread on my secret porn account.

Next few weeks will largely be, well, work on video games!

[dev] Weekly roundup: Chaos

I feel a little bit like life is disintegrating into chaos, but I’m plowing ahead nonetheless.

  • isaac: I finished porting NEON PHASE changes over to the Isaac’s Descent codebase, which is great! Now the only major blocker for a little tech demo is redoing the music (argh).

  • games: I finally finished playing through all the games submitted to GAMES MADE QUICK??, which took an incredibly long time, oh no. I dumped thoughts on the games in a Twitter thread, or you can browse through them yourself. There’s some pretty cool stuff in there, and I’m still amazed that much of it exists just because I said “hey let’s make some video games”.

    It was such a smashing success that I also put together Strawberry Jam, a month-long game jam for making horny games, whatever that means. (The concept is NSFW, but the landing page is not.) I have two separate ideas I want to pursue, plus Mel is doing their own game and will need my help to put it together, so I have a very busy month ahead. We’ve both already started on the art for our respective games, and we’ve been doing some planning as well.

  • neon: I fixed a bunch of bugs but didn’t cut a new release yet, oops. One or two are still lingering, and I don’t want to make a ton of releases just for bugfixes.

    I wrote down “fixed %”? What does that even mean?

  • art: I tried drawing some things and they did not come out as well as I wanted.

  • veekun: I did some actual work — I have abilities ripped to YAML and a script that successfully loads them into the database, and I’ve taken a stab at items. I have no idea when this is going to get done, though; I’ve got a mountain of work to do in February.

  • blog: I started redesigning and merging my projects page with the landing page for this domain to make a more useful index of work I’ve done. Not happy with it yet, but it’s getting somewhere, gradually.

Next month will be, well, video games. A lot of video games. Plus I have other time-critical stuff to do. Plus I have other not-time-critical-but-really-needs-doing stuff to do. Oh boy!

[dev] Weekly roundup: Out of phase

As is tradition, I skipped a week because I was busy making a video game with Mel.

The video game is NEON PHASE and I wrote about it and it’s pretty cool.

Between that and our hellcats, I’ve been sleeping terribly again, so things are currently a bit of a slog. I have so much to do. Making slow progress.

Other than that:

  • blog: I wrote the traditional birthday post and the aforementioned post about NEON PHASE.

    I’ve also been putting some effort into re-revamping my list of work, since right now it’s largely a wall of text. Now that I’ve finally registered an account on itch.io, I’ve been putting our previous little games on it, which takes a surprising amount of effort to do well.

  • isaac: I’ve been cherry-picking the NEON PHASE work back to the Isaac HD codebase. It isn’t particularly difficult, just sort of tedious.

  • other game stuff: I’ve been planning NEON PHASE 2 with Mel, and I’m thinking about doing another game jam for February, and I wrote a little linear Twine under tight time constraints.

I’ve also been running through the games made for my jam, playing a few of them each day, which is surprisingly time-consuming. But several dozen little things exist just because I invited people to make stuff, and that’s incredible, and I want to see what that stuff is.

I still need to get out a demo port of Isaac’s Descent (argh) and finish loading SUMO into veekun (ARGH) and then I can get back to the… three? four?? games I seem to be working on at the moment.


It all started after last year’s AGDQ, when I lamented having spent the entire week just watching speedruns instead of doing anything, and thus having lost my rhythm for days afterwards.

This year, several friends reminded me of this simultaneously, so I begrudgingly went looking for something to focus on during AGDQ. I’d already been working on Isaac’s Descent HD, so why not keep it up? Work on a video game while watching video games.

Working on a game for a week sounded an awful lot like a game jam, so I jokingly tweeted about a game jam whose express purpose was to not completely waste the week staring at a Twitch stream. Then someone suggested I make it an actual jam on itch.io. Then Mel asked to do a game with me.

And so, thanks to an almost comical sequence of events, we made NEON PHASE — a half-hour explorey platformer.

[blog] Embedding Lua in ZDoom

I’ve spent a little time trying to embed a Lua interpreter in ZDoom. I didn’t get too far yet; it’s just an experimental thing I poke at every once and a while. The existing pile of constraints makes it an interesting problem, though.

[blog] Accessible games

I’ve now made a few small games. One of the trickiest and most interesting parts of designing them has been making them accessible.

I mean that in a very general and literal sense. I want as many people as possible to experience as much of my games as possible. Finding and clearing out unnecessary hurdles can be hard, but every one I leave risks losing a bunch of players who can’t or won’t clear it.

I’ve noticed three major categories of hurdle, all of them full of tradeoffs. Difficulty is what makes a game challenging, but if a player can’t get past a certain point, they can never see the rest of the game. Depth is great, but not everyone has 80 hours to pour into a game, and it’s tough to spend weeks of dev time on stuff most people won’t see. Distribution is a question of who can even get your game in the first place.

Here are some thoughts.

[blog] Word-wrapping dialogue

I have a teeny tiny pet peeve with dialogue boxes. Er, not dialog boxes — dialogue boxes, the ones in video games with scrolling lines of dialogue.

A fake dialogue box, with scrolling text that jumps when it wraps

I recently wrote a dialogue box, and I saw a game that made this mistake, so here’s a post about it.

[blog] Doom scale

I’ve been dipping my toes into Doom mapping again recently. Obviously I’ve done it successfully once before, but I’m having trouble doing it a second time.

I have three major problems: drawing everything too small, drawing everything too rectangular, and completely blanking on what to do next. Those last two are a bit tricky, but struggling with scale? That sounds like a problem I can easily solve with charts and diagrams and math.

[blog] Succeeding MegaZeux

In the beginning, there was ZZT. ZZT was a set of little shareware games for DOS that used VGA text mode for all the graphics, leading to such whimsical Rogue-like choices as ä for ammo pickups, Ω for lions, and ♀ for keys. It also came with an editor, including a small programming language for creating totally custom objects, which gave it the status of “game creation system” and a legacy that survives even today.

A little later on, there was MegaZeux. MegaZeux was something of a spiritual successor to ZZT, created by (as I understand it) someone well-known for her creative abuse of ZZT’s limitations. It added quite a few bells and whistles, most significantly a built-in font editor, which let aspiring developers draw simple sprites rather than rely on whatever they could scrounge from the DOS font.

And then…

And then, nothing. MegaZeux was updated for quite a while, and (unlike ZZT) has even been ported to SDL so it can actually run on modern operating systems. But there was never a third entry in this series, another engine worthy of calling these its predecessors.

I think that’s a shame.

[dev] Weekly roundup: Back into art

September is continuing the three big things in particular…?

  • music: I tried to reconstitute some of the song I lost last week. It wasn’t as good.

  • isaac’s descent hd: I implemented death, an inventory, and the staff, cleaning up some stuff as I went. The first room is now playable!

  • blog: I wrote and published a post about the switch statement, made some fixes to a few recent posts, and worked on something about MegaZeux that I hope to finish today.

  • art: I doodled for the first time in kind of a while, including some semi-private streaming, which was nice. I did two daily PokĂ©mon for the first time in a month, and they came out a little better than the previous ones. I drew an Eevee walk cycle as practice for doing the same thing as pixel art for Isaac’s Descent, and it turned out surprisingly well! Also worked a bit on a secret thing for someone.

  • veekun: I got 90% of the way to getting ORAS encounters, after hitting quite a few bumps in the road along the way. It’s a shame this has taken so long… and still isn’t quite done.

  • doom: I started on a vanilla Sandy tribute map on a whim.

Last week of the month and I feel preposterously behind on everything, even though my working-to-goofing-off ratio has remained consistently higher than it’s been in years. Argh. So it goes, I guess.

[dev] Weekly roundup: Quietly advancing

September is continuing the three big things in particular.

I had a drowsy day, but otherwise it was still an alright week.

  • blog: I published a post about music theory, which I oughta update to factor in all the stuff people have told me in the aftermath. I also wrote half of another post and stubbed out one or two more; just gotta finish some of them.

  • runed awakening: I did, er, the tiniest bit of planning, and then got distracted by music and game things for the rest of the week.

  • isaac’s descent hd: Physics is done. For real. I mean it. It works, and it works so good. It also has some tiny hints of gameplay now! I’m close to having the first puzzle room be playable: the switch works, the bridge appears and becomes blocking, and the spikes kill you. Just need to make the staff work and finish up the death handling.

  • music: I toyed with Renoise and LMMS, ultimately deciding I like LMMS more. I managed to make a decent chunk of a song that I actually like and that would work remarkably well as background music for Isaac’s Descent.

    And then LMMS crashed.

    I also dug out and cleaned off our keyboard, which had been buried in a closet somewhere for years. I taught myself to play the PokĂ©mon Center theme!

  • veekun: I cleaned up some of the multi-version handling for this harebrained YAML concept. Also dug into ORAS encounters and got 90% of the way to actually extracting them.

I said last week that I’d dedicate a few days to writing, and I would still like to do that! Now is probably a good time to start. I’m behind on blog posts for the month, and I desperately want to get some momentum going with Runed Awakening again.

veekun is definitely not on schedule, but I’m getting excited and ambitious about working on it again, which is a really good sign. I don’t know how far along it’ll be when Sun and Moon come out, but that’s probably okay; veekun has always been a quiet technical resource, not a walkthrough. I think I’m going to try focusing on that idea in the future — for example, I’m probably at the point that I could create orthographic projections of all the maps.

I haven’t written anything for the book in a little while now, but it’s looking like Isaac’s Descent HD will be the final chapter, so working on it still counts as working on the book. Right?

[dev] Weekly roundup: Bashing my head against a wall

September is continuing the three big things in particular.

  • gamedev: I spent far too much time just trying to get collision detection working how I want in LĂ–VE. Seriously, four or five solid days. I guess I learned some things, which I will probably write about soon, but I also can’t help but feel like I wasted a good chunk of time. At least I’ll never have to do this again, right? Ha, ha.

  • music: I found a tracker I kinda like and tinkered with it and LMMS a bit. I’m terribly unconfident about this and don’t even know where to start, so it’s kinda slow going. On the other hand, I finally grasped the basics of Western music theory, so that’s nice.

  • blog: I started on, uh, four different posts. I’m good for the month on topics, at least.

  • art: I doodled a bunch while catching up on podcasts. Also I drew a new avatar, which I hadn’t done since… June? Yikes. This one was painted, too; all the previous ones had separate lineart.

  • veekun: I taught my code to dump all of Gen I at once, cleaned up a bunch of text handling, and successfully extracted flavor text.

I’m not thrilled about the time lost to platformer physics, but oh well. I’m a tad burned out on gamedev after that, so I think I’ll dedicate the next couple days to writing and maybe catching up on veekun.

[dev] Weekly roundup: HD Remix

September is continuing the three big things in particular.

I spoiled most of this last week.

  • gamedev: I did Ludum Dare 36! I made a little PICO-8 game called Isaac’s Descent in 48 hours.

    Also, I started working on Isaac’s Descent HD Remix, a fancier port in LĂ–VE. In fact that’s pretty much all I did all week, including pixeling a new walk sequence for Isaac and porting all the maps to Tiled and some other stuff. The last couple days in particular went down the collision drain, ugh. Good book fodder, though.

  • blog: I published a timeline of my progress on my Ludum Dare game.

  • book: Oh, yeah, I’m writing a book. I wrote a ton of notes for a LĂ–VE chapter, based on what I did so far for Isaac HD.

  • music: Fought with a few trackers, with limited success, in an effort to find a grown-up equivalent to the PICO-8’s music tools. Renoise looks interesting and I’ll play with it more, but I don’t know if I want to plop down any real cash for something I’m only just starting to do. I might end up just using LMMS.

No big surprises. I still need to get back to work on veekun, but I’m a bit distracted with LĂ–VE at the moment, oops. And of course I have another four posts to write this month, somehow…

[blog] I entered Ludum Dare 36

Short story: I made a video game again! This time it was for Ludum Dare, a game jam with some tight rules: solo only, 48 hours to make the game and all its (non-code) assets.

(This is called the “Compo”; there’s also a 72-hour “Jam” which is much more chill, but I did hard mode. Usually there’s a ratings round, but not this time, for reasons.)

I used the PICO-8 again, so you can play it on the web as long as you have a keyboard. It’s also on Ludum Dare, and in splore, and here’s the cartridge too.

Isaac's Descent

But wait! Read on a bit first.

[dev] Weekly roundup: Ludum Dare

August is loosely about video games, but really it’s about three big things in particular.

  • book: Wrangled LaTeX some more. Came up with a new style for admonitions (little set-out boxes) that I really like. Drew some icons for a few of them. Started on another chapter, for reasons; see below.

  • veekun: Regexing machine code for addresses was getting really clumsy, so I went one step further and wrote a disassembling pattern matcher thing. You write some assembly with some variables in it, and it finds occurrences of that code and tells you what the variables are. I can pretty much paste in entire functions, massage them slightly, and find matches. It’s pretty slick.

    The upshot of this is that loading original Japanese Red and Green now works! But Yellow doesn’t. So I fixed that, and now Japanese Blue is broken. Or maybe I fixed it and that broke Yellow again? I’m not sure. There were some tiny changes to core code between some of these games, and the pattern-matcher has no way to express alternatives. I don’t know if I’m better off inventing one or just fudging it.

    Anyway, pretty close to having all of gen 1 dumping PokĂ©mon reliably. Still need to actually dump other stuff — moves, items, encounters, and the like — but that’s much more straightforward.

  • hax: I was still in a mood to dink around with Game Boy stuff, so I added Python 3 support to some relevant tooling and wrote a proof of concept for storing PokĂ©mon maps in Tiled format.

  • blog: I wrote a thing about writing tests.

  • twitter: I taught @perlin_noise a few new tricks.

  • art: I drew a friend’s lizard pal based on a reference photo, which isn’t something I’d seriously tried before. Value-only, only one layer, only one brush. It came out surprisingly well.

  • gamedev: I participated in Ludum Dare 36, a 48-hour game jam. I’d never done LD before, and naturally I picked the only one that has no ratings round (for administrative shuffling reasons). Oh, well.

    The result was Isaac’s Descent, a short puzzle-platformer for the PICO-8. You can play it via the web (source code included), and I also wrote a post about it.

So! There are a few days left, but it’s pretty much the end of August. Let’s see how I did.

  • Draft three chapters of this book, August: one chapter

    Well, I didn’t get a chapter done. I did make huge progress on the chapter I started, though — plus I began a second chapter, and generated enough notes for the entirety of a third. I spent a decent amount of time wrangling Sphinx and LaTeX, too, which I would’ve had to do sooner or later regardless.

    So I didn’t do quite what I wanted, but I did do far more than I’ve put into any previous harebrained book idea, and it was a pretty decent chunk of work. I’m okay with that.

    Just what is this damn book, you ask? Ah, perhaps you should read that Ludum Dare post.

  • Get veekun beta-worthy, August: basics of the new schema committed; basics of gen 1 and gen 6 games dumped; skeleton cli and site

    Haha, no. I got gen 1 almost working for PokĂ©mon only. It turns out that while gen 1 has the simplest data, it probably has the most convoluted storage.

    On the other hand, the detours taught me a lot about Game Boy architecture, which was interesting and helpful for making the dumper fairly robust thusfar. I also made some breakthroughs on architecture that had been haunting me for a while. I’ll have to move my ass in the next week or two to catch up — hopefully finish gen 1 and get a few other generations dumped real soon — but I think this is still doable.

  • Finish Runed Awakening, August: working ending; at least one solution to each puzzle; private beta

    Whoops! I did basically squat on Runed Awakening. I figured out most of the ending, which had been my major roadblock, but I didn’t touch the code or run the game a single time. Dang. It’s not like I was goofing off all month, either; I just didn’t have a big block of time to devote to the weird mishmash of writing and planning and programming that IF requires.

    I really want to finish this game, but end of October is not looking too great. I don’t know why it’s proving so difficult; it’s not that complicated, and I started on it almost two years ago now. I’ve made multiple other games just so far this year! Argh.

    If it’s any consolation (to me): I picked November as a target because Mel wanted to embed Runed Awakening on Floraverse as an update around that time. But Isaac’s Descent takes place in the same universe, so it works just as well. Goal accomplished!

Onwards to September. The only thing on the list with a real solid deadline is veekun, since the new games will be coming out. It’s a bit behind, but I’m pretty sure I can catch up. Gen 2 shouldn’t be too different from gen 1, and I’ve done gen 4 and onwards before.