SlideShare a Scribd company logo
HTML5 Canvasで
シューティングゲーム

~ 作り方、パフォーマンス、ツール ~
自己紹介

名前:
 宗定 洋平(@yoheiMune)
 YoheiM.NET(http://www.yoheim.net/)ブロガー

趣味:
 テニス、プログラミング(最近は、HTML5,
Objective-Cが中心)
今日お話するネタはこちらです




         http://www.yoheim.net/labo/html5/canvasShooting.html
今日お話するネタはこちらです

"Canvas de Shooting"


このゲームの作り方の
解説を通して、


HTML5でのゲーム制作する際の技術ポイントを
少しでもお伝え出来ればと思います!
Sencha Touch
NO
Sencha Touch
enchant.js
NO
enchant.js
ライブラリ無しで
   いきます!!
スクラッチでゲームを作る上で、

どんな仕組みで、
どんな技術を使って、
どんな事を考えて、

作って行くのかをお伝えできればと思います。
ライブラリを使えば、

仕組みや技術要素は隠蔽され、

簡単に出来ます。

でも今回は、仕組みを学ぶ機会を提供したいと

考えています。
では目次へ
Agenda

1. HTML5 Canvasで今回利用する技術紹介

2. 実装内容のご紹介

3. Canvasのパフォーマンス向上

4. ツール紹介

5. 最後に
Agenda

1. HTML5 Canvasで今回利用する技術紹介




 Canvasの技術を4つ紹介します
1. Canvasの準備


// Canvasエレメントを取得
var canvas
    = document.getElementById("myCanvas");

// 描画命令を行う為のコンテキストを取得
var ctx = canvas.getContext("2d");
2. 色の指定

// 塗りつぶしの色を指定
ctx.fillStyle = "rgb(0,255,0)";   // 緑

ctx.fillStyle = "rgb(255,255,0)"; // 黄

ctx.fillStyle = "rgb(255,0,0)";   // 青



利用用途:壁色の指定、ショットの色の指定
3. 図形の描画と、画像の描画


// 四角形の描画
ctx.fillRect(posX, posY, width, height);


// 画像の描画
ctx.drawImage(imageObject, posX, posY);




利用用途:ショットの描画、自機や敵機の描画
4. 描画内容のクリア



// Canvas上の描画内容をクリア
ctx.clearRect(posX, posY , width, height);




利用用途:MainLoopで再描画する時に使う
えっ!?
これだけ?
はい!
これだけです。
続いて、
実装内容の
紹介です
Agenda

1. HTML5 Canvasで今回利用する技術紹介

2. 実装内容のご紹介

3. Canvasのパフォーマンス向上

4. ツール紹介

5. 最後に
まずは
初期処理です
1. 初期化処理
// Canvasを取得
var canvas
    = document.getElementById("myCanvas");
// Canvasの大きさを画面に合わせる
canvas.width = window.innerWidth || 800;
canvas.height = window.innerHeight * 0.95 ||
400;
// contextを生成する
var ctx = canvas.getContext("2d");
1. 初期化処理

// 使う画像を、事前に読み込みます
img_plane = new Image();
img_plane.src = "img/plane.png";
img_plane.onload = function () {
    // 読み込み終了した状態を保存
    imageLoadDone = true;
}
次に
メインループ
です
2. MainLoopを開始する

// 描画や当たり判定を行うMainLoopをつくる
var gameMainLoop = function () {

    // 今回は、mainLoop内で再描画します
    ctx.clearRect(0, 0, w, h);
}

// setIntervalでゲームを開始!
var timer = setInterval(gameMainLoop, 50);
ここまでで、
以下のような画面が出来ます




    真っ暗です。でも動いてます。
自機を動かします
3. 自機を動かす ①

// まずは自機を表すオブジェクトを作ります
var plane = {
  img : img_plane,
  posX : 10,
  posY : (h - img_plane.height) / 2,
  life : 3
}
3. 自機を動かす ②

// 自機を動かす為に、keypressイベントを監視しま
す
document.onkeypress = function (e) {

    // 例えば自機を上に動かす場合
    if (e.keyCode == 101/*E*/) {
      plane.posY -= 5;
    }
}
3. 自機を動かす ③

// そしてメインループ内で、自機を描画します
var gameMainLoop = function () {

    // 自機を描画する
    ctx.drawImage(plane.img, plane.posX,
                                 plane.posY);
}
自機で
攻撃してみます
4. 自機がショットを撃つ ①

// 自機ショットを保持する配列を定義します
var plane_balls = [];

// 自機ショットは、以下のオブジェクト型と
// します
var ball = {
  radius : 5, posX : 10, posY : 10, speed : 10
}
4. 自機がショットを撃つ ②

// "K"ボタンが押されたら、ショットを生成
document.onkeypress = function () {
 if (e.keyCode == 107/*K*/) {
   var newBall = {
     radius : 5, posX : plane.posX, posY : plane.
posY, speed : 10
   };
        plane_balls.push(newBall);
    }
}
4. 自機がショットを撃つ ③
// mainLoop内で、speed分だけ移動させて描画する
var gameMainLoop = function () {
 for (var i = 0; i < plane_balls.length; i++) {
    var ball = plane_balls[i];
    ball.posX += ball.speed;
    ctx.fillStyle = "rgba(200,0,0,1)";
    ctx.fillRect(ball.posX, ball.posY, ball.radius,
ball.radius);
  }
}
これで自機を動かして、
攻撃できるようになりました
次に、敵機を
出現させます
あっでも、
敵機の実装は、
自機やショットの実装説
明と同じなので、
パスします!!
5. 敵機を出現させる ①
// まずは敵機を保持する配列を定義します
var enemies = [];

// 敵機は、以下のオブジェクト定義とします
var enemy = {
  img : img, /* 今回は2種類の画像を使う */
  posX : x,
  posY : y,
  speed : s
};
5. 敵機を出現させる ②
// 敵機はランダムに出現させます
function createEnemy () {
  var num =(Math.floor((Math.random()*100)%100);
  if (num < 5) {
    var s = num;
    var i = (num%2==0 ? imgE01 : imgE02);
    var y = canvasHeght * Math.random();
    var x = canvasWidth;
    var enemy = {img:i, posX:x, posY:y, speed:s};
    enemies.push(enemy);
  }
}
5. 敵機を出現させる ③
// MainLoop内でspeed分、左に移動させて描画
var gameMainLoop = function () {
  for (var i = 0; i < enemies.length; i++) {
  var enemy = enemies[i];
  var enemy.posX -= enemy.speed;
    ctx.drawImage(enemy.img, enemy.posX,
enemy.posY);
  }
}
これで敵機が左に向かって、
動くようになりました
当たり判定です
6.当たり判定を行う ①
当たり判定は、物体と物体が重なったか、否かを
判断します。
重なっている場合には、2つの物体同士が当たって
いると考えます。


                  Hit!!
6.当たり判定を行う ②
例えば自機ショットと敵機の当たり判定の場合を
説明します。
          x座標 = PosX+radius
          y座標 = PosY            x座標 = PosX
                                y座標 = PosY




 x座標 = PosX
 y座標 = PosY



              radius




   x座標 = PosX+radius
   y座標 = PosY+radius
                              x座標 = PosX
                              y座標 = PosY + img.height
6.当たり判定を行う ③
// ソースコードではこんな感じです
var b = plane_balls[i];
var e = enemies[j];
if ((b.posX + b.radius) >= e.posX    /* x 座標 */
     && b.posY <= e.posY+e.img.width /* y座標下 */
     && b.posY >= e.posY) {          /* y座標上 */

    delete plane_balls[i];
    delete enemies[j];
}
6. 当たり判定を行う ④
// 最後にdeleteした要素をお掃除する
// 例えば自機ショットの場合
var new_plane_balls = [];

for (var i = 0; i < plane_balls.length; i++) {
  if (plane_balls[i])
    new_plane_balls.push(plane_balls[i]);
}

plane_balls = new_plane_balls;
7.GameOver or GameClear ①
// ボスを倒すか、自機が倒されたら終わり
if (deadBoss() || deadSelf()) {

    // mainLoopを終了させる
    clearTimeout(timer);

    // メッセージを表示する
    if (deadBoss())
        alert("CONGURATURATION!!");
    else
        alert("GAME OVER");
}
これでシューティングゲームが
できました(*゚▽゚)ノ
作ったら速く動かしたい!!
続いて、
Canvas描画処理手法を
紹介をします。


3. Canvasのパフォーマンス向上
Cavasの高速化

1、requestAnimationFrameの利用
2、プレレンダリング
3、複数のCanvasを使う
4、描画範囲は最小に
5、ステート変更は最小限に
6、浮動点小数より整数値
1、requestAnimationFrameの利用

今までの説明では、setIntervalを用いていました
が、requestAnimationFrameを用いると、ブラウザ
が最適なFPSで描画してくれます。

function gameMainLoop() {
  clearCnavas();
  drawEnemies();
  drawSelf();
  ・・・
  handle = requestAnimationFrame(gameMainLoop);
}
1、requestAnimationFrameの利用

 requestAnimationFrameを利用する上で、
 以下の注意点があります。
 ・ベンダープレフィックスが必要な場合も
 ・サポート対象外のブラウザ(スマホは全滅に近い)




参考URL:
・http://www.w3.org/TR/animation-timing/
・http://caniuse.com/#search=requestanimation
2、プレレンダリング

画像描画や複雑な図形の描画を、事前にフレーム
外のCanvasに描画しておき、実際に描画する際に
Canvasにプレ描画したCanvasに流し込む事で、高
速化します。


// 通常の描画
function gameMainLoop() {
  drawEnemy(xxx);
  requestAnimationFrame(gameMainLoop);
}
2、プレレンダリング
// プレレンダリング
var m_canvas = document.createElement('canvas');
m_canvas.width = 32;
m_canvas.height = 32;
var m_context = m_canvas.getContext(‘2d’);
drawEnemy(xxx);

// メインループでの描画
function gameMainLoop() {
   context.drawImage(m_canvas, 0, 0);
   requestAnimationFrame(render);
}
2、プレレンダリング
3、複数のCanvasを使う

描画の変更タイミングが異なるオブジェクトは、異
なるCanvasに描画することで、各Canvasの描画速
度を向上させることが出来ます。




     Main Contents Canvas

   Backgound Canvas
3、複数のCanvasを使う

パフォーマンスの違いは以下の感じです。
4、描画範囲は最小に

Canvasでフレーム毎に全体を描画するより、変更
個所のみ描画し直す方が、処理が速く終わりま
す。

これは当たり前な感じなので、詳細説明はパ
ス!!
5、ステートの変更は最小に

Canvasの描画色や線の太さなどのCanvasのス
テートの変更回数を減らす事で、処理速度を向上
させることが出来ます。

// Bad
for (var i = 0; i < STRIPES; i++) {
  context.fillStyle = (i % 2 ? COLOR1 :
COLOR2);
  context.fillRect(i * GAP, 0, GAP, 480);
}
5、ステートの変更は最小に
// Good
context.fillStyle = COLOR1;
for (var i = 0; i < STRIPES/2; i++) {
  context.fillRect((i*2) * GAP, 0, GAP, 480);
}

context.fillStyle = COLOR2;
for (var i = 0; i < STRIPES/2; i++) {
  context.fillRect((i*2+1) * GAP, 0, GAP, 480);
}
5、ステートの変更は最小に
パフォーマンスの違いは以下のイメージです。
6、浮動点小数より整数値を

HTML5 Canvasではサブピクセルレンダリングが
サポートされています。

整数以外で座標で描画すると、線が滑らかになる
ように自動的にアンチエイリアスがかかります。
6、浮動点小数より整数値を




 Whole pixel bunny vs sub-pixel bunny
 参考URL:http://seb.ly/2011/02/html5-canvas-sprite-optimisation/
6、浮動点小数より整数値を

滑らかな描画を意図しない場合には、整数に整形
する処理を行うべきです。

// 例
var x = Math.floor(baseX * 0.9);
var y = Math.round(baseY * 1.02);


また似た例として、ShadowやBlurをCanvas上で多
用すると、処理が非常に重たくなります。
6、浮動点小数より整数値を
パフォーマンスのお話は、
以上です。
と、ここまでライブラリなしで実
装することを説明してきました。
大変だなって感じましたか?

または、色々と考えることが
あって面白いなって感じました
か?
(私は後者ですw。)
ライブラリ(例えばenchant.js)を
つかうと、こんなに楽!!とい
う点をお伝えします。
enchant.jsを用いた場合
ゲームの前処理
window.onload = function() {
  enchant();
  // サイズを決めるのはこれだけ。HTML要素も要らない。
  var game = new Game(320,320);
  // 画像読み込み完了か否かはライブラリが判断してくれる。
  game.preload('fig1.png','fig2.png');
  game.onload = function(){/*ゲーム開始時の処理*/}
  game.start();
}
// ゲームループの実装は必要ない
// ループ毎のCanvasのお掃除もない(Canvasではない為)
ゲーム中 part1
要素の追加、フレーム毎の処理

// 登場キャラクターの追加(オブジェクト指向で便利)
// アーキテクチャ設計は既にされていて、考える必要なし
var enemy = new Sprite(32,32);
enemy.image = game.assets['enemy01.png'];
enemy.x = enemy.y = 50;
game.rootScene.addChild(enemy);

// フレーム毎の処理は、追加した要素毎に記載
enemy.addEventListener('enterframe',function(){
  this.x -= 2;
});
ゲーム中 part2
// Sprite毎のタップイベントも簡単に扱える。
// 位置特定を自動でしてくれるなんていい感じ。
plane.addEventListener("touchend", function(param){
  plane.x = param.x;
  plane.y = param.y;
});

// 衝突判定はたったこれだけ。
// 面倒な条件判定はライブラリがやってくれる。
if(ball1.intersect(enemy1)){
  game.rootScene.removeChild(enemy1);
}
さて続いては、開発効率を上げ
るために使っているツールを紹
介させて頂きます。


4. ツール紹介
開発効率を上げるツールたち

・Scss、Sass
・qUnit
・grunt.js
・jsLint, jsHint
・HTML5 Boiler Plate
・Chrome Developer Tool
・jsperf
・Where can I use.
最後に。
最後までご清聴頂きありがとうございました。

最後に、何故ライブラリなしで実装する事をここで話そ
うと思ったのか話できれば思います。

私はライブラリなしのスクラッチで開発する事が好きで
す。
(仕事では開発スピード、サポートブラウザを考慮してライブラリを使いますけど)
スクラッチで開発する理由は以下です。

・仕組みを知りたい
・仕組みを作れる人になりたい
・ないところから何かを作る(0から1を生み出す)ことを
生き甲斐にしたい

何か新しいことが世の中にでた場合に、その最前線で
戦うのに、ライブラリは無いかもしれない。
人の力を借りずとも、自分が今まで経験/学習したこと
で新しいことに挑戦していく。

そのためには、一見無駄かと思えるスクラッチでの開
発でたくさんの困難に出会い、それに立ち向かう。

その経験をたくさん積む事ができるのがスクラッチ開
発であり、将来に繋がる活動だと思っています。
まだまだやりたい事は一杯あるけど、力がないと感じる
今日この頃。

明日の自分は今日よりも1歩進んでいて、
1週間後の自分はだいぶ先に進んでいて、
1ヶ月後の自分は全くの別人となる。
そんな目標をもとに、活動しています。

これからもたくさんの方々に接したいと思います。あと
の懇親会でもヨロシクおねがいしますw。

今日はお時間頂きありがとうございました。

More Related Content

What's hot

Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
Katsushi Suzuki
 
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
Masaru Mizuochi
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3D
Katsushi Suzuki
 
静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3
yaju88
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2dHiroshi Oyamada
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0
Wataru Kani
 
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
シェーダープログラムを無限に生成するガチャつくってみた PCD2019シェーダープログラムを無限に生成するガチャつくってみた PCD2019
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
Masaru Mizuochi
 
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_ Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity Technologies Japan K.K.
 
画像を縮小するお話
画像を縮小するお話画像を縮小するお話
画像を縮小するお話
technocat
 
OpenCVとRGB-Dセンサで作ろう壁面タッチパネル
OpenCVとRGB-Dセンサで作ろう壁面タッチパネルOpenCVとRGB-Dセンサで作ろう壁面タッチパネル
OpenCVとRGB-Dセンサで作ろう壁面タッチパネル
Takashi Yoshinaga
 
Sencha study
Sencha studySencha study
Sencha study
Shinsuke Sugita
 
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
Takashi Yoshinaga
 
Three.jsで3D気分
Three.jsで3D気分 Three.jsで3D気分
Three.jsで3D気分
Toshio Ehara
 
はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理
Takashi Yoshinaga
 
Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)
Ryuma Tsukano
 
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!
notargs
 
CG2013 12
CG2013 12CG2013 12
CG2013 12
shiozawa_h
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
勝成 鈴江
 
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
Nishida Kansuke
 

What's hot (20)

Flashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3DFlashup 12 Basic Training of Away3D
Flashup 12 Basic Training of Away3D
 
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方NEORT ミートアップ #1 LT クリエイティブコーディングの行方
NEORT ミートアップ #1 LT クリエイティブコーディングの行方
 
Flashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3DFlashup13 Basic Training of Flare3D
Flashup13 Basic Training of Flare3D
 
静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3静岡Developers勉強会 HTML5&CSS3
静岡Developers勉強会 HTML5&CSS3
 
Aaなゲームをjsで
AaなゲームをjsでAaなゲームをjsで
Aaなゲームをjsで
 
2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d2012 03-03-titanium plusquicktigame2d
2012 03-03-titanium plusquicktigame2d
 
Processing workshop v3.0
Processing workshop v3.0Processing workshop v3.0
Processing workshop v3.0
 
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
シェーダープログラムを無限に生成するガチャつくってみた PCD2019シェーダープログラムを無限に生成するガチャつくってみた PCD2019
シェーダープログラムを無限に生成するガチャつくってみた PCD2019
 
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_ Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
 
画像を縮小するお話
画像を縮小するお話画像を縮小するお話
画像を縮小するお話
 
OpenCVとRGB-Dセンサで作ろう壁面タッチパネル
OpenCVとRGB-Dセンサで作ろう壁面タッチパネルOpenCVとRGB-Dセンサで作ろう壁面タッチパネル
OpenCVとRGB-Dセンサで作ろう壁面タッチパネル
 
Sencha study
Sencha studySencha study
Sencha study
 
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
 
Three.jsで3D気分
Three.jsで3D気分 Three.jsで3D気分
Three.jsで3D気分
 
はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理はじめようRGB-Dセンシングと画像処理
はじめようRGB-Dセンシングと画像処理
 
Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)
 
