XXX

fuzzy notepad

Blog

Page 14
Atom feed

[personal] I made pretzels

@amazingant has bought a day of my time, and requested that I spend it on:

Cook something! Don’t make one of those meal-in-a-box (or can) things (e.g. hamburger helper, “manwich” sandwiches, etc.), no frozen dinners, and heating something with the stove or oven must be involved.

Don’t worry, I do know what “cook” means! It includes baking, right? I’m going to say it includes baking.

[dev] Weekly roundup: second wind

January’s theme is web dev, and the major project is spline, the thing that runs Floraverse.

I had a lot of stuff to do that I sort of left to the very last minute, as I am wont to do, so I’ve been rushing to actually do some of it.

  • art: The usual. Bit lazier with them this week, since I’ve been busy with not-art, but now I miss it!

  • spline: Got image embedding working in the blog editor. Cleaned up a few places I was writing values into JavaScript in templates. Vendored archetype into a submodule, rather than hardcoding (!) a relative path to it. Migrated the clumsy generated Pyramid script to a CLI you can just run with -m, and added a command for creating a new user manually. Added front-page support to the blog.

  • SLADE: Submitted a pull request full of some old papercuts. Finished a branch that fixes and extends the Boom generalized labels for most specials’ speed args. Fixed one or two new papercuts.

  • doom: Sifted through a bunch of Realm 667 resources looking for some neat gems. Toyed with weapons and powerups and monsters, with a few interesting results. Eventually I’d like to sit down and actually make a map, but this is the kind of thing I can do for an hour or two, and it’s interesting to try balancing extensions to the vanilla gameplay.

  • quixe: I read about Lectrote, Andrew Plotkin’s IF interpreter that just bundles Quixe with a Chrome renderer, the same way Atom works. I’m not a huge fan of this approach usually, but IF requires support for a few layout tricks that are most easily accomplished with an HTML renderer anyway, so it makes some sense. Anyway, the post mentions that one of the concerns is speed, so I was inspired to go optimization-hunting, and I found an improvement of about 10% across the board. My benchmark story (Counterfeit Monkey by Emily Short, which is absolutely massive and does a ton of work at startup) still takes more than ten seconds just to load, but this is a vast improvement over the thirty seconds it took when I first started hacking on Quixe.

  • twitter: I improved my bot @flareon_favbots a little — it now reports offenders for spam, and makes an effort to tweet more than just when it’s first run. It’s blocked another hundred or so fav-spammers in the last few days!

  • veekun: Ported the CLI to argparse; previously it was optparse plus a lot of manual mucking about. Also started on a stub of a search interface built right into the pokedex library.

  • book: Started taking serious notes on a book about computer stuff.

  • blog: Started writing a post about, ah, writing.

  • flora: Created a stub of a repo for Mel’s personal site.

Hey, that’s not a bad haul. Still more to do, as always, but I’m making a dent and finally have some momentum back.

[dev] Weekly roundup: stuff

January’s theme is web dev, and the major project is spline, the thing that runs Floraverse.

I’m rapidly discovering that I’m just tired of web dev.

  • art: The usual. Also drew a new avatar, which I will probably be redrawing after some feedback.

  • Mario Maker: Finished and published The Works.

  • spline: Made some tiny inroads on getting CKEditor to work with reStructuredText instead of HTML, then realized what a mountain of work it was going to be to make anything non-trivial work, and totally gave up. Settled on storing HTML for now, and got the basic stub of a blog working for Mel.

  • meatspace: Spent a whole day rearranging furniture — Mel’s desk is now in the spare room, and my desk has a lot more breathing room.

  • blog: Wrote a birthday post.

  • tech support: Helped a friend with some tech stuff and inadvertently discovered the most infamously ornery project owner I have ever seen.

  • Runed Awakening: Updated to work with the latest Inform 7 release, including hacking around a segfault with some bundled extensions (!). Drew another experimental item illustration, but this time with pixels. Not sure what I prefer yet.

