fuzzy notepad

Tagged: veekun

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

[dev] Weekly roundup: Asymptotically close to finishing

My sleep has been pretty weird, and I’ve had a few drowsy days lately, but I’m mostly keeping the momentum going.

  • art: I made an effort to draw something every day. I drew a January avatar, doodled with some friends, made a weird pixel animation, and whipped up a quick illustration for a game jam I’m accidentally running.

  • music: Sketched out a few phrases and studied Cave Story a little more. I made a pretty decent start on a new remix of the Isaac background music, after some feedback from Mel. I hacked it into the game, too, and hearing it while testing other stuff turns out to be a good way to find what needs improvement.

  • isaac: Mostly implemented the stone doors, drew a credits Eevee, found a way to draw sprites inside text (sorta). I think this just leaves the title/credits, music, and bugfixing. So, so close.

  • veekun: Cleaned up and committed some recent extraction work, but didn’t make much new progress.

This week is AGDQ, which means I’m going to spend an awful lot of time watching people play video games instead of doing anything useful. I was pretty unhappy about that last year, so this time I’m “running” a non-serious game jam all about trying to make a game during that otherwise-lost time.

[dev] Weekly roundup: Welcome to the future

Finally, 2016 is dead. Good riddance. I’m sure this year will be different, as though time were composed of discrete chunks with different moods.

  • isaac: I set about moving a bit more hardcoded stuff into Tiled, which is better than nothing. Fixed a few oddball physics bugs, like being able to walljump, which I’d somehow never noticed. Made the inventory actually work correctly, and gave it a HUD. Made the book mostly work. Finished up the laser. Spent far too much time drawing rock and brick tiles.

    It’s not quite at the point of playing the original game as I’d hoped, but it’s reeeally close.

  • music: Worked a little bit on a remix of the Isaac background music.

  • book: Dicked around with Sphinx and LaTeX for hours instead of actually writing anything. Did a teeny tiny bit of writing.

  • veekun: I figured out how texture animations work, which is incredible and makes my model viewer actually almost correct. It still has some bugs and weirdness, and I haven’t actually tried it on every single dang Pokémon yet, but this is looking extremely viable.

    I went a-hunting for more artwork, ended up writing a thing that just dumped every single image it could find in the entire game, and managed to dig up the bigger sprites used in the Pokédex. Alas, naturally, only the Pokémon actually catchable in Sun and Moon have a big Pokédex sprite.

  • art: I did some doodling in a vain attempt to remember how to draw. Not sure if successful. I got a couple scraps of concept art for Isaac HD out of it, though.

Despite how it sounds, I’ve actually had a lazy last few days, which has been a nice change after several solid weeks of plowing ahead at maximum speed. Priorities remain the same as they have been.

[dev] Weekly roundup: Happy Boxing Eve

  • veekun: I worked on extracting and viewing Pokémon models.

    That’s it. That’s all I did all week. I got rather into it. (I guess I also worked on some Sun/Moon dumping, but that wasn’t very exciting.)

    I’ve put it on hold for now, but after a solid 8 or 9 days of work, the results so far are pretty dang cool. I absorbed a whole lot of stuff about 3D, too.

See you next year!

[dev] Weekly roundup: A model week

A couple solid days each went towards different things, with pretty good progress for all of them.

  • isaac: Did a little bit of cleanup. Added some raycasting to the “physics engine”, so the laser eye now actually works correctly — it fires a ray along the laser’s path and looks for the first solid obstacle. (In the PICO-8 version, it just checked map tiles straight down until it found something other than empty space.)

  • art: Spent a few days on some inked reward drawings for Mel’s Kickstarter.

  • music: Studied how Cave Story’s music is put together in exquisite detail. It helps that the music was all written in tracker style, and the whole soundtrack is available in XM format, which trackers are happy to open. The result of this effort was a song that’s not entirely terrible, which isn’t bad considering I’ve only spent a week or two combined on learning anything about music.

  • veekun: I, uh, spent a couple days on actually beating the game, so now I don’t have to worry about spoilers.

    I also resurrected my ancient WebGL model viewer, taught it to play back animations, improved the outlining, and added a bunch of controls. Work continues on this, but I’d really like to have interactive models available on veekun.

