Proposal: | 10:20am Friday, Nov 10 |
Stage 1: | 10:20am Wednesday, Nov 29 |
Final Demo: | before 5pm Wednesday, Dec 13 |
Final Presentations: | 8:30am Thursday, Dec 14 |
Final WISE submissions: | noon Thursday, Dec 14 |
You should work with one other person (if there are an odd number of students in the class then one group will either be of size 1 or 3). It is important that each partner's tasks are clearly identified.
You do not have to do a car racing game, however, its description should give you a sense of the desired scope and complexity of whatever you end updoing.
Goal: A car driver drives around on a track while the driving time is monitored. The goal is to get the lowest score possible (see scoring below). Players don't need to run the course at the same time, but rather compete based on overall score.
Rules: The driver must stay on the track and avoid running into any objects on or off the track. If they go off the track or hit items, they are penalized.
Scoring: The score is the sum of the driving time plus penalties. Specifically, scoring is computed as follows:
Before beginning, read the Details and Suggestions listed below. Then:
Meet with your partner and talk about what you want to do. Do you want to do this game or some variation of it? Or something completely different?
Write down a description with as much detail as possible. What are the rules? What are the components you want to include. What elements do you apply extra attention to? What labs will you need to expand on?
Discuss a plan of action: Don't try to change a lot at one time because it will be impossible to debug. Instead, plan to take small steps where, at each step, you end with a "running model". Discuss it with your partner. You could start with one of the labs and plan to modify/add to it in small ways. You may want to start with some small test runs, e.g. try creating new shapes (e.g. the track and trees), or implementing spotlights, or splitting up lighting & materials, or creating a cubemap, or .... Be warned, things are unlikely to go as smoothly as you expect or hope.
Plan how you want to collaborate. For those of you with experience with github, you may want to set up your project on github (or other similar version control system). In any case, you need to figure out how you will be able to work together to keep track of versions without stepping on each other's feet.
Once you and your partner have explored various plans and options, write a proposal which should include the deliverables listed below.
Begin implementation of your plan. See dates and deliverables below.
Focus: You can't do everything in depth so decide what it is you want to really spend your time on, e.g. modeling, lightings, etc. It would be good to pick at least one thing that goes beyond what we did in class.
Player Object: The car (or other object shape) could be a composite object similar to what we created in lab, or a more complex model created in e.g. Blender or Maya which is stored as an obj file (or found online) and imported into your program. Since we are not using any external webgl libraries, reading obj files is problematic and will need access to a Javascript obj reader. Be sure you find a good obj reader before committing to this path. In any case, keep models on the small side in terms of number of vertices and triangles.
Lighting: There should be some kind of lighting, either a sun, or street lamps, or car headlights. In the latter 2 cases, you need to look up how to implement spotlights.
Materials: In class, we lumped together the lighting and material proerties. This works if there is only one light and all the object surfaces respond to the light in a similar manner. A more flexible approach is to separate out the light lighting (e.g. position, intensity, and color) from the material properties (e.g. color, ka, kd, ...).
Environment: You need to create the track and surroundings (e.g. buildings, trees, etc). These items should be colored/textured, e.g. buildings can be cubes with textures that look like building faces (with windows, doors, etc). Be careful to keep the textures sizes small so you don't overwhelm the system.
Environment Map: If you want a sky with clouds and distant skyline, you may want to try to use a skybox cubemap (huge box containing the world and is textured with a six sided cubemap). You will need to read about cubemaps and also find a texture online. See example.
Navigation Modes and Controls: You probably will want at least 2 viewing modes: 1) the driver view (e.g. similar to fly-through) and 2) the spectator view (e.g. similar to maya controls). As part of this, you need to let the player know the control options by listing them on the html page. You will also need a way to indicate starting and stopping the race.
Shaders: Depending on what you want to do, you may need to use multiple shaders. This can be done but will take a little effort to set up.
Scoreboard: You will need to have a scoreboard which lists current values of the time and penalties as the driver moves around the track. This can be setup in the html file and written to in the javascript code.
Possible Variations?
There are many possible variations. Discuss them with your partner.
Nov 10 - Proposal: Your proposal should include the items below.:
You can use this as a starting outline for your proposal - Lab8ProjectProposal.docx.
You should submit your proposal to WISE by 10:20am on Nov 10. In class, each group will give a brief and informal presentation on what you plan to do.
Nov 29 - Stage 1: Plan to do a brief presentation of your Stage 1 program to the class. You should have working code. Discuss how your accomplishments compare to your initial goals? What has gone right or wrong? If you are behind, how do you plan to adjust your goals going foward? There is nothing to submit to WISE.
Dec 13 - One-on-one Final Code Demo: Demo your final working project to the instructor no later than 5pm Wednesday, Dec 13.
Note, your program interface (i.e. the html) should provide sufficient instructions for running the code. If your code relies on keypresses or other user input, you should have these options specified when the program runs.
Dec 14 - Completed Project: Your presentation and code should ready to go before the 8:30am start time. Give a prepared 5-10 minute presentation and demo of final project to class.
And, by noon, Thursday, Dec 14, zip together the items below and submit as an attachment to WISE:
One partner should submit the above items on their WISE site and on the other partner's WISE site write a note in the text area indicating the partner's name where the project files may be found.