Monthly Archives: May 2013

EveHeaderI’m super frustrated with how this is going. I don’t think working on programming a bit here and there is working very well, and problems which should take me a few days to solve are bloating and taking me weeks. There is something wrong with my methodology here. Working on programming a bit every day is a super inefficient way to approach these problems. So, it’s time for a change.

First: I’m going to be trying to only work on programming in 2-4 hour blocks. It takes at least 15 minutes usually to fully begin focusing on a problem, sometimes longer if I’m having an off day, and it becomes simply inefficient to pick and prod at the programming. It’s also super demoralizing to spend a week working at something and only see solid progress in the last day or two.

Which brings me to, second: Coding tasks are now going to be Monday-Wednesday-Friday, since those are the days I don’t need to write for Problem Machine. Tuesday, Thursday, and the weekends are going to be for other tasks on the project such as animation, music, environment sketching, whatever writing still needs to be done, etcetera. Probably focusing on animation first, since once I get the collision code fully armed and operational I think I’m going to want to get stuff moving as soon as possible. and see what everything looks like all together at once.

Okay! So that’s a plan. As for the actual update, there’s really not a lot to tell. As I’ve kind of implied, I spent basically all this week’s Eve productivity hammering on a single programming problem, collision detection. It’s at this point running about as well as it did before I did anything, which is discouraging in that it’s no solid progress over when I started but encouraging in that it represents a lot of progress over where I was a few days ago.

Hopefully, with this new plan of action, next week’s update will be less boring than the last couple. I can assure you it’s been at least as dull for me as it has been for you, and far, far more frustrating.


And just like dreams the games we play fall away from us when they are complete, and just like dreams they are easily forgotten and then remembered at random many years later, and just like dreams they slip by in the wink of an eye gently into our past where they cannot be reached. Just like dreams, just like life, gone by too fast and leaving just a dusty outline like a running cartoon character.

We try to live these things again. We try to replay the games, re-dream the dreams, relive the lives, but we’re just building hollow simulacra around our history, tributes to past happiness and imagination. We are rapacious and have consumed everything there is of our past to be consumed, and we cannot be satiated by gnawing on the bones forever. But we’ll try– indeed, until we starve, we’ll try.

The way through is outwards, not inwards. Our hearts might be content to devour themselves until they are bloated and consumed if we do not guide them elsewhere.

Loving games as an art form while still being self aware means I have a constant paranoia that I am just pursuing nostalgia, that I love these things only because I have loved them in the past and am too afraid to admit to myself that the love has gone because it would threaten too large a piece of my identity. I don’t feel that way now, but I have felt that way in the past and I anticipate feeling that way again in the future.

I still go back to the things I loved in the past, but it’s as much research expedition as anything now. I play and I try to understand what it was about this game, this world, that has gouged itself into me for so long, what it is that resonates in my brain and back out and makes my teeth ache with longing. Is it just an illusion, nursed by decades of nostalgia? It seems implausible, but we humans are so good at fooling ourselves…

They say the unexamined life is not worth living, but a life spent in constant self-examination is a life unlived. If you return to drink from the same well every day don’t be surprised if it begins to go dry. Your waters may run deep, but the dirt surrounding them is infinitely thirsty. It is easy to be consumed by a habit of retrospection, of remembrance and recrimination and reliving past glories, and difficult afterwards to escape. It is easy to make of yourself a prison, and to end your life, reverse it, and try to live backwards until you die.

Someday, again, you will love something as much as you have loved in the past– even if that, too, must slip into the past for you to realize it.

peanutshaxThe discipline of game design is only recently, spurred by the financial and popular success of modern video games, beginning to be explored in a formal way. Because of this newness, there tends to still be a lot of ambiguity in the terminology we use. Though this is probably a source of confusion, it is probably also, by the same token, a good place to start seeking insight into the form. Why would one choose, when discussing a game, to use one term over another term which is similar at first glance? What are the colloquial assumptions we make that gives one term preference over another, and what do those assumptions tell us about the art we pursue?

Games are, at their heart, systems. They take a player input and process it in some way and then output something, and the player explores how to achieve different outputs by means of different inputs, usually with the purpose of achieving some explicit end goal. This is an extremely dry interpretation of what a game is, and it leaves a lot of important stuff out, but it’s a good place to begin conceptually.


This is basically GDC in a nutshell

How are these systems constructed?