板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!板ポリだけで めちゃカッコいい グラフィックスを出す!
板ポリだけで めちゃカッコいい グラフィックスを出す!
 
CG2013 12
CG2013 12CG2013 12
CG2013 12
 
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
C++でのゲームプログラミングをしたときのお話 札幌C++勉強会 #4 〜スタートゲームプログラミング〜
 
㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2㉑CSSでアニメーション!その2
㉑CSSでアニメーション!その2
 

Viewers also liked

クリスマス直前! HTML5 で作る♥ はじめての iOS & Android アプリ開発
クリスマス直前!HTML5 で作る♥はじめての iOS & Android アプリ開発クリスマス直前!HTML5 で作る♥はじめての iOS & Android アプリ開発
クリスマス直前! HTML5 で作る♥ はじめての iOS & Android アプリ開発
Osamu Monoe
 
スマホ向けCanvasゲームの作り方
スマホ向けCanvasゲームの作り方スマホ向けCanvasゲームの作り方
スマホ向けCanvasゲームの作り方
chikathreesix
 
HTML5 conference 2013
HTML5 conference 2013HTML5 conference 2013
HTML5 conference 2013
Takuo Kihira
 
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
Futomi Hatano
 
HTML5 Canvasを学びたい人に送る Canvasの超基本とその後の学習方針
HTML5 Canvasを学びたい人に送るCanvasの超基本とその後の学習方針HTML5 Canvasを学びたい人に送るCanvasの超基本とその後の学習方針
HTML5 Canvasを学びたい人に送る Canvasの超基本とその後の学習方針
Nisei Kimura
 
