Click here to play my game.
For my hangman assignment, “Saving Captive Kenny,” I based my game around the episodic and comic deaths of Kenny McCormick, one of the main characters in Trey Parker’s animated sitcom South Park.
Since the game mechanics and gameplay of our assignment revolved around hangman, I chose to use Kenny as an illustration of user feedback when they make a letter guess and get it wrong. Here, Kenny is stuck beneath a raised guillotine (for obvious character reasons) and the player must guess the hidden words in order to save him from the falling guillotine. But every time the user guesses a wrong letter, the guillotine will fall a couple inches towards the helpless boy. When the guillotine does end up falling on Kenny, his facial expression changes to a lifeless facial expression. This entire process functions as a gauge and feedback system that constantly provides information and encourages the user to make adjustments to his/her behavior in order to save Kenny (and improve their performance in the game). All this also reminds me of chapter 22 from Stephen Anderson’s Seductive Interactive Design, where he discusses the concept of “personal informatics” and how they provide users with continuous “status checks” and guide self-correcting behavior.
In addition, I also designed the game to fade the letter buttons when clicked so that it conforms with some of the criteria suggested in Adrienne and Sarah Kahn’s Showcase of Creative Navigation Menus: Good and Bad Examples. In this, the fading of the button adheres to their “not making users think” suggestion, which helps guide users to click on non-faded buttons. I also decided to take this further by hiding all the letter options after the game has ended (e.g. when Kenny dies) so that players can easily navigate the “revive Kenny” button and restart the game.
During my programming sessions, I came across numerous programming errors. But the errors which stood out mainly involved creating the secret word check functions for the guesses (letter button clicks) made as well as removing secret words from the dictionary that have already been randomly chosen.
At first, I tried constructing my letter check function with if() and else() statements within for() loops, but that didn’t turn out as I had hoped because I wasn’t able to think of a way to include other conditions that check for a “secret word completion” or “game over” (using up five guesses on a secret word). But I eventually tried using nested if() statements without else() or elseif() statements to guide the for() loops to check for the correct letter before checking for the completed secret word.
The other major difficulty I had was trying to think of a way to get rid of arrays so that my math.random() function would actually be inputting each element once from the dictionary array. Since I do not quite recall having reviewed this method, I went on a searching spree to remove array elements. Fortunately, I found this really neat site, which provides a vast forum where programmers offer simple and easy-to-follow examples and advice regarding Adobe Flash and other programming software. Through this, I was able to use the splice method to remove the elements that are randomly chosen each time the game runs my init() function.
Interestingly, while I was programming my game, I was able to better understand what Douglas Rushkoff really meant when he states in his book Program or Be Programmed: Ten Commands for a Digital Age that digital technology are biased entities. This idea dawned upon me while I was trying to work through a series of coding error messages in Adobe Flash. This was because the assignment required us to create a code that relays its players with feedback and during this creating process, we as programmers ran into coding errors, also another form of feedback. This insight allowed me to think about the multiple layers there are in programming code and how all of them are developed with their own set of rules and purpose. Hence, I could see how it is increasingly necessary to understand digital technology from the programmer’s perspective rather than an user’s viewpoint.
In the end, I was able to add a South Park title/start page and include a start button that begins the hangman game. In this, I motion-tweened a UFO to hover above Kenny to suggest his impending doom. In terms of improving the game, I added more animation and movements to Kenny so that there is more depth to the user’s experienced feedback so that they can better gauge how they are doing in the game. For instance, using what I learned from our first animation assignment, I designed Kenny to be moving (i.e. waving his arms and shutting his eyes) most of the time so that users can enjoy more interactivity and become more sensitive to the user’s decisions. Moreover, this “interactivity” of Kenny functions to generate curiosity regarding the consequences of guessing the wrong letter. Hence, this improvement encourages the “information gap theory” as discussed in the Anderson readings, which generates a curiosity for the unknown (i.e. the information gap of what will happen to Kenny if the correct/incorrect letter is guessed) and encourages users to explore and satisfy that gap by interacting with the game and make letter guesses.
In terms of color and message box typeface choice, I tried to keep everything very consistent to the South Park color themes, which make an abundant use of “flat” (no fades), rough visual design, and relative contrast colors.
Overall, this assignment was a great way for us to better understand the course readings through the application of programming and learn new skills.