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.
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.
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.
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.
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).
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.
require
'd strings (not -- explicitly -- files).
E.g., a game developer should be able to implement a transform such that require('gradient:#000-#fff')
returns a build-time-generated gradient.
require()
statements.
E.g., a game developer should be able to implement a transform that does globbing by returning module.exports = [require('imgs/1.png'), require('imgs/b.png')];
as the transformed version of 'imgs/*.png'
.
require()
statements therein work as expected.
require('sald:library.js')
-style requires are special-cased. They should be implemented as a transform.require('lib.js')
and require('./lib.js')
should result in only one inclusion of the code from lib.js;
similarly, continuing the example above, require('gradient:#000-#fff')
and require('gradient:black-white')
might also only result in one gradient being created and included.
build.js
.
There should still be an example transformation in build.js, but it should be something that, e.g., triggers on require('helloworld:')
and produces output code module.exports = "Hello World";
.
require
'd with different strings performed?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:
Sald's Tilemap Library is designed to help game developers draw grids of tiles. However, it could use some fixes and extensions.
var map = new Tilemap(require('tiles.png'), require('level1.js'));
. (Though it might require some extra parameters for tile size and shape.)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?