I’m mostly charging ahead on veekun stuff right now, and probably for the next few days.

Isaac plods ever closer to matching the feature set of the PICO-8 game.

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

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

[dev] Weekly roundup: slow but steady

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

  • book: Lots of progress! I’m definitely getting a feel for the writing style I want to use, I’ve wrangled Sphinx into a basically usable state, I’ve written a lot of tentative preface stuff and much of the intro part of the chapter, and I’ve written a ton of scratchy prose (like notes, but full sentences that just need some editing and cleanup later). Also worked around some frequent crashes with, ah, a thing I’m writing about.

  • veekun: I did a serious cleanup of the gen 1 extraction code; added some zany heuristics for detecting data that should work even in fan hacks (if there even are any for gen 1); and hacked multi-language extraction into working well enough for starters.

    Finally, and I do mean finally, I built some groundwork for versioning support in the Python API. This has been hanging over my head for probably a year and was one of the biggest reasons I kept putting off working on this whole concept. I just didn’t quite know how I wanted to do it, and I was terrified of doing it “wrong”. At long last, yesterday I pushed through, and now I can see the light at the end of the tunnel.

    I also committed what I had so far, which is a complete mess but also a working mess, and that makes me feel better about the state of things. You can have a look if you want.

  • runed awakening: I didn’t get any tangible work done, but after some months of agonizing, I finally figured out how to make the ending sensible. Mostly. Like 80%. I’m much closer than I used to be. Once I nail down a couple minor details, I should be able to go actually build it.


  • blog: I finally fixed veekun’s front page — the entire contents of blog posts will no longer appear there. (The actual problem was that Pelican, the blog generator I use, puts the entirety of blog posts in Atom’s <summary> field and wow is that wrong. I’ve submitted a PR and patched my local install.)

    I wrote about half a post on testing, which I’d really like to finish today.

  • zdoom: My Lua branch can now list out an actor’s entire inventory — the first capability that’s actually impossible using the existing modding tools. (You can check how many of a particular item an actor is carrying, but there’s no way to iterate over a list of strings from a mod.)

  • doom: Almost finished my anachrony demo map, but stopped because I wasn’t sure how to show off the last couple things. Fixed a couple items that had apparently been broken the entire time, whoops.

  • slade: I added the most half-assed stub of a list of all the things in the current map and how many there are on each difficulty. I vaguely intend to make a whole map info panel, and I still need to finish 3D floors; I just haven’t felt too inclined to pour much time into SLADE lately. Both C++ and GUI apps are a bit of a slog to work with.

  • art: I scribbled Latias with a backpack and some other things.

    I did two daily Pokémon, which is, at least, better than one. I think they’re getting better, but I also think I’m just trying to draw more than I know how to do in an hour.

    I hit a skill wall this week, where my own expectations greatly outpaced my ability. It happens every so often and it’s always maddening. I spent a lot of time sketching and looking up refs (for once) and eventually managed to pierce through it — somehow I came out with a markedly improved understanding of general anatomy, hands, color, perspective, and lighting? I don’t know how this works. The best thing I drew is not something I’ll link here, but you can enjoy this which is pretty good too. Oh, I guess I did a semi-public art stream for the first time this week, too.

    Now my arm is tired and the callus where I grip the pen too hard is a bit sore.

  • irl: Oh boy I got my oil changed? Also I closed a whole bunch of tabs and went through some old email again, in a vain attempt to make my thinkin’ space a bit less chaotic.

Wow! A lot of things again. That’s awesome. I really don’t know where I even found the time to do quite so much drawing, but I’m not complaining.

I’m a little panicked, since we’re halfway through the month and I don’t think any of the things I’m working on are half done yet. I did try to give myself a lot of wiggle room in the October scheduling, and it’s still early, so we’ll see how it goes. I can’t remember the last time I was quite this productive for this long continuously, so I’m happy to call this a success so far either way.