There’s an interesting split here. If we were discussing board games or sports, one might say that the game’s systems are the product of the game’s rules, but in video games most prefer to describe them, instead, as being the result of the game’s mechanics. Thus raising the question: What is the difference between a mechanic and a rule? Is there one? This is a kind of question of semantics, and it’s impossible to say for sure what’s in the head of all of the people who use these terms, but it’s an important distinction and one worth looking at. What is it in these terms that make us prefer one over the other?

‘Rule’ is imperative. It implies a ruler, one who creates the rules, and casts the player as one who obeys them. This is necessary, whether or not it is desirable, for most traditional games, as they require the player or players to drive the progress of the game. If the players don’t observe the rules, the game loses coherence and, if pushed far enough, ceases to be a game. A rule is a directive of behavior that must be observed for the game to proceed. Conversely, ‘mechanic’ is distant and impersonal, implies something that happens as a natural consequence of something else occurring. A mechanic is an automated reaction of a system to input, and will behave consistently regardless of the nature of the input: An intentional tap, a malfunctioning space bar, or a cat walking on your keyboard are all interpreted by the game mechanics the same way, without bias.


I think he wants to open and close his map repeatedly 1800 times a second. That’s the only way I can interpret this.

To clarify the difference:


  • Are intimate: They require the player to actively participate in order for the game to continue, thus requiring the player to have an understanding of the game in order to play.
  • Imply judgment: Because the game cannot progress properly when players violate the rules, rule systems also imply that some game behaviors are inherently desirable or undesirable.
  • Can be broken: Whether intentionally or unintentionally, a player can disregard or misunderstand a rule. The game may or may not survive this and still be enjoyable, but it will not proceed in its intended manner.


  • Are impersonal: Do not require player participation and react identically to all similar input. The player does not need to understand the game in order to play.
  • Can be mysterious: Because the player isn’t required to understand these components of the system in order for the game to progress, the behavior driving these mechanics can be completely opaque.
  • Can be complex in real time: Behaviors which would be impossibly or impractically complicated were they left up to humans to determine can be implemented using physical or computational systems.

While board games and sports primarily utilize rules and video games primarily utilize mechanics, this is not an absolute division. One facet that sports have in common with each other, and one of the main ways they tend to be differentiated from other games, is that they use the physical properties and behaviors of objects in our world, such as different forms of ball and club and turf, to create gameplay. Board games have dice, which use the uncertainty of physical object behavior to do the random number calculations that video games use processing power to achieve. Most mechanics in use in traditional games are based on physics, a system which can be tremendously complex in real time.


No one remembers, cares about, or even learned the rules to this game. The rules were entirely redundant to the experience.

On the other side, applying rules to video games, most multi-player games have explicit rules against certain griefing behaviors such as team-killing: The player can break them, but they are certainly not supposed to, and the game will not progress properly if they do. Video games tend to try to avoid rules because they can be broken, but this can also reduce player engagement, since they are technically not required for the game to proceed– often to proceed in a rather dull manner, but proceed nevertheless. There are many instances, as well, of pseudo-rules: Behaviors which the game advises the player to do or to avoid, and which there are punishments for doing incorrectly, but which the game fully expects to be ‘broken’ and is designed with that outcome in mind. Strong examples of these include the push for the player to be stealthy in Thief or to stay close to her team in L4D. This also includes, it should be mentioned, the ‘rule’ system in Final Fantasy Tactics Advance, where a judge informs the player of specific rules that are not to be broken before every combat, which punishment is meted out for transgressing. Because the game is built with transgressions against these rules in mind, they are instead pseudo-rules, no matter how explicitly they are stated.

While it’s worthwhile to point out the advantages each of these tools has over the other, one must also recommend some degree of caution: Though mechanics support a greater degree of complexity than rules, more complex isn’t always better. And, while rules can be more intimate and bring more of the player’s personality into the game, if done poorly this can feel invasive while serving no real purpose. In the end, these are tools, nothing more and nothing less. And, in the end, when you’re the designer, it’s your call whether to use rules or mechanics to build your system, where and to what degree to use each. They are both powerful, meaningful, and interesting: But they are not the same.

With this insight, you can utilize both more fully.



If I’m gonna get stuck on something, it may as well be a problem I can make a bunch of obstacle related puns with, right?

