Interactive Workshop

Dave Evans, CTO

@daredevildave

Agenda

Game engine overview

Interactive bits and pieces

Game Jam

What is PLAYCANVAS?

engine

tools

publishing

Why develop in the cloud?

  • access your projects from any device
  • tools always up to date
  • collaborate in realtime with teammates
  • get instant help and feedback
  • browser and fork public projects 

Sign up

Terminology

Pack - Scene or Level

Entity - 'thing' in the game world

Component - adds behaviour to an entity

Attribute - property of a component

Graphics

  • Ambient, directional, point and spot lights
  • Static and skinned meshes (up to 256 bones)
  • Wireframe rendering
  • Map types: diffuse, specular, emissive, normal
  • Per-pixel fog
  • Skyboxes
  • Full screen effects

Model Component

Simple Primitives

or

3D Models

Simple Primitives

Basic shapes like: box, sphere, cone, cylinder

Very useful for prototyping

Can be used for entire games

3D Models

Created using: Maya, 3D Studio Max, Blender

Export to FBX

Drag and drop into PlayCanvas

Materials

Give a model it's texture

Material Editing

Select model, right-click -> Edit Material

Shadows

Add realism, and 'ground' to your scene

Global Settings

Cameras

Represent your viewpoint

Perspective Camera

Orthographic Camera

Let's try it!

  1. Create a new Pack
  2. Rename root node 'Cameras'
  3. Create a new Entity
  4. Add a primitive component.
  5. Create a new Camera
  6. Position the camera to view primitive
  7. Launch!

Scripting

Add custom behaviour

This is where you make your game

Javascript API

Workflows

  • Online
  • Offline

Edit on PlayCanvas

Sync with Github, etc

Anatomy of a script

Debugging

Physics

Quickly create realistic and complex behaviour and interactions

Rigid Body

Idealised representation of a body

Deformation is ignored

  • Properties:
  • position and orientation
  • linear and angular velocity
  • mass, friction, restitution
     
  • Actions:
  • apply forces and impulses
  • apply torque and torque impulses

Body Types

Static

Dynamic

Kinematic

Collision Primitives

  • Sphere
  • Box
  • Cone
  • Cylinder
  • Capsule

Raycasting

  • Line of sight / AI
  • Lasers
  • Character controllers

Contact Detection

Used to trigger events, e.g. audio, particles

initialize: function () {
    this.entity.collision.on('collisionstart', this.onHit, this);
},

onHit: function (result) {
    var a = this.entity;
    var b = result.other;
    console.log(a.getName() + ' has touched ' + b.getName());
}

Let's try it

  1. Create a new pack
  2. Rename root node 'Physics'
  3. Create a camera
  4. Create a static floor 
  5. (components: primitive, collisionbox and rigidbody)
  6. Create a dynamic ball above floor
  7. (same components as above)
  8. Set ball rigid body type to 'Dynamic'
  9. Launch!

Audio

Brings your game to life

Don't leave it as an afterthought

Sources and Listeners

Listener is your "ear"

Often attached to the camera

Source is the "speaker"

Publishing

The Web

Mobile App Stores

Your first app

Where to publish?

Web for virality

100,000s views very quickly

Viral Gaming

tweet and share this link now!

App Stores

Export to native

Download for XCode for iOS

Intel partnership with XDK for Android

Interactive Workshop

Dave Evans

@daredevildave

https://playcanvas.com/playcanvas/gamejam-nov-14

Interactive Workshop

By David Evans

Interactive Workshop

Interactive workshop introduction

  • 2,011