SlideShare a Scribd company logo
1 of 32
Download to read offline
CreateJSでアプリつくった話

スマホブラウザゲーつくろう!

@ru_shalm
2014/12/20
プログラミング生放送勉強会
第32回@GMO Yours
わたしはだぁれ?
• Ru/むっくRu(@ru_shalm)
• るたんですよー
• フリーゲームつくってます
• 謎サイトもつくってます
• Rubyかわいい!!
どういうわけか
ブラウザで動くゲームつくりたいー
→ しかもスマホで!
→ どこから手を付けたらいいの。。
→ [HTML5 なに 無料] [検索]
\どうする/
(僕に)選ばれたのは
http://www.createjs.com
CreateJS #とは
• JSライブラリの集まり
• Webでグイーン!な表現
≒Flashがやってたことをやる
Flashを置き換える(?)CreateJS
注意
• あくまでWeb用のライブラリ
• ゲーム専用ライブラリじゃないよ
•  だからゲーム専用命令はないよ
•  シーンとかは自分でつくるよ
\でも公式にゲームのデモあるよ/
最新のCreateJSの状況です
• 先週アップデート!!!!
• WebGL対応とか高速化とか
• ver.1.0に向けて着々進んでいるらしい
• 僕の知識が間に合ってない
• 内容古かったらごめんね
• 耐えて!!!
そんなCreateJSでつくりました
• 『発火フォール』
• http://bit.ly/hackafall
ハッカドール賞もらいました!うれしい!
おさらい(?)
<画面を出す>
1. HTMLを用意します
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1.0,
maximum-scale=1.0, user-scalable=0" name="viewport">
</head>
<body>
<canvas id="game-screen" width="320" height="320">
</canvas>
<script src="https://code.createjs.com/
easeljs-0.8.0.min.js"></script>
<script src="./app.js"></script>
</body>
</html>
2. 最低限のJSを書きます
var canvas = document.getElementById('game-screen');
var stage = new createjs.Stage(canvas);
var bitmap = new createjs.Bitmap('./ru_shalm.png');
stage.addChild(bitmap);
createjs.Ticker.addEventListener('tick', function() {
// TODO: ここに毎フレームの更新処理	
 
	
 	
 self.stage.update();
});
3. なんか出た
画面に何かを写す
• 表示リストに写すものをペタリ
• Flash的なアレ
Canvas(createjs.Stage) ru_shalm.png
(createjs.Bitmap)
addChid
Containerを使って部品化
• Androidの独自Viewみたいな
• あちこち使いまわせて便利
stage MyButton
(createjs.Container)
ツイートする
ツイートする
じゃあこれは?
\めんどくさそう/
ビットマップテキスト
• createjs.BitmapText
• =画像フォント
• 画像ファイル + 座標情報
• 今回はスコア数字だけ用意
かっこいい演出は?
• ParticleEmitterJS
• http://bit.ly/
1wO53VI
• パーティクル
• 設定ツール
• Web上で使える
ParticleEmitterJSはつらみがある
• 同時再生数制限
• 1個ずつしか出ない
• 自分で潰した
• 加算合成じゃない
• 自分で(ry
• 最新版で動かない
• く(x △ x) > ウワアアアアア
ゲームは音が付くと
たのしい
音は任せろー(バリバリ
• 4兄弟の1人SoundJS
• 環境毎に様々な手段で音を鳴らす
// 前提: PreloadJSでbgm.m4aが読み込まれていること	
 
var sound = createjs.Sound.createInstance('bgm');
// 無限ループ再生
sound.play(loop: -1);
iOS < やめて!
• iOSでBGMが鳴らない????
• タッチ時に再生を開始しないとダメ
•  一度でも鳴らせば以降はいつでもOK
sound.play(); // これが初回ではダメ
button.addEventListener('click', function(){
sound.play(); // これならOK
});
面倒なので
• ボタンを押すまで
音が鳴らないように
• ボタン押すとピュ♪
音声の対応形式に注意
• コーデックとかブラウザ依存
• スマホだったら大体.m4a(AAC)でおk
• Firefoxはoggだけどな!
• 複数の形式を用意すれば完璧
// ダメだったときに別の拡張子も試す	
 
createjs.Sound.alternateExtensions = ['ogg'];
CreateJSに
関係ないオマケ
ブラウザの画面サイズに合わせるとき
• <canvas>をCSSで画面サイズにする
• 例) 発火フォールの場合
• 発火フォールの内部設定: 360x576
• スマホの画面サイズ: 540x960
→ <canvas>を540x864にスケール
(画面に入りきる最大にする)
ブラウザの画面サイズに合わせるとき
• 画面サイズ変わったらCSS変更?
• URLバー表示/非表示のたびに実行!
• クソ重い!!💢
• 発火フォールでは
• 縦幅しか変わらないとき→無視
まとめ
まとめ
• CreateJSいい子
• スマホブラウザゲー現実的だよ
• Flashゲー全盛期みたいに盛り上がろう!
• Webでハッピーになろう
• なりたい(願望)
<おわり>
CreateJSでアプリつくった話
@ru_shalm
2014/12/20
プログラミング生放送勉強会
第32回@GMO Yours
付録:質疑応答とか1
• Q.なんでUnityじゃないの?
• A.2014年の今!このとき!
スマホブラウザで動かしたいなう!
(Unity 5にご期待ください)
付録:質疑応答とか2
• Q.URLバー自動隠しとかしないの?
• A.今のiOSはViewportに設定があるよ
 Androidは魔法が必要そうだし
 諦めてます><
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-
scale=1.0, user-scalable=0, minimal-ui">

More Related Content

What's hot

SNS 「github」で遊ぼう
SNS 「github」で遊ぼうSNS 「github」で遊ぼう
SNS 「github」で遊ぼうTomohiko Himura
 
インド人のために 分でレースゲー作れるようにしてみた/UnityおとなのLT大会2
インド人のために 分でレースゲー作れるようにしてみた/UnityおとなのLT大会2インド人のために 分でレースゲー作れるようにしてみた/UnityおとなのLT大会2
インド人のために 分でレースゲー作れるようにしてみた/UnityおとなのLT大会2Hiroki Omae
 
コミュニティサイトを爆速で作成し、お手軽に運用する方法
コミュニティサイトを爆速で作成し、お手軽に運用する方法コミュニティサイトを爆速で作成し、お手軽に運用する方法
コミュニティサイトを爆速で作成し、お手軽に運用する方法Shunya Ueta
 
アセット作成のワークフロー
アセット作成のワークフローアセット作成のワークフロー
アセット作成のワークフローtakeshi uesugi
 
Twitter TweetUp Tokyo 09 Fall
Twitter TweetUp Tokyo 09 FallTwitter TweetUp Tokyo 09 Fall
Twitter TweetUp Tokyo 09 Fallkirifeather
 
kiri_feather's LT in TweetUp Tokyo 09 Fall
kiri_feather's LT in TweetUp Tokyo 09 Fallkiri_feather's LT in TweetUp Tokyo 09 Fall
kiri_feather's LT in TweetUp Tokyo 09 Fallkirifeather
 
Roll a-ball-custom-1st dev-2018-forrakugaku2017
Roll a-ball-custom-1st dev-2018-forrakugaku2017Roll a-ball-custom-1st dev-2018-forrakugaku2017
Roll a-ball-custom-1st dev-2018-forrakugaku2017Jun Shimura
 
StoryboardでUIを使いまわす
StoryboardでUIを使いまわすStoryboardでUIを使いまわす
StoryboardでUIを使いまわすMasaki Fuke
 
初めてのConcrete5
初めてのConcrete5初めてのConcrete5
初めてのConcrete5Nobuko Kodera
 
Fukuokapm20140920 uzulla talk
Fukuokapm20140920 uzulla talkFukuokapm20140920 uzulla talk
Fukuokapm20140920 uzulla talkJunichi Ishida
 
Raspberry piでlチカしてみた
Raspberry piでlチカしてみたRaspberry piでlチカしてみた
Raspberry piでlチカしてみた森下 智裕
 
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」Toshio Ehara
 
もちょブログ解析入門
もちょブログ解析入門もちょブログ解析入門
もちょブログ解析入門sudosan
 
ご注文はライブラリですか?
ご注文はライブラリですか?ご注文はライブラリですか?
ご注文はライブラリですか?orekyuu
 
初めてのLT in PHP Matsuri2013
初めてのLT in PHP Matsuri2013初めてのLT in PHP Matsuri2013
初めてのLT in PHP Matsuri2013Hiroyuki Kiyomizu
 
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会Kazuki Higashiguchi
 
一ヶ月Blender サイト用
一ヶ月Blender サイト用一ヶ月Blender サイト用
一ヶ月Blender サイト用abc-on
 
Make TypingGame in JavaScript
Make TypingGame in JavaScriptMake TypingGame in JavaScript
Make TypingGame in JavaScriptundertale1
 
【構想メモ】C97「同人作家が知っておきたい検索エンジンの知識」
【構想メモ】C97「同人作家が知っておきたい検索エンジンの知識」【構想メモ】C97「同人作家が知っておきたい検索エンジンの知識」
【構想メモ】C97「同人作家が知っておきたい検索エンジンの知識」fuguti
 
僕がwordpressを選んだ理由
僕がwordpressを選んだ理由僕がwordpressを選んだ理由
僕がwordpressを選んだ理由jsugiyama
 

What's hot (20)

SNS 「github」で遊ぼう
SNS 「github」で遊ぼうSNS 「github」で遊ぼう
SNS 「github」で遊ぼう
 
インド人のために 分でレースゲー作れるようにしてみた/UnityおとなのLT大会2
インド人のために 分でレースゲー作れるようにしてみた/UnityおとなのLT大会2インド人のために 分でレースゲー作れるようにしてみた/UnityおとなのLT大会2
インド人のために 分でレースゲー作れるようにしてみた/UnityおとなのLT大会2
 
コミュニティサイトを爆速で作成し、お手軽に運用する方法
コミュニティサイトを爆速で作成し、お手軽に運用する方法コミュニティサイトを爆速で作成し、お手軽に運用する方法
コミュニティサイトを爆速で作成し、お手軽に運用する方法
 
アセット作成のワークフロー
アセット作成のワークフローアセット作成のワークフロー
アセット作成のワークフロー
 
Twitter TweetUp Tokyo 09 Fall
Twitter TweetUp Tokyo 09 FallTwitter TweetUp Tokyo 09 Fall
Twitter TweetUp Tokyo 09 Fall
 
kiri_feather's LT in TweetUp Tokyo 09 Fall
kiri_feather's LT in TweetUp Tokyo 09 Fallkiri_feather's LT in TweetUp Tokyo 09 Fall
kiri_feather's LT in TweetUp Tokyo 09 Fall
 
Roll a-ball-custom-1st dev-2018-forrakugaku2017
Roll a-ball-custom-1st dev-2018-forrakugaku2017Roll a-ball-custom-1st dev-2018-forrakugaku2017
Roll a-ball-custom-1st dev-2018-forrakugaku2017
 
StoryboardでUIを使いまわす
StoryboardでUIを使いまわすStoryboardでUIを使いまわす
StoryboardでUIを使いまわす
 
初めてのConcrete5
初めてのConcrete5初めてのConcrete5
初めてのConcrete5
 
Fukuokapm20140920 uzulla talk
Fukuokapm20140920 uzulla talkFukuokapm20140920 uzulla talk
Fukuokapm20140920 uzulla talk
 
Raspberry piでlチカしてみた
Raspberry piでlチカしてみたRaspberry piでlチカしてみた
Raspberry piでlチカしてみた
 
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
 
もちょブログ解析入門
もちょブログ解析入門もちょブログ解析入門
もちょブログ解析入門
 
ご注文はライブラリですか?
ご注文はライブラリですか?ご注文はライブラリですか?
ご注文はライブラリですか?
 
初めてのLT in PHP Matsuri2013
初めてのLT in PHP Matsuri2013初めてのLT in PHP Matsuri2013
初めてのLT in PHP Matsuri2013
 
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
文系学生対象!! エンジニアと働きたい「非エンジニア」勉強会
 
一ヶ月Blender サイト用
一ヶ月Blender サイト用一ヶ月Blender サイト用
一ヶ月Blender サイト用
 
Make TypingGame in JavaScript
Make TypingGame in JavaScriptMake TypingGame in JavaScript
Make TypingGame in JavaScript
 
【構想メモ】C97「同人作家が知っておきたい検索エンジンの知識」
【構想メモ】C97「同人作家が知っておきたい検索エンジンの知識」【構想メモ】C97「同人作家が知っておきたい検索エンジンの知識」
【構想メモ】C97「同人作家が知っておきたい検索エンジンの知識」
 
僕がwordpressを選んだ理由
僕がwordpressを選んだ理由僕がwordpressを選んだ理由
僕がwordpressを選んだ理由
 

Viewers also liked

実際にSoundJSを使ってみて分かったこと
実際にSoundJSを使ってみて分かったこと実際にSoundJSを使ってみて分かったこと
実際にSoundJSを使ってみて分かったことYoshiya OKI
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
Web ads mobile 2013 vizeum
Web ads mobile 2013 vizeumWeb ads mobile 2013 vizeum
Web ads mobile 2013 vizeumaussieaussie11
 
International Space Apps Challenge Tokyo 2013 - Ideathon Briefing
International Space Apps Challenge Tokyo 2013 - Ideathon BriefingInternational Space Apps Challenge Tokyo 2013 - Ideathon Briefing
International Space Apps Challenge Tokyo 2013 - Ideathon BriefingIsana Kashiwai
 
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」Tomoaki Shimizu
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)denatech2016
 