初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミング初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミング
Kazuki Miyanishi
 
DevOps at ChatWork
DevOps at ChatWorkDevOps at ChatWork
DevOps at ChatWork
Masaki Yamamoto
 
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -
Toshio Ehara
 
レンダリングを意識したパフォーマンスチューニング
レンダリングを意識したパフォーマンスチューニングレンダリングを意識したパフォーマンスチューニング
レンダリングを意識したパフォーマンスチューニング
Hayato Mizuno
 
テスト
テストテスト
テスト
Masashi Sato
 
HTML5など社内勉強会 Vol.5 - 入門JavaScript [非同期通信]
HTML5など社内勉強会 Vol.5 - 入門JavaScript [非同期通信]HTML5など社内勉強会 Vol.5 - 入門JavaScript [非同期通信]
HTML5など社内勉強会 Vol.5 - 入門JavaScript [非同期通信]George Harada
 
Pusherとcanvasで作るリアルタイムグラフ
Pusherとcanvasで作るリアルタイムグラフPusherとcanvasで作るリアルタイムグラフ
Pusherとcanvasで作るリアルタイムグラフ
Ryunosuke SATO
 
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
Staffnet_Inc
 
Canvas勉強会
Canvas勉強会Canvas勉強会
Canvas勉強会
Tsutomu Kawamura
 
