SlideShare a Scribd company logo
HTML5
Javascript
     GAME
        By min tae, Kim
GAME
HTML로가능한가?
GAME
GAME
무엇이필요할까?
richard garriott
john d. carmack
GAME
당신은창조적입니까?
   확실해요?
Html5 game programming overview
GAME
MediaResourceControl
PixelControlMechanism
Programmer
Physics
GraphicsAccelerator
HighPerformanceNetworkProtocol
GAME
                                                         HTML4   HTML5
MediaResourceControl
PixelControlMechanism
Programmer
Physics
GraphicsAccelerator
HighPerformanceNetworkProtocol
GAME
MediaResourceControl




IMG   VIDEO
   AUDIO
        DIV
GAME
PixelControlMechanism




     CANVAS
       2D
         3D
GAME
GraphicsAccelerator
GAME
HighPerformanceNetworkProtocol




             WebSocket
Html5 game programming overview
Html5 game programming overview
GAME
GettingStarted

function start() {
    ......
                 ?????
Html5 game programming overview
IsogenicEngine
     Akihabara                                           gameQuery
    three.js          bdge                 JS3D                                   GameJs
      PropulsionJS                                    TheRenderEngine Flax
   Aves Tom'sHalls                                           js-verge CopperLicht
  Cocos2D GLGE                                                                   GammaJS
                ClanFX                                                 jGen RocketEngine
 Canvex
Sarien.netinterpreter                                          Curve3D FlixelJS
                                                                    Unity3D gTile xc.js
  SpiderGL C3DL
                                                                  j5g3 JavascriptGamelib
  TheJavascript2DGameEngine Diggy
 Crafty SpellScript Impact O3D EffectGames Sandy3D
              cssgameengine TheGMPJavascriptGameEngine
                   Rosewood                           vegalib                       jsGameSoup
                                                                      Pre3d
Html5 game programming overview
Html5 game programming overview
Crafty
Spriteimage
Html5 game programming overview
Crafty
Backgroundimage
Crafty
GettingStarted


Crafty.init(50);  Frame rate
Crafty.canvas();
Crafty
GettingStarted


Crafty.init(50);
Crafty.canvas();
Crafty
  Preloadtheresources

Crafty.load([sprite.png, bg.png],
    function() {
        Crafty.sprite(64, sprite.png, {
            ship: [0,0],
            big: [1,0],
            medium: [2,0],
            small: [3,0]
        }
);
Crafty
  Preloadtheresources

Crafty.load([sprite.png, bg.png],
    function() {
        Crafty.sprite(64, sprite.png, {
            ship: [0,0],
            big: [1,0],
            medium: [2,0],
            small: [3,0]
        }
);
Crafty
  Setspritesize

Crafty.load([sprite.png, bg.png],
    function() {
        Crafty.sprite(64, sprite.png, {
            ship: [0,0],
            big: [1,0],
            medium: [2,0],
            small: [3,0]
        }
);
Crafty
  Definespriteobject

Crafty.load([sprite.png, bg.png],
    function() {
        Crafty.sprite(64, sprite.png, {
            ship: [0,0],
            big: [1,0],
            medium: [2,0],
            small: [3,0]
        }
);
Crafty
  Scene

Crafty.scene(main);

Crafty.scene(main, function() {
    Crafty.background(url('bg.png'));

...
Crafty
  Scene

Crafty.scene(main);

Crafty.scene(main, function() {
    Crafty.background(url('bg.png'));

...
Crafty
  Scoredisplay

var score = Crafty.e(2D, DOM, text)
    .text(Score: 0)
    .attr({x: Crafty.viewport.width - 300,
     y: Crafty.viewport.height - 50,
     w: 200, h:50})
    .css({color: #fff}
);
Crafty
  Scoredisplay

var score = Crafty.e(2D, DOM, text)
    .text(Score: 0)
    .attr({x: Crafty.viewport.width - 300,
     y: Crafty.viewport.height - 50,
     w: 200, h:50})
    .css({color: #fff}
);
Crafty
  Scoredisplay

var score = Crafty.e(2D, DOM, text)
    .text(Score: 0)
    .attr({x: Crafty.viewport.width - 300,
     y: Crafty.viewport.height - 50,
     w: 200, h:50})
    .css({color: #fff}
);
Crafty
  Scoredisplay

var score = Crafty.e(2D, DOM, text)
    .text(Score: 0)
    .attr({x: Crafty.viewport.width - 300,
     y: Crafty.viewport.height - 50,
     w: 200, h:50})
    .css({color: #fff})
;
Crafty
   Player

var player = Crafty.e(
    2D, canvas, ship, controls, collision, score)
    .attr({move: {left: false, right: false, up: false,
        down: false}, xspeed: 0, yspeed: 0,
        x: 100, 100})
    .bind(keydown, function(e) {
        if(e.keyCode === Crafty.keys.RA) {
            this.move.right = true;
Crafty
   Player

var player = Crafty.e(
    2D, canvas, ship, controls, collision, score)
    .attr({move: {left: false, right: false, up: false,
        down: false}, xspeed: 0, yspeed: 0,
        x: 100, 100})
    .bind(keydown, function(e) {
        if(e.keyCode === Crafty.keys.RA) {
            this.move.right = true;
Crafty
   Playerattribute

var player = Crafty.e(
    2D, canvas, ship, controls, collision, score)
    .attr({move: {left: false, right: false, up: false,
        down: false}, xspeed: 0, yspeed: 0,
        x: 100, 100})
    .bind(keydown, function(e) {
        if(e.keyCode === Crafty.keys.RA) {
            this.move.right = true;
Crafty
   Bindkeyboardeventhandler

var player = Crafty.e(
    2D, canvas, ship, controls, collision, score)
    .attr({move: {left: false, right: false, up: false,
        down: false}, xspeed: 0, yspeed: 0,
        x: 100, 100})
    .bind(keydown, function(e) {
        if(e.keyCode === Crafty.keys.RA) {
            this.move.right = true;
Crafty
   Bindkeyboardeventhandler

var player = Crafty.e(
    2D, canvas, ship, controls, collision, score)
    .attr({move: {left: false, right: false, up: false,
        down: false}, xspeed: 0, yspeed: 0,
        x: 100, 100})
    .bind(keydown, function(e) {
        if(e.keyCode === Crafty.keys.RA) {
            this.move.right = true;
Crafty
Actioncontrol

.attr({move: {left: false, right: false, up: false,
    down: false}, xspeed: 0, yspeed: 0,
    x: 100, 100})
.bind(keydown, function(e) {
    if(e.keyCode === Crafty.keys.RA) {
        this.move.right = true; }})
.collision(asteroid, function() {
            Crafty.scene(main);
Crafty
   Firebullet

if(e.keyCode === Crafty.keys.SP) {
    Crafty.e(2D, DOM, color, bullet)
    .color(rgb(255, 0, 0))
    .bind(enterframe, function() {!
        if(this._x  Crafty.viewport.width ||
           this._x  0 || this._y 
           Crafty.viewport.height || this._y  0) {
               this.destroy();
         }
Crafty
   Firebullet

if(e.keyCode === Crafty.keys.SP) {
    Crafty.e(2D, DOM, color, bullet)
    .color(rgb(255, 0, 0))
    .bind(enterframe, function() {!
        if(this._x  Crafty.viewport.width ||
           this._x  0 || this._y 
           Crafty.viewport.height || this._y  0) {
               this.destroy();
         }
Crafty
   Firebullet

if(e.keyCode === Crafty.keys.SP) {
    Crafty.e(2D, DOM, color, bullet)
    .color(rgb(255, 0, 0))
    .bind(enterframe, function() {!
        if(this._x  Crafty.viewport.width ||
           this._x  0 || this._y 
           Crafty.viewport.height || this._y  0) {
               this.destroy();
         }
Crafty
   Firebullet

if(e.keyCode === Crafty.keys.SP) {
    Crafty.e(2D, DOM, color, bullet)
    .color(rgb(255, 0, 0))
    .bind(enterframe, function() {!
        if(this._x  Crafty.viewport.width ||
           this._x  0 || this._y 
           Crafty.viewport.height || this._y  0) {
               this.destroy();
         }
Crafty
   Firebullet

if(e.keyCode === Crafty.keys.SP) {
    Crafty.e(2D, DOM, color, bullet)
    .color(rgb(255, 0, 0))
    .bind(enterframe, function() {!
        if(this._x  Crafty.viewport.width ||
           this._x  0 || this._y 
           Crafty.viewport.height || this._y  0) {
               this.destroy();
         }
Crafty
   Asteroid

Crafty.c(asteroid, {
    init: function() {
        this.attr( ... )
        .bind(enterframe, function() { ... })
        .collision(bullet, function(e) {
            player.incrementScore(5);
        });
    }
});
Crafty
   Asteroid

Crafty.c(asteroid, {
    init: function() {
        this.attr( ... )
        .bind(enterframe, function() { ... })
        .collision(bullet, function(e) {
            player.incrementScore(5);
        });
    }
});
Crafty
   Asteroid

Crafty.c(asteroid, {
    init: function() {
        this.attr( ... )
        .bind(enterframe, function() { ... })
        .collision(bullet, function(e) {
            player.incrementScore(5);
        });
    }
});
Crafty
   Asteroid

Crafty.c(asteroid, {
    init: function() {
        this.attr( ... )
        .bind(enterframe, function() { ... })
        .collision(bullet, function(e) {
            player.incrementScore(5);
        });
    }
});
Crafty
   StartFinish

for(var i = 0; i  10; i++) {
    Crafty.e(2D, DOM, big, collision, asteroid);
}
IsogenicEngine
     Akihabara                                           gameQuery
    three.js          bdge                  JS3D                                   GameJs
      PropulsionJS                                   Crafty                            Flax
  Aves Tom'sHalls                                            js-verge CopperLicht
  Cocos2D GLGE                                                                   GammaJS
                ClanFX                                                 jGen RocketEngine
 Canvex
Sarien.netinterpreter                                          Curve3D FlixelJS
                                                                    Unity3D gTile xc.js
  SpiderGL C3DL
                                                                  j5g3 JavascriptGamelib
  TheJavascript2DGameEngine Diggy
     SpellScript                         Impact                  EffectGames Sandy3D
                                                      O3D
  cssgameengine                            TheGMPJavascriptGameEngine
                     TheRenderEngine
           Rosewood                                   vegalib Pre3d jsGameSoup
IsogenicEngine
     Akihabara                                           gameQuery
    three.js          bdge                  JS3D                                   GameJs
      PropulsionJS                                   Crafty                            Flax
  Aves Tom'sHalls                                            js-verge CopperLicht
  Cocos2D GLGE                                                                   GammaJS
                ClanFX                                                 jGen RocketEngine
 Canvex
Sarien.netinterpreter                                          Curve3D FlixelJS
                                                                    Unity3D gTile xc.js
  SpiderGL C3DL
                                                                  j5g3 JavascriptGamelib
  TheJavascript2DGameEngine Diggy
     SpellScript                         Impact                  EffectGames Sandy3D
                                                      O3D
  cssgameengine                            TheGMPJavascriptGameEngine
                     TheRenderEngine
           Rosewood                                   vegalib Pre3d jsGameSoup
HTML5
Javascript
     GAME
        By min tae, Kim




 Thank you!
Ad

Recommended

MongoDB - Introduction
MongoDB - Introduction
Vagmi Mudumbai
 
Css5 canvas
Css5 canvas
Vadim Spiridenko
 
MongoDB .local Munich 2019: Tips and Tricks++ for Querying and Indexing MongoDB
MongoDB .local Munich 2019: Tips and Tricks++ for Querying and Indexing MongoDB
MongoDB
 
JavaScript Objects and OOP Programming with JavaScript
JavaScript Objects and OOP Programming with JavaScript
Laurence Svekis ✔
 
The Ring programming language version 1.2 book - Part 35 of 84
The Ring programming language version 1.2 book - Part 35 of 84
Mahmoud Samir Fayed
 
CouchDB Vs MongoDB
CouchDB Vs MongoDB
Gabriele Lana
 
CouchApps: Requiem for Accidental Complexity
CouchApps: Requiem for Accidental Complexity
Federico Galassi
 
Game dev 101 part 3
Game dev 101 part 3
Christoffer Noring
 
TicketBEKA? Ticket booking
TicketBEKA? Ticket booking
Likhith Pujari
 
Writing a Space Shooter with HTML5 Canvas
Writing a Space Shooter with HTML5 Canvas
Steve Purkis
 
HTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the Web
Robin Hawkes
 
Game dev 101 part 2
Game dev 101 part 2
Christoffer Noring
 
Emil Bay "Password Hashing"
Emil Bay "Password Hashing"
Fwdays
 
MongoDB Live Hacking
MongoDB Live Hacking
Tobias Trelle
 
Canvas - The Cure
Canvas - The Cure
Robert Nyman
 
Introduction to HTML5 Canvas
Introduction to HTML5 Canvas
Mindy McAdams
 
Prototype UI Intro
Prototype UI Intro
Juriy Zaytsev
 
The Ring programming language version 1.7 book - Part 57 of 196
The Ring programming language version 1.7 book - Part 57 of 196
Mahmoud Samir Fayed
 
codebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIs
Remy Sharp
 
Exploring Canvas
Exploring Canvas
Kevin Hoyt
 
Test Driven Cocos2d
Test Driven Cocos2d
Eric Smith
 
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Luis Curo Salvatierra
 
Test driven game development silly, stupid or inspired?
Test driven game development silly, stupid or inspired?
Eric Smith
 
앱스프레소를 이용한 모바일 앱 개발(2)
앱스프레소를 이용한 모바일 앱 개발(2)
mosaicnet
 
Data Mangling with mongoDB the Right Way [PyData London] 2016]
Data Mangling with mongoDB the Right Way [PyData London] 2016]
Alexander Hendorf
 
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 46 of 180
The Ring programming language version 1.5.1 book - Part 46 of 180
Mahmoud Samir Fayed
 
PyCon2009_AI_Alt
PyCon2009_AI_Alt
Hiroshi Ono
 
Flash Gamm 2011,"Stage3D survival guide"
Flash Gamm 2011,"Stage3D survival guide"
Michael Ivanov
 
Alternativa3D_en
Alternativa3D_en
Eugenia Startseva
 

More Related Content

What's hot (20)

TicketBEKA? Ticket booking
TicketBEKA? Ticket booking
Likhith Pujari
 
Writing a Space Shooter with HTML5 Canvas
Writing a Space Shooter with HTML5 Canvas
Steve Purkis
 
HTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the Web
Robin Hawkes
 
Game dev 101 part 2
Game dev 101 part 2
Christoffer Noring
 
Emil Bay "Password Hashing"
Emil Bay "Password Hashing"
Fwdays
 
MongoDB Live Hacking
MongoDB Live Hacking
Tobias Trelle
 
Canvas - The Cure
Canvas - The Cure
Robert Nyman
 
Introduction to HTML5 Canvas
Introduction to HTML5 Canvas
Mindy McAdams
 
Prototype UI Intro
Prototype UI Intro
Juriy Zaytsev
 
The Ring programming language version 1.7 book - Part 57 of 196
The Ring programming language version 1.7 book - Part 57 of 196
Mahmoud Samir Fayed
 
codebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIs
Remy Sharp
 
Exploring Canvas
Exploring Canvas
Kevin Hoyt
 
Test Driven Cocos2d
Test Driven Cocos2d
Eric Smith
 
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Luis Curo Salvatierra
 
Test driven game development silly, stupid or inspired?
Test driven game development silly, stupid or inspired?
Eric Smith
 
앱스프레소를 이용한 모바일 앱 개발(2)
앱스프레소를 이용한 모바일 앱 개발(2)
mosaicnet
 
Data Mangling with mongoDB the Right Way [PyData London] 2016]
Data Mangling with mongoDB the Right Way [PyData London] 2016]
Alexander Hendorf
 
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 46 of 180
The Ring programming language version 1.5.1 book - Part 46 of 180
Mahmoud Samir Fayed
 
PyCon2009_AI_Alt
PyCon2009_AI_Alt
Hiroshi Ono
 
TicketBEKA? Ticket booking
TicketBEKA? Ticket booking
Likhith Pujari
 
Writing a Space Shooter with HTML5 Canvas
Writing a Space Shooter with HTML5 Canvas
Steve Purkis
 
HTML5 Canvas - The Future of Graphics on the Web
HTML5 Canvas - The Future of Graphics on the Web
Robin Hawkes
 
Emil Bay "Password Hashing"
Emil Bay "Password Hashing"
Fwdays
 
MongoDB Live Hacking
MongoDB Live Hacking
Tobias Trelle
 
Introduction to HTML5 Canvas
Introduction to HTML5 Canvas
Mindy McAdams
 
The Ring programming language version 1.7 book - Part 57 of 196
The Ring programming language version 1.7 book - Part 57 of 196
Mahmoud Samir Fayed
 
codebits 2009 HTML5 JS APIs
codebits 2009 HTML5 JS APIs
Remy Sharp
 
Exploring Canvas
Exploring Canvas
Kevin Hoyt
 
Test Driven Cocos2d
Test Driven Cocos2d
Eric Smith
 
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Luis Curo Salvatierra
 
Test driven game development silly, stupid or inspired?
Test driven game development silly, stupid or inspired?
Eric Smith
 
앱스프레소를 이용한 모바일 앱 개발(2)
앱스프레소를 이용한 모바일 앱 개발(2)
mosaicnet
 
Data Mangling with mongoDB the Right Way [PyData London] 2016]
Data Mangling with mongoDB the Right Way [PyData London] 2016]
Alexander Hendorf
 
The Ring programming language version 1.9 book - Part 53 of 210
The Ring programming language version 1.9 book - Part 53 of 210
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 46 of 180
The Ring programming language version 1.5.1 book - Part 46 of 180
Mahmoud Samir Fayed
 
PyCon2009_AI_Alt
PyCon2009_AI_Alt
Hiroshi Ono
 

Similar to Html5 game programming overview (20)

Flash Gamm 2011,"Stage3D survival guide"
Flash Gamm 2011,"Stage3D survival guide"
Michael Ivanov
 
Alternativa3D_en
Alternativa3D_en
Eugenia Startseva
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconf
tutorialsruby
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconf
tutorialsruby
 
Node meetup feb_20_12
Node meetup feb_20_12
jafar104
 
HTML5 game dev with three.js - HexGL
HTML5 game dev with three.js - HexGL
Thibaut Despoulain
 
Cocos2d game programming 2
Cocos2d game programming 2
Changwon National University
 
Pointer Events in Canvas
Pointer Events in Canvas
deanhudson
 
Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего ...
Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего ...
DevGAMM Conference
 
Cocos2d programming
Cocos2d programming
Changwon National University
 
FGS 2011: Flash+ A Whole New Dimension for Games
FGS 2011: Flash+ A Whole New Dimension for Games
mochimedia
 
2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb
2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb
mochimedia
 
Html5 (games)
Html5 (games)
chamsddine bouzaine
 
Android game engine
Android game engine
Julian Chu
 
Getting Started with 3D Game Development on Nokia Series 40 Asha Phones
Getting Started with 3D Game Development on Nokia Series 40 Asha Phones
Microsoft Mobile Developer
 
Slides mihail-ivanchev-1
Slides mihail-ivanchev-1
Droidcon Berlin
 
Maze VR
Maze VR
Daosheng Mu
 
Away3d workshop slides
Away3d workshop slides
Jens Brynildsen
 
One codebase, multiple platforms; Using HTML5/js for game dev
One codebase, multiple platforms; Using HTML5/js for game dev
Joseph Burchett
 
Developing games for Series 40 full-touch UI
Developing games for Series 40 full-touch UI
Microsoft Mobile Developer
 
Flash Gamm 2011,"Stage3D survival guide"
Flash Gamm 2011,"Stage3D survival guide"
Michael Ivanov
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconf
tutorialsruby
 
building_games_with_ruby_rubyconf
building_games_with_ruby_rubyconf
tutorialsruby
 
Node meetup feb_20_12
Node meetup feb_20_12
jafar104
 
HTML5 game dev with three.js - HexGL
HTML5 game dev with three.js - HexGL
Thibaut Despoulain
 
Pointer Events in Canvas
Pointer Events in Canvas
deanhudson
 
Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего ...
Neurotech Solutions Ltd: Рекомендации по Stage3D: выбор наиболее подходящего ...
DevGAMM Conference
 
FGS 2011: Flash+ A Whole New Dimension for Games
FGS 2011: Flash+ A Whole New Dimension for Games
mochimedia
 
2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb
2 Dimensions Of Awesome: Advanced ActionScript For Platform Games by Iain Lobb
mochimedia
 
Android game engine
Android game engine
Julian Chu
 
Getting Started with 3D Game Development on Nokia Series 40 Asha Phones
Getting Started with 3D Game Development on Nokia Series 40 Asha Phones
Microsoft Mobile Developer
 
Slides mihail-ivanchev-1
Slides mihail-ivanchev-1
Droidcon Berlin
 
One codebase, multiple platforms; Using HTML5/js for game dev
One codebase, multiple platforms; Using HTML5/js for game dev
Joseph Burchett
 
Ad

More from 민태 김 (20)

Git - Level 2
Git - Level 2
민태 김
 
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
민태 김
 
초보자를 위한 정규 표현식 가이드 (자바스크립트 기준)
초보자를 위한 정규 표현식 가이드 (자바스크립트 기준)
민태 김
 
외계어 스터디 4/5 Event & Library
외계어 스터디 4/5 Event & Library
민태 김
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
민태 김
 
외계어 스터디 3/5 function and object
외계어 스터디 3/5 function and object
민태 김
 
외계어 스터디 2/5 - Expressions & statements
외계어 스터디 2/5 - Expressions & statements
민태 김
 
외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview
민태 김
 
비개발자를 위한 Javascript 알아가기 #7.1
비개발자를 위한 Javascript 알아가기 #7.1
민태 김
 
비개발자를 위한 Javascript 알아가기 #7
비개발자를 위한 Javascript 알아가기 #7
민태 김
 
비개발자를 위한 Javascript 알아가기 #6.1
비개발자를 위한 Javascript 알아가기 #6.1
민태 김
 
비개발자를 위한 Javascript 알아가기 #6
비개발자를 위한 Javascript 알아가기 #6
민태 김
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
민태 김
 
비개발자를 위한 Javascript 알아가기 #5.1
비개발자를 위한 Javascript 알아가기 #5.1
민태 김
 
비개발자를 위한 Javascript 알아가기 #5
비개발자를 위한 Javascript 알아가기 #5
민태 김
 
비개발자를 위한 Javascript 알아가기 #4.1
비개발자를 위한 Javascript 알아가기 #4.1
민태 김
 
비개발자를 위한 Javascript 알아가기 #4
비개발자를 위한 Javascript 알아가기 #4
민태 김
 
비개발자를 위한 Javascript 알아가기 #3
비개발자를 위한 Javascript 알아가기 #3
민태 김
 
비개발자를 위한 Javascript 알아가기 #2
비개발자를 위한 Javascript 알아가기 #2
민태 김
 
비개발자를 위한 Javascript 알아가기 #1
비개발자를 위한 Javascript 알아가기 #1
민태 김
 
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
웹을 지탱하는 차세대 기술 @한국웹20주년 컨퍼런스
민태 김
 
초보자를 위한 정규 표현식 가이드 (자바스크립트 기준)
초보자를 위한 정규 표현식 가이드 (자바스크립트 기준)
민태 김
 
외계어 스터디 4/5 Event & Library
외계어 스터디 4/5 Event & Library
민태 김
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
민태 김
 
외계어 스터디 3/5 function and object
외계어 스터디 3/5 function and object
민태 김
 
외계어 스터디 2/5 - Expressions & statements
외계어 스터디 2/5 - Expressions & statements
민태 김
 
외계어 스터디 1/5 - Overview
외계어 스터디 1/5 - Overview
민태 김
 
비개발자를 위한 Javascript 알아가기 #7.1
비개발자를 위한 Javascript 알아가기 #7.1
민태 김
 
비개발자를 위한 Javascript 알아가기 #7
비개발자를 위한 Javascript 알아가기 #7
민태 김
 
비개발자를 위한 Javascript 알아가기 #6.1
비개발자를 위한 Javascript 알아가기 #6.1
민태 김
 
비개발자를 위한 Javascript 알아가기 #6
비개발자를 위한 Javascript 알아가기 #6
민태 김
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
민태 김
 
비개발자를 위한 Javascript 알아가기 #5.1
비개발자를 위한 Javascript 알아가기 #5.1
민태 김
 
비개발자를 위한 Javascript 알아가기 #5
비개발자를 위한 Javascript 알아가기 #5
민태 김
 
비개발자를 위한 Javascript 알아가기 #4.1
비개발자를 위한 Javascript 알아가기 #4.1
민태 김
 
비개발자를 위한 Javascript 알아가기 #4
비개발자를 위한 Javascript 알아가기 #4
민태 김
 
비개발자를 위한 Javascript 알아가기 #3
비개발자를 위한 Javascript 알아가기 #3
민태 김
 
비개발자를 위한 Javascript 알아가기 #2
비개발자를 위한 Javascript 알아가기 #2
민태 김
 
비개발자를 위한 Javascript 알아가기 #1
비개발자를 위한 Javascript 알아가기 #1
민태 김
 
Ad

Recently uploaded (20)

GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
Priyanka Aash
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Priyanka Aash
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
From Manual to Auto Searching- FME in the Driver's Seat
From Manual to Auto Searching- FME in the Driver's Seat
Safe Software
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
 
The Growing Value and Application of FME & GenAI
The Growing Value and Application of FME & GenAI
Safe Software
 
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
GenAI Opportunities and Challenges - Where 370 Enterprises Are Focusing Now.pdf
Priyanka Aash
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
Agentic AI for Developers and Data Scientists Build an AI Agent in 10 Lines o...
All Things Open
 
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
A Constitutional Quagmire - Ethical Minefields of AI, Cyber, and Privacy.pdf
Priyanka Aash
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Wenn alles versagt - IBM Tape schützt, was zählt! Und besonders mit dem neust...
Josef Weingand
 
AI vs Human Writing: Can You Tell the Difference?
AI vs Human Writing: Can You Tell the Difference?
Shashi Sathyanarayana, Ph.D
 
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
Tech-ASan: Two-stage check for Address Sanitizer - Yixuan Cao.pdf
caoyixuan2019
 
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Oh, the Possibilities - Balancing Innovation and Risk with Generative AI.pdf
Priyanka Aash
 
Techniques for Automatic Device Identification and Network Assignment.pdf
Techniques for Automatic Device Identification and Network Assignment.pdf
Priyanka Aash
 
Connecting Data and Intelligence: The Role of FME in Machine Learning
Connecting Data and Intelligence: The Role of FME in Machine Learning
Safe Software
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
From Manual to Auto Searching- FME in the Driver's Seat
From Manual to Auto Searching- FME in the Driver's Seat
Safe Software
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
"Database isolation: how we deal with hundreds of direct connections to the d...
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Enhance GitHub Copilot using MCP - Enterprise version.pdf
Nilesh Gule
 
The Growing Value and Application of FME & GenAI
The Growing Value and Application of FME & GenAI
Safe Software
 
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Hyderabad MuleSoft In-Person Meetup (June 21, 2025) Slides
Ravi Tamada
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 

Html5 game programming overview

  • 1. HTML5 Javascript GAME By min tae, Kim
  • 10. GAME HTML4 HTML5 MediaResourceControl PixelControlMechanism Programmer Physics GraphicsAccelerator HighPerformanceNetworkProtocol
  • 11. GAME MediaResourceControl IMG VIDEO AUDIO DIV
  • 19. IsogenicEngine Akihabara gameQuery three.js bdge JS3D GameJs PropulsionJS TheRenderEngine Flax Aves Tom'sHalls js-verge CopperLicht Cocos2D GLGE GammaJS ClanFX jGen RocketEngine Canvex Sarien.netinterpreter Curve3D FlixelJS Unity3D gTile xc.js SpiderGL C3DL j5g3 JavascriptGamelib TheJavascript2DGameEngine Diggy Crafty SpellScript Impact O3D EffectGames Sandy3D cssgameengine TheGMPJavascriptGameEngine Rosewood vegalib jsGameSoup Pre3d
  • 27. Crafty Preloadtheresources Crafty.load([sprite.png, bg.png], function() { Crafty.sprite(64, sprite.png, { ship: [0,0], big: [1,0], medium: [2,0], small: [3,0] } );
  • 28. Crafty Preloadtheresources Crafty.load([sprite.png, bg.png], function() { Crafty.sprite(64, sprite.png, { ship: [0,0], big: [1,0], medium: [2,0], small: [3,0] } );
  • 29. Crafty Setspritesize Crafty.load([sprite.png, bg.png], function() { Crafty.sprite(64, sprite.png, { ship: [0,0], big: [1,0], medium: [2,0], small: [3,0] } );
  • 30. Crafty Definespriteobject Crafty.load([sprite.png, bg.png], function() { Crafty.sprite(64, sprite.png, { ship: [0,0], big: [1,0], medium: [2,0], small: [3,0] } );
  • 31. Crafty Scene Crafty.scene(main); Crafty.scene(main, function() { Crafty.background(url('bg.png')); ...
  • 32. Crafty Scene Crafty.scene(main); Crafty.scene(main, function() { Crafty.background(url('bg.png')); ...
  • 33. Crafty Scoredisplay var score = Crafty.e(2D, DOM, text) .text(Score: 0) .attr({x: Crafty.viewport.width - 300, y: Crafty.viewport.height - 50, w: 200, h:50}) .css({color: #fff} );
  • 34. Crafty Scoredisplay var score = Crafty.e(2D, DOM, text) .text(Score: 0) .attr({x: Crafty.viewport.width - 300, y: Crafty.viewport.height - 50, w: 200, h:50}) .css({color: #fff} );
  • 35. Crafty Scoredisplay var score = Crafty.e(2D, DOM, text) .text(Score: 0) .attr({x: Crafty.viewport.width - 300, y: Crafty.viewport.height - 50, w: 200, h:50}) .css({color: #fff} );
  • 36. Crafty Scoredisplay var score = Crafty.e(2D, DOM, text) .text(Score: 0) .attr({x: Crafty.viewport.width - 300, y: Crafty.viewport.height - 50, w: 200, h:50}) .css({color: #fff}) ;
  • 37. Crafty Player var player = Crafty.e( 2D, canvas, ship, controls, collision, score) .attr({move: {left: false, right: false, up: false, down: false}, xspeed: 0, yspeed: 0, x: 100, 100}) .bind(keydown, function(e) { if(e.keyCode === Crafty.keys.RA) { this.move.right = true;
  • 38. Crafty Player var player = Crafty.e( 2D, canvas, ship, controls, collision, score) .attr({move: {left: false, right: false, up: false, down: false}, xspeed: 0, yspeed: 0, x: 100, 100}) .bind(keydown, function(e) { if(e.keyCode === Crafty.keys.RA) { this.move.right = true;
  • 39. Crafty Playerattribute var player = Crafty.e( 2D, canvas, ship, controls, collision, score) .attr({move: {left: false, right: false, up: false, down: false}, xspeed: 0, yspeed: 0, x: 100, 100}) .bind(keydown, function(e) { if(e.keyCode === Crafty.keys.RA) { this.move.right = true;
  • 40. Crafty Bindkeyboardeventhandler var player = Crafty.e( 2D, canvas, ship, controls, collision, score) .attr({move: {left: false, right: false, up: false, down: false}, xspeed: 0, yspeed: 0, x: 100, 100}) .bind(keydown, function(e) { if(e.keyCode === Crafty.keys.RA) { this.move.right = true;
  • 41. Crafty Bindkeyboardeventhandler var player = Crafty.e( 2D, canvas, ship, controls, collision, score) .attr({move: {left: false, right: false, up: false, down: false}, xspeed: 0, yspeed: 0, x: 100, 100}) .bind(keydown, function(e) { if(e.keyCode === Crafty.keys.RA) { this.move.right = true;
  • 42. Crafty Actioncontrol .attr({move: {left: false, right: false, up: false, down: false}, xspeed: 0, yspeed: 0, x: 100, 100}) .bind(keydown, function(e) { if(e.keyCode === Crafty.keys.RA) { this.move.right = true; }}) .collision(asteroid, function() { Crafty.scene(main);
  • 43. Crafty Firebullet if(e.keyCode === Crafty.keys.SP) { Crafty.e(2D, DOM, color, bullet) .color(rgb(255, 0, 0)) .bind(enterframe, function() {! if(this._x Crafty.viewport.width || this._x 0 || this._y Crafty.viewport.height || this._y 0) { this.destroy(); }
  • 44. Crafty Firebullet if(e.keyCode === Crafty.keys.SP) { Crafty.e(2D, DOM, color, bullet) .color(rgb(255, 0, 0)) .bind(enterframe, function() {! if(this._x Crafty.viewport.width || this._x 0 || this._y Crafty.viewport.height || this._y 0) { this.destroy(); }
  • 45. Crafty Firebullet if(e.keyCode === Crafty.keys.SP) { Crafty.e(2D, DOM, color, bullet) .color(rgb(255, 0, 0)) .bind(enterframe, function() {! if(this._x Crafty.viewport.width || this._x 0 || this._y Crafty.viewport.height || this._y 0) { this.destroy(); }
  • 46. Crafty Firebullet if(e.keyCode === Crafty.keys.SP) { Crafty.e(2D, DOM, color, bullet) .color(rgb(255, 0, 0)) .bind(enterframe, function() {! if(this._x Crafty.viewport.width || this._x 0 || this._y Crafty.viewport.height || this._y 0) { this.destroy(); }
  • 47. Crafty Firebullet if(e.keyCode === Crafty.keys.SP) { Crafty.e(2D, DOM, color, bullet) .color(rgb(255, 0, 0)) .bind(enterframe, function() {! if(this._x Crafty.viewport.width || this._x 0 || this._y Crafty.viewport.height || this._y 0) { this.destroy(); }
  • 48. Crafty Asteroid Crafty.c(asteroid, { init: function() { this.attr( ... ) .bind(enterframe, function() { ... }) .collision(bullet, function(e) { player.incrementScore(5); }); } });
  • 49. Crafty Asteroid Crafty.c(asteroid, { init: function() { this.attr( ... ) .bind(enterframe, function() { ... }) .collision(bullet, function(e) { player.incrementScore(5); }); } });
  • 50. Crafty Asteroid Crafty.c(asteroid, { init: function() { this.attr( ... ) .bind(enterframe, function() { ... }) .collision(bullet, function(e) { player.incrementScore(5); }); } });
  • 51. Crafty Asteroid Crafty.c(asteroid, { init: function() { this.attr( ... ) .bind(enterframe, function() { ... }) .collision(bullet, function(e) { player.incrementScore(5); }); } });
  • 52. Crafty StartFinish for(var i = 0; i 10; i++) { Crafty.e(2D, DOM, big, collision, asteroid); }
  • 53. IsogenicEngine Akihabara gameQuery three.js bdge JS3D GameJs PropulsionJS Crafty Flax Aves Tom'sHalls js-verge CopperLicht Cocos2D GLGE GammaJS ClanFX jGen RocketEngine Canvex Sarien.netinterpreter Curve3D FlixelJS Unity3D gTile xc.js SpiderGL C3DL j5g3 JavascriptGamelib TheJavascript2DGameEngine Diggy SpellScript Impact EffectGames Sandy3D O3D cssgameengine TheGMPJavascriptGameEngine TheRenderEngine Rosewood vegalib Pre3d jsGameSoup
  • 54. IsogenicEngine Akihabara gameQuery three.js bdge JS3D GameJs PropulsionJS Crafty Flax Aves Tom'sHalls js-verge CopperLicht Cocos2D GLGE GammaJS ClanFX jGen RocketEngine Canvex Sarien.netinterpreter Curve3D FlixelJS Unity3D gTile xc.js SpiderGL C3DL j5g3 JavascriptGamelib TheJavascript2DGameEngine Diggy SpellScript Impact EffectGames Sandy3D O3D cssgameengine TheGMPJavascriptGameEngine TheRenderEngine Rosewood vegalib Pre3d jsGameSoup
  • 55. HTML5 Javascript GAME By min tae, Kim Thank you!