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

Composer 從入門到實戰
Composer 從入門到實戰Composer 從入門到實戰
Composer 從入門到實戰
Shengyou Fan
 
Piaget dispensa
Piaget dispensaPiaget dispensa
Piaget dispensa
imartini
 

Mais procurados (17)

PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 
PHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩くPHP 8 で Web 以外の世界の扉を叩く
PHP 8 で Web 以外の世界の扉を叩く
 
Service workers
Service workersService workers
Service workers
 
Composer 從入門到實戰
Composer 從入門到實戰Composer 從入門到實戰
Composer 從入門到實戰
 
React js use contexts and useContext hook
React js use contexts and useContext hookReact js use contexts and useContext hook
React js use contexts and useContext hook
 
Java Entreprise Edition
Java Entreprise EditionJava Entreprise Edition
Java Entreprise Edition
 
1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초
 
Testo unico dei doveri del giornalista
Testo unico dei doveri del giornalista Testo unico dei doveri del giornalista
Testo unico dei doveri del giornalista
 
Connecting Connect with Spring Boot
Connecting Connect with Spring BootConnecting Connect with Spring Boot
Connecting Connect with Spring Boot
 
Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기Open source APM Scouter로 모니터링 잘 하기
Open source APM Scouter로 모니터링 잘 하기
 
Techical Workflow for a Startup
Techical Workflow for a StartupTechical Workflow for a Startup
Techical Workflow for a Startup
 
Piaget dispensa
Piaget dispensaPiaget dispensa
Piaget dispensa
 
Azure Blob Storage API for Scala and Spark
Azure Blob Storage API for Scala and SparkAzure Blob Storage API for Scala and Spark
Azure Blob Storage API for Scala and Spark
 
가상화된 코드를 분석해보자
가상화된 코드를 분석해보자가상화된 코드를 분석해보자
가상화된 코드를 분석해보자
 
Detecting headless browsers
Detecting headless browsersDetecting headless browsers
Detecting headless browsers
 
Bem methodology
Bem methodologyBem methodology
Bem methodology
 
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
(Ficon2016) #2 침해사고 대응, 이렇다고 전해라
 

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

enchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみようenchant.jsでゲーム制作をはじめてみよう
enchant.jsでゲーム制作をはじめてみよう
Ryota Shiroguchi
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
Hiroshi Oyamada
 
Html canvas shooting_and_performanceup
Html canvas shooting_and_performanceupHtml canvas shooting_and_performanceup
Html canvas shooting_and_performanceup
Yohei Munesada
 
Canvas de shooting 制作のポイント
Canvas de shooting 制作のポイントCanvas de shooting 制作のポイント
Canvas de shooting 制作のポイント
Yohei Munesada
 
PF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsolaPF部2011年12月勉強会.androidsola
PF部2011年12月勉強会.androidsola
android sola
 
Pf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsolaPf部2012年1月勉強会.androidsola
Pf部2012年1月勉強会.androidsola
android 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
 

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