SlideShare uma empresa Scribd logo
1 de 60
Baixar para ler offline
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ベースゲームエンジン徹底比較

Mais conteúdo relacionado

Mais procurados

025 cinema effect
025 cinema effect025 cinema effect
025 cinema effectHari99
 
Gameplay and game mechanic design
Gameplay and game mechanic designGameplay and game mechanic design
Gameplay and game mechanic designmissstevenson01
 
Doola dampatulu-01-04
Doola dampatulu-01-04Doola dampatulu-01-04
Doola dampatulu-01-04venkatesha9
 
Bhanumati attagaru
Bhanumati attagaruBhanumati attagaru
Bhanumati attagaruvenkatesha9
 
025 discussion
025 discussion025 discussion
025 discussionHari99
 
методика
методикаметодика
методикаltasenko
 
025 kantam
025 kantam025 kantam
025 kantamHari99
 
025 aunty help
025 aunty help025 aunty help
025 aunty helpHari99
 
επαναληψη ως το κκ
επαναληψη ως το κκεπαναληψη ως το κκ
επαναληψη ως το κκIoanna Chats
 
Making a Game Design Document
Making a Game Design DocumentMaking a Game Design Document
Making a Game Design DocumentEqual Experts
 
Attaa maamalu-01-02
Attaa maamalu-01-02Attaa maamalu-01-02
Attaa maamalu-01-02venkatesha9
 
Docker Plugin For DevSecOps
Docker Plugin For DevSecOpsDocker Plugin For DevSecOps
Docker Plugin For DevSecOpsPichaya Morimoto
 
Puppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaPuppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaÖnder Ceylan
 

Mais procurados (20)

Bhaarya akkato
Bhaarya akkatoBhaarya akkato
Bhaarya akkato
 
Anna bhaaryato
Anna bhaaryatoAnna bhaaryato
Anna bhaaryato
 
025 cinema effect
025 cinema effect025 cinema effect
025 cinema effect
 
Dondoo dondae
Dondoo dondaeDondoo dondae
Dondoo dondae
 
Gameplay and game mechanic design
Gameplay and game mechanic designGameplay and game mechanic design
Gameplay and game mechanic design
 
Sogasu
SogasuSogasu
Sogasu
 
Doola dampatulu-01-04
Doola dampatulu-01-04Doola dampatulu-01-04
Doola dampatulu-01-04
 
Bhanumati attagaru
Bhanumati attagaruBhanumati attagaru
Bhanumati attagaru
 
025 discussion
025 discussion025 discussion
025 discussion
 
методика
методикаметодика
методика
 
025 kantam
025 kantam025 kantam
025 kantam
 
025 aunty help
025 aunty help025 aunty help
025 aunty help
 
025 bra
025 bra025 bra
025 bra
 
επαναληψη ως το κκ
επαναληψη ως το κκεπαναληψη ως το κκ
επαναληψη ως το κκ
 
Making a Game Design Document
Making a Game Design DocumentMaking a Game Design Document
Making a Game Design Document
 
Disco shanti
Disco shantiDisco shanti
Disco shanti
 
Attaa maamalu-01-02
Attaa maamalu-01-02Attaa maamalu-01-02
Attaa maamalu-01-02
 
Chiktlo sandadi
Chiktlo sandadiChiktlo sandadi
Chiktlo sandadi
 
Docker Plugin For DevSecOps
Docker Plugin For DevSecOpsDocker Plugin For DevSecOps
Docker Plugin For DevSecOps
 
Puppeteer can automate that! - Frontmania
Puppeteer can automate that! - FrontmaniaPuppeteer can automate that! - Frontmania
Puppeteer can automate that! - Frontmania
 

Semelhante a 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
 

Semelhante a 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でゲーム制作をはじめてみよう 「パンダの会」バージョン