Game
In this project, you will create a two-player/one-computer game.
You may complete this project in a team of 1–3 people. Since the game is two-player, having at least one teammate is helpful. No larger groups are allowed. If you do work with teammates, send your instructor a direct message to declare your collaboration. State whose repository will host the game, and your instructor will grant the other team members access.
General Requirements
To receive credit for this milestone, you must meet all of the following requirements.
-
Place your renderer in
renderers/your-titlein one of your group's individual Git repositories. Replaceyour-titlewith your game's title. - Create a two-player game that is either competitive or cooperative. Networking is too much for a graphics course; run within a single browser.
- Model at least some of the objects in your game yourself.
- Create a terrain for the player to traverse, and populate it with your models.
- Employ a third-person camera that tracks the player moving around the terrain.
- Identify the mechanics you want to support. Are you collecting? Activating? Firing? Investigating? Photographing? Performing music? Dancing? Painting? Racing? Implement an input system that supports these mechanics. Browsers don't generally support multiple mice. Consider gamepads or separate areas of the keyboard.
- Use your rendering library; not someone else's.
Features
This project is worth 20 points. You earn these points by demonstrating features to your professor in the last weeks of the semester. Steady progress is better than last-minute scrambling. No more than five features can be demonstrated per week. Each feature is worth 1 point.
Meet these basic features first:
- Render a textured terrain.
- Render several kinds of objects in your scene—with at least some made by you.
- Color each object with albedo textures.
- Add player avatars.
- Support multiplayer user input through the keyboard or gamepads.
- Render a split screen to track each player.
- Follow each player with a third-person camera.
- Illuminate all surfaces appropriately. Non-shiny objects should not be shiny.
- Animate the player avatars with mocap skeletal animations.
- Support mechanics for interacting with the environment.
Once these are met, you are eligible to seek the rest of the points by implementing some subset of these advanced features:
- Blend between terrain textures.
- Communicate information to the player with with a graphical heads-up display.
- Communicate information to the player with overlay text in HTML.
- Add in-game text with signed-distance field fonts.
- Respond to events with audio.
- Add fog or atmospheric haze.
- Render water.
- Render fading footprints.
- Add billboards.
- Apply noise somehow.
- Render a skybox.
- Add environment mapping.
- Add mouse picking.
- Post-process the
- Render shadows.
- Illuminate with an additional local lighting effect, like a flashlight or emissive glowing object.
- Render a mini-map.
- Apply instanced rendering to make many copies of a model.
- Cull objects outside the viewing frustum and show how it improves performance.
- Implement a particle system.
- Use deferred shading.
- Use screen-space ambient occlusion.
- Apply bump mapping.
- Use physically-based rendering (PBR).
You are free to implement more, but you can't accrue more than 20 points.
Submission
Share in the Discord #game channel a 5-minute video of you and your partner (or a recruit) playing your game. Upload the video to a streaming service like YouTube, Vimeo, or Canvas Studio and share only the URL. Tell stories of the implementation process.
Commit and push your work to GitHub.