More Related Content
PDF
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン PDF
PPTX
Osakijs #01 「enchant.jsハンズオン資料」 PDF
PDF
Unityクリエイターズ勉強会【2/2】【関西】発表資料 PDF
PDF
PPTX
What's hot
PDF
【Unite Tokyo 2019】〈七つの大罪〉をゲームで!高品質グラフィックを具現化するための技法と開発最適化のご紹介 PDF
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編) PPTX
PDF
PF部2011年12月勉強会.androidsola PPTX
[CEDEC2017] LINEゲームのセキュリティ診断手法 PPTX
WindowsストアーアプリでSharpDXを動かしてみる PDF
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを! PDF
Canvas de shooting 制作のポイント PDF
PDF
Html canvas shooting_and_performanceup PDF
PPTX
How to make Inn-fighting dice PDF
KEY
PDF
PDF
PPTX
PDF
PDF
PPTX
Viewers also liked
PPT
California DECA - What is DECA? PPT
PPTX
PDF
Firefox osにenchant.jsを食わせてみた PPT
PDF
2009 Dijital Pazarlama Stratejisi Ozgur Alaz PPT
PPTX
Ives De Saeger - Creëer veerkracht en wendbaarheid in de huidige turbulente m... PDF
Interakcja na ekrania media PDF
RESTEC EVENTS presentation PDF
PPTX
WGLG bangladesh best school for girls campaign NGCAF_Patnitala May 2014 PPT
PDF
PDF
Nirogi Mata Dr. Shriniwas Kashalikar PPT
PPTX
PPT
Lakhvi's real place the prison PDF
Costruire la comunicazione di un master in social media marketing PPSX
Similar to 2012 03-03-titanium plusquicktigame2d
PDF
Flashup13 Basic Training of Flare3D PPTX
PPTX
Unityで Photonを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【応用編】 PPTX
横スクロールゲームを作ってみました! ザリガニクライシス PDF
【Unity道場教育スペシャル】Cinemachineで教えるゲームの3つの大切なこと PDF
Unity 2D 逆引き辞典 for Beginners PPTX
UE4 3Dゲーム制作入門 その1 : ベースプロジェクト作成編 PPTX
PDF
Unityで横スクロールアクションゲームを作ってみる(第2回unity初心者勉強会) PDF
Unityハッカソン チームドミノ 発表用資料 2012.12 PPTX
PDF
2012 03-24-titanium plusquicktigame2d PPTX
PDF
PPTX
PPTX
PDF
PDF
週末プログラミングで作るカジュアルゲーム~シューティング編~ PDF
【Unity道場スペシャル 2018幕張】初動を制する!遊んでもらってナンボだぜ! PDF
More from Hiroshi Oyamada
PDF
PDF
20130125 titanium meetupvol5 PDF
20130412 titanium meetupvol7 PDF
PDF
2013 06-05-web-career-talk-at-coedo PDF
2013 02-28-bussiness-plan-about-titanium PDF
2014 02-19-titanium meetupvol16 PDF
2016 02-25-crawler-study-01 PDF
2012 12-17-titanium meetupvol4 PDF
PDF
20140319 titanium meetupvol17 PDF
PDF
PDF
2013 06-11-craft beerfanlt PDF
20130613 titanium meetupvol9 PDF
20130910 titanium meetupvol11 PDF
PDF
PDF
2014 05-17-titanium hamamatsuvol3 PDF
2012 03-03-titanium plusquicktigame2d
- 1.
QuickTiGame2dとは?
✤ TitaniumMobile向けの2Dゲーム開発のためのフレームワーク
✤ 札幌に住んでる井口さんという方が開発中
2011年12月28日 2012年1月8日
- 2.
スマフォ向けゲーム開発ツール
開発ツール 開発言語 特徴
Titanium Mobile iPhone/Android向けのアプ
JavaScript
+QuickTiGame2d リがリリース出来る
ブラウザ上で稼働するWeb
enchant.js JavaScript
アプリケーション
ngCore JavaScript DeNAが開発してる
Unity Technologies社が開
Unity JavaScript 発しており、GREEがこの会
社と提携してる
- 3.
QuickTiGame2dの主な機能
jcarbaugh John Kroll Daves Portfolio
「舞台」のような位置づけ。 「俳優」のような位置づけ。
「監督」のような位置づけで 例えばステージ1は誰でもクリ 画像を表示する機能はもちろん
ゲームの進行管理を担う アーできる程度の敵を配置する のこと、画像の変形、移動とい
・弾道と敵が当たった時のアク だけにしておき、ステージ2は う処理はもちろんのこと、画像
ションを決定する 少し難易度をあげる・・・とい 同士が重なってるかどうか簡単
・ゲームのスコアー管理をする うようなゲームにしようとした に判別出来たりするので、ゲー
・何面まで進んだのか管理する 場合にこの「舞台」を切り替え ム開発者が面倒な処理を考えて
ることで簡単に実現可能 なくても済む
- 4.
- 5.
ソースコード解説:初期設定
var win1 =Titanium.UI.createWindow({
title:'Tab 1',
backgroundColor:'#fff'
});
var totalScore = 0;
var scoreLabel = Titanium.UI.createLabel({
top : 10,
left : 10,
height : 20,
width : 'auto',
color : 'white',
text : 'Score: ' + totalScore
});
var quicktigame2d = require('com.googlecode.quicktigame2d');
var game = quicktigame2d.createGameView();
var scene = quicktigame2d.createScene();
game.screen = {width:320, height:480};
game.fps = 30;
game.color(0, 0, 0);
game.pushScene(scene);
var tank = quicktigame2d.createSprite({image:'images/tank.png'});
tank.x = (320/2) - (tank.width/2);
tank.y = 480 - tank.height;
var back = quicktigame2d.createSprite({image:'images/back.png'});
back.x = (320/2) - (back.width/2);
back.y = 480 - back.height;
scene.add(back);
scene.add(tank);
- 6.
- 7.
- 8.
ソースコード解説:ゲーム難易度設定
/*
弾道の数、速度や敵の数、移動スピードといったパラメータを変更することでゲームの難易度が変わりそうだが
各スプライトに直接値を設定するとマジックナンバーになりそうなので以下オブジェクトを作成
*/
var gameLevel ={
// MAXALIENS :敵の表示最大数の設定
// MAXBULLETS :弾の最大数
// ALIENSSPEED :敵の移動スピード設定
// BULLETSSPEED:弾の移動スピード設定
easy:{
MAXALIENS :5,
MAXBULLETS :15,
ALIENSSPEED:10,
BULLETSSPEED:15
},
middle:{
MAXALIENS :10,
MAXBULLETS :10,
ALIENSSPEED:15,
BULLETSSPEED:15
},
hard:{
MAXALIENS :10,
MAXBULLETS :10,
ALIENSSPEED:15,
BULLETSSPEED:10
}
};
var selectedLevel = 'easy';
- 9.
ソースコード解説:メイン処理
var aliens =[];
var aliensSpeed = [];
var bullets = [];
var bulletsSpeed = [];
game.addEventListener('onload', function(e) {
for (var i = 0; i < gameLevel[selectedLevel].MAXALIENS; i++) { 敵機となる画像を
aliens[i]= quicktigame2d.createSprite({image:'images/alien1.png'});
aliensSpeed[i] = gameLevel[selectedLevel].ALIENSSPEED; MAXALIENESで設定した数
aliens[i].x = Math.random() * game.screen.width; だけ画面に配置。バラバラに
aliens[i].y = -100;
scene.add(aliens[i]); 配置したいので乱数を活用し
}
for(var j=0;j<gameLevel[selectedLevel].MAXBULLETS;j++){ てる
bullets[j]= quicktigame2d.createSprite({image:'images/bullet.png'});
bullets[j].x = initBulletsPostion();
※弾道も基本的には同じ考え
bullets[j].y = tank.y - (bullets[j].height); です。
bulletsSpeed[j] = gameLevel[selectedLevel].BULLETSSPEED;
scene.add(bullets[j]);
}
game.start();
}); 「enterframe」内に書かれている処理が
game.addEventListener('enterframe', function(e) {
bulletCollidesWithAliens(); 定期的(1/30秒)ごとに呼び出される。
updateAliensPosition();
updateBulletPosition(); ※この場合には後述する3つのサブ処理が
});
実施される
game.addEventListener('touchmove',function(e){
tank.x = e.x;
});
win1.add(game);
win1.add(scoreLabel);
win1.open();
- 10.
ソースコード解説:サブ処理(弾道と敵機配
置)
/*
敵の位置の再計算を行い、非表示にしたいものがあったら画面外に配置させることで結果的に非表示にする
*/
function updateAliensPosition(){
for (var i = 0; i < gameLevel[selectedLevel].MAXALIENS; i++) {
aliens[i].y += aliensSpeed[i] * Math.random();
if(aliens[i].y > 480){
aliens[i].y = -100;
}
}
}
/*
弾の位置の再計算を行い、非表示にしたいものがあったら画面外に配置させることで結果的に非表示にする。
*/
function updateBulletPosition(){
for (var i = 0; i < gameLevel[selectedLevel].MAXBULLETS; i++) {
bullets[i].y -= bulletsSpeed[i];
// 弾が画面外に出た時にはタンクの砲台位置に弾を再設定
if(bullets[i].x < 0 ||bullets[i].x > 320 || bullets[i].y < 0 || bullets[i].y > 480){
bullets[i].x = initBulletsPostion();
bullets[i].y = tank.y - (bullets[i].height);
}
}
}
- 11.
- 12.
ソースコード解説:サブ処理(弾道当たり判
定と弾道初期化)
function bulletCollidesWithAliens(){
for (var i = 0; i < gameLevel[selectedLevel].MAXBULLETS; i++) {
for(var j=0;j<gameLevel[selectedLevel].MAXALIENS;j++){
var flg = bullets[i].collidesWith(aliens[j]);
if(flg){
totalScore +=100;
scoreLabel.text = ('Score:' + totalScore);
aliens[j].y = -100;
//弾道をタンクの位置にセットしなおす
bullets[i].x = initBulletsPostion();
bullets[i].y = tank.y - (bullets[i].height);
}
}
}
}
function initBulletsPostion(){
// 弾道は配列で保持しているけれど、幅はすべて同じなので
// 配列の先頭に格納している弾道の幅を取得した上で
// 弾道を砲台の箇所に位置するように処理
return tank.x + (tank.width/2) -(bullets[0].width/2);
}