Okay, this was not a good week for progress. I got about halfway through implementing the solution I’d settled on, but it was weird and tricky and hard to keep track of what I was doing in my head, and yesterday, looking at what I’d done on it so far, I knew for a fact that I could do better.

So I started over.

Which means that this week’s work is basically all down the drain. Ugh. On the plus side, given a couple of hours to work in, I’m already halfway through implementing my new, simpler, more reliable, and easier to understand solution.

What’s the lesson here?

Setting short deadlines on coming up with plans isn’t always a good idea. I came up with a good insight and immediately built a plan of action on top of it, but one insight isn’t much. There are a million plans one could contrive given a single valid insight, an infinite plane of possibilities hinged on that one point. I should have known that the first one I came up with would be garbage. The first one is always garbage. I should have kept thinking about it until I was sure I had the right plan of action.

Oh well.

I’ll chalk this week up as a solid learning experience, programming-wise. Writing down a plan of action on paper was a good idea, but I think in the future I’ll go from that to pseudocode before I start getting into the guts of the programming, lest I do a bunch of unnecessary work like I did this time.

Another lesson I’m learning the hard way is that just working on programming day after day is very stressful and not super rewarding, particularly when I’m just hammering on the same code every day and don’t have it in a place where it’s ready to build yet. Between this and a couple of new developments which imply that I may not have to work quite as hard to sustain myself over the next few months, I’m thinking it may be high time to get back to doing animation and/or drawing backgrounds. Indeed, once I get the new collision system up and running, it will be an excellent time to start implementing the test animations I’ve been making into the game. And, once those are in, I can see about combining all of the above to make one fully realized, albeit quite sparse, level.

Yes. That seems like a plan. Let’s hope it’s the right one, this time.


I’ve just begun playing Dark Souls. I’m not very far into it. I’m not used to this degree of relentless pressure, this viscous viciousness that must be pressed through to progress. It’s clear that there is a path to victory, I know this because it is a game and because others have completed it. Though sometimes the path ahead may be obscured and take time and effort to uncover, there is a way through.

I have also been working on a programming task, one which I have tackled twice before in the past with results that were usable but unsatisfactory, which were good enough to let me table the problem for later but not good enough to be allowed into a finished product. This is a problem which should be easy, which many other programmers have solved with few issues and which there is a wealth of documentation covering, but which for some reason due to my approach or methodology is consistently nightmarishly difficult for me.

I know there is a way through, but every time I try to push past I am rebuffed. Some tasks require recklessness and quick wits, but this is not one of them. This is a task to be slowly picked apart, to be broken down into smaller and smaller pieces until it is dust which I can blow away.

I have been making my way through the last few months on money I pull together via odd-jobs and art commissions. I don’t know for how long this will work, given my current methodology, but I try to save money wherever I can and take advantage of those opportunities I perceive. I feel a constant and overwhelming pressure, particularly when I regard the small but substantial gap in between the amount of money I currently have and the amount I need at the end of the month to make rent. Every frozen pizza, every energy drink, becomes a decadent indulgence, an investment disproportionate to the caloric and nutritional content.

It’s so real. There is a direct and observable connection between the things I am doing and the benefit I reap from doing them. When I make money to live on, it’s because someone looked at a task I could do for them or piece I could create for them and decided that that was worth their hard-earned cash. It feels entirely and qualitatively different from being hired by a corporation on the recommendation of a hiring agent who read a piece of paper I wrote describing myself, from being paid month to month on the basis that I have not yet overtly demonstrated myself to be not worth that cost. Presumably, to someone somewhere that flow of money makes sense, and it may not even be very complicated, but from my place in the middle I am– possibly the greatest cliche of them all, but with good reason– just a cog in the machine.

Is it better to struggle and see the fruits of one’s labors, but be constantly under pressure, constantly threatened? Or is it better to know that one has a place in the world, to be secure in one’s role in the service of something bigger, even if the shape and method of that ‘something’ isn’t really clear?

I don’t know. Does it even make sense to ask which is better?

Asking implies we have a choice.


Entertainment isn’t what it used to be. Then again, it never is. Every new form of entertainment comes with new problems to solve– some of them logistical, some of them ethical, and some of them legal. Thus it is with the emerging form of the Let’s Play video– videos where players play through various games while commenting on the experience. These have become a steadily growing mainstay of video streaming sites such as youtube and are, along with competitive gaming coverage, the main reason for the existence of the streaming site

