Android Media App Dev
IGME-590
Project 2 - Mobile App or Game of Awesomeness
Overview
Create a useful or entertaining Android app or game in teams of 2 to 3 students (3 requires prior approval). The target hardware can be Phone or Tablet or both. Previous submissions (in the iOS class) have included:
- Apps that utilize web services to display data: Traffic App, Woot Ware, Starting Five (Dribble.com client), USGS Earthquake Mapper, iGas-Station, Philly Arts Today, Grubulate (recipe finder), Aimless Reader (random articles), Local News (in App Store)
- Entertainment: BackAppYa (comeback generator), Beer of the Day, Lionfish Hunter, Sudoku, Star Trader, Rate Your Boys, They all look the same to me, Jetpack Joyride Clone
- Utilities: S.P.A. - Shotgun Pattern Analyzer (used OpenCV), Veg Nut (recipe Finder), Diablo 3 Skill Calculator, MyIndia, Nihongo Study (Japanese Language App), Garbage Plate Finder (in App Store), Fitness App, Split the Bill
- Media Apps: Audio Streamer, Manga Reader
- RIT Themed: iRIT/RIT Now (in App Store), RIT Student Government, RIT Virtual Tour, RIT Taxi, Wallace Library App, RIT Room Booker, RIT Bus, TigerSafe (in App Store, never a student of mine)
- Games!
- The app/game needs to be appropriate for all audiences. Would it get in the Google Play Store store? is the question your app should answer in the affirmative.
You have a lot of freedom here in what you can create for this project - use this opportunity well!
The assignment is worth 35% of your final grade, is graded out of 100 points, and no late submissions will be accepted, so post what you have before the due date to receive partial credit. An A grade will be awarded only for meeting the requirements below, and going sufficiently "above and beyond" what we have done in class.
If you publish this app on Google Play prior to the beginning of finals week, your project grade will be raised by 10%.
#1 - Create an Application Definition Statement
An Application Definition Statement is a one or two line statement answering these two questions: What's the app do? and Who is it for?
#2 - Proposal
Using your Application Definition Statement as a starting point, put together the following:
- Full list of features - Brainstorm a full list of features that could possibly be implemented by the application. Even though we would never think of building such an App, think "Kitchen sink" or "Word on iPhone" as you are creating your list of features.
- Filtered list of features - Distill these features down to only the most essential ones that allow the application to fulfill its Product Definition Statement. Apple's Mantra: Pick the few features, most frequently used, by the majority of your users, most appropriate for the mobile context.
- Do a competitive analysis - Discover your competition at least 3 existing iPhone Apps in the App Store that are similar to what you want to create. Also look for one similar Android App in the Android app markets. Read the descriptions in the App store, and download the apps if they’re free. Write a quick review of each App: include its features, user rating, its strengths and weaknesses relative to its competition, and what features you feel its missing.
- Iterate - head back to steps A and B - did you leave anything out? Are there features you should add or remove? Update your document.
- Sketch out the UI - Describe the UI, and produce some mock-ups. These can be drawn by hand or created in Photoshop or Storyboard it. Tip: The OS X Grab utility can grab some or all of the screen.
- Deliverable - Put the above in a PDF and post it to mycourses.
- Be ready to discuss your idea in class
#3 - Prototypes(4)
Getting a prototype up an running as fast as possible is critical.
- Put together the primary navigation of the App as quickly as possible, and find at least 5 people to try the app on actual hardware. Use the knowledge gained to add critical features, and fix navigation issues.
- Install on Android hardware and bring to class on due date
- You will have others in the class test your app
#4 - Final Deliverable Requirements
- Meets the Application Definition Statement - an "A-level" app is a "polished solution to a well defined problem".
- A polished User Experience that respects these Design Principles:
- Clarity - it should be clear what the app does, and people should be able to use it without instruction.
- Deference - content is front and center - the UI should fade into the background.
- Depth - it should be a vibrant and life-like experience, and people should not get "lost" or be confused about what state the app is in.
- If it's a game:
- Controls: should be easy to use, responsive and intuitive. On screen D-pads usually don't work well in arcade style games. Stick with simple taps and gestures, or the accelerometer.
- Teaching: The player should have no trouble figuring out how to play the game. You should probably provide instructions. Introduce only one game element per "level" - don't try to teach your player how to play the entire game all at once.
- Feedback: The player should intuitively know what "state" the game is in, and if their actions hindered or helped their progress in the game. A score should be visible to the player.
- Difficulty: Be nice to your players. The game should be easy at first, then it gets harder. The player shouldn't die in 2 seconds like Flappy Birds. And when they do die, they should have an idea how to play better next time.
- Screens: Title/Navigation, Game, High Scores, & Credits. The name of the game, and the names of the team members should each be visible on one of the screens.
- Media: Effect and background sounds, imported fonts, h-res graphics.
- Uses libraries that go well beyond what we've done in class this semester.
- Meets course coding standards (see below)
- Install on Android hardware and bring to class on due date
Coding Standards
- Design Patterns: MVC, Singletons, Delegation, Notifications
- Separation of Concern - You should have multiple classes, with each class having well-defined functionality accessed through a public interface.
- D.R.Y. - Don't Repeat Yourself. Repeated blocks of nearly identical code should be factored out and placed in a separate method.
- No "magic numbers" (unnamed numerical constants) - declare constants or enums or structs instead.
- Code conventions: follow principle of least privilege, class names are capitalized, method names are in lower case.
- Avoid global variables.
- Well commented code. Each and every method you wrote gets a comment indicating what it does.
- There will be no compiler warnings, and no run time errors.
#5 - Documentation
- Requirements:
- Document that you met your application definition statement, and be specific about any work you did that truly went above and beyond.
- Discuss any struggles or failures in the development process.
- Describe which team member worked on what part of the project.
- Give credit for resources like images and sounds, and any software libraries or tutorials you used. Be sure to give yourself credit for graphics you created, or any code solutions you spent extra time on.
- Grade yourself (0-100) and justify it. Put this in a text file or Word document or PDF and submit it with your project.
- -10% if not done
Grade Rubric
- Good (Meet all requirements above reasonably well) = 90%
- Better (Go beyond expectations) = 95%
- Best (Go significantly beyond expectations) = 100%
- Wow! = 101%+
Deductions
- (-35%) The project won't compile. (Be sure that your resources have been imported and are in your project directory!)
- (-20%) The completed project is not installed on your Android device.
- (-??%) Egregious violations of MVC or Coding Standards
Milestones
- Team member names, idea, and proposal (#1 and #2 above) due start of class Wednesday 11/4 (week 11) - post to mycourses dropbox. -10% off of final Project 2 grade if not completely done
- Working Prototype #1 due start of class Wednesday 11/11 (week 12) - post to mycourses dropbox - install on Android hardware and bring to class. -10% off of final Project 2 grade if not completely done
- Working Prototype #2 due start of class Monday 11/16 (week 13) - post to mycourses dropbox - install on Android hardware and bring to class. -10% off of final Project 2 grade if not completely done
- Working Prototype #3 due start of class Monday 11/30 (week 15) - post to mycourses dropbox - install on Android hardware and bring to class. -10% off of final Project 2 grade if not completely done
- Working Prototype #4 due start of class Monday 12/7 (week 16) - post to mycourses dropbox - install on Android hardware and bring to class. -10% off of final Project 2 grade if not completely done
- Final Version Due Finals Week during the scheduled final exam time (Finals Week) - post to mycourses dropbox - install on Android hardware and bring to class.
- ** If you borrowed an Android device from IGM, you must return it at the time of our final meeting - and don't forget the cable and power brick. **