fuzzy notepad

Tagged: gamedev

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

[blog] I wish I enjoyed Pokémon Go

I’ve been trying really hard not to be a sourpuss about this, because everyone seems to enjoy it a lot and I don’t want to be the jerk pissing in their cornflakes.

And yet!

Despite all the potential of the game, despite all the fervor all across the world, it doesn’t tickle my fancy.

It seems like the sort of thing I ought to enjoy. Pokémon is kind of my jam, if you hadn’t noticed. When I don’t enjoy a Pokémon thing, something is wrong with at least one of us.

[dev] Weekly roundup: video games

June’s theme is clearing my plate.

  • SLADE: I fixed yet another obscure geometry editing bug. I feel a little more cleansed every time I do. Also I found out that GZDoomBuilder based its own geometry code on SLADE’s and almost immediately borrowed my SLADE fix.

  • art: Still doing daily Pokémon. The half hour time limit is surprisingly harsh, but I think I’m making some progress, gradually. Also finished an old art trade.

  • runed awakening: I built out most of a whole puzzle sequence that had languished unfinished for a while, and drew a WIP or two of some of the rooms and objects involved. It doesn’t sound like a lot, and I wish I’d done more, but I made some good progress.

  • zdoom: On a total whim, I did an extremely simple proof of concept of Lua in ZDoom. There’s no approval or planned goals or anything for this; I just felt like trying it out. May or may not continue it. Ideally it would be able to replace ACS and at least massively enhance DECORATE.

  • blog: I wrote about video games again.

I think I ran out of small things on my plate, and now I’m finding all the large things a little daunting. And here I’ve invented another one. Argh. Still, keep moving forward.

[dev] Weekly roundup: sleepover

June’s theme is clearing my plate, a concept that becomes increasingly nebulous as time goes by.

I accidentally went nocturnal over the past week, which always leaves me completely fried for a few days due to losing a day. So not the best week, but not the worst either.

  • art: I drew a very quick happy Minccino to try to cheer everyone up last weekend. Their tail fluffs are upside-down. Sorry.

    I drew and colored two old friends on a whim, trying to apply some things Mel had told me about color harmony. I think it came out as possibly one of the nicest things I’ve ever drawn, so, that’s nice, whoa.

    I started drawing daily Pokémon (in a predetermined random order), where the only rule is a time limit of 30 minutes. Here are Wobbuffet and western Shellos; I’ll be dumping them all in a Tumblr tag too.

    While I was out at lunch, I drew on paper for the first time in a while. I should probably do it more, but the results aren’t too bad.

  • Runed Awakening: Aha! I pixelled an NPC or two, possibly marking the first real character design I’ve ever done, as well as an item and an attempt at a room illustration.

    A couple friends played through the current state of the game, which led to a couple days of chasing down extremely obtuse minor bugs. It’s a little frustrating to have spent a lot of time and have so little to show for it, but one of the bugs was something that’s plauged me for over a year, so I guess it at least fits with the theme of getting rid of looming things. From here I should be able to get back to building things.

  • spline: I finally granted Mel the ability to create a new folder by themselves. So far I’ve always done it manually, which has gotten increasingly painful since the folders use the nested set model. There’s still no UI for rearranging them, but this removes a huge source of… requests for manual intervention.

  • veekun: I started reabsorbing the current state of the new YAML schema and thinking about how to get it where I want. Didn’t make any actual progress, though.

    Working on getting the remaining images veekun is missing, too.

Probably more of the same this next week. I want to make huge inroads on Runed Awakening, fix the other category of things I have to do manually for spline, and get some work done on veekun one way or another.

[dev] Weekly roundup: doodling

