IMGD 3000 Project 2

Dragonfly

Due dates:

  1. Dragonfly Egg: November 10, 11:59pm
  2. Dragonfly Naiad: November 18, 11:59pm
  3. Dragonfly: November 25, 6:00pm

The goal of this project is to build your own 2d, text-based game engine, called Dragonfly. Once done, you will use your Dragonfly engine to design and develop a game from scratch (in Project 3).

Project 2 is broken into three smaller parts, called A) Dragonfly Egg, B) Dragonfly Naiad and C) Dragonfly, that build upon each other to end up with a fully functional, full-featured game engine.

You will work solo for this project. This will ensure you have the development skills needed even if your tasks in Project 3 (making your own game, where you do work in teams) are more partitioned. While you can discuss the project with other students and even help each other debug code, you must write all code yourself.


Top | 2A Egg | 2B Naiad | 2C Dragonfly | Resources | Submission | Grading

2A - Dragonfly Egg

Part A of the assignment is to construct a game engine (in C++) that provides the following capabilities:

No visual depiction of the game is required for part A. Instead, all output is via printing to the screen or, better, to a logfile via the LogManager.

Classes to be implemented, with some of the features each has, include (note, below list not necessarily in order of implementation):

The functionality described above is obtained through understanding the design (through class lectures and the book), then careful implementation and testing of the indicated classes. An approximate breakdown of point values as they apply to Part A is below.

Grading Guidelines

LogManager - 20%
Clock - 10%
Vector - 5%
GameManger - 20%
Object - 10%
Use of Lists of Objects - 10%
Manager - 5%
WorldManager - 15%
Event and EventStep - 5%

Note, in addition to the above breakdown, points can be lost if testing, and/or documentation surrounding how to run tests, is missing, incomplete or insufficient.

Demonstrable Testing - Up to 30% penalty

All aspects of engine functionality should be tested. In addition, all test code must be submitted with the assignment, with clear indications of how to run it and how it shows working functionality. See submission for details.


Top | 2A Egg | 2B Naiad | 2C Dragonfly | Resources | Submission | Grading

2B - Dragonfly Naiad

Part B of the assignment is to continue construction of your game engine using your codebase from Part A, adding adding the following additional capabilities:

All of the above capabilities must be thoroughly tested, bug-free and ready for a game programmer to make a game (you, in project 3)!

In the meantime, you might test out your Dragonfly Naiad with a non-sprite-based, non-audio version of Saucer Shoot called Saucer Shoot Naiad:

Classes that will be implemented and/or extended from Part A include (note, list not necessarily in order of implementation):

The functionality described above will be obtained through careful implementation and/or modification of the indicated classes. An approximate breakdown of their point values as they apply to Part B is below.

Grading Guidelines

Manger - 5%
GameManager - 15%
DisplayManager - 25%
InputManager - 25%
WorldManager - 20%
Object and Events - 10%

Note, in addition to the above breakdown, points can be lost if testing, and/or documentation surrounding how to run tests, is missing, incomplete or insufficient.

Demonstrable Testing - Up to 30% off


2C - Dragonfly

Part C of the assignment is to continue construction of your game engine using your codebase from Parts A and B adding the following additional capabilities:

All of the above capabilities must be thoroughly tested, bug-free and ready for a game programmer to make a game (you, in project 3)!

The following class implementation is provided for you:

To use:

  1. Download: sprite-resource-manager-v3.zip
  2. Extract: unzip sprite-resource-manager-v3.zip
  3. Follow instructions: sprite-resource-manager-v3/README.md

Important! The provided SpriteResourceManager is to be used as part of Development Checkpoint #8, step #5 by deriving the Resource Manager from the SpriteResourceManager:

// ResourceManager.h

class ResourceManager : public SpriteResourceManager {
  ...
};

If you implement all the above features, you might test out your Dragonfly with the tutorial game, Saucer Shoot. The final version of the game has a few of the optional engine features, but a working Project 2c should support a slightly reduced version called Saucer Shoot - Dragonfly:

Classes that will be implemented and/or extended from Parts A and B include (note, list not necessarily in order of implementation):

The functionality described above will be obtained through careful implementation and/or modification of the indicated classes. An approximate breakdown of their point values as they apply to Part C is below.

Grading Guidelines

Sprite animation - 20%
Box collisions - 20%
Resource manager - 20%
View objects and events - 15%
Audio - 10%
Views - 10%
Documentation, ease of running and grading - 5%

