fuzzy notepad

Atom feed everything

[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] Inktober

Inktober is an ancient and hallowed art tradition, dating all the way back to sometime, when it was started by someone. The idea is simple: draw something in ink every day. Real ink. You know. On paper.

I tried this last year. I quit after four days. Probably because I tried to do it without pencil sketches, and I’m really not very good at drawing things correctly the first time. I’d hoped that forcing myself to do it would spark some improvement, but all it really produced was half a week of frustration and bad artwork.

This year, I was convinced to try again without unnecessarily handicapping myself, so I did that. Three weeks and more than forty ink drawings later, here are some thoughts.

[dev] Weekly roundup: Inktober 3: Tokyo Drift

I see a light at the end of the tunnel… it’s… it’s the end of Inktober! I’m so close…

  • art: More ink drawings of PokĂ©mon. I got a fountain pen and am still getting used to it. I did a little doodling in the lost sketchbooks I found last week.

  • devops: I upgraded koiru (machine that runs my IRC and some other small things) by, uh, two entire Ubuntu LTS releases, then spent hours fixing all the obscure stuff that broke. Later I also fixed Munin, despite not really ever looking at the graphs, because I like graphs.

  • blog: More note-taking and… pivoting? for a special post. Wrote and published a post about word-wrapping dialogue boxes in games. Wrote about half of a post about Inktober, which I should be publishing tonight, I hope?

  • doom: I spent a couple hours dinking around with a secret MAP31 idea I had.

I am so behind on writing that I might die.

