2012/02/18_Java / ゲーム開発初心者のためのAndroidゲーム開発講習会( #droidgamedev )

ハッシュタグ: #droidgamedev 告知: http://atnd.org/events/24590 UST:http://goo.gl/uh3xl ベースのサンプル:http://t.co/3D5GHCJc
1
close_yutori @kimukou2628

#droidgamedev 今回のライブラリは描画はOpenGLで遣っているとのこと(OpenGLは初心者が深入りすると大変 とのお話 <=ただ読み込めれば勉強になりそう このサンプルを元にした本は夏頃に発売予定

2012-02-18 15:27:13
close_yutori @kimukou2628

#droidgamedev メタセコイヤ等を使うといい みたいなお話が

2012-02-18 15:31:12
close_yutori @kimukou2628

#droidgamedev Maru fire 、updateをオーバライド update に fire() fire に PlayerFiter の BulletBase fire()処理コピペ

2012-02-18 15:41:20
close_yutori @kimukou2628

#droidgamedev これだと毎フレーム上に弾が飛んでしまうので BulletBase => EnemyBullet を作成。 EnemyBullet と PlayerBulletの違いは、updateのoffset方向と描画画像を変更

2012-02-18 15:44:37
close_yutori @kimukou2628

#droidgamedev Maruのfireの中身を変更 EnemyBullet bullet = new EnemyBullet(this); stage.addEffect(bullet);

2012-02-18 15:46:18
close_yutori @kimukou2628

#droidgamedev 弾の移動量は、プレイヤーと同じ速度にしてしまうとゲームバランス的にダメ><。 プレイヤーの弾が-10で飛ぶなら 5あたりで調整しましょう

2012-02-18 15:47:19
close_yutori @kimukou2628

#droidgamedev コントローラの動かす感じと ボタンの感触が凄い秀逸だな~。後で中身じっくり見てみたい

2012-02-18 15:52:51
close_yutori @kimukou2628

#droidgamedev OpenGLを使う面での利点) 普通のCanvas8MBまで画像 256MB~500MBまで使えるので OpenGLは良いとのお話

2012-02-18 15:56:09
close_yutori @kimukou2628

#droidgamedev Maru 的の毎秒球打ちは厳しいので Maru::update に switch(getFrame()){ case 60: fire(); break; } に修正(出現後60フレーム後<基本30フレなので2秒後

2012-02-18 16:01:30
close_yutori @kimukou2628

#droidgamedev これだと2秒後だけなので case 120: offsetPosition(0,30); resetFrame();//フレームカウントリセット break; を追記

2012-02-18 16:07:30
close_yutori @kimukou2628

#droidgamedev これだと弾段幕逃道ないので case 30:に追記 FighterBase player = stage.getPlayer(); if(Math.abs(player.getPositionX() - getPositionX()) < 60)

2012-02-18 16:13:09
close_yutori @kimukou2628

#droidgamedev ゲームオーバ) StageBase::isGameOver を書き換えてみましょう return player.isDead();

2012-02-18 16:17:46
close_yutori @kimukou2628

#droidgamedev ゲームクリア条件の書き換え) public boolean isGameClear() { return enemys.isEmpty();

2012-02-18 16:22:26
close_yutori @kimukou2628

#droidgamedev 今の状態だと敵が一番下に到達した場合ゲームオーバーにならないので、ゲームオーバ条件を修正

2012-02-18 16:28:20
close_yutori @kimukou2628

#droidgamedev if(player.isDead())return true; for(FighterBase ene :enemys){ if(ene.getPositionY()>player.getPositionY())return true; }

2012-02-18 16:30:20
close_yutori @kimukou2628

#droidgamedev StageBase => Stage02 を作成(取りあえず中身は01コピペ

2012-02-18 16:40:30
close_yutori @kimukou2628

#droidgamedev Stage01::getNextStage を下記修正 return new Stage02(getResourceManager(), getSpriteManager(), getTouchInput()); this.で補完する手も

2012-02-18 16:42:00
close_yutori @kimukou2628

#droidgamedev 次は Maru と同じように EnemyFighterBase=>Tonagariを作ってみましょう。 画像 R.drawable.enemy_01 に変更 setHitPoint(30); 追記してHP変更

2012-02-18 16:53:52
close_yutori @kimukou2628

#droidgamedev ボスなので updadeは以下な感じに弾連打 switch(getFrame()){ case 6: case 9: case 12: case 15: case 18:  fire(); みたいなイメージで。実際は色々調整

2012-02-18 16:58:24
close_yutori @kimukou2628

#droidgamedev あとはStageの配列 enemyTable を弄りましょう ピラミッドのような配置も可能

2012-02-18 17:02:05
close_yutori @kimukou2628

#droidgamedev 講義終了~。一通り体験できた。 でもライブラリ次第だよね(汗。数学も基本知らなくても作れるらしいけど しっておくにはこした事ないよな・・・

2012-02-18 17:05:30
close_yutori @kimukou2628

#droidgamedev 本日はどうもありがとうございました。 <となりのエミュレータで作業されていた方は結構苦戦していたな。やはり実機がないと厳しいかも

2012-02-18 17:06:56
close_yutori @kimukou2628

#droidgamedev 今回使用したanddroidgamelib.jarのソースに関しては本の販売とともに公開します とのお話 (スレッドやOpenGL=>SurfeceViewのラッパのライブラリとか色々と ライブラリ自体を使ってMarket出してもOKだそうです

2012-02-18 17:12:26