[dev] Weekly roundup: three big things

August is about video games. Actually, the next three months are about video games. Primary goals and their rough stages:

  1. Draft three chapters of this book
    • August: one chapter (at which point I might start talking about what the book is)
    • September: another chapter
    • October: yet another chapter
  2. Get veekun beta-worthy
    • August: basics of the new schema committed; basics of gen 1 and gen 6 games dumped; skeleton cli and site
    • September: most games dumped; lookup; core pages working; new site in publicly-available beta
    • October: all games dumped; new site design work; extras like search and calculators
  3. Finish Runed Awakening
    • August: working ending; at least one solution to each puzzle; private beta
    • September: alternate solutions; huge wave of prose editing; patreon beta
    • October: fix the mountains of issues people find; finish any remaining illustrations

Yeah, we’ll see how all that goes. I also have some vague secondary goals like “do art” and “release tiny games” and “do Doom stuff” but those are extremely subject to change. Hopefully I can stick to the above three big things for three months.

Anyway, this week:

  • blog: Finished and published posts on why to use Python 3 and how to port to it, plus made numerous suggested edits. Wrote a brief thing about my frustrations with Pokémon Go. And wrote about veekun’s schema woes, which helped me reason through a few lingering thorny problems.

    That might be a record for most things I’ve published within a calendar week.

  • art: I tried an hour of timed (real-life) figure drawings, which was kinda weird. I’ve really lapsed on the daily Pokémon, possibly because I changed up the rules to be an hour for a single painting, and that feels like a huge amount of time (…for something I don’t think will come out very well). I’ll either make a better effort to do them every day, or change the rules again so I stop putting them off.

    I drew Griffin’s Nuzlocke team kind of on a whim? A day-long whim?

  • book: I wrote some preface, which you’re probably supposed to do last, but it helped me figure out the tone of the writing. I’ve mentioned this before regarding previous failed attempts, but writing a book is surprisingly harder than writing a blog post — I can’t quite put my finger on why, but the medium feels completely different and alien, and I’m much more self-conscious about how I write.

    I did get a bit of a chapter written, though. I probably spent much more time wrangling authoring tools into producing something acceptable.

  • doom: I somehow drifted into doing stuff to anachrony again. Apparently I left it in near-shambles, with at least a dozen half-finished things all over the place and few comments about what on Earth I was thinking. I’ve cleaned a lot of them up, figured out how to fix some long-standing irritations, and excised some bad ideas. It’s almost presentable now, and I started building a little contrived demo map that tries to show how some of the things work. Someday I might even use all this for a real map, wow.

  • zdoom: Oops, I also picked up my Lua-in-ZDoom experiment again. After doing some things to C++ that made me feel like a witch, someone recommended Sol, a single-file (10k line…) C++ library for interacting with Lua. It is fucking incredible and makes everything so much easier and the author is on Twitter and fixes things faster than I can bring them up.

    I don’t know how much time I want to devote to this — it is just an experiment — but Sol will make it go preposterously faster. It’s single-handedly made a proof of concept look feasible.

  • ops: I spent half a day fixing microscopic IPv6 problems that have been getting on my nerves for ages.

  • veekun: After publishing the schema post, I went to have a look at where I’d left the new dumper code. I spent a few hours writing rock-solid(-ish) version and language detection, which doesn’t have much to do with the schema but is really important to have.

I just about filled a page in my notebook with all this, which I haven’t done in a while. Feels pretty good! I’m also a quarter through the month already, so I’d better get moving on those three big things.

[blog] Storing Pokémon without SQL

I run veekun, a little niche Pokédex website that mostly focuses on (a) very accurate data for every version, derived directly from the games and (b) a bunch of nerdy nerd tools.

It’s been languishing for a few years. (Sorry.) Part of it is that the team has never been very big, and all of us have either drifted away or gotten tied up in other things.