[personal] Eevee gained 2437 experience points

Eevee grew to level 29! Like a week and a half ago.

Wow, what a year.

[dev] Weekly roundup: reaccelerating

January’s theme is web dev, and the major project is spline, the thing that runs Floraverse.

Getting momentum back after completely blowing it all on AGDQ was surprisingly difficult. I felt like I’d forgotten that I’d ever done anything and would never be able to do anything again. After just a week! Brains are weird.

  • art: The daily comics continue.

  • Runed Awakening: Web dev seemed particularly imposing with no momentum, so I turned back to my game to get going again. I actually made some really solid progress! Implemented three or four new puzzles, added a way to see which alternative solutions you’ve found even across playthroughs, and fixed a bunch of obscure bugs. Still a long way to go, but it’ll get there if I can keep it moving along.

  • flora: Yet another cutscene.

  • blog: I dug up and finished an old heteroglot post about Pascal, and threw in an Inform 7 problem I’d done in the meantime. It was also 🎂 my birthday 🎂 this week, which called for the age-old tradition of putting confetti all over veekun. I’d always used some ancient snowflake “DHTML” script because I’m lazy, but this year I rewrote it from scratch to use CSS animations and only the slightest iavascript to generate the markup. Now it animates much more smoothly and is much less of a resource hog. For a joke that appears one day a year. Oh well.

  • spline: Less than I would have hoped for halfway through the month, but I did clean up the (minimal) docs a little bit and replace a bunch of code with a third-party module.

  • Mario Maker: Made Purgatory.

[updates] Mario Maker: The Works

ACD6-0000-0198-668D
Difficulty: fairly easy
Quality: ★★★★★
Secrets: 🍄🍄🍄🍄🍄🍄

This is great. I put a lot of effort into polishing it. I even set it aside for a while because I wasn’t happy with it, then came back and fixed it.

It’s fairly long, but doesn’t have any particularly tricky parts. Pretty atmospheric, I hope. Not all of the 1-ups are hidden, and not all of the hidden details are 1-ups.

I don’t even want to say anything more about it; I feel like I’ll ruin it. Just play it.

[updates] Mario Maker: Purgatory

BEA5-0000-0192-AF17
Difficulty: fairly easy
Quality: ★★★☆☆
Secrets: 🍄🍄🍄🍄

I had three hours left at the end of a night, and I decided to use them to speed-map a Mario level. Two hours later, I had this. It’s fairly simple and straightforward as a result, but still a fun quick romp.

The theme is fairly shallow: there’s a “heaven” overworld and a “hell” subworld, and you shift back and forth a couple times on your way through the level.

I watched someone try to speedrun it shortly after I uploaded it, and I was delighted to see that they managed to skip the hell area entirely. Seems appropriate.

[process] Heteroglot: #16 in Pascal, #17 in Inform 7

I was thinking about doing a problem for heteroglot — my quest to solve every Project Euler problem in a different programming language. (They’re adding new problems much more quickly than I’m solving them, so so far I’ve made negative progress.) Then I discovered I’d already done two, but never wrote about either of them. Oops! Here’s a twofer, then.

This post necessarily gives away the answers, so don’t read this if you’d like to solve the problems yourself.

[dev] Weekly roundup: speedwatching

January’s theme is web dev, and the major project is spline, the thing that runs Floraverse.

