fuzzy notepad

Atom feed [release] release

[release] Mario Maker: Cookie Dough

00EC-0000-00DB-3CA7
Difficulty: fairly easy
Quality: ★★★★☆
Secrets: 🍄🍄🍄🍄

Vanilla Dome has a cool aesthetic and an unusual style — you navigate up and down through caverns, rather than mostly to the right as is common in Mario. I tried to capture some of that here.

This was the first time I tried to do any real narrative things with the detailing in the level. Not some grand coherent plot; just little hints that life is happening here and it’s not necessarily centered around you. I love that in games.

There are also quite a few branching paths, which is a little difficult to cram into Mario Maker where the world can only be two screens tall. Jamming in a lot of secrets made it even harder, but I managed. See if you can find them all! No backtracking required, I think.

There’s a boss battle at the end, though the solution is unfortunately not as obvious as I’d hoped. A surprisingly tricky problem is finding ways to force the player to actually beat the boss, rather than scurry past it. (I’m not sure anyone has picked up on what the boss is, either.) It’s a real shame, because it feels clumsily tacked onto the end of what is otherwise a pretty nice level.

Overall I think this could use a little bit more cohesion, but I’m pretty happy with it.

[release] Don’t use pickle — use Camel

Don’t use pickle. Don’t use pickle. Don’t use pickle.

The problems with Python’s pickle module are extensively documented (and repeated). It’s unsafe by default: untrusted pickles can execute arbitrary Python code. Its automatic, magical behavior shackles you to the internals of your classes in non-obvious ways. You can’t even easily tell which classes are baked forever into your pickles. Once a pickle breaks, figuring out why and where and how to fix it is an utter nightmare.

Don’t use pickle.

So we keep saying. But people keep using pickle. Because we don’t offer any real alternatives. Oops.

You can fix pickle, of course, by writing a bunch of __setstate__ and __reduce_ex__ methods, and maybe using the copyreg module that you didn’t know existed, and oops that didn’t work, and it’s trial and error figuring out which types you actually need to write this code for, and all you have to do is overlook one type and all your rigor was for nothing.

What about PyYAML? Oops, same problems: it’s dangerous by default, it shackles you to your class internals, it’s possible to be rigorous but hard to enforce it.

Okay, how about that thing Alex Gaynor told me to do at PyCon, where I write custom load and dump methods on my classes that just spit out JSON? Sure, you can do that. But if you want to serialize a nested object, then you have to manually call dump on it, and it has to not do the JSON dumping itself. There’s also the slight disadvantage that all the knowledge about what the data means is locked in your application, in code — if all you have to look at is the JSON itself, there’s no metadata besides “version”. You can’t even tell if your codebase can still load a document without, well, just trying to load it. We’re really talking about rolling ad-hoc data formats here, so I think that’s a shame.

But I have good news: I have solved all of your problems.

[release] Mario Maker: Tiny–Huge Island

A953-0000-0055-15BA
Difficulty: medium, has some annoying spots
Quality: ★★★☆☆
Secrets: 🍄🍄🍄🍄

I love any kind of parallel-areas gimmick, and since you can make large versions of basically any critter in Mario Maker, it was begging for this. It’s named for a world in Mario 64, which I played only briefly but found memorable anyway.

It’s surprisingly difficult to come up with puzzles that actually require large monsters, and even harder to come up with ones that require small monsters. In the end, I think all but one of the puzzles can be solved in either world, though one way is always considerably easier than the other. I like alternate solutions, and heavily dislike when game designers add obvious artificial roadblocks to seal off alternate solutions, so I’m fine with this.

There are some places that are a little harder than they ought to be, which is a shame, but it’s my most popular level nonetheless. I’m itching to make a sequel, but this was incredibly tedious to do, because you can’t actually copy anything across areas. All of it was done manually.

[release] Mario Maker: Spoopy Manor

CA39-0000-004B-FF52
Difficulty: slightly tricky, not in a good way
Quality: ★★★☆☆
Secrets: 🍄🍄 + “secret exit”

Boo houses are cool. Mario Maker adds a Boo house theme for the classic Mario tileset. Awesome.

I tried to make this moderately confusing and weird, as Boo houses ought to be. I think I may have overshadowed that a little bit with some annoying jumps into Boo circles, though. And unfortunately this predates checkpoints, though it direly needs one.

Still, I enjoy playing it just for the strange environment, so maybe you will too.

[release] Mario Maker: Test Flight

55A7-0000-0049-50DD
Difficulty: tricky, not in a good way
Quality: ★★☆☆☆
Secrets: 🍄🍄🍄

This is my first Mario level, hence the title. It… is not particularly great.

The concept was okay: you start out in what seems like a cheerful easy level, then you suddenly hit a wall. You have to go down a pipe to progress, and surprise! It’s not so cheery any more.

Unfortunately it’s a bit worse than “not cheery”; it’s cramped and kind of annoying. The original idea was actually worse than how it came out — I’d intended that you have to cross the entire second area, get a cape upgrade, and then backtrack without losing the cape. You need the cape to reach the exit, so if you lost it, you were screwed. I found out that you could actually skip all the backtracking pretty easily, and I was relieved enough that I left it in.

Suffice to say, I would do this very differently if I did it again now.