SlideShare ist ein Scribd-Unternehmen logo
1 von 60
Downloaden Sie, um offline zu lesen
enchant.jsでゲーム制作を
   はじめてみよう
         「パンダの会」バージョン




        2012.9.15
     「パンダの会」 その七

   3panda(Ryota Shiroguchi)
私について
● @3panda

● 仕事はHTMLとかCSS触ってます。

● プログラムは 苦手です。

● ファミコン世代です。

● パンダが大好きです。
このお話の流れ

● enchant.jsについて

● スタートアップ

● ゲーム的な動きをつくる(デモ&解説)

● ゲームを作ってみました!

● まとめ
enchant.jsについて
enchant.jsとは
● ゲームエンジン

● HTML5 + JavaScript

● クロスプラットフォーム

● 日本製(株式会社ユビキタスエンターテインメントが公開)
enchant.jsの良いところ
● スタートアップが楽ちん

● サンプルが豊富

● ドキュメントが日本語

● 公式のプラグインも豊富
スタートアップ
スタートアップ HTML
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <title>enchant</title>
    <script type="text/javascript" src="enchant.js"></script>
    <script type="text/javascript" src="game.js"></script>
    <style type="text/css">
       body {
          margin: 0;
       }
    </style>
  </head>
  <body>
  </body>
</html>
スタートアップ HTML
<!DOCTYPE html>
<html>
  <head>                                              enchant.js          を読み込む
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, user-scalable=no">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
    <title>enchant</title>
    <script type="text/javascript" src="enchant.js"></script>
    <script type="text/javascript" src="game.js"></script>
    <style type="text/css">
       body {
          margin: 0;
       }
    </style>                 実行用jsファイル を読み込む。             ※
  </head>
  <body>                     HTMLに直接記述も可能。
  </body>
</html>                          ※今回はgame.jsとしていますが何でもOK
スタートアップ game.js
enchant();
window.onload=function(){
 var game = new Game(320, 320);
   //ここで初期化
 game.onload = function(){
   //ここにゲーム処理を書く
 }
 game.start();
}
スタートアップ game.js
                   enchantのお約束!
enchant();
                                  JavaScriptのお約束!
window.onload=function(){
 var game = new Game(320, 320);
   //ここで初期化
 game.onload = function(){
   //ここにゲーム処理を書く
 }
 game.start();
}
スタートアップ game.js
                                  ゲーム(オブジェクト)を生成
enchant();
window.onload=function(){
 var game = new Game(320, 320);
   //ここで初期化
 game.onload = function(){
   //ここにゲーム処理を書く                      ゲーム中の処理
 }
 game.start();
}
  ゲームをスタート!
ゲーム的な動きをつくる
ゲーム的な動きを作る

● まずはキャラの配置
● キャラを動かす
● ステージを配置する
● 当たり判定
● ゲームスタート&ゲームオーバー
● コントローラーの設置(タッチデバイス用)
まずはキャラの配置 




       クマさん
まずはキャラの配置 game.js
var game = new Game(320, 320);
  game.fps = 24;
    game.preload('chara1.gif');
    game.onload = function(){
  //キャラクター
    var bear = new Sprite(32, 32);
    bear.image = game.assets['chara1.gif'];
    //rootSceneに追加
    game.rootScene.addChild(bear);
 }
 game.start();
}
まずはキャラの配置 game.js
                                フレームレートの設定
var game = new Game(320, 320);
    game.fps = 24;                       画像のプリロード
    game.preload('chara1.gif');
    game.onload = function(){            スプライトの生成
  //キャラクター
    var bear = new Sprite(32, 32);
    bear.image = game.assets['chara1.gif'];
    //rootSceneに追加
    game.rootScene.addChild(bear);          画像の指定
 }
 game.start();
                   ※ルートシーンに追加
}
デモ
キャラを動かす




          クマさん走る
キャラを動かす

//bearの動きの設定 イベントはフレーム毎
bear.addEventListener(Event.ENTER_FRAME,
function() {
    //左
    if (game.input.left) {
         this.x -= 3;
         this.scaleX = -1;
    }
    //・・・省略・・・
});
キャラを動かす                 キャラにイベントリスナーを追加