『Business Model Canvas ~再演~』第15回 POStudy 〜プロダクトオーナーシップ勉強会〜
『Business Model Canvas ~再演~』第15回 POStudy 〜プロダクトオーナーシップ勉強会〜『Business Model Canvas ~再演~』第15回 POStudy 〜プロダクトオーナーシップ勉強会〜
『Business Model Canvas ~再演~』第15回 POStudy 〜プロダクトオーナーシップ勉強会〜満徳 関
 
小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ
Muyuu Fujita
 
ノンゲーム系スマホアプリ制作 First Step
ノンゲーム系スマホアプリ制作 First Stepノンゲーム系スマホアプリ制作 First Step
ノンゲーム系スマホアプリ制作 First Step
Yohei Munesada
 
Web業務アプリの新しい潮流
Web業務アプリの新しい潮流Web業務アプリの新しい潮流
Web業務アプリの新しい潮流
久司 中村
 
Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Cordovaで業務アプリを作る 〜その事例とノウハウ〜Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Kenichi Inoue
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るKiyoshi SATOH
 

Viewers also liked (20)

クリスマス直前! HTML5 で作る♥ はじめての iOS & Android アプリ開発
クリスマス直前!HTML5 で作る♥はじめての iOS & Android アプリ開発クリスマス直前!HTML5 で作る♥はじめての iOS & Android アプリ開発
クリスマス直前! HTML5 で作る♥ はじめての iOS & Android アプリ開発
 