June’s theme is clearing my plate! I will finally stop spreading these vegetables around to make it look like I ate some of them, and just sneak them to the dog under the table.

  • art: I drew a beautiful manga, which is based on true events. I drew a new header image for here, replacing the old poor cutout of a JPEG exported from Pokémon Art Academy, and adjusted the colorscheme of the whole site to match it. And I did a lot of doodling. A loooot of doodling.

  • doom: I did a lot of work on my factory map for DUMP 3, but I don’t think I’m going to make the deadline. I’m okay with that. I did a mad scramble for DUMP 2 in April, then a longer mad scramble for Under Construction in May; I’m alright with not doing a mad scramble for a third month in a row. I can still make maps outside of a particular challenge.

  • twitter: I made @perlin_noise, a Twitter bot that tweets Perlin noise in various forms.

  • pyscss: I’d had a ton of GitHub mail marked unread for ages, so I finally spent a day fixing a lot of easy bugs and released 1.3.5. I don’t plan to spend significant time on this in the future — especially when there’s now a libsass in C and Python bindings to it — but it’s nice to see some obvious problems fixed.

  • blog: It’s been a year since I quit now!

It doesn’t sound like a lot, but honestly most of the time went into the Doom map and artwork, both of which are things I wanted to do this month. I’m not sure how I’ll schedule the mapping if I’m giving up on DUMP 3; maybe I’ll hop on Runed Awakening for a bit and look at the map again later with fresh eyes.

[dev] Weekly roundup: spring cleaning

June’s theme is, ah, clearing my plate! Yes, we’ll try that again; I have a lot of minor (and not-so-minor) todos that have been hanging over my head for a long time, and I’d like to clear some of them out. I also want to do DUMP 3 and make a significant dent in Runed Awakening, so, busy busy.

  • blog: I published a very fancy explanation of Perlin noise, using a lot of diagrams and interactive things I’d spent half the previous week making, but it came out pretty cool! I also wrote about how I extracted our game’s soundtrack from the PICO-8. And I edited and published a two-year-old post about how I switched Yelp from tabs to spaces! I am on a roll and maybe won’t have to write three posts in the same week at the end of the month this time.

    I did a bit of work on the site itself, too. I linked my Mario Maker levels on the projects page. I fixed a PARTYMODE incompatibility with Edge, because I want my DHTML confetti to annoy as many people as possible. I fixed a silly slowdown with my build process. And at long last, I fixed the   cruft in the titles of all my Disqus threads.

  • gamedev: I wrote a hecka bunch of notes for Mel for a… thing… that… we may or may not end up doing… but that would be pretty cool if we did.

  • patreon: I finally got my Pokémon Showdown adapter working well enough to write a very bad proof of concept battle bot for Sketch, which you can peruse if you really want to. I had some fun asking people to fight the bot, which just chooses moves at complete random and doesn’t understand anything about the actual game. It hasn’t won a single time. Except against me, when I was first writing it, and also choosing moves at complete random.

    I rewrote my Patreon bio, too; now it’s a bit more concrete and (ahem) better typeset.

  • doom: I started on three separate ideas for DUMP 3 maps, though I’m now leaning heavily in favor of just one of them. (I’d like to continue the other two some other time, though.) I did a few hours of work each day on it, and while I’m still in the creative quagmire of “what the heck do I do with all this space”, it’s coming along. I streamed some of the mapping, which I’ve never done before, and which the three people still awake at 3am seemed to enjoy.

  • SLADE: I can’t do any Doom mapping without itching to add things to SLADE. I laid some groundwork for supporting multiple tags per sector, but that got kinda boring, so I rebased my old 3D floors branch and spruced that up a lot. Fixed a heckton of bugs in it and added support for some more features. Still a ways off, but it’s definitely getting there.

  • art: I drew a June avatar! “Drew” might be a strong word, since I clearly modified it from my April/May avatar, but this time I put a lot of effort (and a lot of bugging Mel for advice) into redoing the colors from scratch, and I think it looks considerably better.

  • spring cleaning: Sorted through some photos (i.e. tagged which cats were in them), closed a few hundred browser tabs, and the like.

Wow, that’s a lot of things! I’m pretty happy about that; here’s to more things!

[blog] Extracting music from the PICO-8

Update 2016-07-27: PICO-8 0.1.8 supports music export — export "foo%d.wav" while the music tab is selected in the editor!

Our PICO-8 game, Under Construction, contains some music that Mel composed.

