Categories
Uncategorized

Video games should be more like albums.

At least, that’s how we should perceive them. The comparison to films is tired and no longer relevant. Portal signals a break from long-and-laborious gameplay. Now, the solid gameplay experience should be likened to a well-composed music album.

This isn’t just a new perspective for consumers and critics; developers should reconsider how they approach the process of game design. Games should become, in a word, digestable. Short, succinct, sweet.

Everyday Shooter is perhaps the most literal interpretation of this new perspective. Because it’s based around the game-as-album concept, it’s short, with its length dictated by the music. However, like an album, the game is replayable, and players are able — and willing — to re-live the experience again and again.

Of course, unlike a music album, the experience changes each time, as the game’s intrinsic interactivity — and elementary chaos theory — dictate that no two playthroughs will ever be the same. It’s this guarantee that should draw players in, and justifies short length over epic storytelling.

In short, playing a good game is tantamount to listening to a good album. And good albums don’t last 30 hours. They usually don’t even max out the space on a CD. They don’t have to.

I’ve felt that there’s a strong connection between music and video games for some time, which might be what draws me so strongly to game design. I’ll never be a musician (despite those ever-present yearnings), but creating a game that plays like an album seems like a good compromise. So I’m going to start reviewing my favorite albums on this site. I’m no John Cusack in High Fidelity, but there is something compelling about a well-structured album, and I think games can tap into that. I think they’ve already begun to.

Categories
Uncategorized

Game design for Facebook is a very different beast.

Industry veteran Brenda Brathwaite has taken a keen interest in Facebook, and its role as a nascent platform for game development. Because of the social network built into the site, and the ability for any app to tap into that network, Facebook is most definitely not familiar territory in terms of game design, something which only a few developers have realized as of yet.

As I see it, games on Facebook exist in three distinct categories, which I’m calling “flat”, “shallow”, and “deep”. These terms describe the degree to which each game takes advantage of the Facebook social network, and do not reflect the quality of each game.

Flat games exist on Facebook, but they might as well exist anywhere else. They’re almost always single-player, and do not involve the available social network through the gameplay. (I want to stress “through the gameplay,” as many of these apps do take advantage of the network to create leaderboards and share high-scores, but this does not affect how the core game operates). Examples are popular apps like Jetman, Tower Bloxx, and the copious arcade compilation apps that let users play classics like Snake and Tetris. Sometimes, these apps are simply Flash applications ported to Facebook.

Shallow games do utilize the social network in gameplay, but usually to a fairly limited degree. Examples of this include Texas Hold-Em Poker, and the ever-so-excellent Scrabulous application, both of which use your friend list to organize potential opponents. Scrabulous was the first app I encountered that made smart use of Facebook, turning Scrabble into a divine play-by-mail-esque experience. Still, the gameplay is largely unaffected by the network.

Finally, deep games take more direct advantage of Facebook’s features, building core mechanics around social networks, and using additional methods to incorporate the whole of Facebook into the gameplay. The best example of this is the Werewolves/Vampires/Zombies application(s) which took the gameplay onto Facebook’s walls and PMs, as players lured unsuspecting friends in order to increase their power. A more recent addition to the deep end is area/code‘s Parking Wars, which has users leaving cars on the streets of their friends in a strange parking-oriented version of “chicken.” Both games re-imagined the social network as something else (be it food or free parking), and built gameplay around this fiction.

Both games also offer incentives for inviting more friends to play, which contributes to their fast-growing popularity. Brenda goes more in-depth on the dark-side of Facebook propagation, but I would certainly be interested in exploring non-invasive means of designing deep Facebook games. Expect at least one more post on this topic.

Categories
Uncategorized

The new Sonic RPG: ridiculous name, ridiculously awesome artwork

It’s called Sonic Chronicles: The Dark Brotherhood. Yeah, I know, but check out the art style:

Sonic’s never looked hotter. Image via Jeux France. Name via GayGamer.

Categories
Uncategorized

processingObjective.003: digital prototype

Create a functional digital prototype of a board game concept. Departing from the graphic-focused code of the previous two objectives, this objective will focus on text display and variables, in order to test and tweak possible mechanics of an upcoming board game.

