teaching machines

SuperMunchkin (Persist) – Andy Hurd

November 2, 2012 by . Filed under cs491 mobile, fall 2012, postmortems.

Over the past few months, some friends and I have extensively played the card game Munchkin.  In Munchkin, players roam through a dungeon “kicking down doors” to reveal monsters, items, and curses while they accumulate levels and gear to help them defeat ever stronger monsters.  While a player’s current cards in play contain most of the relevant information to determine the outcome of a monster encounter, we always have to keep track of levels by some means.  Currently, there seem to be two main apps that involve munchkin on the market.  There is one that was released by the makes of the game which sounds interesting, but costs five dollars.  Another, called “Munchkin Counter” is free, intuitive, and visually appealing, but has one major drawback: if the activity stops for any reason, all your info is gone.

I decided to make Super Munchkin by implementing some excellent functionalities of Munchkin Counter, but saving user data every time the player turn ends.  If the app for any reason exits, users are also able to resume their interrupted game.  Another drawback of the Munchkin Counter app was also that any time a game started, the user had to re-enter the player names, even if playing with the same people.  In SuperMunchkin, players can be added in the ChoosePlayersActvitity that starts when beginnning a new game and will still be present as long as the user does not remove (disable) the player.  Lastly, SuperMunchkin includes a statistics activity that allows a user to look back on the number of games played, games won, levels earned, and other stats.

The first image below shows adding a player during the ChoosePlayerActivity when starting a new game.

The second image is the following activity when starting a game where the user can order the players.

The third screenshot is of the GameTrackerActivity, which is the score-keeping activity used during gameplay.

The fourth image is of the StatisticsActivity, where all non-disabled users’ statistics are summarized for the purposes of bragging rights.

 

I learned a lot while making this app.  I became comfortable with passing Parcelable objects, restoring an Activity state, and enforcing intuitive app flow via intent redirection.  After an experiment, I also learned that having images in customized ListViewItems can be catastrophic.  As for the SQLite database, I found that I often could utilize built-in methods to populate my queries without having to resort to raw queries.  When it came to app design, I realized that screen size and finger dexterity make many decisions for you.  While I felt somewhat uncomfortable forcing a landscape layout for a particular activity, I found that the activity’s purpose could not be met without adequate screen resources.