Design+Code 3: Engine Fixes

Our rapid pace of work on sald has left it with a few rough edges. We're going to spend this week smoothing them out.

There are four separate projects (A, B, C, and D below). You will randomly assigned a letter and a symbol. The letter is your project, the symbol determines your two-player partner.

Design Phase

Please feel free to ask clarifying questions at any point.

(20 minutes; Single Player) Read the code and any available documentation for the subsystem you will be working on. Read and understand what I want you to fix.

(20 minutes; Two Player; circle with circle, square with square) come up with at least three strategies to fix the code. Create a diagram or brief, written description of each.

(remaining time; Four Player) debate the possible strategies, and select one for implementation. Be sure to address the questions in the "Design Considerations" section of your assigned project. Write a brief specification for your proposed changes, including a rough outline of the functions and data that will be used/changed. Assign group members to each part of the task.

What To Turn In (Design Phase)

Due Tuesday, February 10th, by the end of class.

Each group should meet with me to discuss their specification and allocation of work. After this discussion, I will ask that one member of the group send me a summary of their proposed changes and work allocation via e-mail. This will be the deliverable for the design phase.

Coding Phase

Once I have signed off on your specification, work on implementing the changes you have specified. Start by producing a skeleton for your code -- functions and descriptions of their operation -- before working on filling it in. Make sure to leave plenty of time for testing.

On Thursday, I will meet with each group for progress updates and clarifications. Please work to have some progress to update me on.

What To Turn In (Coding Phase)

Due Tuesday, February 17th, at the start of class.

Each group should submit a pull request for a single github repository containing their fixes. Make sure that this repository has a commit log that clearly identifies who originated each piece of code. If pair- or group- programming, please make a note in your commit messages.

I will be grading each group's result as a single entity. If the code works and addresses (or refutes) my concerns, it will be counted as complete (1 point). If the code does not work or fails to address my concerns, but appears to make a good effort, I will mark it as partially complete (0.5 points). If I do not receive a pull request, or the submitted code seems incomplete, I will mark it as incomplete (0 points).

Group A: Build System Overhaul

Sald's build system is the core of the engine. It is responsible for transforming the game developer's files and assets [and their dependencies, specified using the require() construct] into javascript for inclusion in a single html page. It performs this transformation using transform functions, of which several defaults are provided.

Design-Phase Considerations

Coding-Phase Deliverables

Group B: Sprite Library

Sald's Sprite Library seems to support displaying windows within a sprite image or image list passed to it. However, based on my read-through, it needs some fixes:

Design-Phase Considerations

Coding-Phase Deliverables

Group C: Tilemap Library

Sald's Tilemap Library is designed to help game developers draw grids of tiles. However, it could use some fixes and extensions.

Design-Phase Considerations

Coding-Phase Deliverables

Group D: Benchmarking and Collision

We just finished an assignment to create a great collision library; but we've got a lot of versions of the code. Which one should we use?

Design-Phase Considerations

Coding-Phase Deliverables