ReWork 2

Posted in thoughts on March 27th, 2010 by Travis – Be the first to comment

A few days ago I was able to to attend a presentation by Jason Fried (something about building a world-class business). For the most part, his speech boiled down to the key items outlined inside of the book ReWork (although the majority of the time was Q&A). Perhaps my favorite piece of advice he offered was this:

Useful > innovative: Oftentimes we just want to make something cool. But, if no one wants to use it, its pretty much worthless. Building something that people actually will want to use will naturally lead to users (so long as they can learn about your product). The solution doesn’t have to be amazing. It just has to work as intended to solve a problem for that user.

It was interesting to see Jason in person, as before he was the man behind the screen; he was the guy that wrote inspiring messages that just may have been a robot. In person he was very down-to-earth and laid back. If you ever get a chance to hear him speak, go for it. You won’t regret it.

Beginner Flash Debugging

Posted in thoughts on March 24th, 2010 by Travis – Be the first to comment

Here are some things that my students repeatedly run into that may help you as you debug your code:

1. Trace! The trace function is your best friend. Calling this function will output any argument to it to the output panel. Thus trace(“asdf”) will put out asdf to the output panel.

Or, more complicatedly,
var mymc:MovieClip = new MovieClip();
trace(mymc);

will trace something like “[object : MovieClip]”

You can use the trace action to determine if certain functions are being reached, and if certain variables contain the data you want.

2. The output panel.
The output panel is that big white thing at the bottom of Flash CS4.Whenever you hit ctrl+enter (you’re using hotkeys, right?), keep and eye open for this output panel. If it has an error, fix it before moving on.

3. Comment out. Have a piece of code that is throwing an error, but can’t pinpoint it? Comment out blocks of code until it works again using eith the single-line comment “//” or the multi-line comment “/* commented_code*/”. This is extremely helpful.

4. Null objects. If you get an error that says “Cannot access attribute or property of a null object” … it means that a variable before a “.” operator (that you think has real data in it) does not exist in Flash memory. Trace out anything you see with a “.” after it to see if it is null, or comment out lines to pinpoint the exact offender.

5. Keyframes and names. Have some item you need to reference with actionscript that exists across multiple frames? Is it not working for you? Make sure that you have it named the same on every single keyframe, else your actions will not work with the button.

6. Watch your frames. When creating a Flash file, make enough frames for the objects to be visible across the timeline, but no more than needed. If you have a file that repeatedly hits the end of the timeline and restarts, you may begin to get some weird errors.

These are some of the most common problems that my students encounter. Hopefully this speeds you up when debugging your first few problems. Happy coding.

ReWork

Posted in thoughts on March 21st, 2010 by Travis – Be the first to comment

Yesterday I received ReWork in the mail, after a week of anxiously waiting for Amazon’s super saver shipping to get to me. I was excited to read what 37signals had to say to the general business world, mostly because I had immensely enjoyed their previous book, Getting Real.
The book reads fast. And its not just because they ditch a formal tone and use simple and digestible words, but also because every chapter (about 1-3 pages) is preceded by an illustration of the principle that chapter discusses. Thus, about one-third of the book or so is pictures. It was a nice touch, although I wonder if there is a stronger rationale behind their use of sketches beyond just aesthetics.
The content of the book was great, but many of the messages felt like simple translations from Getting Real. There were some new points added in, and a few that were removed because they didn’t target a business audience (it doesn’t make sense to talk about design when you’re not writing for designers). Interestingly, their essays sometimes contradict themselves (especially on the subject of failure).
It would be nice to see some numbers on the success rate of those who adopt their ideas (Perhaps they are gathering those as I write… the end of the book asks for readers to send their responses to a special email related to the book). ReWork is prefaced with the authors stating that they have followed all of these rules detailed in the book, and that many people consider them a ‘fluke’. Perhaps they are a fluke. Clearly, this company has some of the greatest talent, as not every software company has written books, gained a huge following of fans, or had a hand in creating such a hit as Ruby on Rails. Its one thing to have a good idea, quite another to actually carry through on it, and I wonder if perhaps the rules are only applicable to certain exceptional individuals.
Overall, the book is great. It proposes a radical way to think about business, and serves as a great piece of inspiration to get out there and be an agent of change. I would recommend that if anyone is interested in it, that they first read Getting Real, which contains many of the same ideas as ReWork and can be read online for free. Then, if they like what they have read, go ahead and pick up ReWork, as it takes a wider perspective, and acts as a second jolt of inspiration for the reader.

