Course Outline - Introduction to Game Programming

Course Outline - Introduction to Game Programming
Overview of course expectations and outcomes
Students will gain a functional introduction to programming for games and similar interactive media.
The result will be competency in JavaScript and two popular game programming frameworks. This will
be demonstrated by the creation of several digital game prototypes using these tools.
Instruction will be geared to the needs of non-technical students with no assumption of prior
programming knowledge. This course forms part of the foundation of learning game design and the
development of interactive digital media.
At the beginning of the semester, students will use the free game building software, Construct 2, to
rapidly create game prototypes using the program’s visual code-free interface. Students will
simultaneously be learning plain JavaScript syntax and basic concepts outside of any game framework.
This hybrid dynamic will continue for approximately four weeks, at which point students are to
transition to using JavaScript to build their games.
For the rest of the semester, students will employ a free and open-source game library called PandaJS
which demands that the students write all of the mechanics for their game projects in JavaScript.
In addition to learning important programming concepts and achieving competency with game
development tools, students will increase their ability to use computational thinking as an inherent part
of this curriculum. They will gain experience throughout the course in logical thinking, organizing and
modeling data, and simulation as part of programming games. Students will gain experience with the
decomposition of large problem sets through the process of analyzing existing games into their
component parts.
Computational thinking is the necessary bedrock on which the foundation of game programming rests.
Students will work extensively with pattern recognition, abstraction, and algorithmic design throughout
the course. These are exemplified in students learning core structures and processes such as events,
arrays, logical conditions, state-maintenance, score-keeping, etc., and in designing their own algorithms
based on existing patterns.
Required Resources



Students will need to acquire a clicker for purposes of attendance and participation in the
ungraded quizzes each class period.
Students will need to bring a laptop to each class period. If the student does not possess a
laptop, there are a handful of computers in the classroom available for use, or students may
optionally work in pairs during class sessions.
Students will need to download and install the free version of Construct 2. This is Windows only
software, so Mac users will have to run the software in Parallels, BootCamp, or virtual machine.
Assessment

Students will create a portion of a designated game project approximately every week, due on
the following Sundays at 11:59PM. Game projects are to be made in Construct 2 for the first





several weeks and JavaScript with the PandaJS library for the rest of the semester. Students will
work on a final project the last six weeks of the semester.
Extra credit is offered situationally on project assignments for specified achievements above the
assignment requirements.
Students will be required to complete introductory JavaScript courses on CodeCademy.com, an
interactive e-learning platform dedicated to offer training on a variety of coding languages. The
student’s progress is verified through the student’s public profile.
There is a single exam, namely the midterm exam. This exam verifies competency in JavaScript
syntax and basic concepts, as well as assesses the student’s ability to breakdown the rules of a
simple digital game.
There is a final project in the absence of a final exam.
Attendance is required and graded.
Grade Weights:
 Attendance: 15%
 Regular game projects: 40%
 CodeCademy series (completion): 10%
 Midterm exam: 15%
 Final project: 30%
Grading Scale
Grade Percent
A+
97+
A
93–96
A90–92
B+
87–89
B
83–86
B80–82
C+
77–79
C
73–76
C70–72
D+
67–69
D
63–66
D60–62
F
0–59
Note: non-integer percentages use standard rounding to the nearest integer.
Readings
There is no required textbook, but there are to be numerous optional readings to complement project
assignments and bolster a greater context for game development and computational thinking.
These optional readings are to be in the form of web articles.
Policies

Attendance is taken at the beginning of each class period using clicker technology.


