2012年10月25日木曜日

CD買ってきた①

多分、これからもCDを何度も買うと思うので
タイトルに①を付けてみました。

今回買ってきたCDはこちら

ファッションモンスター/きゃりーぱみゅぱみゅ
Have a Nice Day/SPECIAL OTHER

仕事終わりに、タワレコに向かいました。
お目当てはファッションモンスターだったんですけど
ふと目に入ったスペアザも買ってました。

スペアザはインストです。
Hawaiian Secret Beatとか聴けば分かりますけど
独特の世界観とリズムを持っている気がします。

ほとんど聴いたことが無かったんですけど、一気にハマってました。

ファッションモンスターは有線とCMで何度も聴いていましたが
中田ヤスタカのキャッチーなメロディが頭から離れず購入

ちなみにどちらもステッカー付きでした。
きゃりーの方やばい、怖いです。


ちなみにスペアザの方は、DVD付きを買ったので今度じっくり見たいと思います。

2012年10月21日日曜日

猫好き。

僕は極度の猫好きです。
犬も好きですが、猫は溺愛します。

今日は特に載せる画像もないので、我が家の猫一号の"杏"でも載せるとしよう。

僕が中学二年の時に拾ってきた猫です。
拾ってきた時は目が真っ黒な目やにで固まって、潰れてるのかと思いました。

もう死ぬ寸前ってぐらい衰弱していましたが、当時の僕がどうしても助けてあげたいと親に頼み込んでなんとか受け入れてもらいました。

まさか長毛種なんて思わなかったです、近所には日本猫(基本的に短毛種)しかいないのに成長したらモフモフになりました。

一日最低でも一回は、お腹の最高峰モフモフ部分に顔をうずめます。
疲れが全て吹っ飛びます。これは本当です。

にゃんこアプリ作りたいな…
にゃんこ飼うアプリとかどうだろ

多分一日中寝てるから画面内だと飽きるかも。
やっぱり本物が一番か

2012年10月20日土曜日

glDrawTexiOESを使ってます。

glDrawTexiOES()

こいつがいなければ僕のアプリは50fpsで動いていないでしょう(60fpsも出る)
OpenGLESでは圧倒的な描画速度を誇ります。
なぜ速度に拘るかというと、ゲームをプレイしている時の気持ちよさじゃないでしょうか。

いわゆる「ヌルヌル動く」ってやつです。

iアプリの時は15〜20くらいで作っていたんですが、速度が出るなら出したほうがいいですよね。

ただし、当たり前ですが電池の消費は上がります。
その辺の判断も難しいですよね。

glDrawTexiOES()に話を戻します。
ググってもあんまり情報が出てこないので、初めて使う時は困りました。
なんとか調べまくったり試行錯誤を重ねて、僕はこんな関数を作りました。

public void drawTexture(int index, int x, int y, int width, int height, int defX, int defY, int defWidth, int defHeight) {
    crop[0] = crops[index * 4 + 0] + defX;
    crop[1] = crops[index * 4 + 1] + defY + defHeight;
    crop[2] = defWidth;
    crop[3] = -defHeight;
    texture.set(gl, index);
    ((GL11)gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, crop, 0);
    ((GL11Ext)gl).glDrawTexiOES(x + scrX, scrY + (scrHeight - height) - y, 0, width, height);
}


drawTexture()の引数
index…使いたいテクスチャの番号(既にメモリに読み込んでいる状態)
x…x座標
y…y座標
width…画像サイズ横幅
height…画像サイズ高さ
defX…テクスチャ内の使いたい部分x座標
defY…テクスチャ内の使いたい部分y座標
defWidth…テクスチャ内の使いたい幅
defHeight…テクスチャ内の使いたい高さ

これで簡単に画像の切り取り、表示ができます。

例えば
グラビティゲートの画像(この場合テクスチャ番号0とする)で説明すると
これの左向き悪魔をx:32,y:64の位置に32*32で表示したい場合
g.drawTexture(0, 32, 64, 32, 32, 16, 0, 16, 16);


半透明にしたい場合は
g.setAlpha(0.5);
g.drawTexture(0, 32, 64, 32, 32, 16, 0, 16, 16);


setAlpha()の中身は
glColor4f()でalpha値を設定しているだけです。

残念なところは回転(rotate)ができないところ
回転は自分で描くのが一番手っ取り早いかも

glDrawTexiOES関しての詳しい内容はググって貰ったほうがいいと思います。