The PICO-8 can only play music that you compose with the PICO-8, and it doesn’t have a music export. This posed a slight problem.

I solved that problem, and learned some things about audio along the way. None of this will be news to anyone who’s worked with sound before, but if you know as little about it as I do, you might find it as interesting as I did.

[dev] Weekly roundup: Triple Monday

Howdy, stranger.

May’s theme is clearing my pl— sorry, scratch that, May’s theme is completely out the window. I spent two and a half weeks working on virtually nothing but a PICO-8 game with Mel. Oops.

The upshot is that… we made a game, Under Construction! I’ve never released a serious, complete, independent game before. Neat. Here’s hoping I do more of that.

A couple of other things happened.

  • art: I drew a, uh, Leafeon/Braixen hybrid. I also drew an Eevee sprite for the credits in Under Construction.

  • doom: I tinkered a bit when very exhausted with working on UC. I think I only really made a little progress on the pain elemental variant, and rigged ammo to drop smaller ammo if you didn’t need all of it.

  • blog: I wrote about making Under Construction and what it was like to work with the PICO-8. I also wrote most of an extremely ambitious Perlin noise post (with interactive gizmos!), which I just finished earlier today.

I still have some obligations left for this month, like one more post (up to four now! augh!), and then next month I can finally spend clearing my plate.

Except.

Something looms on the horizon.

Is that…

Could it be…

Oh no.

DUMP 3 was announced

[release] Under Construction, our PICO-8 game

Mel and I made a game!

We’d wanted to a small game together for a while. Last month’s post about embedding Lua reminded me of the existence of the PICO-8, a “fantasy console” with 8-bit-ish limitations and built-in editing tools. Both of us have a bad habit of letting ambitions spiral way out of control, so “built-in limitations” sounded pretty good to me. I bought the console ($15, or free with the $20 Voxatron alpha) on a whim and started tinkering with it.

The result: Under Construction!

pico-8 cartridge

You can play in your very own web browser, assuming you have a keyboard. Also, that image is the actual cartridge, which you can save and play directly if you happen to have PICO-8. It’s also in the PICO-8 BBS.

(A couple people using Chrome on OS X have reported a very early crash, which seems to be a bug outside of my control. Safari works, and merely restarting Chrome has fixed it for at least one person.)

I don’t have too much to say about the game itself; hopefully, it speaks for itself. If not, there’s a little more on its Floraverse post.

I do have some things to say about making it. Also I am really, really tired, so apologies if this is even more meandering than usual.

[dev] Weekly roundup: clearing my plate

May’s theme is clearing my plate. I have a lot of small-to-medium-sized stuff I’ve been intending to do for a while, and the sheer number of things is getting a little overwhelming. A lengthy todo list starts to get stressful; it feels like constant looming noise in my head. I want to spend this month getting as much of it as possible out of the way.

  • gamedev: I have vastly improved EeveeQuest™, my dink-around non-game for the PICO-8. From where it started last Saturday, it’s grown momentum, friction, gravity, collision, sound effects, background music (basically my first try at music!), scrolling, a HUD, and some evolution stones. The PICO-8 is super adorable, by the way.

    Also, Mel decided we’re making a game, so I’ve been adapting it to fit a map they’ve been designing.

  • blog: I rewrote the list of work I’ve done to be less, uh, unreadable garbage. I also set up subdomains c.ee.vee for hosting hostable work, and t.ee.vee for maybe eventually hosting cat photos and the like. I think these are pretty clever.

    I also wrote about what it’s been like trying to learn to draw.

  • pokémon: I’m still working on a Pokémon Showdown client for Patreon reasons; I got a bit sidetracked trying to make urwid and asyncio play well together, but I’m well on my way to having a usable API.

  • art: Lotta doodling. Appropriately, I think I’ve gotten a lot better in the last month or so.

  • doom: I made most of a horrible, horrible pain elemental variant that everyone will hate.

  • irl: I got Anise microchipped, so finally my cat is a cyborg. He is better, faster, stronger, and far more mischievous than any pure cat. His cybernetic enhancements have already enabled him to drive me up the fucking wall far more efficiently today than ever before.

  • Runed Awakening: In a stroke of inspiration, I figured out a way to connect a puzzle with no reward to a puzzle with no solution. I’m really happy with the shape the game is taking, even if there’s still infinity work left to do.