Late work is accepted until Wednesdays at 4PM, where each successive day it is late, 20% of the
maximum points are taken off. Since assignments build on each other, late work will not be
accepted after Wednesdays of the week.
No group work is permitted on any assignment.
Assignment Format Policies
- Construct 2 projects must be turned in as .CAPX files.
- JavaScript/Panda projects must be turned in as a zip archive with all the necessary script and
asset files (such as images, sound, etc).
- Written code for JavaScript/Panda projects may use whatever style of variable naming, code
commenting, and bracket placement.
o However, written code must not be minified, that is, obfuscated and compressed by
way of putting a significant portion of the code statements on a single line.
- All turned in files, such as ZIP and CAPX files, must not be corrupted. It is the student’s
responsibility to confirm the file is not corrupted, by downloading the turned-in file from Canvas
and testing to see if it works.
o The gold standard in this class for verifying a turned-in file is not corrupt is if the file can
be downloaded from Canvas to a campus STC machine and work.
Course Procedures
Students will have access to the syllabus, weekly expectations such as assignments, and communication
through Canvas. Students will also have to register their Clicker IDs with Canvas at the beginning of the
semester.
At the beginning of each class session, a 4–6 question quiz is administered through PowerPoint and the
Clicker plugin on the instructor station. Students answer with their Clicker remotes, and the responses
get recorded, along with the student’s Clicker ID, into Canvas automatically. This is conducted for
purposes of attendance records, as well as allowing the faculty to determine student absorption of the
material.
Students will turn in assignments through Canvas for purposes of organization and timestamps.
Construct 2 projects are to be turned in as the native .capx project file, and the JavaScript assignments
are to be turned in as .zip archives of the project folder. CodeCademy series completion is designated
with a badge, along with a timestamp on the student’s public profile. Each student will give the
instructor their profile link at the beginning of the semester.
Assignment descriptions are given on Canvas, which include links to playable complete versions of the
assignment game projects for their reference. Project assets, such as image files, are also to be provided
as downloads on Canvas.
The material covered on each of the two times per week the class meets depends on learning objectives
for the week or preparation for the assignment. Class sessions may see a variety of modes, such as stepby-step instructor-led tutorials, group discussions, or traditional instructor explanations of material.
Early in the semester, the combination of learning Construct 2 and straight JavaScript will give students
both practical knowledge they can put to use right away along with foundational computational
concepts. This will help non-technical students in particular to quickly build an effective mental model of
game programming.
Final Project
Week 9, students are asked to give a very brief pitch of a game design that meets three of a list of
potential requirements, such as physics, multiple layouts, and opponent artificial intelligence (AI). The
students will then vote on their favorite projects that meet the qualifications. The top three game
designs then become the choices in which each student must choose one for his or her final project.
Semester at a glance
Week 1
Learning goals:
 Go over what to expect from the course.
o What we will cover and what we won't.
o What tools and supplies they need to have and install.
Construct
2 game foundations

o Sprites
o Game world (layout) versus window
o Simple events
 Setting position
o Objects and properties
o Basic input
Assignments:
 In Construct, set up background and object art for simple game with basic input.
 Do CodeCademy JavaScript Getting Started with Programming
o Synopsis of what is covered in that series is on the Resources page of this notebook
Resources
 TornadoTwins intro to game development article (the one that emphasizes scope and
completion): http://tornadotwins.com/?p=237
 Download Construct 2: http://scirra.com , then click “Free Download”
 Running Windows programs (namely Construct 2) on a Mac: https://kb.iu.edu/d/ahjj
Week 2
Learning goals:
 Construct 2 game foundations
o Position offsets
o Delta time
o Collisions
o Global numbers and text
 JavaScript
o Variables
o basic arithmetic
o data types
 Numbers
 Strings
o Properties, such as "string".length
o Booleans, comparisons
Assignments:
 In Construct, build on last week’s assignment to include collision handling, spawning and removing
objects.
 CodeCademy JS Introduction to Functions and Introduction to For Loop in JS
Resources
 Simple JavaScript sandbox: http://repl.it
Week 3
Learning goals:
 Construct game foundations
o Rotation by delta time
o Complex logic branches
 Sub events
 multiple conditions
 JavaScript
o Functions, return values
o User input with prompt
o Loops
Assignments:
 In Construct, create new project and set up graphics and background. Use behavior to control
velocity, manage stacking order, state management, end game instructions.
 CodeCademy JS Introduction to While Loops in JS and Array and Objects in JS series due at the end
of the week
Week 4
Learning goals:
 Construct game foundations
o Modifying hit areas
o Custom instance variables
o Boolean object states
 JavaScript
o More Loops
o Data structures and collections
Assignments:
 In Construct, expand previous week’s game with powerups, modifies collision areas, keeps track of
resource
 CodeCademy JS Introduction to Objects
Week 5
Learning goals:
 JavaScript
o Setting up Panda, text editor, and live preview
o Sprites, TilingSprites
o Basic input handling
Assignments:
 First Construct 2 assignment made in Panda
Week 6
Learning goals:
 JavaScript
o
o
o
Creating classes and spawning instances of custom classes
Movement behavior in classes, init, update
Creating Timers
Assignments:
 Build on last week’s assignment with spawning objects from custom classes on an interval.
Resources
 Panda JS docs: http://ekelokorpi.github.io/panda.js-site/engine/docs/classes/Sprite.html
Week 7
Learning goals:
 JavaScript
o
o
o
o
Collision handling
Object removal
Class inheritance
Super function
Assignments
 Build on the previous week’s assignment by including collisions through custom child classes.
Resources
 Sample final project short design document for reference
Week 8
Learning goals:
 JavaScript


Working with Text objects
Keeping track of resource variable
 Midterm study guide
Assignments:
 Build on the previous week’s assignment by including text reporting current resource value.
 Study for midterm
Resources
 Midterm study guide
Week 9
Midterm
 JavaScript syntax
 Logic with control structures and functions
 Break down the components of a game through analysis
Select final project through voting on the game designs that students optionally pitched online.
Week 10
Potential Learning goals:
 Mouse object clicking
 Changing scene
 Tweening