And part of it is that the schema absolutely sucks to work with. I’ve been planning to fix it for a year or two now, and with Sun/Moon on the horizon, it’s time I actually got around to doing that.

Alas! I’m still unsure on some of the details. I’m hoping if I talk them out, a clear best answer will present itself. It’s like advanced rubber duck debugging, with the added bonus that maybe a bunch of strangers will validate my thinking.

(Spoilers: I think I figured some stuff out by the end, so you don’t actually need to read any of this.)

[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] Biweekly roundup: doubling down

March’s theme is video games, I guess?

It’s actually been two weeks since the last roundup, but there’s an excellent reason for that!

  • doom: As previously mentioned, someone started a “just get something done” ZDoom mapping project, so I made a map! I spent a solid seven days doing virtually nothing but working on it. And it came out pretty fantastically, I think. The final project is still in a bug-fixing phase, but I’ll link it when it’s done.

  • blog: I wrote about how maybe we could tone down the JavaScript, and it was phenomenally popular. People are still linking it anew on Twitter. That’s pretty cool. I also wrote a ton of developer commentary for my Doom map, which I’ll finish in the next few days and publish once the mapset is actually released. And I combed through my Doom series to edit a few things that are fixed in recent ZDoom and SLADE releases.

  • veekun: I managed to generate a YAML-based data file for Pokémon Red directly from game data. There’s still a lot of work to do to capture moves and places and other data, but this is a great start.

  • SLADE: In my 3D floor preview branch, the sides of simple 3D floors now render. There is so much work left to do here but the basics are finally there. Also fixed about nine papercuts I encountered while making my map, though some others remain.

  • mario maker: I made a level but have neglected to write about it here yet. Oops.

  • art: I drew most of the next part of Pokémon Yellow but then got kinda distracted by Doom stuff. I redrew last year’s Pi Day comic for the sake of comparison. I also started on Mel’s birthday present, which involves something astoundingly difficult that I’ve never tried before.

  • irl: I replaced my case fans, and it was a nightmare. “Toolless” fasteners are awful.

Pouring a solid week into one thing is weird; I feel like I haven’t drawn or touched Runed Awakening in ages, now. I’d like to get back to those.

I also still want to rig a category for posts about stuff I’m releasing, and also do something with that terrible “projects” page, so hopefully I’ll get to those soon.

[dev] Weekly roundup: video james

March’s theme is… is… I don’t know yet.

  • blog: I made a cheesecake. (By the way, it turns out I had enough leftover filling to make an entire second one! Wow.) And wrote about Valentine’s Day. And wrote about this eerie clone of tech Twitter. I’m actually kind of ahead of the game this month!

  • art: I started documenting my adventures playing Pokémon Yellow. Very… slowly.

  • veekun: I came up with a rough YAML schema for Pokémon data and faked a Red dump. The idea is to try replacing the relational database with just in-memory data, stored separately per-game and in a way that can be reproduced easily. There isn’t very much data anyway, in the grand scheme of things, and trying to keep it relational is getting to be a huge headache. I’d really like to have a simple proof-of-concept of this sometime soon; Sun and Moon come out towards the end of the year, and I’d like to have a redesigned site ready to go.

    I’m using camel for this, so I’ve found reason to hack a few more features into it already. I’ll clean them up and release them, ah, sometime.

  • floraverse: Yahoo is rejecting the store mail for some reason, which led to my discovering that Google Apps “aliases” are totally different from GMail “aliases”, and you need to have an address aliased in both places for it to actually appear in the “From” field.

  • doom: Someone has started a “just get something done” ZDoom mapping project, so I’m going to do that. The actual mapping time hasn’t started yet, but I went looking for inspiration in the form of textures and background music.

  • irl: Yardwork. Exciting.

I don’t know what to have as a theme. Runed Awakening still needs a lot of work; veekun needs an overhaul with a time limit; there’s this ZDoom mapping thing; and I’m drawing Pokémon Yellow as I play it. So maybe the theme is just… video games? Sure, we can do that.