Up until now, the questions of legality and ownership one might have over such a format haven’t really been forced, and the producers of the videos have happily taken whatever advertising profits are left over after the streaming site takes their cut. However, in the last week, Nintendo have begun claiming the advertising profits from let’s play videos featuring their games. They issued this statement to explain why:

“As part of our on-going push to ensure Nintendo content is shared across social media channels in an appropriate and safe way, we became a YouTube partner and as such in February 2013 we registered our copyright content in the YouTube database. For most fan videos this will not result in any changes, however, for those videos featuring Nintendo-owned content, such as images or audio of a certain length, adverts will now appear at the beginning, next to or at the end of the clips. We continually want our fans to enjoy sharing Nintendo content on YouTube, and that is why, unlike other entertainment companies, we have chosen not to block people using our intellectual property.”


This is, as far as I know, the extent of the explanation Nintendo have provided on the matter. Now, if you read that carefully, you might notice that they didn’t provide any explanation of why they chose to do what they did, just confirmed that they did it and followed it up with what looks vaguely like a threat suggesting that they could have done something much worse.

When confronted with the question, “should they have done that,” a question which seems to come up a lot in regard to intellectual property concerns, I think it’s useful to consult with my acronymic friend LEW. LEW asks:

  1. Was it Legal?
  2. Was it Ethical?
  3. Was it Wise?

So let’s look at Nintendo’s actions from that perspective.


No sir, I don’t like it

First: Was it legal? This is actually kind of shakey, and some have hypothesized that this very shakiness may be why Nintendo is testing the ice, in order to set a precedent for future cases with higher stakes. I’m not a legal expert by any means, but up until now Let’s Plays have been popularly regarded as transformative works and thus believed to be protected by fair use laws– the way things are going, it looks like before too long we may find out whether the courts agree. Or, perhaps, this may be resolved by another branch of the government, as congress begins investigating copyright reform. We shall see. Either way, this is an open question– for now.

Second: Was it ethical? Considering that these are solitary entertainers, trying to scrape together a living, having substantial chunks of their income taken by an international corporation, I would suspect that the answer is no, but let’s dig a bit deeper. The first point that should be established is that some of these Let’s Players do this as a full-time entertainment job– these videos, as well as other online video content, are becoming increasingly popular entry points for people who would have pursued careers in radio and television in the past. And, just as with radio and television, the fields are littered with people who tried and who couldn’t make it work, who either end up finding work elsewhere or doing it just as a hobby– for many people that’s all it ever was. My point here is twofold, though: First, it’s a tough gig, and the people who make it work as a job need all the support they can get, so being undermined like this is a slap in the face. Second, if the main draw of the videos was the game, individual talent wouldn’t matter and you’d see a roughly even distribution of viewers: This is not the case. These people are entertainers.

I guarantee you that if John Williams grabbed the money from a street musician’s tip jar because the musician dared to play the Cantina theme from Star Wars, people wouldn’t find that ethical. If a bunch of guys recorded themselves bullshitting at a party and it became a youtube sensation, the NFL would not be entitled to all of their ad revenue just because it was a Superbowl party. If a standup comedian does a set wearing a T-Shirt with a picture of Bart Simpson, Fox does not get to claim the ticket fees.

Taking candy from a baby

Oh god it works on so many levels

Oh, drat. I’ve let the legal argument get into my ethical argument, haven’t I? Well, that’s because the legal issue also raises the question: If it is legal, should it be legal? I kind of wanted to include that question, actually, but it makes it a lot harder to come up with a snappy acronym. Oh well.

Moving along, then. Third: Is it wise? Well, let’s see, Nintendo just released their biggest flop of a console since the Virtual Boy and are desperate for any advertisement or positive word of mouth they can get. Litigating against your fans is a lousy idea at the best of times, but worse timing on this is difficult to conceive. At this rate, even if they come out with an amazing first party title for the Wii U, they’ve hamstrung one of their most efficient channels of exposure. Good job guys. Super smart move there.

I think I’ve achieved my goal of putting forth a convincing argument that this tact of Nintendo’s is simultaneously a damn fool idea, a dick move, and legally questionable all in one go, but there’s two more points I’d like to make.

