Lab 9 - Unity Tutorial: Levels and Animation

Pre-Lab: Due Before Lab on Friday, October 20

In this quest, your goals are:

  • Learn about sprites and animation
  • Learn about level design and generation
  • Learn about prefabs

Before coming to lab, you need to complete the following:

  1. Go to https://classroom.github.com/a/5FNiF9I_ to accept the assignment.
  2. Check out your repository locally and make sure you can open the project. There may be a warning when you do so, but it shouldn't matter.

In Lab: Friday, October 20

Follow the tutorial found at https://unity3d.com/learn/tutorials/projects/2d-roguelike-tutorial.

You are welcome to begin the tutorial before coming to lab. The tutorial will take over an hour to complete, so you may run out of time in lab. You can finish it after lab as a part of the post-lab submission.

NOTE: Some things are different in our current version of Unity versus the one used in the tutorial. The Unity team has provided some guidance, but you can't just blindly do everything and expect it to work. Think about what you are doing!

Post-Lab: Due Wednesday, October 25 @ 11:55 PM

Add to your game the following things:

TBD! Expect things to be added here soon!

To help us grade, we ask that you create Windows and Mac builds for all of your Unity submissions to go along with your projects. However, you do not want your uncompressed builds to be included in your GitHub repos as that will result in a large number of changes to be continuously monitored. To create and submit your builds, please do the following:

  1. Create a folder called Builds in the root of your project folder.
  2. Use File > Build Settings to create your builds. See https://docs.unity3d.com/Manual/PublishingBuilds.html for more information on how this works.
  3. In your Builds folder, find your Windows and Mac builds. Archive the contents of this directory (select everything and right click choosing the appropriate option) and name the file unity2-yourcomputingid.zip
  4. Put the zip file in the root of your project folder and check it in as normal to GitHub.

Commit all changes to your GitHub repo before 11:55 PM Wednesday, October 25. Please include in the root of your repository a README.md file either by creating the file or using the Add a README button on the homepage of your repo. This file should describe how you went about completing the NPC feature - the algorithm, design, and citations for any sources you used. Finally, upload the same contents of your README.md file in a PDF called README-compid.pdf (adding a link directly to your repo please to make it easier for grading) and upload that to the Quest in Gamer Card.

more ...

Lab 8 - Midterm Miniboss

Pre-Lab: Due Before Lab on Friday, October 13

  1. Play Thomas Was Alone up through level 5.1 and submit a pic to the appropriate quest.
  2. Study for the test!
  3. Bring a laptop + charging cable to the lab to take the test. Some students can use the desktops, but over 50% will need to use a laptop.

Miniboss Information

Format:

  • Multiple choice
  • Short answer
  • Questions regarding Thomas Was Alone
  • Play a game during the test and answer questions about it

Material:

  • History of gaming - crash of 1983, importance of Nintendo
  • What is a game? - McGonigal's definition, general idea of Reality is Broken early chapters
  • Formal Elements - Ch. 3 of Fullerton, player patterns, rules, procedures, action/interaction, resources, boundaries, etc.
  • MDA - be able to define all parts, know all 9 aesthetics and can identify them
  • Second-Order Design problem
  • World Building - what is world building, how is it different than plot, why do we do it, who does it appeal to
  • Psychographic profiles - Johnny (clever mechanic), Timmy (big dynamics), Spike (game optimizer), Vorthos (theme / setting / flavor)
  • Probability / Risk - how randomness is used in games, comparison to board games, importance / power of information hiding with video games
  • Level Design - importance of tutorial / first level, designing for risk / reward decisions, giving players agency (meaningful choices) in a level, examples of things done in Super Mario Bros and Doom for first levels
  • Prototyping - why is this important, benefits of physical prototypes, potential advantages of digital prototypes (perhaps in game engine itself)
  • Game Architecture / ECS - how are games structures (i.e. not event-driven), what is ECS, what advantages does it give, how does it work
  • Game Loop - update + draw, how many times this runs per second, what things happen during each step of the loop
  • Physics - what is the "right" physics for your game, what things do we calculate when working with physics, why can / should we not do perfect physics in every game

Not on the test:

  • Coding in Unity
  • How to come up with a game idea
  • Game pitches
  • Entitas

In Lab: Friday, October 6

Tips for taking tests in Collab:

  1. Open the test in Collab and copy the questions out of Collab and into the document editor of your choice (Word, text editor, Google doc, whatever).
  2. Answer all the questions first in your document editor, saving as you go.
  3. Copy the plain text of your answers into the question boxes in Collab one at a time when you are ready to submit.
  4. Submit the test and keep your back up just in case something happens.

Post-Lab

Work on your games!!

more ...

Lab 7 - Unity Tutorial: 2D Platformer

Pre-Lab: Due Before Lab on Friday, October 6

