2012年8月25日土曜日

顔文字の冒険をandroidマーケットに出した

顔文字の冒険をandroidマーケットに登録しました。
マリオ風のアクションゲームです。

たしか6月頃から作っていたので、2ヶ月以上かかってしまった。
その間もほかの事はやってましたが、なんでこんなにかかってしまったんだろうか、
目標は2ヶ月でした。


今回スキルアップした点は、

1.androidでopengl1.0が使えるようになったこと。

2.admobを途中で消したりだとか、uiのスレッド操作ができるようになった。

3.人のフレームワークを使ってゲーム作りをした。

4.アクションゲームの当たりとか拡張しやすいように変更した。

そんな感じです。


admobはoncreateとか、そういう関数の中でしか操作できないと思っていたんですが、
admobを動かしているスレッドと同期すれば、自由に広告を消したり、出したりができるんだということを調べて知りました。

英語のページでしたが、やり方がのっていました。探すのに苦労した。

まだこのゲームは色々追加したいと思っているので、徐々にやる予定です。



やっと顔文字の冒険が一段楽したので、次はHTML5を使って簡単なゲームを作りたいと思っています。

HTMLはかじった程度で、javascriptもcssもやったことないので時間がかかると思いますが、
楽しそうなので頑張りたいです。
目標は2週間くらいで形にすることです。


で、今早速やっていて描画とかキーボードの操作とかできるようになった感じです。

javascriptはcとかjava系の書き方なので、すんなりはいっていけます。
変数とforとifさえあればそれでいいんです。
ただvarですべての型がまかなわれるというのには、慣れないです。

色々新しく覚えることがあって大変で、これからも大変でしょう。
本は買わないで、ネットで調べて全部やる予定です。

2012年8月15日水曜日

glTexParameterfで多少解決

前にテクスチャがうまく表示されないということを書きましたが、
テクスチャをロードをするときに以下の関数を入れると多少解決しました。

gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, minFilter);
gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, magFilter);
// 以下新しく追加
gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S,GL11.GL_CLAMP_TO_EDGE); // s座標の1を超える端処理をループにしない
      
gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T,GL11.GL_CLAMP_TO_EDGE); // t座標の1を超える端処理をループにしない

テクスチャを読み込むときの設定を変えることで多少緩和しました
一回は完璧に直ったと思ったのですが、画面を良く見るとなぜか4を描画したときのみ端に黒いくすみのようなものが見えます。

offsetはちゃんとしているので、原因がわからない。
でも、前よりはきれいに描画できたので、また先に進めます。

2012年8月5日日曜日

棘のマップを作った+OPENGLで困った

棘のマップ(触れると即死亡)を作りました。

判定は四角と四角との接触判定で、触れたらDeadという判定にしました。

なので?マップチップに当たったら即死亡です。

後、Openglの描画で困ったことが起きました。
数字がちゃんと描画されません。
どこか一部分が抜けてしまいます。

ちゃんと小数点で割り切れて範囲を切り出しているのに、うまくびょうがされない。
しかも、描画位置によってうまく描画されたりされなかったりと意味がまったくわかりません。

元の画像を640*480に変換しているから悪いんだろうかと思ったけれども、
 canvasではたぶんちゃんと切り出して描画できているから、ちゃんと描画できるはず、
なんか問題があるんだろうけど、どこがいけないのかがわかりません。

たぶん直すには描画環境を一からいじらないと駄目なんだろうと思うと、いままでやってきた意味はなんだったのかとへこむ。

opengles2.0を試したいけど、また時間がかかると思うのでいったんリリースして、
html5でなんか作った後にまたやりたいと思います。

ちなみに、ソースはbegining android gamesという本の描画ソースを中身をそのまま使っているので、それじゃ駄目なのかもしれないし、自分のソースがなにか抜けているのかもしれません。

最初に試しておくべきだった。
openglのプロの方教えてください。