CompSci 108
Fall 2011
The Software Studio

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.

As a class, create a software system designed to ease the creation, development, deployment, and playing of arcade-style 2D video games, often called casual games. Video games have many common characteristics that can be shared as a common design framework so that creating a new game requires only creating things specific to it. Common aspects, e.g., models, scoreboards, timers, splash screens, levels, rules, interactions, etc., should be factored out into a reusable game engine that generally supports those games that have some continuous movement (by either the player or the enemies), some goals that allow the player to advance through a series of levels, and a separate goal which causes the game to end.

At a high level, this software system should

Sub-Projects

While the class as a whole will be working together, smaller teams will focus on building specific sub-projects that need to work together for the project to succeed. As a class of developers, you will need to rely heavily on each other's documentation in order to figure out how to use other team's projects that you may need to rely on.

Game Plug-ins

These projects provide higher level tools on which to build games.

Game Sprite Plug-ins

These projects improve the basic Sprite system in Golden T.

Game Setup

These projects help make designing the game more flexible by providing a means to help design the game without resorting to hard-coded values in Java.

GUI Front-end and Communication

These projects are the ones users will interact with directly, requiring Swing components for interaction and networking with a central site to achieve persistent, global storage so the entire class can interact with the same data.

Resources