スマホ向けCanvasゲームの作り方
スマホ向けCanvasゲームの作り方スマホ向けCanvasゲームの作り方
スマホ向けCanvasゲームの作り方
 
HTML5 conference 2013
HTML5 conference 2013HTML5 conference 2013
HTML5 conference 2013
 
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
ようこそ、HTML5裏APIの世界へ - HTML5 Conference 2013
 
HTML5 Canvasを学びたい人に送る Canvasの超基本とその後の学習方針
HTML5 Canvasを学びたい人に送るCanvasの超基本とその後の学習方針HTML5 Canvasを学びたい人に送るCanvasの超基本とその後の学習方針
HTML5 Canvasを学びたい人に送る Canvasの超基本とその後の学習方針
 
初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミング初心者向けJavaScript/HTML5ゲームプログラミング
初心者向けJavaScript/HTML5ゲームプログラミング
 
DevOps at ChatWork
DevOps at ChatWorkDevOps at ChatWork
DevOps at ChatWork
 
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -
 
レンダリングを意識したパフォーマンスチューニング
レンダリングを意識したパフォーマンスチューニングレンダリングを意識したパフォーマンスチューニング
レンダリングを意識したパフォーマンスチューニング
 
テスト
テストテスト
テスト
 
HTML5など社内勉強会 Vol.5 - 入門JavaScript [非同期通信]
HTML5など社内勉強会 Vol.5 - 入門JavaScript [非同期通信]HTML5など社内勉強会 Vol.5 - 入門JavaScript [非同期通信]
HTML5など社内勉強会 Vol.5 - 入門JavaScript [非同期通信]
 