宣伝ですが
Androidアプリ「天上守護門グラビティゲート」配信中です!
無料ですのでダウンロードしてみてください(・∀・ )

独自ライブラリを作った理由



Androidのゲーム開発をOpenGLESを用いて行なっている人

OpenGL…使えるようになるまで時間がかかりました。
初めはC言語でしたが、OpenGLを使ってみました。
座標系が面倒になって挫折。(ただただ作りたいと思えるものが、当時無かったのかも)

昔にiアプリを作っていましたが、自分のケータイがXperia SO-01BになってからAndroid開発に移りました。

iアプリの時もですがCanvasが用意されていたので
比較的楽に開発できました。(当時高校生の僕でも動かせるレベル)

Androidに話を戻しますが
一番初めは普通のViewを使いました。
次は速度を上げるためSurfaceView、確かに楽でしたが思ったように速度が出なくて
開発が進まず、長い期間開発がツール系へ移行

Fast NoteText Balloon Widgetを配布後
やっぱりゲーム作りたいと思い始めOpenGLを再度勉強することに…

正直今読んでも、描画設定とか面倒臭くて嫌になります。
ですが、現段階で良いパフォーマンスが出せるのはOpenGLES
なので、ラッパーライブラリを作ってしまいました。

作ってしまいましたと簡単に言いましたが
初めてまともにライブラリを作ることになるので開発が難航(今まで何度も中身を作り直していた)
分からないことだらけで手探り状態

2ヶ月以上を費やしなんとか、MGEngineという独自ライブラリを開発しました。(初めて作ったサイトの名前がEngineだったこともありMGEngineと名付けてしまった。)

MGは現在のサイト名MAGNIFLOPから…(普通はMFと名付けるところだが、パッとしなかったので)

プロジェクトライブラリという形で使用しています。
ライブラリとゲームで2つのプロジェクトを必要とします。

ゲームプロジェクトのマニフェストファイルにMGEngineのActivityを設定

とにかく起動は簡単にしたかったので
ゲームのActivityから

MGEngine mg = new MGEngine(this, 60, 480, 800);
mg.setScene(new Title());
mg.start();

これだけで済みます。
引数は左から自身,FPS,画面幅,画面高さ
setSceneは最初に表示するシーン
startで起動です。

最低限必要だと思って組み込んだ物は

シーン管理
描画、フォント
ベクトル
当たり判定
ファイル
通信
ループ
サウンド(今回のゲームでは訳あり未使用)
タッチ

ちょっと欲張り過ぎましたが
かなり満足しています。

必要に応じて、機能を追加していく予定。
フォント、サウンド周りは特に見直しが必要です。


プログラミング言語はプログラマの道具
道具は磨き上げる人によって輝き方が違ってきますよね。
僕はそう考えています。

汚いソースでも自分なりに考えて使いやすくできたのならそれでいいと思います。
ただし、人と共有するものならしっかり書かないとよろしくないです。
僕は他の開発者さんにアドバイスをもらってからは、綺麗に書くように心がけています。

あと注意点ですが
ライブラリを作ったことに満足してゲームを作れなかったなんてこともあります。

目的はあくまで、アプリ開発を楽にすること。
先に苦労すれば、その後の開発が格段と楽になるはず!

しかも、僕が作ったのはあくまでOpenGLESのラッパーライブラリ
Android、OpenGLの開発者には本当に感謝しなければなりませんね。


