Programming_For_Play_Syllabus_2016_03


EDPX 3100 Programming for Play - Physical Games
Bill Depper

william.depper@du.edu
Class: T and F 1-3:50 in The Lab

Office Hours: Th 10-12 or by appt.

Course Description
This course is an introduction to creating interactive games within physical space and the principles and processes involved in creating interaction in these projects. The class will focus upon animation, information design, interaction design and interfaces as well as structural design within these contexts. We will discuss the preproduction processes as well as production practices using the Unity game engine as our main tool. It is assumed you will have an introductory knowledge of basic programming approaches as well as rudimentary programming problem solving. This includes working with classes and libraries within Processing. Although we are using C# and Unity many of the concept and structures from Processing will be applicable.
Additionally we will discuss game design, balancing, prototyping/iterative design and play testing. Projects and exercises will investigate working collaboratively,  natural interfaces, differences between games and playthings, socially conscious games and art games. Particular issues related to game coding will be investigated including physics, timers, scoring, levels, and time-based animation.

 

Course Objectives
Students will work on a series of exercises and projects to gain an understanding of the principles associated with programming games. Upon completing the class students should feel comfortable with the following:


Texts:
No text is required for the course although here are some suggested resources that may be extremely helpful.

    www.unity3d.com/learn - tutorial section and documentation
    Packt Publishing has a number of books on Unity
    www.digitaltutors.com - pay site with very good software tutorials
    Myriads of other sites. I will post on wiki when appropriate.

Grading
Attendance:
Attendance is mandatory. This class is heavily dependent upon group participation and interaction.
If you miss more than two classes your final grade for the course will be reduced by ten percent per absence. If you miss more than fifteen minutes of class without prior notification and approval you will be considered absent for the entire class period. If you are repeatedly late for class you may not be allowed to enter and participate in the class period you are coming late to. It is up to you to make arrangements to make up any missed work by the next class you attend. Missing project presentations will result in a loss of a full letter grade for that project. If you are participating in University sponsored events that will require your absence, please make sure you provide notice and paperwork prior to the event. Notification for absences due to religious beliefs should be given two weeks prior to the intended absence.

Student Illness –
If you are sick please avoid contact with others and refrain from coming to class. Please contact me or have someone contact me on your behalf if you are going to be absent.
You may complete your in class exercises and assignments by submitting them via email to make up for class absences.  You will be responsible for completing all missed assignments, but additional time can be arranged.

If you are too ill to return to class and miss more than three classes, this may be sufficient grounds to assign a grade of “I”/incomplete. Please contact me and keep me updated to your status and expectations for attending class.

If you are absent for a prolonged period, refer to information regarding the following: course withdrawals/incompletes, medical stop-outs, tuition refund policy/appeal, and academic exceptions at the registrar site.


Undergraduate Requirements:

Exercises from class, and homework  - 30%

The projects will be weighted as follows:
    
Game: 50%

Class preparation, Work Ethic and Participation  - 20%
Graduate Requirements:

All graduate students taking this course for credit will need to produce an additional project in addition to the requirements stated above. The additional project will encapsulate their advanced level of conceptual and technical expertise as acquired through extensive independent research and conversations with the instructor. The student will need to undertake further research in game design, ludology, and critical game studies to further their understanding of these areas. This knowledge should be used to create a compelling and unique humane or art game or plaything that engages with a subject that is important in their life. This should be an independent project from the group project. The project will be developed during the entire quarter in consultation with the instructor with a complete proposal, materials and all necessary research completed by week five. The following five weeks will be spent on the creation of the game.

The grade balance for the Graduate students will change as follows:
Grading
Exercises from class, and homework  - 30%
    
Game: 40%
Quarter long project: 10%

Class preparation, Work Ethic and Participation  - 20%

Schedule

 

Week 1
Play and Fun
Types of interaction
Playthings require interaction

The ludic approach to design
How can we make coding playful
Iterative design and the role of play testing

Interfaces and feedback loops
Types of controls – “Natural” interfaces, controllers, mouse and keyboard input

Introduction to the Unity Game Engine
Introduction to C# and the MonoDevelop IDE.

Game loops
Awake, Start, Update, FixedUpdate, LateUpdate

Unity 2D
Sprites

Triggers

Exercises:
     1. Create a basic game structure by re-skinning and repurposing the example file. Make this playable in the sense that there is one simple goal to be achieved.
     2. Select a partner and create a remixed game that includes both of your goals. If your goals are too similar, please create a new goal and implement it in the game.

 

Week 1 Files

 

Week 2
Types of play

Vectors

Rotation and motion

Spawning

Managing Input
Changing Input Mapping

Controller support -PS3, XBox 360, Wii(?)

Creating a control class

States and enum

GUI

Timers

Basic scoring

Levels
Persistent Game Control objects

Exercises:
     1. Create a new game that supports some sense of social play, creative play, narrative play or imaginative play that will allow for two players to play at the same time. You must create this sketch with a partner. You must start creating this game by passing the keyboard between the two of you every five minutes.
     2. Use timers to create reoccurring events within the first game that alter the game experience. This can include explicit countdown timers or implicit event timers that create events.


Week 2 Files

Patterns of Play from the National Institute for Play

C# Basics


Week 3
Animation

Proximity
Collisions
Physics implementation in Unity

Tiling
Background Tiling

Health systems

Sound

 

Week 3 Files

 

 


Week 4
Simple games
Don’t be too ambitious

Integrating the pieces
Game Control
Levels
Scores
Time
Inventory
Animations
Storing states
Sound
Input options
End Conditions
Replayability

OSC and tablets using Touch OSC
QR codes as input using OSC
Processing front end for QR codes

Leap controllers and Unity

 

Exercise:
     1. Work with two to three partners to create a sketch that investigates one or all of the following ideas: Proximity and repulsion, Collisions that do no include projectiles, Physics acting on non player objects. Your aspect ratio should be greater or equal to 5 to 1 in either horizontal or vertical orientation. The controllable character(s) should include animation with more than one state. Sound should be used in a diagetic manner

 

Exercise:
     1. Work with a partner to create two sketches that communicate with one anther using OSC to pass information that will cause a change in the receiving sketch.

 

Week 4 files

 

 

 

Week 5
Kinect
Kinect and OSC communication

Kinect examples

Exercises:
     1. Create a sketch that uses the Kinect to sense a hand to control the position of another  object on the screen.

     2.   Create a sketch that uses OSC to communicate between a Unity scenes on different machines.

 

 

Week5 files

 

Week 6
Kinect and skeletons

Hypercube introduction and planning.

Week 6 files

Kinect files

 

Exercise:
     1. Create a sketch that will detect a user and track the user's skeleton. Use this information to alter a sketch running on another computer.

Week 7
Light Control with DMX
Processing and DMX

Leap motion

Simple AI

Exercise:
Choose one of the following

     1. Create a sketch that controls the lights in the hypercube using a DMX library.
     2. Create a connection between the Leap Motion and Unity that alters a Unity scene.

 

Week 8
Work on final projects
First glimpse prototype

 

GameControl Example

 

Week 9
Work on final projects

 

Week 10
Final Presentations