CompSci 108
Fall 2009
Software Design and Implementation

VOOGA

Video games are an increasingly important medium in terms of international use, cultural impact, and profitability. Arguably, video games have also driven many recent advances in computer hardware and are finally gaining acceptance within the academic community as an area worthy of study. And why not? Video games contain all of the basic elements taught in computer science and commercial game engines are becoming increasingly complex software systems. While the focus of this project is not to build commercial quality 3D video games, you will build 2D video games that represent all of the same basic concepts.

Like physical arcade stores, online arcades such as Shockwave.com, Orisinal, or the 2D games at Xbox Live offer users a suite of arcade-style video games from which to choose. These virtual stores have the advantage that they can keep better track of what games their players are playing and how they are playing them, but the isolation of the online experience means they have to work harder to offer the social aspects of the physical store by allowing players to rate, recommend, chat, or generally collaborate while playing games.

Core Specifications

Work in teams to create two systems: one that allows game designers (i.e., people with minimal programming skills) to easily create new video games and one that allows users (i.e., people with no programming skills) to play the games created in a social way. Thus the programming constructs and user interface presented to these clients must be simple and easy to use, yet powerful --- the essence of a good abstraction.

Specifically, your project should support the following features:

To help debug your games (and the course staff to play your games :), you should include a number of useful cheat keys (and easter eggs if they come up during the development of the project).

Extensions

Extensions are intended to stretch your design further and to differentiate your program from others. Choose at least two extensions from those below (or come up with your own) and include them in your project's initial vision statement. Note, many of the named games have videos of people playing them on YouTube.

Additionally, bonus points will given to the game engine that requires the fewest lines of code to create a new game (while still adhering to good design principles in generalizing the framework), requires the least time to create a new game, is the easiest to change a game's theme, is the easiest framework to explain to a game designer, or is the easiest to install a new game.

These extensions must further the good design of your program and not simply be hacks of code added at the last minute. In general, your design should support adding any of these extensions reasonably (and the project artifact should discuss how to do so). For example, if you do not have time to implement an extension, partial credit may be given for excellent justification of how your design either supports adding such a feature already or how it would need to changed sufficiently to support such a feature.

Your grade will be based primarily on both the framework you design for supporting game development (including its documentation) and the functionality of the games you implement. What needs to be done to add a game to the arcade (both as a user and a developer) should be clearly documented as well as a discussion of the advantages of using your framework design.

Resources

Deliverables

  1. Tuesday, October 27. Initial web page describing your team's goals (one submission per group)
    • Create a web page for your project, linked to by every member of the group, that includes:
      • a name for your team and each team member's primary and secondary responsibility on the project
      • a vision for the project: describe your team's priorities for this project, specifically the priority of the extensions your team intends to implement
      • a list of issues that arise as you try to pin down the requirements, e.g., vague, ambiguous, conflicting requirements
    • The beginning of your project artifact:
      • a description of the classes you envision as part of implementing this project
      • an estimate of how long you expect it to take you to complete this project; include as specific a task list as possible to support your estimate (i.e., break each of the requirements into several steps, the smaller the better your estimate will be)
    • No code is required for this deliverable. Make this information available on a web page (linked to by everyone on the team), and email the URL to Professor Duvall.
      We will check this page frequently to check on your team's progress, so you will need to update this site as you develop your project.
    • This week you will be assigned a mentor TA, you must meet with them to discuss your design and your implementation plan
  2. Monday, November 2. Team design version 1.0 and estimate (one submission per group)
    • A description of the underlying model classes you expect to support the project.
    • A description of your graphical user interface, including drawn "screen shots" of how you plan to lay out your interface and how you plan to connect the interface to the model.
    • A detailed description of how your game engine will handle the following use case: In Arkanoid, the ball hits the last brick, causing it to disappear, a new level to be loaded, the ball and paddle to be reset, and the game play started again. It should be clear from this description which objects are responsible for completing each part of the task.
    • No code is required for this deliverable. Please make this information available on your project web page.
  3. Monday, November 9 --- in-class. Program version 1.0 (one submission per group)
    • A program that implements a basic game of Arkanoid
    • An in-class presentation of your team's progress. Your team as a whole should be able to defend the details of your game engine to your competitors and demo your current code (approximately three-quarters of the presentation should be on defending your game engine design compared to only one-quarter on the demo).
    • You will have approximately 15 minutes for your presentation. Make it professional and well-structured, specifically, plan what your intend to demo and the code you will show off
    • Submit your presentation slides (or notes) as well as your demo code.
  4. Monday, November 16. Team design version 2.0 (one submission per group)
    • A design document that includes a detailed design for Arkanoid and at least one other game, and a preliminary design of your Editor and Arcade
      include at least the following three levels of abstraction and how they will interact:
      • generic frameworks that might be used in any program (i.e., animation, networking, GUI)
      • game specific frameworks that support generic sets of games (i.e., board, scoring)
      • game specific components that are tied to a particular game
    • A user guide that explains how your a game designer will code using your framework to build a new game
    • A description of your graphical user interface, including drawn "screen shots" of how you plan to lay out your interface and how you plan to connect the interface to the model.
    • No code is required for this deliverable. Please make this information available on your project web page.
  5. Monday, November 23 --- in-class. Program version 2.0 (one submission per group)
    • A program that implements the basics of another game besides Arkanoid, the Editor, and the Arcade
    • An in-class presentation of your team's progress. Highlight any changes to your game engine but focus your presentation on the graphical interface to your Engine, the Editor and the Arcade (approximately three-quarters of the presentation should be on defending your framework design compared to only one-quarter on the demo).
    • You will have approximately 15 minutes for your presentation. Make it professional and well-structured, specifically, plan what your intend to demo and the code you will show off
    • Submit your presentation slides (or notes) as well as your demo code.
  6. Thursday, December 3. Refactored program and design version 3.0 (one submission per group)
    • A third release of your framework that includes a well-designed and well-commented core, based on in-class and mentor feedback, that implements your described design.
      It should include a complete implementation of Arkanoid and at least one additional game, both written using your game engine.
    • Update your project artifact to reflect your design since you have added more games
  7. Friday, December 11. Public Exhibition, 2-5pm
    • A public demo of your project.
    • Submit a final version of your project and all relevant documentation by the end of the day.
  8. Sunday, December 13. Individual project analysis (one submission per person)