Note, in addition to the above breakdown, points can be lost if testing, and/or documentation surrounding how to run tests, is missing, incomplete or insufficient.

Demonstrable Testing - Up to 30% off


Top | 2A Egg | 2B Naiad | 2C Dragonfly | Resources | Submission | Grading

Resources

Development in Linux, Windows or Mac provides the necessary support for graphics (SFML) to complete your game engine. In general, your Project 2 implementation can be done in any development environment as long as:

If you have doubts about any of the above, ask before heavily investing time in your development environment.

See the Dragonfly book and the slides for technical details on game engine implementation.

Important! In general, you must adhere to the class design as provided by the Dragonfly book. Not only will following this design provide a path towards a complete engine, but it will also allow us to use test programs/scripts we have to test the functionality of your engine. Failure to follow this design will mean your engine fails these tests and your grade will suffer. Before you make deviations to the design, consult with us. Adding additional functionality beyond what is described in class (including any elements labeled “optional” in the book) is certainly possible.


Top | 2A Egg | 2B Naiad | 2C Dragonfly | Resources | Submission | Grading

Submission

Your assignment is to be submitted electronically via the Canvas Website by 11:59pm on the day due. You must hand in the following:

  1. A source code package:

    • All code necessary to build your game engine. Note! Make sure your code is well-structured and commented. Failure to do so will result in a loss of points.
    • Any other support files, including .h files.
    • A Makefile or project file for building your game engine.
  2. Game/test code (i.e., code written that uses your engine) that demonstrates the full functionality of what you have built (so far). This can be more than one program. Make sure it is clear how to build your game code, too. You should include in your documentation details on what to look for, say, in your logfile that show your engine is working.

  3. A README.txt file explaining: platform, files, code structure, how to compile, and anything else needed to understand (and grade) your game engine. Important! Make sure your name and login is included in the README.txt file.

Before submitting, “clean” your project:

In addition: 1. In the solution folder delete all bin, obj, ipch, debug and release directories. 2. Delete any .suo files 3. Delete any .user files 4. Delete any .ncb files 5. Delete any .sbr files 6. Delete any .*log files

Note! These are good candidates for a .gitignore file, too.

Use zip to archive your files. For example (adjust the below instructions for 2b and 2c, as appropriate):

mkdir lastname-proj2
cp * lastname-proj2 // copy all the files you want to submit
zip -r proj2-lastname.zip lastname-proj2 // package and compress

To submit your assignment (proj2-lastname.zip):

Open: IMGD3000-B20-B01
Navigate to: Assignments -> Project 2
Click: Submit Assignment
Click: Choose File
Select the zip file: proj2-lastname.zip
Click: Submit Assignment

Important - you must click the Submit Assignment button at the end or your file will not be submitted!

When successfully submitted, you should see a message similar to:

Submission
- Submitted!
Nov 19 at 10:51pm


Top | 2A Egg | 2B Naiad | 2C Dragonfly | Resources | Submission | Grading

Grading Rubric

Below is a general grading rubric:

100-90. The submission clearly exceeds requirements. The functionality is fully implemented and is provided in a robust, bug-free fashion. Full functionality is clearly depicted in one more more samples of game/test code and through clearly provided logfile messages. Documentation is thorough and clear.

89-80. The submission meets requirements. The basic functionality is implemented and runs as expected without any critical bugs. Functionality is depicted in one more more samples of game/test code and through logfile messages. Documentation is adequate.

79-70. The submission barely meets requirements. Functionality is mostly implemented, but may not be fully implemented and/or may not run as expected. There may be a few bugs, none critical. The functionality is depicted in sample game/test code, but full representation is not shown. Documentation is inadequate, missing key details needed to understand the engine and/or to build the programs.

69-60. The project fails to meet requirements in some places. The game engine is missing critical functionality and/or what is there has bugs. The engine may crash occasionally. Game/test code demonstrating the engine is missing or incomplete. Documentation is clearly inadequate, missing key details needed to understand the engine and/or to build the programs.

59-0. The project does not meet core requirements. The engine cannot compile, crashes consistently, or is lacking many functional features. The sample game/test code is missing or incomplete. Documentation is woefully inadequate or missing.


Top | 2A Egg | 2B Naiad | 2C Dragonfly | Resources | Submission | Grading

Return to the IMGD 3000 home page

Questions: Dragonfly question-answer forum