One twist

Posted in thoughts on January 25th, 2010 by Travis – Be the first to comment

Want people to remember your game? Include one major plot twist, and make sure it is ‘epic’. This is the twist that will sell your game. Think of that one memorable moment in Final Fantasy 7, Knights of the Old Republic, or Bioshock. Those are the moments that the people ‘in the know’ will be talking about that will hook the other players into wanting to play your game. It is viral marketing at its best. Anything more than one major twist, and your game becomes an overly-scripted episode of Law & Order. The impact of your one twist will be lessened, and the discussion will become dulled and less focused.

Shared Spaces

Posted in thoughts on January 23rd, 2010 by Travis – 1 Comment

Shared space concepts

Shared space is an important concept to any game developer. Let me give you an example of a great shared space that has enthralled thousands for countless years:

(Photo via dlkinney on Flickr (does anyone else hate that flikr is only missing one vowel?))

Chess, checkers, foozeball, and super smash brothers melee are all games that are played within a shared space. At any given time all players can reference the space and assume it to be the same as what the other player sees. In the case of competitive games, this can even the playing field. While not always the preferred way of playing a game (how boring would RTS games be if you didn’t have to do some exploring to find the best winning paths?) it certainly is a factor that should be considered. The more data and the faster one can create a whole out of that data, the faster one can create counter-strategies.

    However, I love shared spaces for another reason. They create a bond between those who shared them, whether they be enemies, friends, or something in-between. Years ago I used to play a game called Phantasy Star Online. The creators of the Gamecube version had the clarity of thought to realize that some gamers may not have access to the internet and created a split-screen multiplayer mode. My friends and I wasted hours in this mode, killing countless badniks in pursuit of rare items. Later I would see the same power while I lived in the dorms during my undergrad career. Clusters of friends gathered around screens, playing Halo and (my favorite) Smash Brothers Melee. Each of these groups created a sub community based entirely around their shared space that was strengthened by the need to gather in one place to play.

    Shared spaces can create a strong sense of community and allow from great social gameplay. World of Warcraft, a game that is slowly reaching ubiquity, is a great example. Players of this game join guilds, the best of which can become like second families for them. How great the power of shared space, even when great distances separate the players they can still form strong social bonds by gathering together in a digital space they can all share.

Shared space use

    I have been disappointed in the current block of ‘social’ games precisely because of their lack of shared space. Instead, they appear to have bought into the common philosophy that a ‘social’ application is anything that contacts a user’s friends in order to advertise itself. This type of thought is endemic across the web, and is rightfully becoming considered a type of “Web 2.0″ spam. As time progresses, my hope is that the big developers, or smaller, more innovative startups realize the power of using social networks to create shared games between friends.

    Let me give you an example. It may not be the best game, but at least it will roughly illustrate my ideas.

Ad for FarmVille, with its iconic cartoon style.

    One of the first social games to really catch my attention was a game called FarmVille (or maybe it was its brother, FarmTown?). I was excited about it at first. The name indicated that it would play something like the addicting game, Harvest Moon. I certainly wouldn’t mind sharing a farm town with my friends. However, the entire game was instead crafted to require frequent visits and annoying amounts of inviting friends to play. A great marketing move, that certainly paid off for FarmVille creator Zynga. But the end result is a number of separate farms that create little additional community between users aside from some conversations on ‘how their farm is going’.

    Instead, I would create a seamless farm where cooperation is actually key to playing the game. As users added more friends to their farm world, they would be able to cooperate to buy cows, equipment, and seeds. If a user was having a rough day, a friend could log in and do the work needed on their farm in addition to their own. Users could compete by encroaching on their friend’s farm, perhaps throwing chickens over the fence to feed on their friend’s farm. Developing more land for farming would require a significant amount of work. The more players who would plow, weed, and chop, the faster a region could be prepared for farming. And, if any farm region was producing too much of one crop, the crop price would decrease due to supply & demand. In this way, players would not talk with their neighbors about ‘their’ farm. They would talk and strategize about ‘our’ region.

    A shared space is a place where all players own a part of it and play within it. It is inherently social, and is in many ways the basis of our social life. In reality, those who do not want to interact with our social life will remove themselves from our space. The best social games are built upon these shared spaces. As time progresses, I hope to see more web-based games where I can share a space with friends that isn’t a fighter, FPS, or strategy game.