1 Game Development Lab Fall 2016 Copenhagen 3 Credit Course Major Disciplines: Computer Science, Mathematics Faculty Member: Benno Lüders, benno.lueders@googlemail.com Program Director: Iben de Neergaard, Vestergade 10 A23, idn@dis.dk Program Coordinator: Louise Bjerre Bojsen, Vestergade 10 A23, lbb@dis.dk Program Assistant: Jenny Han, Vestergade 10 A23, yh@dis.dk Mondays and Thursdays,, N7-C25 Course Description: In the lab component of the Game Development course, you will put into practice the theories and concepts you have discussed in the seminar section of the course. The semester begins with a crash course in Unity, an intuitive game development environment produced in Denmark that allows you to immediately tinker with a simple, existing game template and move on to develop simple 2D or 3D game designs of your own making. Simulating the Danish indie game community, which is characterized by small teams of 1-3 people rather than major game production conglomerates, you will work individually or in small groups throughout the semester. The games will be created using existing freely available game assets (graphics and sounds). The hands-on work in the Game Lab is supplemented with a mini game jam. After successful completion of the lab part of this course, you: Use the Unity Editor to create interesting game levels Create game scripts using C# and the Unity API Understand the fundamentals of using 2D and 3D graphics Are acquainted with advanced topics such as shaders, physics, AI, and Network based games. Understand the process of game development from idea to beta version Can apply theories and develop and test an actual game Approach to Teaching: The lab is a continuation of the Game Development course and is a hands-on class with many opportunities to try out - through trial and error - your skills as a game developer. Throughout the semester, you will be revising, developing and testing actual games. The Game Lab is intended to be a collaborative community and facilitate discussions, where faculty and peer feedback sessions will be an important part of the learning. Faculty Benno Lüders. M.S (Game Technology, IT University of Copenhagen, 2016). Game enthusiast and Game Development all-rounder with focus on Game Programming. Assistant teacher at the royal academy of fine arts in Copenhagen (2015-2016). Tutor and teaching assistant at the IT University of Copenhagen (2015) and Hochschule Fulda (2011-2013). Backend Java developer at mobile game company Flaregames in Karlsruhe (2013-2014). With DIS since 2016.
2 Assessment: Participation: 20% Demonstrated ability to master Unity (tutorials and exercises): 25% Peer Reviews: 20% Lab Journal with game design, test protocol, etc.: 35% Additional lab tutorials: http://unity3d.com/learn/tutorials/modules For more readings and information, see syllabus for Game Development: Programming and Practice DIS Policies Attendance: You are expected to attend all DIS classes when scheduled. If you miss two classes in a row, the Office of Academic Support and the Director of Student Affairs will be notified, and they will follow-up with you to make sure that all is well. Absences will jeopardize your grade and your standing at DIS. Allowances will be made in cases of illness, but, in the case of multiple absences, you will need to provide a doctor s note. Laptop Computer Policy: While most students find that taking notes by hand in class is quite sufficient for review purposes, you are allowed to use a computer in class for writing lecture/discussion notes. However, you are asked not to use computers in class to write e-mails, connect to social media or other such activities, as this is quite disrespectful and distracting for me and other students. Failure to show this courtesy will result in a significant reduction of your class participation grade. Academic Honesty: DIS expects that students abide by the highest standards of intellectual honesty in all academic work. DIS assumes that all students do their own work and credit all work or thought taken from others. Academic dishonesty will result in a final course grade of F and can result in dismissal. The students home universities will be notified. DIS reserves the right to request that written student assignments be turned in electronic form for submission to plagiarism detection software. See the Academic Handbook for more information, or ask your instructor if you have questions. Disability and Resource Statement: Any student who has a need for accommodation based on the impact of a disability should contact Sean Green at sgr@dis.dk to coordinate this. In order to receive accommodations, students should inform the instructor of approved DIS accommodations within the first two weeks of classes.
3 Course Schedule (subject to change) The course schedule is a combined schedule for the two co-requisite courses: Game Development: Programming & Practice and Game Development Lab. Overview #1 - Game development with Unity (Crash course) Mon, Aug. 29, #2 - Programming Unity using C# Thu, Sep. 1, #3 - Game design: The structure of games Mon, Seb. 5, Field study - Wed, Sep. 7 #4-2D Game development - Thu, Seb. 8, Core course week Sep. 12-17 #5 - Game mechanics, rules and challenges - Mon, Sep. 19, #6 - Collisions detection and physics simulation in games - Thu, Sep. 22 #7 User experience - Mon, Sep. 26 #8 - Brainstorming and conceptualization - Thu, Sep. 29 #9-3D Computer graphics - Mon, Oct. 3 #10 The Game Design Document - Thu, Oct. 6 #11 Prototyping and Pitching - Thursday, Mon, Oct. 17 Field study - Wed, Oct. 19 #12 Advanced 3D Computer Graphics - Thu, Oct. 20 #13 Materials and shaders Mon, Oct. 24 Field study - Wed, Oct. 26 #14 - AI Programming Thu, Oct. 27 Long study tour Oct. 29 Nov. 6 #15 Playtesting, balancing and level design Mon, Nov. 7 #16 Network programming Thu, Nov. 10
4 #17 Guest lecture Mon, Nov. 14 #18 Optimzing runtime performance - Thu, Nov. 17 #19 Indie games Mon, Nov. 21 #20 - Presentation of game projects Mon, Dec. 5 Field study - Wed, Dec. 7 Thu, Dec 8 End of Semester Showcase
5 #1 - Game development with Unity (Crash course) Mon, Aug. 29, Understand the need for using game engines Familiar with the Unity Editor interface Hands-on Unity: Extending the example exercise #2 - Programming Unity using C# Thu, Sep. 1, Explain the role of programming languages in game development. Use C# programming language to script simple behavior in Unity C# multiple choice quiz Hands-on Unity: Extending the example exercise using C# scripting #3 - Game design: The structure of games Mon, Seb. 5, Analyze a game and describe the game in terms of its core game elements Combine the building blocks of games in order to design new games. Introducing lab exercise 1. 2D platformer. Form groups of 1-3 persons. Discuss current game elements and future extensions. Document your discussion. Field study - Wed, Sep. 7 8:30 12:30 TBA
6 #4-2D Game development - Thu, Seb. 8, Explain how 2D games are composed of sprites stored in a scene hierarchy. Compute sprite position using vector and matrix math Understand the structure of a 2D Unity project Create and use sprites in Unity 2D Vector math exercise Work on lab exercise 1 Core course week Sep. 12-17 TBA #5 - Game mechanics, rules and challenges - Mon, Sep. 19, Analyze the game mechanics of a given game Design game mechanics for a new game. Describe the last game you enjoyed playing in terms of game mechanics, rules and challenges Work on lab exercise 1
7 #6 - Collisions detection and physics simulation in games - Thu, Sep. 22 Understand how a collision is detected in games Understand how physics are simulated in games Create simple 2D physics based games in Unity 2D physics simulation exercise: Implement a particle effect using simple physics simulation. Work on lab exercise 1 #7 User experience - Mon, Sep. 26 Identify problematic user interface design List common user interface elements used in games Create a user interface using Unity s New GUI Exercise. Implement a simple scoreboard for a game that adapts to different screen sizes. Work on lab exercise 1 #8 - Brainstorming and conceptualization - Thu, Sep. 29 Brainstorm and conceptualize a game Brainstorm 2 different game concepts in 40 minutes. The brainstorm result should be documented on computer or paper. Introduction to 3D ball rolling game
8 #9-3D Computer graphics - Mon, Oct. 3 Understand the basic concepts of 3D graphics Create 3D primitives using Unity s scripting API Working with graphics primitives in Unity Working with mesh class in Unity #10 The Game Design Document - Thu, Oct. 6 Write a game design document (based on the result of a brainstorm / conceptualization session) Create a game design document for the modification of the 3D ball rolling game Introduction to 3D ball rolling game #11 Prototyping and Pitching - Thursday, Mon, Oct. 17 Perform a prototyping session to help shape an idea. Make a prototype of one of your own ideas for a game mechanic Pitch your idea Introduction to 3D ball rolling game Field study - Wed, Oct. 19 8:30 12:30 TBA
9 #12 Advanced 3D Computer Graphics - Thu, Oct. 20 Understand the coordinate spaces and transformations are used in 3D graphics Describe how 3D perspective camera transform 3D models into a 2D image See how the theory of 3D graphics is used in Unity. Create a rendering using a projection matrix using the Unity Graphics class Working with 3D ball rolling game #13 Materials and shaders Mon, Oct. 24 Explain how triangles travel through the graphics pipeline and end up as pixels. Show how a simple local light model works. Modify a Unity shader to change the visual result. Create a shader that interpolate between two face models (with vertex correspondence) in Unity Introduction to final project Field study - Wed, Oct. 26 13:00 17:00 TBA
10 #14 - AI Programming Thu, Oct. 27 Explain the goal of using AI in games Use the Unity navigation system to perform path finding and movement of game entities. Exercise in using the navigation mesh. Supervision on final project Long study tour Oct. 29 Nov. 6 More information will be provided closer to the date #15 Playtesting, balancing and level design Mon, Nov. 7 Identify problems by playtesting a game Describe possible solution to problems identified during playtesting Level design exercise Supervision on final project
11 #16 Network programming Thu, Nov. 10 List several types of network based games Understand how networking is implemented in a game engine Create simple Unity games with networked based multiplayer Explain how game peripharals like Kinect and Oculus Rift can be used from Unity. Networking exercises Supervision on final project #17 Guest lecture Mon, Nov. 14 TBA. TBA #18 Optimzing runtime performance - Thu, Nov. 17 Explain how a pipelined architecture has impact on performance. Identify performance bottlenecks in Unity games. Optimization exercises Supervision on final project
12 #19 Indie games Mon, Nov. 21 Guest lecture by Thomas Ryder. TBA Reading: TBA. Supervision on final project Further reading: TBA. #20 - Presentation of game projects Mon, Dec. 5 All groups present their game and receive feedback for their work. None Field study - Wed, Dec. 7 13:00 17:00 TBA Thu, Dec 8 16:00-18:00 End of Semester Showcase More information will be provided closer to the date