Pusherとcanvasで作るリアルタイムグラフ
Pusherとcanvasで作るリアルタイムグラフPusherとcanvasで作るリアルタイムグラフ
Pusherとcanvasで作るリアルタイムグラフ
 
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
 
Canvas勉強会
Canvas勉強会Canvas勉強会
Canvas勉強会
 
『Business Model Canvas ~再演~』第15回 POStudy 〜プロダクトオーナーシップ勉強会〜
『Business Model Canvas ~再演~』第15回 POStudy 〜プロダクトオーナーシップ勉強会〜『Business Model Canvas ~再演~』第15回 POStudy 〜プロダクトオーナーシップ勉強会〜
『Business Model Canvas ~再演~』第15回 POStudy 〜プロダクトオーナーシップ勉強会〜
 
小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ小規模案件で作られた秘伝のタレ
小規模案件で作られた秘伝のタレ
 
ノンゲーム系スマホアプリ制作 First Step
ノンゲーム系スマホアプリ制作 First Stepノンゲーム系スマホアプリ制作 First Step
ノンゲーム系スマホアプリ制作 First Step
 
Web業務アプリの新しい潮流
Web業務アプリの新しい潮流Web業務アプリの新しい潮流
Web業務アプリの新しい潮流
 
Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Cordovaで業務アプリを作る 〜その事例とノウハウ〜Cordovaで業務アプリを作る 〜その事例とノウハウ〜
Cordovaで業務アプリを作る 〜その事例とノウハウ〜
 