This week, I would like to finish the PICO-8 game with Mel, write another two posts, finish some of the art I’ve left hanging, finish this Showdown work, and make at least three significant improvements to Runed Awakening. Christ, I’d better get started.

[dev] Weekly roundup: mad dash

April’s theme was finish Runed Awakening, which I definitely did not do, but I am way further along than I was a month ago. Maybe by the end of May? I don’t want to set a hard deadline when I have no real way to estimate how much work is left, but I don’t want to lose this momentum, either. I’ll keep y’all posted. Hopefully by the end of this week I’ll have made a significant dent in some combination of Runed Awakening and May blogging.

  • Runed Awakening: Implemented padlocks, woohoo. Did some more high-level planning; getting pretty close to a cohesive whole here, at least in theory. Drew a couple more pixel items. Then, uh, kinda didn’t touch it again for most of the week because I had Patreon obligations to take care of, oops.

  • blog: I wrote about dozenal and using Lua for game development, which somehow turned into a dissection of how to embed Lua and Python.

  • art: I spent a couple days drawing after not really doing so much of it for the last few weeks, resulting in some cat complaints, some cat revenge, and my finishing this ancient art trade. At which point two more people asked to trade, sob.

    Also touched up my avatar for May.

  • doom: So there’s a texture pack (Community Chest 4) that was really popular among DUMP 2 mappers, but it’s some 13MB. A good chunk of it is just translations or color substitutions of vanilla textures, which is something ZDoom can already express with a human-readable text format, so I started writing a script to detect and convert as many of these as possible. It turned out to be harder than I was expecting and I kinda bailed halfway through. This is very fascinating, I’m sure.

    I did also poke at anachrony a bit; still trying to settle on a set of weapons/items/monsters so I can actually go build some maps when I have the urge.

  • tech: A friend lost some data from a web-based shop thing and I magicked it back into existence because I’m actually a witch IRL.

  • gamedev: Having admitted I’d never tried PICO-8 in the Lua post, I bought it on a whim and tinkered with it a bit last night, producing this fine non-game. (I worked on it some more today, so it’s better now, but it’s not last week any more so this doesn’t count.)

[blog] Embedding Lua vs Python

Nova Dasterin asks, with money:

How about usage of Lua for game development? Love2d etc. Also http://lexaloffle.com/pico-8.php which I recently heard about.

clarification: thoughts on Lua as a ‘good choice’, also Lua vs Python for that subject (gamedev)

There are a couple ways I can interpret this, so I’ll go with: all of them.

(edit: you may be interested in a subsequent post about the game I actually made for the PICO-8!)

[dev] Weekly roundup: pixel perfect

April’s theme is finish Runed Awakening.

Mel is out of town, so I’m being constantly harassed by cats.

  • irl: I cleaned the hell out of my room.

  • Runed Awakening: I finally figured out the concept for a decent chunk of the world, and built about half of it. I finally, finally, feel like the world and plot are starting to come together. I doubt I’ll have it feature-complete in only another week, but I’m miles ahead of where I was at the beginning of the month. The game is maybe 40% built, but closer to 80% planned, and that’s been the really hard part.

    I’d previously done two illustrations of items as sort of a proof of concept for embedding images in interactive fiction. A major blocker was coming up with a palette that could work for any item and keep the overall style cohesive. I couldn’t find an appropriate palette and I’m not confident enough with color to design one myself, so the whole idea was put on hold there.

    Last week, a ludum dare game led me to the DB32 palette, one of the few palettes I’ve ever seen that has as many (!) as 32 colors and is intended for general use. I grabbed Aseprite at Twitter’s suggestion (which turns out to default to DB32), and I did some pixel art, kind of on a whim! Twitter pretty well destroyed them, so I posted them in a couple batches on Tumblr: batch 1, batch 2, and a little talking eevee portrait.

    I don’t know if the game will end up with an illustration for every object and room — that would be a lot of pixels and these take me a while — but it would be pretty neat to illustrate the major landmarks and most interesting items.

  • spline/flora: I wrote a quick and dirty chronological archive for Flora. I then did a bunch of witchcraft to replace 250-odd old comic pages with the touched-up versions that appear in the printed book.

  • blog: I wrote about elegance. I also started on another post, which is not yet finished. It’s also terrible, sorry.