Vue.js 2.0を試してみた
Vue.js 2.0を試してみたVue.js 2.0を試してみた
Vue.js 2.0を試してみたToshiro Shimizu
 
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06Yahoo!デベロッパーネットワーク
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例gree_tech
 
「望ましさ」による優先順位づけ
「望ましさ」による優先順位づけ「望ましさ」による優先順位づけ
「望ましさ」による優先順位づけArata Fujimura
 

Viewers also liked (12)

実際にSoundJSを使ってみて分かったこと
実際にSoundJSを使ってみて分かったこと実際にSoundJSを使ってみて分かったこと
実際にSoundJSを使ってみて分かったこと
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
Web ads mobile 2013 vizeum
Web ads mobile 2013 vizeumWeb ads mobile 2013 vizeum
Web ads mobile 2013 vizeum
 
International Space Apps Challenge Tokyo 2013 - Ideathon Briefing
International Space Apps Challenge Tokyo 2013 - Ideathon BriefingInternational Space Apps Challenge Tokyo 2013 - Ideathon Briefing
International Space Apps Challenge Tokyo 2013 - Ideathon Briefing
 
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
Cocos2d-x(JS) ハンズオン #12「Cocos2d-xとSpine」
 
DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)DeNAのゲーム開発を支える技術 (クライアントサイド編)
DeNAのゲーム開発を支える技術 (クライアントサイド編)
 