I spent an embarrassingly large chunk of the week watching AGDQ instead of actually doing anything. Oh well.

  • flora: I slopped together another three “cutscene” updates, all pretty short but a little time-consuming nonetheless. I also put some work into refactoring the guts of the player, with modest success. The eventual goal is to build an editor, so people who aren’t me can make little web VNs without having to cobble together a bunch of undocumented JSON and pray it works.

  • art: Keeping up the daily comics. They’re definitely larger in scope than what I was scrawling in pencil a year ago. Sort of like speedpaints, but the time limit is loosely defined as “I don’t want to spend all day on this”. Trying to vary how I do them, too, though it ultimately comes down to whim.

  • blog: With some reservations, I wrote a thing scoffing at how condescending Paul Graham’s latest masterpiece was.

  • SLADE: Bit of very minor work, fixing a few papercuts and trying to diagnose a couple others.

  • Runed Awakening: Didn’t get very far, but I did manage to spend a couple distracted hours stubbing out a puzzle I really like.

And that’s it! Mostly drawing and dabbling. I (accidentally) woke up early today, so I’m going to try to get a good chunk of something done to get my momentum going again.

[articles] Shut Up, Paul Graham: The Simplified Version

As often happens when you say something controversial, there have been some very adventurous interpretations of the essay I just wrote about economic inequality. I thought it might help clarify matters for the undecided if I tried to write a version so simple that it leaves no room for misinterpretation.

I wrote a LiveJournal post so preposterous that even Hacker News didn’t swallow it. I’m painting this as ‘controversial’, which only makes sense if you accept that I am roughly as important as the entire rest of the Internet. Rather than step back and wonder if I might be wrong, I wrote this patronizing Playskool edition, to give the unwashed masses a second chance at appreciating my brilliance. Please admire my generosity.”

No doubt even this version leaves some room. And in the unlikely event I left no holes, some will say I’m backpedalling or doing “damage control.” But anyone who wants to can test that claim by comparing this to the original.

It is literally unthinkable that my ideas are bad.”

[dev] Weekly roundup: wrapping up

This month’s theme was game dev, and the major project was my text adventure, Runed Awakening.

  • art: More than half the week went, pretty solidly, towards my magnum opus, which was a gigantic Christmas card I wanted to finish by the end of the year so I could stick it in this art improvement grid which I should probably put here on my own gosh-darn website. I spent the last two days of the week just doodling, to kind of de-stress from finishing this and the blog posts. Also started doing daily comics again, which is how I got started drawing one year ago. Now they’re a little more ambitious though.

  • blog: I finished both part 2 and part 3 of the Doom series, the last with only minutes to spare!

  • SLADE: Fixed a couple issues I ran across while writing the posts: some drawing errors I caused, a very obscure drawing error I didn’t cause, and some helpful configuration of arg specials. I also spruced up some less-than-helpful stuff on the ZDoom wiki.

Thus ends my first attempt at a theme month. I sort of sabotaged myself twice here by biting off a bit too much: a huge 4096×4096 painting that took a solid week to finish, and a series of articles that ended up preposterously long and also took a solid week.

So the major project, Runed Awakening, did not get quite as far as I would’ve liked. It did get much further than it would’ve if I hadn’t decided to prioritize it, and I’m still jazzed to keep working on it, so I’ll still call this a success. This month will have a different theme and major project, but I’ll keep chugging away on my game as well. Wish me luck!

[articles] You should make a Doom level, part 3: cheating

Part 1: the basics · Part 2: design · Part 3: cheating

Tens of thousands of words later, you’ve watched me build a little world, and hopefully tried building your own. All the way we’ve had to deal with Doom’s limitations. Flat surfaces. No room over room. The world can only move vertically. The only tool we’ve found so far that can get around those restrictions is the sky hack, and even that’s fairly limited.

I’ve saved this for last because it’s more complicated than anything else, by far. It also finally, utterly, breaks compatibility with vanilla Doom. You could apply everything I’ve said so far to vanilla with some tweaking — use line types instead of specials, make a Doom-format map, skip the separate light levels and other tricks. But, this, all of this, is very much ZDoom only.

Finally, the time has come.

It’s time to annihilate all of those restrictions.

Mostly.

[articles] You should make a Doom level, part 2: design

Part 1: the basics · Part 2: design · Part 3: cheating

I assume you’ve read the introduction, which tells you the basics of putting a world together.