node+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作るnode+socket.io+enchant.jsでチャットゲーを作る
node+socket.io+enchant.jsでチャットゲーを作る
 

Similar to Html canvas shooting_and_performanceup

Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
Masahiko Mizuta
 
enchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorialenchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorial
Ryo Shimizu
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
Daisuke Imai
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLAtsushi Tadokoro
 
enchant.js勉強会
enchant.js勉強会enchant.js勉強会
enchant.js勉強会
Hiroaki Murayama
 
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろうnico0927
 
How to use animation packages in R(Japanese)
How to use animation packages in R(Japanese)How to use animation packages in R(Japanese)
How to use animation packages in R(Japanese)sleipnir002
 
Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料
Masataka Motokurumada
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Tomoaki Shimizu
 
CG2013 03
CG2013 03CG2013 03
CG2013 03
shiozawa_h
 
iOSプログラマへ。HTML5 Canvasがおもしろい!
iOSプログラマへ。HTML5 Canvasがおもしろい!iOSプログラマへ。HTML5 Canvasがおもしろい!
iOSプログラマへ。HTML5 Canvasがおもしろい!cocopon
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
Ryo Suzuki
 
openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
Teruaki Tsubokura
 
Creators'night#14今井
Creators'night#14今井Creators'night#14今井
Creators'night#14今井
Daisuke Imai
 