Assignments:
 Final project milestone 1. Employ graphics and scene setup.
Week 11
Potential Learning goals:
 Spritesheet animations
 Resource management
 Gravity manipulation
Assignments:
 Final project milestone 2. Complete first new mechanic/concept as written in the game design
spec.
Week 12
Potential Learning goals:



Particles
Blocking collisions
Sound
Assignments
 Final project milestone 3. Complete first new mechanic/concept as written in the game design
spec.
Week 13
Potential Learning goals:
 Interactive HUD
 Basic AI
- Pinning graphics
Assignments:
- Final project milestone 4. Complete final new mechanic/concept as written in the game design
spec.
Week 14
Potential Learning goals
- Code organization and refactoring
o Separate files
o Making things modular
o
Defining in proper scopes
Assignments:
- Clean up code of final project to conform to proper coding practices
Resources
 Finishing a Game blog article: http://makegames.tumblr.com/post/1136623767/finishing-agame
Week 15
Learning goals
- Principles of polish
o Game instructions and flow
o Menus
Assignments:
- Complete final project
Week 16


Turn in final project
Present your final project
Instructor Communication Statement
The following sections have been taken from the I399 Intelligence Analytics course outline document,
with minor changes.
Academic Integrity Statement
Students are reminded that double submission of work for academic credit, fabrication, and
plagiarism are serious academic offenses that can result in penalties up to and including failure
on an assignment or failure in the course. According to the Indiana University Code of Student
Rights, Responsibilities, and Conduct, they are defined as follows:
1. Cheating
Cheating is considered to be an attempt to use or provide unauthorized assistance, materials,
information, or study aids in any form and in any academic exercise or environment.
1. A student must not use external assistance on any “in-class” or “take-home” examination, unless
the instructor specifically has authorized external assistance. This prohibition includes, but is not
limited to, the use of tutors, books, notes, calculators, computers, and wireless communication
devices.
2. A student must not use another person as a substitute in the taking of an examination or quiz,
nor allow other persons to conduct research or to prepare work, without advanced authorization
from the instructor to whom the work is being submitted.
3. A student must not use materials from a commercial term paper company, files of papers
prepared by other persons, or submit documents found on the Internet.
a. Exceptions can be made for including open source and free code libraries in assignments,
only with the instructor’s consent.
4. A student must not collaborate with other persons on a particular project and submit a copy of a
written report that is represented explicitly or implicitly as the student’s individual work.
5. A student must not use any unauthorized assistance in a laboratory, at a computer terminal, or
on fieldwork.
6. A student must not steal examinations or other course materials, including but not limited to,
physical copies and photographic or electronic images.
7. A student must not submit substantial portions of the same academic work for credit or honors
more than once without permission of the instructor or program to whom he work is being
submitted.
8. A student must not, without authorization, alter a grade or score in any way, nor alter answers on
a returned exam or assignment for credit.
2. Fabrication
A student must not falsify or invent any information or data in an academic exercise including,
but not limited to, records or reports, laboratory results, and citation to the sources of
information.
3. Interference
A student must not steal, change, destroy, or impede another student’s work, nor should the
student unjustly attempt, through a bribe, a promise of favors or threats, to affect any student’s
grade or the evaluation of academic performance. Impeding another student’s work includes,
but is not limited to, the theft, defacement, or mutilation of resources so as to deprive others of
the information they contain.
4. Violation of Course Rules
A student must not violate course rules established by a department, the course syllabus, verbal
or written instructions, or the course materials that are rationally related to the content of the
course or to the enhancement of the learning process in the course.
5. Facilitating Academic Dishonesty
A student must not intentionally or knowingly help or attempt to help another student to
commit an act of academic misconduct, nor allow another student to use his or her work or
resources to commit an act of misconduct.
Plagiarism
Plagiarism is defined as presenting someone else's work, including the work of other students, as
one's own. Any ideas or materials taken from another source for either written or oral use must
be fully acknowledged, unless the information is common knowledge. What is considered
"common knowledge" may differ from course to course.
A student must not adopt or reproduce ideas, opinions, theories, formulas, graphics, or pictures
of another person without acknowledgment.
A student must give credit to the originality of others and acknowledge indebtedness whenever:
Directly quoting another person's actual words, whether oral or written;
Using another person's ideas, opinions, or theories and claiming them as one’s own;
Paraphrasing the words, ideas, opinions, or theories of others, whether oral or written;
Borrowing facts, statistics, or illustrative material; or
Offering materials assembled or collected by others in the form of projects or
collections.
ADA Disability Compliance Statement
The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides
comprehensive civil rights protection for persons with disabilities. Among other things, this
legislation requires that all students with disabilities be guaranteed a learning environment that
provides for reasonable accommodation of their disabilities. If you believe you have a disability
requiring an accommodation, please contact IU Disability Services for Students.