This post is more narrative than mechanical; it’s a tour of my thought process as I try to turn my previous map into something a little more fun to play. I still touch on new editing things I do, but honestly, you already know the bulk of how to use an editor. Poke through SLADE’s keybindings (Edit → Preferences → Input) to see what hidden gems it has, click that “Show All” checkbox in the prop panel, and go wild. But please do comment if I blatantly forgot to explain something new.

(Fair warning: NVidia’s recent Linux drivers seem to have a bug that spontaneously crashes programs using OpenGL. SLADE is one such program. So if any of the screenshots seem to be slightly inconsistent, it’s probably because the editor crashed and I had to redo some work and it didn’t come out exactly the same.)

[dev] Weekly roundup: magnum opus

This month’s theme is game dev, and the major project is my text adventure, Runed Awakening.

I may have ended up drawing for like half the week, by accident.

  • SLADE: After having used it intensely for a while to write my Doom post, I spent most of a day fixing a bunch of little papercuts, plus (I hope) a crash someone experienced on OS X. I also cobbled together some preliminary support for 3D floors, which will be awesome.

  • Flora: Threw together a quick cutscene. I should really make an editor for these things so I don’t have to keep doing it. Maybe next month.

  • art: Oh wow. I spent the last three days of the week, pretty solidly, working on a single picture. I have a collage of the best thing I drew every two weeks for the whole year, and it only has one final slot left, and I wanted it to be the best I could possibly muster, and I may have been a little ambitious. It’s still not done. Almost.

  • Runed Awakening: Made a couple breakthroughs, implemented some more Main Plot stuff, hurrah. I don’t think I’ll have time this week to do any serious work on it, so it seems I didn’t get mostly-done this month as I’d hoped. I’ve cleared a lot of hurdles and laid a lot of groundwork, though, so I hope I can keep up the progress and have something worth showing by the end of January?

  • blog: Workin’ on parts 2 and 3 simultaneously. Fixing SLADE stuff kind of got in the way. I’m also having some kind of irritating driver problem that crashes SLADE at inopportune times, argh.

[dev] Weekly roundup: Doom

This month’s theme is game dev, and the major project is my text adventure, Runed Awakening.

Much better this week, though most of the effort went into blogging and fixing SLADE, and not so much went into my own game. I’ll try to remedy that this week.

  • art: I drew stuff nearly every day all week, which is a great turnaround from my rut. This is pretty cute. So is this! I had a flip through some of my drawings from earlier in the year and I can’t believe how terrible they are and how not-terrible they sometimes are now.

  • irl: I went through a huge pile of mail and whatnot that had accumulated under my keyboard. Started dealing with taxes, oh boy. I also did another round of going through an old hard drive I accidentally broke a couple years ago — the filesystem shattered a bit, so figuring out what’s there and what’s worth recovering has required some archaeology. Found IRC logs from 2003, though.

  • SLADE: I fixed some behavior related to working with a directory (vs working with a single-file archive), most notably teaching it not to delete files it doesn’t know about. I also implemented about 60% of LOCKDEFS support, i.e., having the UI actually tell you what numbers correspond to what keycards.

  • flora: More planning for the card game. Also a lot of work fixing the goddamn Rails nightmare that runs the Flora store.

  • anachrony: That’s, uh, the Doom map set I’m working on. I have no idea what I’m doing and it’s really tough to figure out how to design spaces I really like, but that’s the whole point of the exercise, so I go back to it every now and then. I basically just tried out some ideas for connecting areas together and kinda like how it came out, so, that’s good.

  • Runed Awakening: I got a good bit of planning done! No actual code written, oops; my time got eaten up by other stuff. I also drew a test illustration for an innocuous object, which was well-received, so I might end up illustrating every object. Maybe.

  • blog: It took several days but I finally finished part 1 about how you should make a Doom level. Still awaiting the avalanche of incredible three-room maps.