First: This would be much less of an issue if there were any available option between claiming all of the ad revenue and none of it. I’d be the last person to argue that Nintendo deserves none of the proceeds from channels showcasing their games, but it’s impossible to defend the premise that they deserve all of it. If there were any option available for them to take an equitable cut, we’d be in an entirely different situation. However, because it is all or nothing, because they perceive themselves to be in a situation where they can either attack their fans or let people profit from their hard work without getting any of the action, they’ve goaded themselves into taking this extraordinarily stupid action.

Tangentially, there’s a smart way Nintendo could have achieved the same goal while coming out smelling like roses: Contact every Let’s Player who produces a lot of Nintendo game content, invite them to join a Nintendo Partners’ program where they are featured on Nintendo’s website in return for a small cut of the advertising profits. I suppose that some of the saltier channels might have presented a challenge, but as things stand they have gutted the goose that lays the golden eggs, and if they want a cut of the content they’re going to have a hard time of it when everyone stops producing content since it’s now a waste of time and effort for the more established channels.

Which brings me to my second point: This is a serious fucking problem with the current state of intellectual property law. The entire purpose of copyright law in the first place was to protect content creators by guaranteeing them a chance to profit from their works and thereby give them an incentive to create, but we see now it is being used to push otherwise interested people away from creating their own work. Because the system as it is now is a product of lobbying and regulatory capture by large content creators, the law has come increasingly to favor those large creators over smaller independent authors. And, because the law is on their side, they come to wield it indiscriminately: To the man with only a hammer, everything looks like a nail, and to the man with an army of lawyers every problem looks like a truck full of bootleg merchandise.

If you’re worried about protecting your IP, next time, before you flex your muscle, ask yourself:

What would LEW say?



SnowflakesTest003It’s been a pretty mixed week, all told. I finally got the particle system all ironed out, (that’s good), but it turns out that the caching thing doesn’t work as well for mass particles as I’d hoped, (that’s bad), but it will work very well for more advanced particle effects with fewer particles, (that’s good), but I’ll have to devote some extra time to retrofitting it to work with several different display types, (that’s bad), but after doing that I should have the best of both worlds and probably about the best particle system feasible in Flash.

That’s good.

I’ve also been redoing my basic player interaction code, all of the stuff that deals with movement and terrain interaction. This is a frustrating part of the project to be working on because the collision code has been a major sticking point for me in the past and has derailed me for months at a time before. I have to admit, I’m still not a hundred percent sure how I want to tackle this issue, but figuring that out is my main task for tomorrow. I think this being a difficult problem for me is just something I’ll have to deal with: I have to accept that I can’t dive straight in, and I’m going to have to be okay with taking a day or two to feel my way around the problem and come up with a plan before I actually start writing code. I’ll try to think of other things to work on for the project in the meanwhile so that I don’t lose momentum.

Actually I have been working on one such thing! I started, a few days ago, putting together a list of the different music tracks I would need for the game, basically just breaking down how much music each section of the game would require along with a few notes about what I thought might work well for each section. At the same time, I started pulling together a bunch of music from my library to use for reference, songs which I either think suit the tone of the game overall or have a few particular elements I’d like to study when writing the soundtrack. Finally, after a few hours of this, inspiration or possibly boredom struck, and I decided to take a crack at writing intro music for the game.

I really like the sound of this track, but it’s a bit too complex and intense for the intro theme I was planning on using it for. I actually have plans for how to address that, but since I’m such a secretive little guy I don’t feel like discussing them just yet.

Overall? Not a bad week, despite the frustrations. Bits of progress here and there, all adding up to something, probably, someday, somehow.

That’s good.


“I don’t know. Why do things happen as they do in dreams?”

Things are a bit confused. Things start blending together. I’ve been sleeping a lot.

I remember at one point I was hanging out at one of the community colleges which I used to attend, and ventured into an old and by then largely-unused electronic music lab where I experimented with the equipment and recorded a little tune which I rather liked: Kind of fast paced, heavy on the percussion and bass, a bit different than the stuff I normally record. I went ahead and dropped it onto an audio cassette, and every once in a while I uncover it again and give it another listen. I’d convert it to digital and link to it here if it had ever actually existed. I usually only remember it when I’m dreaming, and spend a while in the dream trying to remember if it was real or not, and usually in the dream it turns out it was, which it isn’t.

Probably. I think. I’m pretty sure.

