My First Time
On Thursday Alex pointed out something funny that had happened to the high score board:
The large text was a link to this blog post. How had they figured out the servlet’s address and the parameters that need to be passed in?! Then I saw this:
<!-- <p>Enter your high score:</p> <form action="/sign" method="post"> <div> Name: <input type="text" name="name" /> <br /> Score: <input type="text" name="score" /> </div> <div><input type="submit" value="Post Score" /></div> </form> -->
I had forgotten to delete some test code that I had written! The code provided an an input for name and score, and then you could submit it. I was handing people a method for inserting high scores to the board.
I deleted the large post, giving the person some credit at the bottom of the scoreboard. I’m starting to think that a lot of the other highest scores were created that way, but no one else pointed out the flaw. I’m considering a move to weekly high scores so that it’s more competitive, and I don’t feel bad about deleting the current high scores. I’m going to have a talk with Alex about it, and try to whip up some GQL to make the whole process automated.
AppEngine High Score Page
I finished the high score site for Avalanche a couple days ago. It’s built on google appengine, and integrates really nicely with the extension.
First I created the high score app, which you can view here. Google’s tutorials for AppEngine are quite nice. They guide you through creating a guestbook that people can sign using their google account. From there I changed several things: instead of taking a guestbook post, the app accepts a score; instead of having users log in with their google account, the player can enter any name he likes (arcade style, without the three character restriction). I then changed the default page to look more scoreboard like, displaying the top 20 scores in descending order.
The most difficult part was getting the extension to integrate with the app. The first step was to add permissions to the extension:
"permissions": [
"http://avalanchescores.appspot.com/"
]
From there, interaction with the app was done through an XMLHttpRequest:
function submitScore() {
var highScore = document.getElementById("HighScore").innerHTML;
var name = document.getElementById("name").value;
var url = "http://avalanchescores.appspot.com/addscore";
var parameters = "score=" + highScore + "&name=" + name;
var req = new XMLHttpRequest();
req.open("POST", url, true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send(parameters);
window.open("http://avalanchescores.appspot.com/","High scores!","");
}
The XMLHttpRequest just sends the parameters to the servlet’s location, and the java code that handles new scores takes care of the rest. Overall I was really impressed with AppEngine. Setup was extremely easy, especially once I successfully installed the Eclipse plugin. There’s even a neat dashboard with usage statistics that make me feel like Zero Cool from Hackers.
Code for Avalanche itself is now on github, which also works like a charm.
I will be leaving for Germany on Friday, where I will be studying abroad until mid-August, so I probably won’t be updating much.
My Favorite Indie Games
I was going to write short summaries of these games, but I think it’s really best if you go play them. The unifying characteristic of these games is that they are short (with the exception of Braid), beautiful, and convey a narrative that wouldn’t be as effectively delivered in any other medium. These games really affected how I think about video games, and what can be done with them.
Heavy Rain
The last time I heard of Heavy Rain was when it was first shown, as we were first entering the current generation of hardware. Today, Jerry Holkins from Penny-Arcade linked to two videos where the game’s executive producer, Guillaume de Fondaumière, talked about the game. Here’s a great quote:
I think, personally, that game overs are a thing of the past. Heavy Rain is not about failing or succeeding, Heavy Rain is about the journey… not to replay, but to continue the experience, whatever [the player's] choices… The four playable characters can be in great danger sometimes, and sometimes they can die. But when you lose a character, this is an information that the game takes on board, but the story continues… You bear the consequences of your actions. I think, personally, that game overs are a thing of the past. Heavy Rain isnot about failing or succeeding, Heavy Rain is about the journey… not to replay, but to continue the experience, whatever [the player's] choices… The four playable characters can be in great danger sometimes, and sometimes they can die. But when you lose a character, this is an information that the game takeson board, but the story continues… You bear the consequences of your actions.
In Heavy Rain, the player is in control second to second, he tells the story through his actions. All this is done in a very fluid, seamless way, with no cut scenes, no big flashing sign to make decisions, and this is what makes the game really unique… Heavy Rain is not a videogame anymore in my mind, because it breaks with most of the traditional paradigms, but it’s fully interactive.
This shit didn’t come from the marketing department, I’ll tell you that much. This guy is a fucking wreck – he’s barely making it through the day. The clutch of the creative process, as experienced by Cage, is indistinguishable from a mental illness. Heavy Rain is a symptom of his condition, and he is expelling it from his mind piece by piece in an effort to save his own life.