Unityとシェーダで描く360度フラクタル
Unityとシェーダで描く360度フラクタルUnityとシェーダで描く360度フラクタル
Unityとシェーダで描く360度フラクタル
Hirotaka Nakayama
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めようAdvancedTechNight
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき
Nishida Kansuke
 
Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発
studioshin
 
Unity C#3からC#6に向けて
Unity C#3からC#6に向けてUnity C#3からC#6に向けて
Unity C#3からC#6に向けて
onotchi_
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
Tatsuki SHIMIZU
 

Similar to Html canvas shooting_and_performanceup (20)

Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門Androidプログラミング初心者のためのゲームアプリ開発入門
Androidプログラミング初心者のためのゲームアプリ開発入門
 
enchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorialenchant.js meetup Tokyo vol.2 Tutorial
enchant.js meetup Tokyo vol.2 Tutorial
 
Creators'night#12今井
Creators'night#12今井Creators'night#12今井
Creators'night#12今井
 
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGLMedia Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
Media Art II 2013 第7回 : openFrameworks 3Dグラフィクス、OpenGL
 
enchant.js勉強会
enchant.js勉強会enchant.js勉強会
enchant.js勉強会
 
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
 
How to use animation packages in R(Japanese)
How to use animation packages in R(Japanese)How to use animation packages in R(Japanese)
How to use animation packages in R(Japanese)
 
Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料Unityクリエイターズ勉強会【2/2】【関西】発表資料
Unityクリエイターズ勉強会【2/2】【関西】発表資料
 
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
Cocos2d-x(JS) ハンズオン #08「様々な画像描画方法」
 
CG2013 03
CG2013 03CG2013 03
CG2013 03
 
iOSプログラマへ。HTML5 Canvasがおもしろい!
iOSプログラマへ。HTML5 Canvasがおもしろい!iOSプログラマへ。HTML5 Canvasがおもしろい!
iOSプログラマへ。HTML5 Canvasがおもしろい!
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001openFrameworks Workshop in Kanazawa v001
openFrameworks Workshop in Kanazawa v001
 
Creators'night#14今井
Creators'night#14今井Creators'night#14今井
Creators'night#14今井
 
Unityとシェーダで描く360度フラクタル
Unityとシェーダで描く360度フラクタルUnityとシェーダで描く360度フラクタル
Unityとシェーダで描く360度フラクタル
 
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
3DCG(3Dコンピュータグラフィック)をWebGLで始めよう
 
㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき㉗HTML5+jQueryでお絵かき
㉗HTML5+jQueryでお絵かき
 
Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発Sprite kitでの横スクロールジャンプ アクションゲーム開発
Sprite kitでの横スクロールジャンプ アクションゲーム開発
 
Unity C#3からC#6に向けて
Unity C#3からC#6に向けてUnity C#3からC#6に向けて
Unity C#3からC#6に向けて
 
emc++ chapter32
emc++ chapter32emc++ chapter32
emc++ chapter32
 

Html canvas shooting_and_performanceup