Games are so like dreams. I think that’s why I like them– games, that is, though I suppose it could be the other way around. We’re in these profoundly cold and uncomfortable seeming places but are still wrapped in the comfort of a warm blanket in a dark room, and external sounds bleed in around the edges of our experiences to influence them in uncanny ways. Microwave beeps and shuffling and coughing and television watched in the next room sneaks into our games the way the howling of coyotes in the desert found its way into my dreams when I was camping with my dad as a kid, a weird kind of background music to whatever drama unfolds therein. The big difference, I suppose, is that because dreams are so malleable they tend to end up embracing all of these influences and integrating them. I can’t remember what form the howling took in my dream– it was a long and strange story, and the feeling of waking up to realize that the sound of my dream had followed me into the tent has stuck with me, but I can’t remember the story itself.

Some people will tell you the story doesn’t matter if you can’t remember it, but we forget everything eventually. Even if the story we are told or tell ourselves is immediately soaked into our fabric without a trace, it’s still there, it has still changed our composition, and whatever we compose in the future will bear its traces, if only ever so slightly.

Some people will tell you that a bad story is worse than no story. They are half-right. A bad story is better than no story at all, but just as nature abhors a vacuum the human mind abhors an absence of narrative. Given a world with no story, well, we will tell a story to fill it. Given a series of unconnected experiences, we will thread them together.

The holes in the story we build around the experience will be filled by the howls of coyotes, the muttering and laughter of our friends and family, the flushing of toilets and the subtle rhythm of our own heartbeats. And, though we may misplace the thread we use to bind these experiences together, it’s always there to be found, in the corner of an abandoned library you visit once a year when you dream about your grandparents’ house– no, not the real one, the one that’s bigger and stranger, the one that extends into five dimensions, the one where the wallpaper climbs into the ceiling and out through the sky and you are worried that if you touch the walls for too long you might be washed up it and out into space like a spider down a shower drain. That one.

It’s there.

If we shadows have offended,
Think but this, and all is mended,
That you have but slumbered here
While these visions did appear.
And this weak and idle theme,
No more yielding but a dream


Art in general and games in particular have an uncomfortable relationship with discomfort. People don’t like being made uncomfortable– at least, not when it’s called by that name. Really, though, discomfort tends to come hand-in-hand with novelty. Anything that’s new and unfamiliar makes people uncomfortable, if only slightly, until they have a chance to get used to it and come to understand it. And, following that thread, novelty comes along with learning: You’re only really learning if you’re processing new information, even if it’s just an extra tiny facet of something you knew, each facet contributes something to the whole. And, as Raph Koster argues convincingly in his book A Theory of Fun, the fundamental activity that makes most games fun is learning.
Thus, to some degree at least, games are designed to make us uncomfortable.

This isn’t really that counter-intuitive. Much game design literature talks about how to challenge the player without frustrating them– largely a matter of the degree of challenge and how it is presented. It is considered desirable, though, to try to minimize frustration, to minimize discomfort, in particular that frustration and discomfort which isn’t a direct result of the challenges the game proffers– or, more precisely, the challenges the designer meant for it to proffer.

Read More


Ugh, what a week. Like walking through a sea of mud.

Not to imply that I haven’t gotten anything done. I’ve been working fairly consistently all week long, and in the moment it always feels like I’m making good progress, but the moment I stop working all of the individual tasks I’ve been working on melt together in my mind into one undifferentiated mass of ‘work’. It makes it very difficult to say what I’ve achieved. Fortunately a side effect of this, particularly in combination with weekly DevBlogs, is to provide a solid reminder to do weekly commits of my code, as I look through the visual comparison to see what I’ve done so I can keep the world apprised as to my progress.

Maybe there’s another reason we see so many games about amnesia.

Nevertheless, I think that the cached drawing stuff I’ve been working on for the last couple of weeks is more or less complete. There’s probably still a bug or two left to bite me in the ass sometime over the next couple of months, but I’ll take care of that when it happens. I’m just getting reallll sick of working on this component now. Hopefully just a few days will be all it takes to update the particle code to use this stuff– remember, the particle code that started me down this rabbit hole? Yeah. Ugh.

The good news is: The new code is cleaner, the new code is easier to use. There’s some nasty hairy stuff in there, but it’s all hidden in the guts of the code, and as long as no unforeseen bugs make an appearance the overall usability of this stuff should be pretty great. Since this is code I’m going to be using over and over again for basically every visual element of this project (and quite possibly future projects as well), that is a good thing.

I’m pretty sure this all was time well spent, I’m just really tired right now and I wish it had taken less time than it did. Oh well.