In this quest, your goals are:

  • Become more familiar with game objects and scripts in Unity
  • Work with gravity and collision detection
  • Work with player controlled behavior

Before coming to lab, you need to complete the following:

  1. Go to https://classroom.github.com/a/1lesLYDK to accept the assignment.
  2. Check out your repository locally and make sure you can open the project. There may be a warning when you do so, but it shouldn't matter.

In Lab: Friday, October 6

Follow the tutorial found at https://unity3d.com/learn/tutorials/topics/2d-game-creation/intro-and-session-goals?playlist=17093.

You are welcome to begin the tutorial before coming to lab. The tutorial will take over an hour to complete, so you may run out of time in lab. You can finish it after lab as a part of the post-lab submission.

Post-Lab: Due Wednesday, October 11 @ 11:55 PM

Add to your game the following things:

  1. At least one NPC that patrols back and forth in a given area. For full credit, the NPC should not fall off of any ledges (and you should place at least one NPC showing that this is the case). You can use any sprite you want that is not already included in the tutorial. Animation is not required.
  2. A counter that appears on screen that shows how many times the player character has touched/collided with the NPC from item 1. Note that you can have multiple instances of this NPC throughout the level. Nothing else needs to happen on collision (i.e. sound, "hit damage"), but if you would like to add something, you can.

To help us grade, we ask that you create Windows and Mac builds for all of your Unity submissions to go along with your projects. However, you do not want your uncompressed builds to be included in your GitHub repos as that will result in a large number of changes to be continuously monitored. To create and submit your builds, please do the following:

  1. Create a folder called Builds in the root of your project folder.
  2. Use File > Build Settings to create your builds. See https://docs.unity3d.com/Manual/PublishingBuilds.html for more information on how this works.
  3. In your Builds folder, find your Windows and Mac builds. Archive the contents of this directory (select everything and right click choosing the appropriate option) and name the file unity2-yourcomputingid.zip
  4. Put the zip file in the root of your project folder and check it in as normal to GitHub.

Commit all changes to your GitHub repo before 11:55 PM Wednesday, October 11. Please include in the root of your repository a README.md file either by creating the file or using the Add a README button on the homepage of your repo. This file should describe how you went about completing the NPC feature - the algorithm, design, and citations for any sources you used. Finally, upload the same contents of your README.md file in a PDF called README-compid.pdf (adding a link directly to your repo please to make it easier for grading) and upload that to the Quest in Gamer Card.

more ...

Lab 6 - Physical Prototypes

Pre-Lab: Due Before 10:00 AM on Friday, September 29

Keep working on your physical prototypes!

In Lab: Friday, September 22

You will get a little time to finish up your prototypes. Then we will walk around and do demos for everyone else in the class!

Post-Lab: Before you leave lab

Make sure to take pictures and put them in a directory called prototype in your GitHub repo.

more ...

Lab 5 - Physical Prototypes

Pre-Lab: Due Before 10:00 AM on Friday, September 22

Work with your team to pick one level that you want to do a physical prototype of over the next two labs. Some materials will be provided (poster board, markers, scissors, tape, etc.), but if you have anything specific you want to use, please bring it.

In Lab: Friday, September 22

Work on your physical prototypes! These are not due until the next lab. The TAs and Prof. Sherriff will also meet with each team individually to discuss plans and the scope of their project.

Slides - Prototyping

Post-Lab: Before the next lab on Friday, September 29

Continue working on your physical prototype, along with your design document for your team's game.

more ...

Lab 4 - Game Pitches

Pre-Lab: Due Before 10:00 AM on Friday, September 15

Complete the "You Have a Vision..." quest, writing your design document and uploading it to Gamer Card. If you want your game to be considered to be built by the class, please fill out this form by Thursday, September 14, at 5:00 PM: https://goo.gl/forms/FTmrhSBvbKXx1tat1

In Lab: Friday, September 15

Come and hear the pitches (or give your own!) and vote on the games you want to see built!

Post-Lab: In lecture, Monday, September 18

Games and teams will be announced during lab! Get with your teams before the next lab to start planning your physical prototype.

more ...

Lab 3 - Unity Tutorial: Roll a Ball

Pre-Lab: Due Before Lab on Friday, September 8

In this quest, your goals are:

  • Become familiar with the basic interface of Unity
  • Create a simple game from a tutorial
  • Add to that game in some interesting ways
  • Sync your project to an assignment repo in GitHub