[dev] Weekly roundup: zoning out

April’s theme is finish Runed Awakening.

It took a few days to clear my plate and get up to speed, and I’m a little worried at how much time blog obligations seem to be eating this month, but I made some good progress.

  • twitter: I installed Windows 95 in a VM and documented the experience. I also wrote a good Twitter bot that tweets every word, distorted by some Unicode shenanigans.

  • blog: I wrote about emoji, at considerable length.

  • Runed Awakening: Ehh. I ran dry on major ideas and spent several days mostly struggling to drum up some more (or avoiding the question altogether, which is how the Twitter bot came to be). I did end up making a little progress, but not what I would call a week’s worth.

I’m halfway through the month and don’t have a whole lot to show for it, unfortunately. Learning how to have ideas is… difficult. With Doom architecture, I at least found a trick for getting my foot in the door: find an empty space and just draw something in it. I don’t know how to translate that to a text-based puzzle game where everything has to make a bit more narrative sense, which is a little frustrating.

I’ve had some more inspiration today, so that’s good, but I’m going to run dry again pretty quickly if I can’t find a reproducible way to generate new ideas. I have a hard time just sitting and thinking in the first place, which is a huge handicap. I’ve had the best luck when doing something tedious and purely physical, so my mind can wander, but I’ve never been able to duplicate the effect deliberately.

[dev] Weekly roundup: an awakening

April’s theme is finish Runed Awakening.

It took a few days to clear my plate and get up to speed, and I’m a little worried at how much time blog obligations seem to be eating this month, but I made some good progress.

  • blog: I scrapped a bunch of manual thumbnails from git and finally switched to Pelican’s thumbnailer plugin. I also wrote about my first computer(s).

  • art: I painted an Eevee, and it came out okay. I also did a quick painting inspired by Runed Awakening work.

  • Runed Awakening: Aha! Much like making a Doom level, the hardest part is just having ideas, and then having more ideas to fill in the details of the bigger ideas. I’ve got enough big ideas; it’s the little ones that are proving tricky. I did manage to fix a ton of bugs, finally add several alternative solutions for getting past the ███████, implement the ████████ ██ ████, add a new ████████ and an item that can ████████, and jot down some notes on future direction. It’s not quite a week’s worth of work, but it’s a solid few days’ worth, and I feel like it’s a big step forward. I hope I can keep it going!

[release] I made a Doom level

Yes, dear readers, I have a confession to make. Despite spending 29,000 words explaining why and how you should make a Doom level, I’ve yet to actually publish one myself.

I’ve been… orbiting? the ZDoom community for over a decade, but only really contributed in the form of minor wiki edits and occasional advice. I started a good few maps when I was a teenager, but I tended to get bogged down in making some complicated contraption work, and then get bored with the whole idea and lose interest.

More recently I’ve actually made a few maps that got as far as having an exit (!), but I never really finished them, and I haven’t published them anywhere.

So when the Doom Upstart Mapping Project 2 was announced, with the goal of just getting something done with the short time limit of a week, I figured I should give it a shot. And I did. I spent six straight days doing virtually nothing but working on this Doom map.

Results: pretty good! I’m pretty happy with it, and a few people have played it and enjoyed it. I put a lot of thought into it — or tried, anyway — and have a lot to say about it, so this is my developer commentary.

I’ve described the course through the map as I go, and I’ve tried to include some context for people whose knowledge of Doom is only “you shoot monsters”, so I hope it’s at least a little accessible. It’s really long, though. Again. Sorry. Not actually sorry.