Project Milestone 1: Unity Box World Game

Due: Thursday, September 21, 2017

For the first milestone, make a simple box world version of the game that you described in your project pitch. This project milestone is an individual assignment. All of the rest of the milestones for the project will be done as groups. Use the Unity game development tool to make your game.

Use 3D graphics for this assignment even if you are planning to use 2D graphics for the final version of your game. This assignment is more about learning how to use Unity than it is about making progress on your game, but you'll want to focus on the parts of Unity that are most important for your game.

The reason that I refer to this as a "Box World" game is that you should use simple objects (like boxes and spheres) so that you can focus on learning the Unity user interface and, especially, scripting in Unity.

    Your game should include the following:
  1. User input--The player should be able to use the mouse and/or keyboard to interact with objects in the (simple) game world.
  2. Image texture--There should be at least one object in the game that uses a material with an image texture. This should be an image that you add to the scene, not an image that comes with Unity. This object should be visible at the beginning of the game.
  3. 3D model--You should load and use in your game at least one 3D model that doesn't come with Unity. This model can't be the same game object that satisfies Requirement 2. It should be visible at the beginning of the game.
  4. Moving objects--There must be moving objects that are controlled by scripts and user input.
  5. Collision detection--Something should happen when two objects in the game collide: an object is destroyed, moves (in a way that's not controlled by the physics engine), changes color, etc. Use colliders and triggers to do this.
  6. Timer--There's a time limit on the game or on some aspect of the game. The timer should be displayed on the screen as a number of seconds.
  7. There's a way to win--It doesn't have to be complicated, but there should be some way to win the game: find an object, shoot something, arrive at a certain place, etc. The game should display a message when the game is over and tell whether the player won or lost the game.

NOTE: Your game should not be recognizable as the product of a tutorial. If I recognize your game being close to a tutorial I will take off points (10% or more).

Unity

You can download a free version of Unity from http:unity3d.com. It can be used on both Windows and Mac and can make games for either platform. It can also be used to make iPhone and Android games.

There is a Unity Learn page at http://unity3d.com/learn and a documentation page at http://unity3d.com/support/documentation

In the Unity Manual you should read the first part of the Working in Unity section (up to, and including, Editor Features). Also read the Overview sections of Graphics, and Scripting. You'll want to take a look at the Unity Scripting API documentation so that you know where to go for reference. You'll also want to watch some of the video tutorials. There are quite a few Unity books available in UVU's subscription to Safari Books Online.

What I learned...

In your README.txt or README.html file (see below), include a section that tells what you learned about Unity and 3D graphics programming. Make some notes about what problems you ran into and how (or if) you solved them, and include the information. Think in terms of writing mini tutorials that describe problems and how you solved them, or what you did as a work-around.

Playability

I definitely don't expect fancy graphics or complicated game mechanics, but I do expect you to give some thought to what makes games fun. Think about what you can put in your game to make it fun without requiring a lot of programming.

Note that Playability is in the point breakdown, so if you make a "click here to win" game it might satisfy all of the other requirements but won't get any points for Playability.

Cheat codes can be very useful, for testing and for grading. Don't require testers or the grader to spend the same time that someone playing the game for fun would, or to have as quick a trigger finger.

User Stories

After you have learned more about Unity by making a simple prototype of your game, use the feature list from your project pitch to make a prioritized list of user stories. The term user stories is used in the Scrum agile development methodology. For our purposes, a user story can be thought of as a feature, a task that needs to be done, or some combination of those two things. For example a user story could be to display a health bar over characters in an RPG. Each user story should have an estimate of how long it will take to implement it. As you finish each milestone and prepare for the next one, you will revise the user stories and their priorities and then decide which user stories to implement for the next milestone.

After making your prioritized list of user stories (which is called the backlog in Scrum), identify the ones to implement for the next milestone. Select tasks for a group that is the preferred group size you specified in your project pitch.

Put your prioritized list of user stories in a spreadsheet file named backlog.xls Note that you don't have to have Excel to create .xls files. In particular, you can make them in Google Documents. Putting the list in Google Documents (or some other cloud location) is a good way to make them accessible to all of the members of your group.

README File

Include a text or HTML README file with the following information:
• Explain how to run the program and what it does. Include information about how to solve puzzles, find things, etc.
• Explain how your program satisfies the requirements. This section should give a short description of how your game satisfies each of the requirements (user input, image texture, 3D model, etc.).
• The What I learned... section described above.

Your file should be named README.html or README.txt

Turn in

Build your game for WebGL with the Release option, and test it in a browser (preferably Firefox). See these pages for more information about Web GL builds:
http://docs.unity3d.com/Manual/webgl.html Beginning of the WebGL section of the Unity manual.
http://docs.unity3d.com/Manual/webgl-gettingstarted.html Limitations of the WebGL platform
http://docs.unity3d.com/Manual/webgl-browsercompatibility.html Browser compatibility
http://docs.unity3d.com/Manual/webgl-building.html Building and running a WebGL project.

If your project doesn't run on the WebGL player talk to me before the assignment is due to make other arrangements.

Put the following files in a zip file and turn the zip file in on Canvas:

Grading

  15 User input with mouse and/or keyboard
  15 Image texture on at least one object in the game
  15 Uses one 3d model that does not come with Unity
  15 Moving objects
  15 Collision detection
  15 Time limit
  15 A way to win
  15 Playability
  10 README.txt or README.html, including "What I learned..."
  20 backlog.xls file containing a prioritized list of user stories
150 TOTAL