Before coming to lab, you need to complete the following:

  1. Install Unity and create a Unity account - http://store.unity.com. Make sure to get the Personal/Free version!
  2. Go to https://classroom.github.com/a/K1b6EkT2 to accept the assignment. Make sure to choose your computing ID from the list when you accept!
  3. Launch Unity and create a new project called Roll a Ball. Create a new project
  4. Open your project directory and add a .gitignore file to the root of the directory. Copy the text from this example .gitignore into your own.
  5. From a terminal window in the root of your project, run these commands:
    • git init .
    • git add *
    • git commit -m "initial commit"
    • git remote add unity-tutorial-1-roll-a-ball-yourgithubid https://github.com/UVA-CS4730-F17/unity-tutorial-1-roll-a-ball-yourgithubid.git
    • git push unity-tutorial-1-roll-a-ball-yourgithubid master

Your project is now connected to GitHub! You're ready to go when you get to lab! If you have problems with this, please go to office hours or ask first thing during lab.

In Lab: Friday, September 8

Follow the tutorial found at https://unity3d.com/learn/tutorials/projects/roll-ball-tutorial to complete this basic game!

You are welcome to begin the tutorial before coming to lab. The tutorial will take a little over an hour to complete, so you may run out of time in lab. You can finish it after lab as a part of the post-lab submission.

Post-Lab: Due Monday, September 11 @ 11:55 PM

You should now add three unique things to your tutorial Roll-a-Ball game of your own design!

The first one that everyone must do is audio. Make a sound play whenever an item is picked up!

Now add two more things of your choosing. These could be:

  • Particles
  • Different background / skybox
  • Opposing entities
  • Other types of objects that do something different
  • More movement options (jumping, etc.)
  • Plenty of other things! Ask a staff member!

For some ideas, look around at the projects found at https://unity3d.com/learn/tutorials. You can also Google for ideas!

To help us grade, we ask that you create Windows and Mac builds for all of your Unity submissions to go along with your projects. However, you do not want your uncompressed builds to be included in your GitHub repos as that will result in a large number of changes to be continuously monitored. To create and submit your builds, please do the following:

  1. Create a folder called Builds in the root of your project folder.
  2. Use File > Build Settings to create your builds. See https://docs.unity3d.com/Manual/PublishingBuilds.html for more information on how this works.
  3. In your Builds folder, find your Windows and Mac builds. Archive the contents of this directory (select everything and right click choosing the appropriate option) and name the file unity1-yourcomputingid.zip
  4. Put the zip file in the root of your project folder and check it in as normal to GitHub.

Commit all changes to your GitHub repo before 11:55 PM Monday, September 11. Please include in the root of your repository a README.md file either by creating the file or using the Add a README button on the homepage of your repo. This file should list the three features you added with links to any tutorials/resources that you used to create them. Finally, upload the same contents of your README.md file in a PDF called README-compid.pdf (adding a link directly to your repo please to make it easier for grading) and upload that to the Quest in Gamer Card.

more ...

Lab 2 - Mechanics / Dynamics / Aesthetics

Lecture Date: Friday, September 1

Today in lab we’ll discuss Mechanics / Dynamics / Aesthetics. Make sure to have read the MDA paper on the schedule and watched the EC video that goes along with today!

What are the aspects of aesthetics? What sort of game should you make? What do you love?

Why do we discuss games in the terms of genres as we do? Consider how we discuss genres in music and movies. Is it the same?

Consider the MDA ideas in the context of what we have been discussing as to what is a game:

  • Mechanics - rules and systems
  • Dynamics - experiential play
  • Aesthetics - underlying emotive reasons for playing

Is there a reason we should categorize by mechanics? (some mechanics easier/more approachable than others)

Let’s consider what aesthetics we might go for in our games. How many aesthetics do we want?

  • Sense Pleasure – stimulates senses / play it for the graphics or audio – Ex. Rez, Child of Eden
  • Fantasy – can do something that you can’t do in real live – Ex. COD, NFL, Rock Band
  • Narrative – game as drama, stories – Ex. Final Fantasy, Sims, Mass effect
  • Challenge – game as obstacle course – Ex. Any game with arbitrary unnecessary obstacles, such as Mario games
  • Fellowship – working together – Ex. WoW, Team Fortress 2, Journey
  • Competition – games as dominance – Ex. all fighting games, StarCraft, League of Legends
  • Discovery – uncover the new – Ex. Skyrim, Minecraft, Guild Wars 2, Dark Cloud
  • Expression – being creative – Ex. Minecraft, SimCity
  • Abnegation – game as past time / tune out gaming, grinding – Ex. Bejeweled, Tetris, Jetpack Joyride, endless runners

MDA shows us the second-order design challenge as software engineers.

Consider spawn camping as an example of mechanic into dynamic and emergent game play. What aesthetics does this create?

After our class discussion, we’ll do a quick game evaluation together.

Materials: MDA Paper

Mario lab:

Luigi lab:

more ...

Lab 1 - Game Kits

Lecture Date: Friday, August 25

Today we'll be making our first games for the semester in lab!... with random stuff I found from the Dollar Store. Good times!

more ...