Vue.js 2.0を試してみた
Vue.js 2.0を試してみたVue.js 2.0を試してみた
Vue.js 2.0を試してみた
 
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
Cocos2d-JSと物理演算で作る横スクロールアクションゲーム #scripty06
 
Vue.js入門
Vue.js入門Vue.js入門
Vue.js入門
 
ES6 in Practice
ES6 in PracticeES6 in Practice
ES6 in Practice
 
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
Cocos2d-x 3.0を使ったゲーム “消滅都市” の開発事例
 
「望ましさ」による優先順位づけ
「望ましさ」による優先順位づけ「望ましさ」による優先順位づけ
「望ましさ」による優先順位づけ
 

Similar to CreateJSでアプリつくった話

(業務外)ゲーム制作部のススメ
(業務外)ゲーム制作部のススメ(業務外)ゲーム制作部のススメ
(業務外)ゲーム制作部のススメYusuke HIDESHIMA
 
ゲームデザインについて
ゲームデザインについてゲームデザインについて
ゲームデザインについてmeyco
 
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎schoowebcampus
 
Rubymotion
RubymotionRubymotion
Rubymotionjewel12
 
Windows phoneファーストインプレッション
Windows phoneファーストインプレッションWindows phoneファーストインプレッション
Windows phoneファーストインプレッション高見 知英
 
手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)
手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)
手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)Madoka Chiyoda
 

Similar to CreateJSでアプリつくった話 (6)

(業務外)ゲーム制作部のススメ
(業務外)ゲーム制作部のススメ(業務外)ゲーム制作部のススメ
(業務外)ゲーム制作部のススメ
 
ゲームデザインについて
ゲームデザインについてゲームデザインについて
ゲームデザインについて
 
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
スマホサイトを作って学ぶ、サイト制作入門 (制作編) 先生:池田 祐太郎
 
Rubymotion
RubymotionRubymotion
Rubymotion
 
Windows phoneファーストインプレッション
Windows phoneファーストインプレッションWindows phoneファーストインプレッション
Windows phoneファーストインプレッション
 
手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)
手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)
手乗りちょまぎょアプリ開発で学ぶ MRTK 入門 (MRTK 2.5 対応)
 

CreateJSでアプリつくった話