Requirements

Final Requirements:

    The ultimate goal of the Green Project is to create a game development system that allows very novice but passionate programmers to create their own games and, along the way, learn some useful things about real life programming. The system will minimize the frustrating tedious aspects of game creation and allow the novice user to learn and be exposed to programming while being motivated by their own accomplishments.  In addition, it will be set up such that it will be easy for an instructor to gradually introduce the system to students as a way to teach basic programming skills. Given a complete or partially complete example game, students should be able to easily edit a small part of it, without first understanding the entire system. Using a simple to use scripting language within an integrated development environment or "IDE", users create games by defining game objects or "entities" and their behaviors, setting up a game scene with these objects, adding any custom graphic files or "sprites," and letting it run. They can also take an existing sample game (of which a number of sample games will be provided) and change a portion of it to create a new game. The engine also provides many tools for the user, such as a library of behaviors, sounds and graphics that they can add to their game.
      The system also uses open software and will be licensed under the GPL. It will run under both Windows, Linux, and Mac OS X and require a machine with hardware accelerated graphics. The system comes with an IDE program to simplify program writing; a language interpreter and game engine to run the program; a sample library of sounds, music, artwork, models and such; and a data handling system for things like background maps and gameplay object statistics.


Version 1 (first complete, useful package):

    The goal of the first version is to enable users to create games such as pong, asteroids, space invaders, and others. This requires a number of features. First of all, the system should support multiple, moving objects on a static background. Objects such as bullets or asteroids may be dynamically added or removed from the scene. The system should also allow users to define autonomous behavior which may depend on an "awareness" of other objects in the scene. Finally, games will be written in an interpreted stack-machine based language.

Development Version 0.1 (first milestone leading up to Version 1):
    In the first development version leading up to version 1.0, it will be possible to create simple scenes. These scenes will have a set number of moving objects, and these objects may have a number of behaviors defined for them. The concept of a message will be introduced, such that behaviors may respond to messages and send their own. In addition, the system will send messages to inform objects of keyboard input events.
    This version will have some limitations. For example, each object in the scene will be drawn using the same graphic, or one of a limited set of graphics,  and because the scripting language will not yet be implemented, these scenes are defined directly in C++ code. In addition, user defined messages will be fairly limited, both in what they can contain and how they are sent. However, given these limitations it should still be possible to create simple games such as pong.

(subsequent version 1 milestones to follow)