Introductions

Instructor: Tom O'Connor

Experience

  • Resume Website
  • Graduated 2009 from DigiPen Institute of Technology, B.S. in Real-Time Interactive Simulation
    • Win32 Engine and Architecture, Physics, Networking, Tools, Lua binding
  • Game Programmer @ 5TH Cell Media - Hybrid for XBLA (2012)
    • Valve Source Engine, Weapons, Abilities, Game Modes, Audio, UX, Flash, ActionScript, Scaleform
  • Engineer @ FuelCell Games - Insanely Twisted Shadow Planet for XBLA (2011)
    • Win32 and XBox 360 Engine, Bullet Physics, Animation, Effects systems, In-Game Level Editor, Resource management, Build tools, developing a Sriracha and coffee addition
  • Self-Employed @ PlayEveryWare - Power Defense for DSiWare, contract work for console game development
    • DSiWare Engine, gameplay, resource managment, bizdev
    • Contract - Engine work for multiplatform game engine at WayForward Technologies

About me

  • Game engine developer with major focus on windows and home consoles
  • Not very good with color schemes (will take CSS recommendations)
  • Loves making Indie Games
  • Sometimes like playing Indie Games
  • Always loves Food and Beer
  • Likes to put things into lists

Course Info

Syllabus

  • Review Lecture and Project milestone schedule
  • Attendence Requirements
  • Accessibility

Required Class Textbooks

We'll be mostly working out of the first book

  • Pascal Rettig, Professional HTML5 Mobile Game Development, 2012 Wrox Press, Inc. (ISBN 978-1-118-30132-6)
  • Jacob Seidelin, HTML5 Games: Creating Fun with HTML5, CSS3 and WebGL, 2012 John Wiley and Sons (ISBN 978-1-119-97508-3)

Supplementary Textbooks

These are the same from the first class. useful things to have around

  • David Geary, Core HTML5 Canvas: Graphics, Animation, and Game Development, 2012 Prentice Hall (ISBN 978-0-13-276161-1)
  • Douglas Crockford, JavaScript: the Good Parts, 2008 O’Reilly (ISBN 978-0-596-51774-8)
  • Sergey Mavrody, Sergey's HTML5 & CSS3 Quick Reference, 2012 Belisso Corp. (ISBN 978-1-468-15007-0)

Class Structure

  • Lectures - Relevent materials to your project, demonstration code
  • Presentations - Everyone will present their games every other week for each of the 5 milestones
  • Lab - Time in class to work on your projects, get help from the instructor and your cohort, do code reviews

Class Project

Overview

  • Design your own game that meets the requirements
  • Build a more general game engine allowing for better code reuse from game to game (but not *too* general, want to avoid the 'do-anything' fallacy)
  • The lectures will support this by focusing on general purpose implementations along with concrete examples.
  • Goals: Have fun, make something you are proud of and can share with the world

Final Project Requirements

  • Physics (collision and resolution between two objects)
  • Animation (sprites following physics, sprites with multiple frames)
  • Behaviors (simple state machines, pathing)
  • Online systems (leaderboards, achievements, dlc, etc)
  • Browser - Chrome support minimum

The complexity of each system is up to you, just make sure you have a managable balance.

We'll go over these more when we discuss the Homework.

5 Milestones

  • Proposal Pitch - Week 2, January 16th

    High concept, Schedule breakdown

  • Engine Proof - Week 4, January 30th

    Animation and Physics systems, basic gameplay proof-of-concept/prototype

  • Vertical Slice - Week 6, February 13th

    AI, Advanced Gameplay

  • Alpha - Week 8, February 27th

    Online components

  • Final - Week 10, March 13th

    Stability, Polish, Advanced features

Submission Policy

Presentations will serve as your project submission. Best not to miss them!

Code submission will be due along with each presentation:

  • Submit a zip over email, must contain all files needed to run (except for web hosting software such as Mongoose, Node, MongoDB)
  • Submit a link to a zip on DropBox
  • Submit a link to your project on BitBucket (personal preference!)

Once our games are hosted online, submit a link to it along with your code.

Development Notes

Development Environment

Check out the Chapter 7 in Rettig

IDE

Using a simple text editor? Here's my personal, non-sponsored recommendation for Sublime Text!

Fully-featured IDEs

Browser debuggers

Most modern browsers feature built-in or easily installed debugging and analysis tools.

  • Chrome: Ctrl-Shift-i
  • Firefox: Install FireBug plug-in
  • IE: F12

Features include:

  • Setting breakpoints and examining JS variables
  • Exploring the DOM and examining style settings of elements
  • Viewing the console output from console.out in JS (debug, warning, error)
  • Execute JS code from the console
  • Alert!
  • Tracking network activity: what resources fail to load or take a long time? What was sent and received in an Ajax call?
  • CPU Profiling

Local Web Server

Even for local testing you'll need to run a web server (can't do AJAX without it). An easy tool is Mongoose, which is a standalone executable.

  1. Download mongoose-3.5
  2. Place executable in the directory you want for local web hosting
  3. Run the executable
  4. Test your game in a real hosted environment using the url http://localhost:8080/

By our Alpha milestone we will need to have our games hosted online. Online web hosting service TBD (I'm still researching)

Source Version Control

It is going to be required that we use a service like BitBucket or GitHub for storing your repository online, because that's how you will submit your code.

I recommend using Git for source control. A wonderful tutorial can be found at http://gitimmersion.com/

Both sites also support Mecurial, a similar source control system.

Git Concepts

  • git add - add files to be committed (-u switch to add all changed files)
  • git rm - mark files to be deleted from source controls (. to remove all deleted files)
  • git commit - commits any changes under a new revision number (-m switch to add a comment)
  • git remote add origin - sets the online server to be your BitBucket address
  • git push - sends your latest committed code to the server (BitBucket, will require you type in your password)
  • git status - displays the status of any changed/added/deleted files

Adding your project to BitBucket with Git

Adding your project to BitBucket

  1. download a Git client (http://git-scm.com/download)
  2. Use command line in the directory where your source is at
    1. Use "git init"
    2. Use "git remote" to link to server
    3. Use "git commit" to commit changes to local source control
    4. Use "git push" to
  3. Setup BitBucket
    1. Create a BitBucket account
    2. Choose "Create Repository"
    3. Add code to your repository:
      • Chose "I'm starting from scratch"
        								cd /path/to/your/project to get this sample code
        								git init
        								git remote add origin https://magicchicken@bitbucket.org/magicchicken/temp-please-delete.git
        							
      • Choose "I have code I want to import" to get this sample code
        								cd /path/to/my/repo
        								git remote add origin https://magicchicken@bitbucket.org/magicchicken/temp-please-delete.git
        								git push -u origin --all   # to push changes for the first time
        							

Pending Notes (check back soon!)

How to compare versions of files, check file history, etc

GUI clients for Git

Forking, Cloning

Production - Task Tracking

Keep track of features you need to work on, and estimate how long they will take.

  • Breakdown into detail as much as possible
  • You're not going to be good at estimates, but that's okay.
  • Track and record how long it actually takes, then you'll get better at making estimates over time. This also helps me know how long things are actually taking you guys.
  • It's an important habit to develop: thinking about the big picture, breaking it down into tasks, thinking about how to dissect a problem, transparency when working on a team, etc.

You can use whatever you want: JIRA, Trello, Asana, a text file in your repository, a notebook with little checkboxes, doesn't matter to me.

I'll be using Workflowy because it fits with my own work-style (putting things into lists)

Sites like BitBucket and GitHub have built in task tracking software

Free online task tracking websites