libGDX関連情報まとめ 2014/4/19 (Androidで２Dゲーム)

> libGDXは、マルチプラットフォーム（Andoird,iOS,Windows,OS X,Linux）対応のゲームエンジンです。
> 2Dゲーム制作でよく利用されています。
> 使用言語はJava。Eclipseで開発できます。

AndroidでJavaでゲーム開発したい。
ってときにフレームワークはなにがいいでしょうか。
C/C++で書くならマルチプラットフォームだし[Cocos2D-X](http://www.cocos2d-x.org/)がよさそう。
Codos2D系は情報もおおいし日本語の書籍も多数出版されてますしね。
ただ、Cocos2D for androidはもう開発あんまり活発じゃないっぽい。

Javaで書きたいんじゃー！となると、現状では
・AndEngine
・libGDX
ってとこでしょうか。
どちらも海外ではかなり使われていて開発も活発です。
ただ日本ではあんまり情報ないですよね…。
（AndEngineは日本語書籍は1冊でてます。[AndEngineでつくるAndroid 2Dゲーム](http://www.amazon.co.jp/AndEngine%E3%81%A7%E3%81%A4%E3%81%8F%E3%82%8BAndroid-2D%E3%82%B2%E3%83%BC%E3%83%A0-SMART-GAME-DEVELOPER/dp/4798130516/ref=cm_rdp_product) ）

　AndEngineは、Cocos2Dっぽい感じがします。
　全レイヤーに対してサポートが手厚い感じ。

　一方libGDXは、ライブラリという感じでフレームワークとしてはそこまでガチガチじゃないかな。
　パフォーマンスや移植性に手間やノウハウがいるところはlibGDXにまかせて、ゲームロジックは自前で実装という雰囲気です。（シーンの制御とかはライブラリにありますが）

　ゲームキャラの管理などは自前で実装したいので、libGDXのほうが向いてるかなー
　また、libGDXの利点としてマルチプラットフォームです。
　Android,Windows,Linuxなどのみならず、最近ではRoboVM正式サポートでiOSアプリも開発できますよ。Javaで！

　ということで当面はlibGDXに力をいれていくことにしました。
　ここでは調べた情報をまとめていくことにします。


![2014-04-15 06.04.37.png](https://qiita-image-store.s3.amazonaws.com/0/42140/88d703b8-a7ae-85da-5d9b-8df24055a30b.png)


# libGDX関連情報


##● 公式
http://libgdx.badlogicgames.com/

ドキュメント(Wiki)
https://github.com/libgdx/libgdx/wiki

JavaDoc
http://libgdx.badlogicgames.com/nightlies/docs/api/


##● まとめ

LibGDX 開発
http://seesaawiki.jp/aksoft/d/LibGDX%20%b3%ab%c8%af
（入門）
・環境構築
・サンプル
・LibGDXの動作確認メモ その１


libgdxメモlibgdxメモ
http://doc.tir.ne.jp/devel/clan/libgdx
・ハマりどころの詳細な解説（TexttureAtlus,Font系その他）
・日本語フォント
　https://github.com/ayamada/mplus-1mn-medium-16-fnt-tir

へびのぬけがら: libGDXへびのぬけがら: libGDX
http://snakemanshow.blogspot.jp/search/label/libGDX
・情報へのリンクが充実
・NetBeansへの設定方法


ANDROIDNOTE
http://androidnote.logdown.com/tags/libgdx
・libGDXの機能、Game，Screenクラスについて（ブログの一部）

Mofumofu
http://mofumofu546.blogspot.jp/2013/10/0-libgdx.html
・libGDXを扱ったブログ
・Viewpoetについて
　http://mofumofu546.blogspot.jp/2013/10/3-libgdx-2dlibgdx-viewport.html
・Tween Engineについて


##● 個別の情報
libGDXのサンプル「superjumper」を動かす
http://naosim.syoyu.net/android/libgdx%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%80%8Csuperjumper%E3%80%8D%E3%82%92%E5%8B%95%E3%81%8B%E3%81%99
・サンプルプロジェクトのeclipseへのインポート

Parse.com Restful API in LibGDX Game
http://www.indiedb.com/games/endure/news/parsecom-restful-api-in-libgdx-game

##● チュートリアル

　英語版のみだが詳細でわかりやすい。

LibGDX Tutorial series
http://www.gamefromscratch.com/page/LibGDX-Tutorial-series.aspx
・初歩からScene2D活用まで

LibGDX Zombie Bird Tutorial - (Flappy Bird Remake)
http://www.kilobolt.com/zombie-bird-tutorial-flappy-bird-remake.html
・BOX2Dを活用したチュートリアル
・サンプルゲームを作りながらのチュートリアル

LibGDX Tutorial series
http://www.gamefromscratch.com/page/LibGDX-Tutorial-series.aspx


Java Game Development (LibGDX)
https://www.youtube.com/playlist?list=PLXY8okVWvwZ0JOwHiH1TntAdq-UDPnC2L
・YouTubeでのチュートリアル動画シリーズ（#25まである）
※#8まで観た


#● libGDXの感想

(Androidでミニゲームを試作。そのままのコードがWindowsでも動いた。嬉しい）

###Android
![2014-04-15 06.04.37.png](https://qiita-image-store.s3.amazonaws.com/0/42140/88d703b8-a7ae-85da-5d9b-8df24055a30b.png)
![2014-04-15 06.08.45.png](https://qiita-image-store.s3.amazonaws.com/0/42140/722b7ff6-4bf4-1a0c-5239-74934c93c4b2.png)

なかなかのパフォーマンスだ！

###Windows(デスクトップ)
![スクリーンショット 2014-04-15 18.58.04.png](https://qiita-image-store.s3.amazonaws.com/0/42140/01e1da1c-44ec-c70c-8d7a-27cd99bdeb80.png)



libGDXはシンプルで常識的な作りなのですぐ使い始められるけど、Viewportの設定は何でやるのが最適か？Scene2dを利用するのか？ゲームのキャラクラスは独自クラス、Sprite、Actorどれで実装するのか？…といった細かいセオリーがわからない。サンプルを参考にするか…

libGDXは互換性やパフォーマンスが重要なところは完備されていてありがたいのだけど毎回繰り返される記述量が多くなりがちなので、オレオレゲームフレームワークをこの上に実装するのがいいような気がする。シーングラフとかアクターは自前のほうが使いやすそうだ。UI系はそのままでも便利。

Updateで呼び出される周期は固定できず、deltaで経過時間がわたされる。
ゲーム内ロジックは60fps固定で動かしたいなあ。
（加速度とかかかわると単純に移動距離にdelta掛けるだけにはいかないしね）
deltaの値もを元にゲームロジックを複数回実行する方法とする。


##検討した結果方針としては
UIはScene2d.uiなどを利用
ゲームのキャラクター(Actorとか）は独自実装がいいかも。
Vector2dやRectangelクラスはゲームでも使いやすいので利用する。
※サンプルによってはActorを継承したクラスをゲームキャラにつかっているものもあるな

ここはもうちょっと感覚がつかめてきたら追記する