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!
- SublimeText, my favorite text editor - http://www.sublimetext.com/2
- Lint module for SublimeText - https://tutsplus.com/lesson/sublime-linter/
Fully-featured IDEs
- Visual Studio
- WebStorm
- others?
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.
- Download mongoose-3.5
- Place executable in the directory you want for local web hosting
- Run the executable
- 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
- download a Git client (http://git-scm.com/download)
- Use command line in the directory where your source is at
- Use "git init"
- Use "git remote" to link to server
- Use "git commit" to commit changes to local source control
- Use "git push" to
- Setup BitBucket
- Create a BitBucket account
- Choose "Create Repository"
- 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
- Chose "I'm starting from scratch"
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
- https://workflowy.com/ (Personal preference)
- https://trello.com/
- https://app.asana.com/
- http://www.toodledo.com/