[articles] You should make a Doom level, part 1: the basics

Part 1: the basics · Part 2: design · Part 3: cheating

I love Doom. Or, well, I love Doom 2, which is the game we actually had when I was nostalgia years old.

I love the aesthetic — pixely in a 3D(ish) environment, and consistent in a way that meshes together really well. The classic levels are abstract (occasionally too abstract), but still detailed enough to feel like they could represent real places as long as you don’t think about it too hard. The environment is surprisingly dynamic: there are switches and devices everywhere. That seems to have gotten much rarer over time, as climbing polygon counts have required ever-heavier optimizations on environments, which make it harder to move at runtime.

Plus the engine is really simple, so mapping is really simple, and anyone can make a little world they can then move around in and share with others.

And I think that’s fantastic. Everyone should try making games. They’re a great medium, a way to express nearly any kind of creative idea, no matter what your interests. If you like music (Audiosurf), or art (BECOME A GREAT ARTIST IN JUST 10 SECONDS), or storytelling (Photopia), or programming (TIS-100), or puzzles, or human interaction, or ANYTHING, you can probably find a way to express it with a game. You don’t need to be good at everything. You can focus on one thing, or you can focus on everything, or you can pair up with people who have very different interests. A lot of the existing tools are aimed at programming types (probably since they’re all made by programming types), but they’re only getting better over time.

And what better way to get your feet wet than one of the oldest forms of homebrew game development: Doom modding.

I thought I’d try something different this month, especially because I keep writing ludicrously long posts (I say, as if this one were any better), and also this month I’m trying to focus on an intersection of gamedev and writing, and also it’s Christmas (???). So here is part 1 of a three-part series on how to build you a world.

[dev] Weekly roundup: not much

This month’s theme is game dev, and the major project is my text adventure, Runed Awakening.

I got knocked a bit off course by accidentally watching some Discworld specials and sleeping through all of Saturday because my cat is a jerk. I’m hoping that writing this now will help nudge me back into a more productive mindset.

  • Runed Awakening: Made some huge improvements to AI, which is surprisingly tricky, so I’m always happy when it works out. Fleshed out more stuff in the start area, started adding some tester amenities, and fixed bunches of bugs. There’s some more to do with what I have, but I’m currently a bit blocked on planning out the middle of the game, which I want to have some intertwining side stories. So I did a lot of thinking without necessarily making much progress, which is annoying. Hoping to get closer in the next few days.

    The game is pretty story-driven, being a text-based game, but it’s also a pretty shallow story — neither the player nor the universe are in imminent danger or anything nearly so dramatic. I considered trying to make it a little heavier at the end, but I think that would feel pretty tacked-on. I’d rather try to get this out sooner and do something bigger for a second game. I just hope people enjoy this one? I realize I’ve never actually published a creative work, so I’ve been anxious on and off.

  • art: I drew a Delibird and it’s okay though I’m still not happy with the way I do outlines. Also this Friskeon. And a lot of doodling. I think I’ve managed to draw for at least an hour every day this week, which I’d like to keep up. Still frustrated, though; I’m painfully aware that I only know how to draw a few body shapes in a few general poses, and I’m trying to branch out from that, and it’s all stuff I’ve never tried before so it comes out awful. So it goes.

  • music: Something I want to learn how to do. I toyed around with LMMS a bit and made a few notes that aren’t entirely terrible. A huge problem here is that even if I think of something I like, I can’t transcribe it correctly, and after hearing the wrong thing a few times I’ve forgotten what the original thought was. Next time I give this a shot I might just practice transcribing tunes I already know very well, like Zelda melodies.

  • spline: Fixed some fallout from CSRF protection, whoops.

  • flora: Mel wants to design a card game, and I’ve been helping plan that.

  • blog: Worked on this month’s posts some, but I hate everything I wrote and will probably delete most of it. We’re halfway through the month already so I really need to get these done, ugh.