色々と偉そうに語ってますが
そんな暇あったら次のアプリを開発しろと
誰かに言われる前に取り掛かりたいと思います…(´・ω・`)

2012年10月18日木曜日

良い物を長く使う

良い物を長く使うそれがエコ

車のCMか何かのフレーズであったような気がしますが
僕はこの考えに共感できました。

自分の持ち物、着る物にこだわりを持つことが大事です。
そんな訳で最近買ったバッグはこちら

Manhattan Portageの青いメッセンジャーバッグです。
ラゾーナ川崎のコレクターズで購入しました。
値段は約1万円くらい

見た目以上に広がって荷物が入ります。
通勤にも問題無く使えます(流石にスーツには合わない)

数年、飽きずに使えるバッグを選んだつもりです。
前に使っていたのは3500円くらいのOUTDOORのリュックでしたが
流石に限界が近づいていたので買い替えに至りました。

現在のバイトがアパレル系ということもあり
ブランド関係にどんどん詳しくなる毎日です。

色んなブランドを知るとやっぱり欲しくなってしまうんですよね…
そんな欲を抑えるのが大変です。


話は変わりまして
良い物その2

ゲームボーイアドバンス(GBA)のゲームができます。

ちなみにこれはファミコンバージョン、通称ファミクロ
レトロ好きには堪らない一品

まさしく手のひらサイズでございます。

「ゲーム」と「ドット絵」と「ピコピコサウンド」は最高です。
これをおかずに飯3杯いけます。

3Dが悪いわけじゃないですが
3Dで表せないモノがあるから、未だに2Dドット絵のファンが多いのでしょう。

今こそGBAを買いましょう。
もしくは押し入れから引っ張り出しましょう。

流石に初代ゲームボーイは単三電池四本、緑画面なので厳しい。

2012年10月16日火曜日

「天上守護門グラビティゲート」リリース

朝からブログを更新します。

2012年10月15日に天上守護門グラビティゲート(Google Play Storeへのリンク)をリリースしました。

本当は他のアプリを先にリリースする予定でしたが
色んな事情によってこういうことになりました。


前から周りの人に耳にタコができるほど言ってますが
基本的に僕は「片手で遊べるゲーム」を作ることを目標としています。

今回のゲームは「グラビティゲートで敵の攻撃の重力を反転させて跳ね返す&レインゲートで雨を降らせて火を消す」というシンプルな内容となっております。

ではどうしてこんな設定になったのか…



そもそもこのゲームはワンナイトアプリという翌日の朝(午前中)までにゲームを作る。
という身近なプログラマ同士の企画で生まれました。

作るのは個人ですが、基本的に皆同じお題に沿ってゲームを作るのがルールです。

今回のお題が、その時のTwitterの注目ワードの内2つでした。
その時の注目ワードはこちら

#曲名の一部を諭吉に変えるとテンションがあがる
#lldecade
#せって打って三番目にでてくる単語があなたの本質
淀川花火大会
土砂降り
ゲート
茅ヶ崎
TIF
ブース

訳が分からない…

皆色々悩んでいましたが
最終的に僕が選んだのが

淀川花火大会
土砂降り
ゲート

です。
なぜか3つ選ぶという(結局花火大会というワードは活かせませんでした)

このワードからどうやってグラビティゲートを発想したかは覚えていませんが
重力を使うゲームは面白くなりそうだと思い

グラビティゲートとしました。
「土砂降り」に関しては「雨を降らす」という意味で使ってしまったのが卑怯かもしれませんね。

結局、制限時間がオーバーしてしまったのですが
今のゲームに近い形でできていました。

それから1週間は「バランス調整」&「バグ取り」&「ネットランキング実装」でしたが無事に完成しました…

…がメンバー全員(と言っても自分含め3人)諸事情で
公開のタイミングを逃してしまいました。

結局2ヶ月何もできずに過ぎていました
でもずっと公開したいなと思っていたので

機種変したXperia sxでの表示バグを仕事に行く前にパパっと直して(なぜか直ってくれた)
パパっと強行的にリリースしてしまったのです。


正直、メンバーの熱も冷めていたと思うので
今回は僕1人で公開してしまいました。


プログラマが得意な「作ってる作ってる詐欺(語弊有り)」になってしまいそうでしたが
なんとか気合で公開することができました。

以上今回の突然のリリースに関する裏側でした。

2012年10月15日月曜日

話題のPC専用メガネを買ってしまった。

今日は川崎アトレ(元・川崎BE)の4階にあるJiNSに行ってきました。
お店はそんなに広くないですが、所狭しとメガネが並んでいました(メガネ屋だから当たり前)

ちなみに僕は視力が両目共に1.5以上で、まったくと言っていいほどメガネに縁がございません。

ですが
最近どうも長時間PCの画面を見続けると、目がしょぼしょぼして頭痛が起こるようになってしまったので、今回PC専用メガネを買ってみようと決心したのです。

とりあえず店に入って様々な色のメガネを掛けまくりました。
鏡を見ながら「メガネかけるとこんな顔になるのか…」と考えつつ
結局無難な黒をレジに持っていく自分でした。

買ったのはこれ


家で使うだけなのでブルーライト遮断率が高いライトブラウンにしました。


今日1日使ってみての感想ですが
・目が疲れにくい(目的は達成)
・軽いので付けてる感じがしない
・視界が暖色系になるので精神的に落ち着く

フレームが視界に入るのが気になる人がいるようですが
個人的には、作業に集中していると全くと言っていいほど気にならないです。


「メガネは目が悪い人だけの物じゃない」
そんな時代が来たという感じですね。

3,990円で作業が捗りますよ。