a blender game engine api noobisation · processingbge | blender conference 2013 | | the speaker

35
ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org ProcessingBGE ( PBGE ) a blender game engine API noobisation

Upload: others

Post on 08-Jul-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

ProcessingBGE ( PBGE )a blender game engine API noobisation

Page 2: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

the speaker

background● digital artist● researcher @ numediart, new media art technology institute in Mons, BE● teacher @ Arts2 academy of arts, Mons, BE

concerns● code art● realtime● opensource

Page 3: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

GENESIS

Page 4: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

path

processing.org

openframeworks.cc

GAMING TECHNOLOGIES

unity? ogre? blender?

Page 5: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

workshops

Page 6: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

stiff learning curve

Page 7: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

THE IDEA

Page 8: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

ecosystem

Page 9: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

processing.org

Page 10: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

SCREEN LAYOUT

API

PBGE

TEMPLATE

Page 11: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

screen layout & template

Page 12: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

noob API

FLEXIBLE ARGUMENTS

STRAIGHT METHOD NAMES

Page 13: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

noob API

MOVE OBJECT AT A POSITION

X, Y, Z coordinates

pbge.moveTo( , )

myObject2 “an object name”a vector

myObject “my object name”

Page 14: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

noob API

pbge.color( )

COLOR

white value255

white & alpha255, 127

RGB255, 0, 0

RGBA255, 0, 0, 127

Page 15: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

noob API > full API

pbge.createCube()

NO BGE CLASSES OVERLOAD!

KX_GameObject

Page 16: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

folders' structure

examples/step by step

template/empty .blend project with PBGE lib

scripts/external copies

doc/html reference

Page 17: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

html references

Page 18: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

example

Page 19: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

example running

Page 20: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

UNDER THE HOOD

Page 21: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

.blend template

Page 22: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

primitives

● root :● empty● connected to game logic sensor, controller &

actuators

● templates :● basic 2D shapes● basic 3D shapes● basic spotlight● copied via createCube, createSphere, etc

Page 23: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

basic script

● main functions :● init(), called once● animate(), called at each frame

● required methods :● configure()

● gather objects● declare addons

● update()● prepare inputs● increment frameCount

Page 24: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

architecture

● ProcessingBGE.py [core]:● singleton● manages:

● scene & template objects● inputs ( mouse, keyboard )● references to dynamically create objects● addons

● constants ( PI, ARROW_UP, etc )● user-defined variables

● ProcessingOSC.py [addon]:● singleton● OSC receivers and senders

Page 25: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

FUTURE DEV

Page 26: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

code > short term

FINISH THE BASICS!

Page 27: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

code > mid term

● All major functionalities exposed:● Camera● Material● Armature● Physic● OpenGL● Sound● Video & image sequence export

● Librairies:● OSC in/out (started)● XML

● External resources:● Image● Video● Sound

Page 28: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

cleaner

from ProcessingBGE.ProcessingBGE import ProcessingBGE as pbgeimport mathimport mathutilsimport random

def init(): scene = bge.logic.getCurrentScene() scene.post_draw = [animate] pbge.configure() pbge.myplane = pbge.createPlane( 0,0,-3 ) pbge.mycube = pbge.createCube( 0,2,0 ) pbge.mysphere = pbge.createSphere( 0,-2,0 ) pbge.mycylinder = pbge.createCylinder( 2,0,0 ) pbge.myspot = pbge.createSpot( 0,0,7 ) def animate(): pbge.update() pbge.rotateZ( pbge.myplane, 0.001 ) pbge.rotateX( pbge.mycube, 0.01 ) pbge.rotateY( pbge.mysphere, 0.02 )

if pbge.isconfigured() == False: init()

pbge.myplane = 0pbge.mycube = 0pbge.mysphere = 0pbge.mycylinder = 0pbge.myspot = 0

def setup():pbge.myplane = pbge.createPlane( 0,0,-3 )

pbge.mycube = pbge.createCube( 0,2,0 ) pbge.mysphere = pbge.createSphere( 0,-2,0 ) pbge.mycylinder = pbge.createCylinder( 2,0,0 ) pbge.myspot = pbge.createSpot( 0,0,7 )

def draw():pbge.rotateZ( pbge.myplane, 0.001 )pbge.rotateX( pbge.mycube, 0.01 )pbge.rotateY( pbge.mysphere, 0.02 )

Page 29: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

integration

easy● New PBGE file : File > New PBGE● Examples: File > PBGE examples > [List of examples]

not so easy● Bar on top of text editor with PLAY / STOP button● Embed “help” scripts● GE window:

● Floating● Automatic open/close on play/stop● Non modal

Page 30: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

FOR YOU?

Page 31: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

audiences

● digital artists● familiar syntax ● easy entry into gaming development

● pro● prototyping speed increased

● amateur● easy access to RT features

● students● easy syntax● step by step examples

Page 32: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

entry point

60k users / week*

*https://twitter.com/ben_fry/status/392772415459061760

Page 33: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

entry point

Page 34: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

entry point

Page 35: a blender game engine API noobisation · ProcessingBGE | Blender Conference 2013 |  |  the speaker

ProcessingBGE | Blender Conference 2013 | http://github.com/frankiezafe/pbge | http://frankiezafe.org

Community BBUG http://bbug.tuxfamily.org Github https://github.com/frankiezafe/pbge

Platformprocessing http://processing.org openframeworks http://openframeworks.cc

Organisationconstant vzw http://www.constantvzw.org numediart http://numediart.org arts² http://blog.artsaucarre.be/artsnumeriques/

PeopleJuego Requiem http://xuv.be Olivier Meunier http://www.ogeem.be

links

Terminal Dosis font by http://www.impallari.com/dosis | made with LibreOffice Impress