Categories
Uncategorized

New Year’s Resolutions:

  • teach myself Processing.
  • update my resume.
  • learn ActionScript.
  • find a job in the game industry.
  • blog more often.

Happy Holidays to all, and Happy New Years, as well. I’m off to Italy tomorrow for vacation; see you all in 2008.

New Year's Resolutions:

  • teach myself Processing.
  • update my resume.
  • learn ActionScript.
  • find a job in the game industry.
  • blog more often.

Happy Holidays to all, and Happy New Years, as well. I’m off to Italy tomorrow for vacation; see you all in 2008.

Categories
Uncategorized

processingObjective.002: collision & reaction

Working with the code used in objective001, add a second object to the space. Program the ball to detect collisions with that object, and react accordingly.

Update: Objective complete.

Notes:

  • The image above does not reflect the final version of the sketch.
  • Though not stipulated by the original objective, the second object (or “paddle”) is interactive, and can be controlled with the mouse cursor.
  • Once the applet loads, click it to allow the mouse to interact.
  • Because of the speed at which the cursor moves the paddle, it was possible for the ball to accidentally pass through the paddle while the paddle was in motion, rather than colliding and bouncing off. To circumvent this issue, I instructed the ball to only interact with the paddle while the paddle was black. Moving the paddle now causes it to turn white, and once the paddle has stopped moving it must “cool down” in order to interact with the ball again. A practical solution, but one that has interesting design potential.
  • Additionally, the paddle had to be instructed to remain white while the ball was passing through it, to prevent a bug where the ball would bounce in the interior of the paddle.
  • The background colors are controlled by the position of the paddle, using the same RGB-calculation code written for objective001. This was done to add a little color to the sketch, which was otherwise a bit boring to look at and play with.

processingObjective.002: collision & reaction

Working with the code used in objective001, add a second object to the space. Program the ball to detect collisions with that object, and react accordingly.

Update: Objective complete.

Notes:

  • The image above does not reflect the final version of the sketch.
  • Though not stipulated by the original objective, the second object (or “paddle”) is interactive, and can be controlled with the mouse cursor.
  • Once the applet loads, click it to allow the mouse to interact.
  • Because of the speed at which the cursor moves the paddle, it was possible for the ball to accidentally pass through the paddle while the paddle was in motion, rather than colliding and bouncing off. To circumvent this issue, I instructed the ball to only interact with the paddle while the paddle was black. Moving the paddle now causes it to turn white, and once the paddle has stopped moving it must “cool down” in order to interact with the ball again. A practical solution, but one that has interesting design potential.
  • Additionally, the paddle had to be instructed to remain white while the ball was passing through it, to prevent a bug where the ball would bounce in the interior of the paddle.
  • The background colors are controlled by the position of the paddle, using the same RGB-calculation code written for objective001. This was done to add a little color to the sketch, which was otherwise a bit boring to look at and play with.
Categories
Uncategorized

processingObjective.001: movement & boundaries

Create a space, and a circular object (“ball). Program the ball to move within the space, rebounding off its boundaries when necessary.

Update: Objective complete.

Notes:

  • The x and y positions of the ball determine its RGB values: The x position determines the red value, the y position the green value, and the sum of x and y determines the blue value. Scaling was used to keep values in the range of 0 – 255, and values had to be converted from floating point to integer data types.
  • The pattern created by the ball’s movement is achieved by never redrawing the background during each frame of animation. Had the background color been declared during the draw() function, each frame would have wiped the background clean, showing only the ball’s current position — practical, but less interesting to look at.

processingObjective.001: movement & boundaries

Create a space, and a circular object (“ball). Program the ball to move within the space, rebounding off its boundaries when necessary.

Update: Objective complete.

Notes:

  • The x and y positions of the ball determine its RGB values: The x position determines the red value, the y position the green value, and the sum of x and y determines the blue value. Scaling was used to keep values in the range of 0 – 255, and values had to be converted from floating point to integer data types.
  • The pattern created by the ball’s movement is achieved by never redrawing the background during each frame of animation. Had the background color been declared during the draw() function, each frame would have wiped the background clean, showing only the ball’s current position — practical, but less interesting to look at.