[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.

[dev] Weekly roundup: Inktober 2: Electric Boogaloo

The death march of Inktober continued.

  • art: Another batch of ink drawings of PokĂ©mon. I earned myself a third grey Copic. I also ran the light grey one dry, somehow, so I ordered a refill… and while I was at it, ordered a fountain pen at Mel’s behest.

    I painted a couple things, which came out surprisingly less bad than I thought; one to cheer up some pals and one emulating some old art of Mel’s.

    I also drew some ridiculous nonsense.

    I went through my collection of sketchbooks, many of which were impulse purchases from before I was even trying to draw (just because I like fresh paper) and are completely blank. I found a couple with very old art in them, which was interesting and embarrassing. I found out I can doodle on paper much better than I thought, so I’ll probably be doing that more.

  • blog: I finished and published a post about Doom’s weird sense of scale. Halfway through the month and I’m caught up, so now I only have to do the normal amount of work in half the time, while also drawing a lot. Er, whoops.

  • veekun: I got about halfway through matching up ORAS’s encounters, which is an incredibly tedious manual process. I nudged magical into updating Global Link art and I finally fixed up the new code for grabbing box icons, so veekun finally has icons for every single PokĂ©mon and not a bunch of embarrassing 404s everywhere.

    I also made veekun entirely HTTPS. The upside of Let’s Encrypt’s short expiration time (and my laziness in writing a cronjob to renew all my certs) is that every three months I’m suddenly inclined to go comb through a bunch of nginx configuration and spruce it up a bit.

  • isaac hd: I’d already hacked in some temporary dialogue code, but I spent half a day cleaning it up and turning it into something resembling a real feature. I fixed a lot of limitations that weren’t obvious just from looking at my previous example, such as “it can’t show more than one line of dialogue”. The results are encouraging!

  • irl: Some personal stuff consumed a bit of time.

I’ve apparently gotten faster at the ink drawings! I’m still a bit behind on writing, but I have some ideas for shorter posts relevant to stuff I’ve been doing lately. I have so much to do, but actively trying to do it all is gradually making me faster at doing it, which is nice.

Since November is NaNoWriMo, I’m thinking I might use it as a real writing catch-up month, like this has been an art practice month. I’m not working on a novel, of course, but I do have several prosaic things in progress: a book, Runed Awakening, some other fiction ideas, and of course this blog. The usual goal is 50,000 words in 30 days, so maybe I’ll try to write 2000 words every day? “Do a bunch of things simultaneously” is certainly more my style than “do a single thing for an entire month”.

[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.

[dev] Weekly roundup: Inktober

October is… well, so far it’s mostly about inktober.

  • art: I did a lot of art. I did so much art. Fourteen ink drawings of PokĂ©mon. I also got my hands on two grey copics and have been trying those out as well. I’ve also been doodling nonstop.

    The drawback to all these inks is that they take a nontrivial amount of time, so virtually all I’ve done all week is draw them. Whoops! I’ve gotten a bit faster (I think), so I’m not spending half of every day on them, but they’re still a huge timesink. I think they’re worth it, though — ink is fun, the practice is excellent, and I spent a good month and a half barely drawing anything while I was fussing with game development.

  • blog: I published a thing about MegaZeux and wrote half of another post. One week into the month and I’m still behind by half a post. Whoops! Progress should resume now that the inks are going faster, as mentioned.

Aaaaaaand that’s all! I really did just draw for most of the week.

I don’t know what my plans are from here. I still need to get further on the same things, but ink and writing take priority. We’ll see what happens.

[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: Addled

September was continuing the three big things in particular, but, ah.

  • art: I finished a secret loophole commission that I can’t show yet; drew a birthday thing for someone; edited my avatar to be more seasonal; resolved to cross Inktober with daily PokĂ©mon; and then was convinced to maybe try real ink instead. That’s a lot! Making up for not drawing anything for a couple weeks while I was obsessed with Isaac’s Descent, I guess.

  • doom: I spent a little more time fiddling with Sandy-styled maps while watching Liz Ryerson stream Doom stuff, but I still have my classic frustrating problems of drawing everything too small and not having a good idea for the overall shape/flow of the world. I also streamed a couple hours of exploring the new Oblige, which was interesting, at least to me.

  • blog: Some more progress towards upstreaming my fix for <summary> in Pelican Atom feeds. Started taking notes for a paid post. Worked on a MegaZeux post and wrote most of a Doom metrics one, but couldn’t finish either.

  • twitter: I wrote @calloutbot, which will either make perfect sense to you, or not.

I think I may have the flu, but without any respiratory symptoms. Just enough that I’m vaguely tired and sore and not quite able to plan larger stuff like, say, blog posts. Or Doom maps, perhaps. I spent several frustrating days wrangling with two different posts and not getting anywhere with either of them before I remembered a roommate had had the flu about one incubation period ago.

I am thus slightly behind on writing, and haven’t done much else mentally-intense either. It sucks and I’m annoyed, but I’m taking a few days off to draw and do other low-intensity stuff before I make a mad scramble to catch up.


Meanwhile, about those, um, three things. I slipped a bit. A lot.

  • Draft three chapters of this book, September: a second chapter

    No, that didn’t happen.

    But! I decided that Isaac’s Descent HD would make a really good final chapter, since it’s an entire real game written completely from scratch. That means it’s also going to be a whopper. I spent like a third of the month distracted by building Isaac’s Descent HD, which is a prerequisite for writing about how I built it, so that’s some really good progress nonetheless.

    The game isn’t too far along from a player perspective, but I did a lot of engine work and took a lot of notes about it. And of course I took all those notes during Ludum Dare, which I can reverse-engineer into a PICO-8 chapter. So while there’s less visible progress than I wanted, I have a ton more stuff to work with now.

  • Get veekun beta-worthy, September: most games dumped; lookup; core pages working; new site in publicly-available beta

    Ha ha none of this happened. I totally dropped the ball.

    I did work on veekun, but I got caught up in dealing with encounters, and then my brain stopped working so good, so overall it didn’t make a whole lot of progress.

  • Runed Awakening, September: blah blah it doesn’t even matter

    I didn’t touch Runed Awakening all month. Sob.

I should probably be learning a lesson here about biting off more than I can chew, but I adamantly refuse to learn anything.

It’s okay if new veekun isn’t done in time for Sun/Moon, which is looking like it’ll be the case — the old site layout and schema should still hobble along just fine as they are. It would’ve been a great time to breathe some life back into the site, is all. I’ll still try to get as much done as I can, so maybe there can still be a usable beta, but I don’t know what I can magic up in six weeks when I’m also doing several other things.

I don’t know what I’m going to do for October. I’ve got a lot of blogging to do now, I still want to find time to experiment with music, and I also want to do two ink drawings a day for Inktober.

Other than all that, I suppose I’ll still “focus” on these three big things and just see what happens.

[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?

[blog] Music theory for nerds

Not music nerds, obviously.

I don’t know anything about music. I know there are letters but sometimes the letters have squiggles; I know an octave doubles in pitch; I know you can write a pop song with only four chords. That’s about it.

The rest has always seemed completely, utterly arbitrary. Why do we have twelve notes, but represent them with only seven letters? Where did the key signatures come from? Why is every Wikipedia article on this impossible to read without first having read all the others?

A few days ago, some of it finally clicked. I feel like an idiot for not getting it earlier, but I suppose it doesn’t help that everyone explains music using, well, musical notation, which doesn’t make any sense if you don’t know why it’s like that in the first place.

Here is what I gathered, from the perspective of someone whose only music class was learning to play four notes on a recorder in second grade. I stress that I don’t know anything about music and this post is terrible. If you you so much as know how to whistle, please don’t read this you will laugh at me.

[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.