CompSci 108
Fall 2011
The Software Studio

Breakout is a popular extension to the game of Pong that was described at the time of its invention as "the ultimate in Pong". Breakout was designed by Steve Jobs, current CEO of Apple Computer. But it was Job's friend Steve Wozniak who did most of the work on Breakout, not Jobs. However, when Jobs received a $5,000 bonus for the work, he told Wozniak it was only $700 and gave Wozniak his "half" --- $350. Years later this truth would come out and it would add to the already increasing friction between the two which eventually lead to Steve Wozniak quitting Apple.

The original Breakout was such a big hit that, to this day, it is still spawning additional game spin-offs in the form of the game Arkanoid. These games build on the basic premise of Breakout, clearing a field of bricks, but add elements of every other game imaginable. Like these games, you should create a game that is an off-shoot of a current popular game rather than striking off on your own to create an "artisitc" game, like Passage.

Specifications

Write a Java program that allows the user to play a 2D "casual" game against any number of animated "enemies". The exact details of the goals of the game (i.e., how to win or lose, and how the score is kept) will be up to you, but it must include a variety of players/items, some form of power-up style modes, and multiple levels. Additionally, your game should have a splash screen to advertise it during start up, an HTML formatted help file to describe its story and how to play it, a resource file that includes values for aspects of the game that a game designer might want to change, and the ability to maintain a list of all-time high scores. The game's mechanics need not be your sole focus --- they can be less sophiticated if you emphasize the complexity of another aspect of the game such as making shopping levels, a scrolling world, post-level bonus calculations, or chained game goals. To help debug your games (and the course staff to play your games :), you should include (and document) a number of useful cheat keys (and easter eggs if they come up during the development of the project).

You will use an open source project, Golden T, as a starting point for building your game. You are welcome to look at any of the tutorial information available about the engine, but your game should be distinctly different from the given examples (i.e., code a game, do not simply copy one). This will give you a chance to read someone else's code and documentation before starting to write your own (and it relieves us of the burden of writing some of the low level code ourselves).

Design Goals

Eventually, the games you build during this assignment will be the library of games available as choices in our final project. As such, as a class, we will need to standardize many aspects of how games run, are controlled, and allow for preferences. While you do not need to worry about all those details right this instant, you should make your game as flexible as possible now so that when statndards are agreed to, you can easily change your code to accomodate them. This can mostly be done by severely limiting the amount of hard-coded data in your game, factoring it out into resource files of varying formats.

Of course, you should empahsize the code's design and the game's playability over the looks and artwork of the game. It should be an example of good code design, specifically following the course's design conventions to emphasize the Open-Closed Principle and minimize the number code smells. Note, since you will be given multiple chances to extend these games in the future, make sure that the code is designed so that extensions to the game play are easy to make and require changing as little code as possible. It is better for code extensions to be implemented with new code that extends old code rather than changing old code.

Resources

Deliverables