5. why build games?
Fun - a great way to learn programming
Multidisciplinary art - dig into other mediums & mix with
programming
Money?
Indie games - risk vs. reward
Marketable skills
Techniques extend far beyond games
Delve deeper into programming concepts & creativity
Graphical concepts
js1k
7. why build games? goodness :)
Learning & Education
Research says so
Jane McGonigal
Gamification / Game Theory
Science!
#OhHeckYeah / Public art
Creative Placemaking
Gamification of human interaction on the street
9. ohheckyeah
KacheOut: The "prototype"
Artplace grantees
1st-of-kind*
Benefits
Safer streets, economic development, revitalization, IRL
community building, new workforce breakroom, idea sharing
Open source
Demo: KacheOut
Opening night video
11. using the kinect
What is the Kinect?
Skeleton tracking vs. raw data
Demos: KinectBodyParticles & KinectPixelated
Kacheout controls
Improvements & normalization for OHY
Demo: KinectHumanJoysticks - common controls for OHY
Demo: Catchy!
12. kinect protips
Kinects don't do well in direct sunlight
Kinects can lose data with reflective surfaces
Kinects aren't intuitive - there aren't great conventions yet. Educate
users!
Kinect v2 is amazing, but Microsoft tools are required
Bellco game & issues
Small humans don't skeleton-detect very well
14. ohheckyeah spatial challenges
General play area: more players = more area
Kinect remote control - UDP! (WebSockets, OSC)
16th St. - Wifi woes
16th St. - Audio woes
16th St. - Aversion to marketers
16th St. - If nobody's currently playing, you don't know what it is
15th St. - Buses
16. leap motion
What is the Leap Motion?
Skeleton tracking of the hands
Like a mini Kinect, but just skeleton data (no raw depth data)
Demo: KacheOut w/Leap
22. accelerometer gestures
Demo: Roll It
New iOS & Android should be capable
Touch & mouse fallbacks
Timeout unless good data helps since there's not reliable
detection
Maeda: Familiarity + Novelty
ValueBuffer!
Time-based sampling of data
23. // create an array of values, defaulted to zero
function ValueBuffer(numSamples) {
this.numSamples = numSamples;
this.sampleIndex = 0;
this.buffer = [];
for( var i=0; i < this.numSamples; i++)
this.buffer.push(0);
};
// replace the oldest value in the buffer with a new value
ValueBuffer.prototype.update = function( value ) {
this.sampleIndex++;
if(this.sampleIndex == this.numSamples)
this.sampleIndex = 0;
this.buffer[this.sampleIndex] = value;
};
// return buffer's sum or average
ValueBuffer.prototype.sum = function() {
var sum = 0;
for( var i=0; i < this.numSamples; i++)
sum += this.buffer[i];
return sum;
25. accelerometer protips
Skeeball throw gesture
HTML5ROCKS article
Timeout if real values haven't been detected (laptop browser's can
fire {0,0,0})
Androids (as of 1 year ago) are half as fast with event updates
Time-stamp & normalize across devices :(
ParaNorman gestures w/gyroscope event (iOS-only)
28. lock/unlock a mobile browser screen
To disable scrolling and enable fancy, custom touch interfaces
var lockTouchScreen = function( isLocked ) {
if( isLocked == false ) {
document.ontouchmove = null;
} else {
document.ontouchmove = function( event ) {
event.preventDefault();
};
}
};
29. boxtrolls custom gesture recognition
Demo
Screen lock
Gesture recognition with Dollar recognizer
PIXI.js
Vertical responsiveness with javascript
CORS image -> canvas issues & IE workaround
30. coke ahhh: ice toss
Demo
Screen lock again
CSS-based movement with transform:translate3d(x,y,z) for
hardware-accelerated speed
RequestAnimationFrame for best frame rate
Desktop normalization:
Disable mouse-dragging on HTML elements
Add a cursor: grab or cursor: move if you can drag something
39. extending techniques to non-game
projects
Add whimsy to your site or app
Charts / data visualization
Animation for magic & context
CMKY visuals
Kinect drum machine
Generative & interactive art