CompSci 308
Fall 2016
Software Design and Implementation

Build a Game

If children can build, play and understand games that work, it's possible that someday they will understand and design systems that work. And the world is full of complicated systems. —Sara Corbett

Back in the 1980s, video arcade games were in their prime. Local restaurants, pubs, and arcades lured customers with all of the latest titles: Pac-man, Galaxian, Donkey Kong, Tempest, Asteroids, Centipede, Defender, and more. (Un)fortunately, the rise of home video game systems and home computers relegated these gems to the back storage rooms of many establishments. They are not forgotten, however — even today, arcade cabinets are collected by enthusiasts and arcade ROM emulation systems such as MAME allow my generation to experience these relics first-hand on modern hardware (including, briefly, the iPad).

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 "artistic" game, like Passage.

Specifications

Write a Java program to play a 2D game of your own design. It does not need to be the greatest ever created, or even have sophisticated graphics, but it does have to meet a few basic requirements:

  1. It should be a simple example, but still recognizable member, of a particular genre of video game, such as:
  2. It should be interactive, with clear winning and losing conditions.
    This is the focus of the project: game play mechanics --- not graphics. Your game can use simple shapes or crudely cropped images stolen from existing games as long as they are recognizable enough to understand what is happening. For example, the Real Time Strategy game could let you place buildings that construct units, the RPG could have rudimentary turn based combat, etc.
  3. It should have characters that move about the game area and interact with the player.
    These movements can be crude or jerky, but they should be as automated as possible (i.e., their movement, responses, or states are algorithmic).
  4. It should have two distinct "modes" or "levels" that differ algorithmically, not just parametrically.
    • Modes mean different kinds of interaction, such as a turn based combat mode and a walk around mode.
      Game menus with options like "Start Game" do not count as a mode.
    • Levels mean different kinds of play, such as a drone fighters level and a boss level.
      Levels that are simply more opponents or faster opponents do not count.
  5. It should have a "splash screen" to explain the rules of the game when it starts up.
    It should stay visible until the user clicks or presses a key to signal they are ready to start the game.
  6. It should include useful and documented cheat keys (and tons of ideas for cheat codes!)
    This is to help you debug your game (and the course staff to play your it :)

You will use JavaFX as a starting point for building your game. You are welcome to look at the tutorial below or any other ones you find online, but your game should be distinctly different from any given examples (i.e., create a game, do not simply copy one). Using JavaFX will give you a chance to read other'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). While some basic code will be discussed in class, it is expected you will learn most of the details by reading online examples and documentation.

Project Goals

This project is intended as a warm-up to get you started coding: so you can determine if the course is at the right level for your abilities and so we can determine a base-line for your sense of design. It is also intended to introduce you to using the JavaFX software since we will use it throughout the semester.

Deliverables

You will submit this project in stages to introduce you to the course's basic workflow.

Resources