Author: Sarah Northway

  • Why am I doing this?

    So I have been ruminating on this really weird question. Why am I writing/hosting/keeping up this game?

    It’s a weird question because I totally love it. I loved writing it (mostly) and I love that people play it. And I’ve gotten all these great compliments which I love. Some favorite quotes: “I play a lot of online games and this is the best one I have ever played” (in this case online means flash), and “this might be the perfect game”. These aren’t even things people have said to me. They are reviews and comments on random blogs.

    I love everything about it. But damn it it’s exhausting. Sarah accused me of acting bi-polar today because I’ll be all up and happy and then alternately down and doomfull. It’s not the work. The only real work I’ve done has been hanging out on the forums and doing a few bug fixes. It’s the just the mental energy of having this amazing thing in the world that people seem to love.

    It’s like I have a duty to think about it constantly. Like I am morally obligated to make it more and more popular. Like it is wrong to just sit on my hands and see what happens. I should be doing user studies and improving the hits to player conversion. I should be pimping it on flash sites and making deals with portals. I should write embedable solutions to leverage the power of social networking sites. gah, so much to do. The list is literally endless.

    Every time I manage to calm down for a minute something awesome happens. Like people have started buying the game. Not in droves but enough that we’ll have some scratch to spread around to the various people who made this possible. And every time I get a little email pop-up saying someone else has bought it it’s like a tiny injection of heroin.

    I mean I’m a professional programmer so the idea of being paid to write code is not novel. But being so close to the spigot is kind of like staring into the sun. That little pop-up just meant some stranger, that I have never met, decided something I made was worth actual money.

    It’s an experience I’ve never had before and I’m just not sure how to handle it. It’s like I can feel the game changing my future but I can’t tell in what way it’s changing. Will I end up in flash development? Corporate website flash? Game flash? Will it change nothing? I do know I like it. I guess I’ll just stay strapped to the roller-coaster and see where it’s going.

  • Traffic

    Just a quick post to keep everyone who’s interested in the game updated on what’s goin on.

    Crazyness is going on.

    StumbledUpon.com stumbled upon the game on friday to the tune of 3000 hits. Which got me some more blog links. Then, sometime while I was out of the house sturday, StumbleUpon came back with a vengence and funneled 20,000 people into the game. Which was a shock. The last three days have all seen an order of magnitude increase in traffic. That’s three orders of magnitude in three days and five orders of magnitude in the six days since we went up.

    It’s been up for only 6 days! So here’s something interesting. The path to 20,000 hits:

    Day 1&2:

    First Andy put a post up on his blog, v-log, magazine.
    Our first piece of non-friend press was a mostly plagerized post on a small Puzzle Blog

    At this point I was getting 10s of visitors a day.

    Day 3&4

    Then a flash games site, Coin Castle, put up a link with a screen-shot.

    This jumped the traffic up to 300 hits a day.

    Day 5

    Flash Game Blogs, another flash games site, posted a short review. It was positive but lamented the 10$ price for getting the full game. Which jumped the traffic up again. This also led to a brief StumbleUpon burst of 3000 hits.

    Day 6

    I left the house and all was well, we were on pace to break the 3000 barrier. Mostly with the flash games site traffic (a few more sites have linked us).

    When I got home around 10pm I found that StumbleUpon had come back and packed the server to the brim. Which was great. But it also kind of destroyed the server. People were still playing but server requests, like saving and loading levels, were slow and spotty.

    Something like 400% of the bandwidth is Jame’s great music. So I had to take out the 7meg main-loop and replace it with the short 600k menu-loop. Which was an order of magnitued decrease in bandwidth usage. And allayed the responsivness problems.

    Amazon runs a sort of data-warehouse. Their calculator recons the music was going to cost 500$ a month to host. They aren’t the cheapest around but if anyone knows a cheap place to store a few terrabyres of upstream traffic a month let me know (note that those ‘unlimited bandwidth’ plans are bs).

    So I have no idea what’s next. I mean we’re on day seven of the ‘soft launch’ and have 6 thousand hits by 10am. Mostly from StumbleUpon. I don’t know if the StumbleUpon traffic is going to peter out or ramp up again. God help us if we get dugg or something.

    I will say that we are far from making a fortune off of this traffic. We couldn’t pay any significant hosting bills with the money comming in (although there have been a few purchases).

    So, my ass is strapped to this roller-coaster. I guess we’ll see what happens.

  • Technic Wars

    Here is the next in my series of articles about Fantastic Contraption, the physics puzzle game I wrote.

    Today I’ll digress from the ranting and wander back into design.

    I want to talk about Technic Lego vs. Star Wars Lego.

    Specifically, why Fantastic Contraption is Technics and The Incredible Machine is Star Wars.

    See Star Wars Lego has all these pieces that are specific things.
    Like one piece might be the front nose-panel of an Y-Wing. It’s a
    weird shape that couldn’t really be made out of other lego pieces.
    And when you pick it up you pretty much have to make a Y-Wing like
    thing out of it.

    Thats like The Incredible Machine. And some other games in the
    build-a-thing-to-do-something genre. The conveyor belts convey.
    That’s pretty much all they do. After you master conveying you’ve
    pretty much got them sorted out. So the fun mostly comes from
    learning to use new things. Every couple of levels you get a new toy:
    springs, rockets, hamsters, whatever. And the fun comes in figuring
    out what this new thing does. How it hooks up to the conveyor belts
    you already have, finding what hole in functionality it fills. And
    that is a fun thing to do. So the The Incredible Machine, and other
    Star Wars Lego games are very fun.

    Technic Lego is a little different. There are no windsheilds or guns
    or landing-gears or what have you. It is all basic building blocks.
    So making a Y-Wing is much harder and it isn’t going to look anywhere
    near as good. And you aren’t presented with a Y-Wing nose panel and
    challenged to make something out of it. But technics has a different
    kind of raw appeal to it. That of pure contruction. Because you
    aren’t guided to certain solutions by your tools you make crazy
    imaginative things. The feeling of creation is more raw because you
    started with less.

    Fantastic Contraption is like that. After the first few tutorial
    levels you have to progress beyond the material’s obvious functions.
    Like while wheels are still for rolling you discover that wheels are
    also for building catapults out
    of. Or while sticks are still for carrying you can use them as legs
    to make a walker.
    So each level can be solved any number of ways and players come up
    with radically different solutions to the same problem.

    I obviously played with Technic Lego alot more when I was a
    kid/undergrad than I did with Star Wars Lego (or the space set or
    whatever it is we had back before lego did cross-over marketing).
    Fantastic Contraption is a direct result of that. It is the
    tinker-toy simplicity that allows the player to generate complexity.
    It is the blank canvas that challenges you to create.

    So that’s why Fantastic Contraption doesn’t have rockets or springs or
    hamsters. And you can’t resize the wheels or turn gravity side-ways.
    Those would be distractions from the task at hand.

    Although I would like to breifly mention Armadillo Run as a game that
    has its cake and eats it too. It is all about raw imaginative
    Technics energy but it still doles out access to a few Star Wars
    pieces as the game progresses. And in doing so becomes one of the
    best games ever made.

  • File->New->Menu.as

    Alright, this is the second article in my series of articles about writing Fantastic Contraption.

    This one is about menu development. And how much work it is. And how much work it continues to be.

    Fantastic Contraption took me about four months to write. And fully half of that was spent on the menus. I think I spent more time on my mouse-pointer code than most flash authors spend on their games.

    I have written a fair number of games before. But none of them have ever been fit for human consumption. And I think in general what makes a game fit or unfit for release to the public is the menu system and the interface. I guess this is trivially true, since you can have a game with no menu but not a menu with no game.

    The problem for me is that the importance I put in the menu is way out of whack with the importance the user puts in it. I don’t care at all about it and wish the issue would just go away. The user sees it as an integral part. They first use it to judge the quality and theme of your game. And then they require it to smoothly and painlessly allow them to go where they want to go and do what they want to do.

    At the heart of the matter is that every user starts out as a novice and has to learn to use your game. While, as the author, you are a power-user from day one. You think people should just use the command-line interface like you do.

    But they don’t. So you have to spend an incredible amount of time exposing your features to the user in an intuitive, appleaing way.

    Let me give you an example of how much work this is. Lets take the Main Menu as an example. The Main Menu lets you you select what level you want to play. What is required to make the Main Menu? (you can check out the menu here)

    Well first off you need graphics. God help you if you aren’t artistic or don’t have a brilliantly artisitc fiancée. If your graphics are suck noone is even going to try your briliant game.

    The Main Menu has a list of levels. Which is (currently) retrieved from the server when the game loads. So if a user jumps to the main menu they will breifly (or not so breifly depending on the server-load) see an empty field with no level-buttons. To hide this we need a fancy animation that covers the loading time. In Fantastic Contraption this is a screen of bubbles. But then there are all sorts of timing issues you have to coordinate. When menus get hidden, shown and when the bubbles are comming, going, or holding solid.

    Now you need buttons. The life-blood of the menu. This requires more graphics. But it also requires a system. Fantastic Contraption has something like 100 buttons. You aren’t going to manage this many buttons without your own event types and a solid system to manage the events they throw. Plus you need to handle both the buttons and the mouse changing when the user mouses-over the buttons. Adobe makes this akward with their mostly-but-but-quite-working tools for including vector graphics in command-line projects.

    On the main menu most of the buttons trigger either a new menu to appear or a level to load. But these new menus will open new menus of their own, and will have buttons that go back to the previous menu. So now you need a menu management system with a stack that new menus get added to and removed from as users go back and forth.

    Currently there are two pages of levels. So you have to add paging buttons that route a request back to the server. Which has to be written to page the data properly.

    And there are menus that don’t take you away from the page but pop-up over the existing menu. Like the log-in menu. Most menus don’t have to talk to eachother but the log-in menu has to tell the main menu when a user logs in. So that the main menu can put their name in the corner. So your menu system has to have a way to relay information between menus but not break if the user is logging in somewhere that isn’t the main menu (like the save game menu).

    And just a ton of other look and feel problems. Like getting the font right and the text to fit in the space provided and the hitmaps for the buttons to cover the right amount of space and other buttons that appear when a level is finished and the mute button and fitting the “buy this game, please!” button in but making everything look natural when it’s gone and trying to make everything responsive and why won’t the mouse pointer change when it’s over the buy button!?

    And that’s the simplest menu in the game.

    When you start out authoring a game you’re thinking “this is going to be the coolest game ever!” not “this is going to have an intuitive, trouble-free menu system!”. But find the will people. Because menus are a must.

    I’d also like to quickly thank Dan Ukryn for giving me some advice in my foray into menu writing.

  • Form vs. Function

    I’m thinking about writing regularly about my experiences writing Amazing Contraption. This may start out as the first of a series of articles about the game, it’s design, the writing, and the release of it. Or it may just be one very boring self-indulgence. We’ll see.

    Anyway the topic of today: Prioritizing functionality over design

    Sometimes it’s hard to make things work they way you want them to. Sometimes you cave and do it the easy way. Sometimes you stick it out. I have always believed that this is a major difference between things that are really good and things that kind of suck. Things that are good are made be people who though it out.

    So I want to talk about an example of when I didn’t tough it out in Fantastic Contraption and why I think I got away with it.

    This is about wheels and sticks. If you want to understand what I’m talking about then go play Fantastic Contraption for a minute. It’s free, suck it up.

    So now that you are familiar with wheels and sticks you know that wheels spin when you attach a stick to them. But they don’t, really. The wheel and the stick both turn in relation to each other. The wheel turns the stick just as much as the stick turns the wheel. So you could use the wheel to turn the stick! Bet you didn’t think about that.

    And it’s a good thing you didn’t think about that because when you try to use wheels to spin sticks the whole house of cards comes tumbling down.

    See you could connect two, three, or three hundred sticks to one wheel. And not all of them can spin. Only one of them can. If more than one did then crazyness would ensue. Trust me it would, no they would not all just synchronously spin in happyness, what if you attached one stick to an anchor? Then the other ones would spin twice as fast! Not a good thing.

    But what’s the alternative? Pick a random stick and make that spin? What a suck solution.

    It’s also the solution I went with. When you attach more than one rod to a wheel only one of them torques against the wheel. The others just limply swing in the breeze. It took me forever to even try this solution because I thought it would be counter-intuitive and would drive people nuts. I naturally assumed that any break from real-world physics would be jarring. But I was completely wrong. No one notices. You didn’t notice (yes, I know _you_ noticed, how clever you are, but did it hurt your gameplay experience?).

    And I think noone notices because in our world wheels spin. Mabey there’s a country out there where cars are chunks of metals wildly spinning around stationary rubber wheels. But in the rest of the world we expect the wheel to start spinning. We don’t scrutinize the forces behind it. We just take for granted that wheels spin. So it doesn’t matter what stick the wheel is attached to. The sticks are just supporting characters.

    The lesson here is: think like a human. They take mental shortcuts and sometimes you can get away with taking the same shortcuts in your code.