//bearの動きの設定 イベントはフレーム毎
bear.addEventListener(Event.ENTER_FRAME,
function() {
    //左
    if (game.input.left) {
         this.x -= 3;
         this.scaleX = -1;
    }
    //・・・省略・・・
});
キャラを動かす

//bearの動きの設定 イベントはフレーム毎
bear.addEventListener(Event.ENTER_FRAME,
function() {
    //左
    if (game.input.left) {
                           イベントはフレーム毎
         this.x -= 3;
         this.scaleX = -1;
    }
    //・・・省略・・・
});
デモ
ステージを配置する
ステージを配置する
//MAPを表示させる
var blocks = [
   [ -1, -1,//省略// -1, -1, -1, -1 ],
   ////////////////省略/////////////////////
   [ 0, 0, 0, 0,//省略// 0, 0, 0, 0 ],
   [ 1, 1, 1, 1,//省略// 1, 1, 1, 1 ]
];
var map = new Map(16, 16);
map.image = game.assets["map2.gif"];
map.loadData(blocks);
ステージを配置する                     配列で表示する画像を管
                                   理
//MAPを表示させる
var blocks = [                        タイルの一コマづつ敷き
   [ -1, -1,//省略// -1, -1, -1, -1 ],    詰めるように配置。
   ////////////////省略/////////////////////
   [ 0, 0, 0, 0,//省略// 0, 0, 0, 0 ],
   [ 1, 1, 1, 1,//省略// 1, 1, 1, 1 ]
];
var map = new Map(16, 16);
map.image = game.assets["map2.gif"];
map.loadData(blocks);
ステージを配置する
//MAPを表示させる
var blocks = [
   [ -1, -1,//省略// -1, -1, -1, -1 ],
   ////////////////省略/////////////////////
                                     Map(オブジェクト)を生成
   [ 0, 0, 0, 0,//省略// 0, 0, 0, 0 ],
   [ 1, 1, 1, 1,//省略// 1, 1, 1, 1 ]
];                                          画像の指定
var map = new Map(16, 16);
map.image = game.assets["map2.gif"];
map.loadData(blocks);

                                    配列を呼び出し配置
ステージを配置する




        map2.gif
ステージを配置する




   生成したオブジェクトのサイズで
      配列として扱える
ステージを配置する

 game.onload = function(){

     //---------------省略-------------------//

     //rootSceneに追加
     game.rootScene.addChild(bear);
     game.rootScene.addChild(map);
 }
                              ※ルートシーンに追加
 game.start();
}                              ※オブジェクトは
                             シーンに追加する事で表示
デモ
実はクマさんも・・・




         chara1.gif
実はクマさんも・・・
                     サイズ(32,32)




      「chara1.gif」を切り出して
          呼び出している
実はクマさんも・・・
                   デフォルトは0(1番目)




         「bear.frame = 番号」
      で何番目を表示するか指定する。
当たり判定




        当たった!!!
当たり判定
//星を表示
var star = new Sprite(16, 16);
star.image = game.assets['icon0.gif'];
star.frame = [30];

//-------------------省略--------------------//

//星との当たり判定
   if(this.within(star, 15)) {
   label.text = '当たった!';
   this.frame = 3;
}
当たり判定                                    キャラを一つ追加


//星を表示
var star = new Sprite(16, 16);
star.image = game.assets['icon0.gif'];
star.frame = [30];

//-------------------省略--------------------//

//星との当たり判定
   if(this.within(star, 15)) {
   label.text = '当たった!';
   this.frame = 3;
}
当たり判定
//星を表示
var star = new Sprite(16, 16);
star.image = game.assets['icon0.gif']; 当たり判定の処理
star.frame = [30];                     intersect,またはwithin
                                        メソッドを利用。※
//-------------------省略--------------------//

//星との当たり判定
   if(this.within(star, 15)) {      ※補足
   label.text = '当たった!';            ・intersec()では矩形同士の距離
                                    ・within()では中心からの距離
   this.frame = 3;
}
デモ
ゲームスタート&ゲームオーバー
ゲームスタート&ゲームオーバー




   ゲームスタートとゲームオーバーの
        画像を用意
ゲームスタート&ゲームオーバー




   (注意)HTMLファイルと同じ階層に
         置きましょう。
ゲームスタート&ゲームオーバー




     ゲームスタートは画像を
      用意するだけでOK
ゲームスタート&ゲームオーバー HTML

<html>
//-------------------省略--------------------//
<head>
<script type="text/javascript" src="enchant.js"></script>
<script type="text/javascript" src="nineleap.enchant.js"></script>
<script type="text/javascript" src="game.js"></script>
//-------------------省略--------------------//
</html>

                nineleap.enchant.jsを読み込む
ゲームスタート&ゲームオーバー

//星を表示
var star = new Sprite(16, 16);
star.image = game.assets['icon0.gif'];

//-------------------省略--------------------//

//星との当たり判定
   if(this.within(star, 15)) {       ゲームオーバーの
   this.frame = 3;                      処理
   game.end();
}
デモ
コントローラーの設置(タッチデバイス用)
コントローラーの設置(タッチデバイス用)




          pad.png
コントローラーの設置(タッチデバイス用)




    (注意)HTMLファイルと同じ階層に
          置きましょう。
コントローラーの設置(タッチデバイス用)

<html>
//-------------------省略--------------------//
<head>
<script type="text/javascript" src="enchant.js"></script>
<script type="text/javascript" src="ui.enchant.js"></script>
<script type="text/javascript" src="game.js"></script>
//-------------------省略--------------------//
</html>

                    ui.enchant.jsを読み込む
コントローラーの設置(タッチデバイス用)

game.onload = function() {
//-------------------省略--------------------//

// バーチャルキーパッドを生成                   バーチャルキーパッドを生
var pad = new Pad();                    成
pad.moveTo(0, 220);

//-------------------省略--------------------//
コントローラーの設置(タッチデバイス用)

game.onload = function() {
//-------------------省略--------------------//

// バーチャルキーパッドを生成
var pad = new Pad();
pad.moveTo(0, 220);

//-------------------省略--------------------//
                                     バーチャルキーパッドを配
                                              置
デモ
ゲームを作って
 みました!
デモ
なんとかゲーム  が
       ぽいもの

  出来ました!
まとめ
まとめ
● スタートアップがらくちん

● 必要なものがそろっている

● 少ないコードでゲームが作れる

● プログラムの学習にも最適
ありがとうございました
さらに詳しい解説は
● 公式サイトのサンプルコード
● code9leap
● ドットインストール
● enchant.js プログラミング入門の資料
● tl.enchant.jsの解説
● JavaScriptベースゲームエンジン徹底比較

Weitere ähnliche Inhalte

Was ist angesagt?

What is Object Oriented CSS?
What is Object Oriented CSS?What is Object Oriented CSS?
What is Object Oriented CSS?Nicole Sullivan
 
Learning jQuery in 30 minutes
Learning jQuery in 30 minutesLearning jQuery in 30 minutes
Learning jQuery in 30 minutesSimon Willison
 
Timings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical HackerTimings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical HackerStacy Devino
 
From printk to QEMU: Xen/Linux Kernel debugging
From printk to QEMU: Xen/Linux Kernel debuggingFrom printk to QEMU: Xen/Linux Kernel debugging
From printk to QEMU: Xen/Linux Kernel debuggingThe Linux Foundation
 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template LanguageGabriel Walt
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSNaga Harish M
 
Introduction to CSS
Introduction to CSSIntroduction to CSS
Introduction to CSSPrarthan P
 
Kiss PageObjects [01-2017]
Kiss PageObjects [01-2017]Kiss PageObjects [01-2017]
Kiss PageObjects [01-2017]Iakiv Kramarenko
 
Java 8 - CJ
Java 8 - CJJava 8 - CJ
Java 8 - CJSunil OS
 
An Introduction to CMake
An Introduction to CMakeAn Introduction to CMake
An Introduction to CMakeICS
 

Was ist angesagt? (20)

Object Oriented CSS
Object Oriented CSSObject Oriented CSS
Object Oriented CSS
 
What is Object Oriented CSS?
What is Object Oriented CSS?What is Object Oriented CSS?
What is Object Oriented CSS?
 
CMake best practices
CMake best practicesCMake best practices
CMake best practices
 
Webpack slides
Webpack slidesWebpack slides
Webpack slides
 
Dom
Dom Dom
Dom
 
An Overview on Nuxt.js
An Overview on Nuxt.jsAn Overview on Nuxt.js
An Overview on Nuxt.js
 
Learning jQuery in 30 minutes
Learning jQuery in 30 minutesLearning jQuery in 30 minutes
Learning jQuery in 30 minutes
 
Timings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical HackerTimings of Init : Android Ramdisks for the Practical Hacker
Timings of Init : Android Ramdisks for the Practical Hacker
 
Html5
Html5Html5
Html5
 
From printk to QEMU: Xen/Linux Kernel debugging
From printk to QEMU: Xen/Linux Kernel debuggingFrom printk to QEMU: Xen/Linux Kernel debugging
From printk to QEMU: Xen/Linux Kernel debugging
 
Html
HtmlHtml
Html
 
AEM Sightly Template Language
AEM Sightly Template LanguageAEM Sightly Template Language
AEM Sightly Template Language
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Intro to Three.js
Intro to Three.jsIntro to Three.js
Intro to Three.js
 
About Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JSAbout Best friends - HTML, CSS and JS
About Best friends - HTML, CSS and JS
 
The benefits of BEM CSS
The benefits of BEM CSSThe benefits of BEM CSS
The benefits of BEM CSS
 
Introduction to CSS
Introduction to CSSIntroduction to CSS
Introduction to CSS
 
Kiss PageObjects [01-2017]
Kiss PageObjects [01-2017]Kiss PageObjects [01-2017]
Kiss PageObjects [01-2017]
 
Java 8 - CJ
Java 8 - CJJava 8 - CJ
Java 8 - CJ
 
An Introduction to CMake
An Introduction to CMakeAn Introduction to CMake
An Introduction to CMake
 

Ähnlich wie enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン

enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようRyota Shiroguchi
 
Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」Yusuke HIDESHIMA
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2dHiroshi Oyamada
 
Creators'night#14今井
Creators'night#14今井Creators'night#14今井
Creators'night#14今井Daisuke Imai
 
Html canvas shooting_and_performanceup
Html canvas shooting_and_performanceupHtml canvas shooting_and_performanceup
Html canvas shooting_and_performanceupYohei Munesada
 
Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイントCanvas de shooting 制作のポイント
Canvas de shooting 制作のポイントYohei Munesada
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井Daisuke Imai
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0Wataru Kani
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜勝成 鈴江
 
Processing workshop
Processing workshopProcessing workshop
Processing workshopWataru Kani
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Tomoaki Shimizu
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Masahiko Mizuta
 
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaPF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaandroid sola
 
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsolaPf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsolaandroid sola
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうkeroyonn
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス5mingame2
 
Designing video game hardware in verilog
Designing video game hardware in verilogDesigning video game hardware in verilog
Designing video game hardware in verilogAtsuki Takahashi
 

Ähnlich wie enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン (20)

enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
 
Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」Osakijs #01 「enchant.jsハンズオン資料」
Osakijs #01 「enchant.jsハンズオン資料」
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
 
Creators'night#14今井
Creators'night#14今井Creators'night#14今井
Creators'night#14今井
 
Html canvas shooting_and_performanceup
Html canvas shooting_and_performanceupHtml canvas shooting_and_performanceup
Html canvas shooting_and_performanceup
 
Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイントCanvas de shooting 制作のポイント
Canvas de shooting 制作のポイント
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
Processing workshop
Processing workshopProcessing workshop
Processing workshop
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
 
Arctic.js
Arctic.jsArctic.js
Arctic.js
 
enchant.js勉強会
enchant.js勉強会enchant.js勉強会
enchant.js勉強会
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaPF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsola
 
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsolaPf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsola
 
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろうPerl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
Perl Hobby Programming - Games::BeLike::EightBIT ターミナルで8ビット風ゲームをつくろう
 
どこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティスどこでも動くゲームを作るためのベタープラクティス
どこでも動くゲームを作るためのベタープラクティス
 
Designing video game hardware in verilog
Designing video game hardware in verilogDesigning video game hardware in verilog
Designing video game hardware in verilog
 

enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン