:::: MENU ::::

C.a.T!

CATch a TAIL!

Japanese sub culture and tech.

  • 2009/06/29
  • 2
android

Androidでうんたんどろいど

f:id:clover-leaf:20090629224747p:image:h200
時間ないんだけどせっかくもらったので、ちょこっとAndroidアプリを作ってみました。
数時間で作れるものってことで。
とりあえず、音と加速度センサとネットワークを使って基本的な作り方はわかったかな。

うんたんどろいど」というアプリです。
もちろんおバカアプリですので。。。
叩いたり振ったりするとうんたんうんたんできます。
menuボタンで設定画面出て、Twitter設定するとTwitterにポストします。
Twitter上で対戦っぽいことができるわけです。
強引だけど、リアルタイム検索の機能がTwitterに搭載されたので、結構ゲームエンジンぽく使えると思って。。。

デフォルトのアイコンとかがそっけなくて我慢ならず作った。
f:id:clover-leaf:20090629225605p:image
どうせならデフォルトのアイコンってAndroidロボにすべきだろ。

Githubに全部入っているので、実機持ってる人はどうぞ。
エミュレータは加速度センサのエミュレートができないらしく、うまく動きません。
これって結構困る。

とりあえず、iPhoneアプリよりはすごい簡単。
iPhoneも一度理解すれば簡単なんだけど、とっつきやすさはやはりはるかにAndroidだと思います。
  • 2009/06/9
  • 0
engineer

Google Developer Day 2009

去年は仕事で死んだのですが、今年は行きました。

実は今年も仕事で死んでますが。。。

まぁ、なにを置いてもAndroid搭載htc携帯GDD Phoneの無償配布でしょう。

ありえないでしょ。

普通、Google Dev Phone買っても4万円ぐらいするわけですから。

Google I/Oでも配布されたし、ホンキで普及させようといういきごみを感じますね。

AppleもWWDCで無償配布ぐらいしないとダメだったんじゃないか。

セッティングしましたがサクサク動きます。

SIMフリーなのでiPhoneのSIMも認識するはず。

しばらくおもちゃにする時間がとれないけど、ちょこちょこいじっていきたいです。

あとは、Google WaveがやはりSexy。

あの同時体験はWebが苦手なところだっただけにインパクトありますね。

comet使っているらしいのであの技術の理屈はわかりますが、サーバ側のタイミング同期とか、なんでもかんでもスレッドとして記録してしまう大胆さはすごい。

さすがのGoogleでもあそこまであらゆるイベントを溜めて、キャパシティ大丈夫なのだろうか。

WaveのDevアカウントもそのうち参加者に発行してくれるらしいので楽しみ。

これは、ちょっとhackしてみようと思います。

あとは、Android系のセッションを中心に参加しました。

ゲーム開発の話はよかったです。

描画の高速化はiPhoneでもよく議論されることなので、あのへんのTipsはすごく参考になります。

iPhoneに比べて実装はしやすいだけに、とっつきやすさはAndroidに分があるからなぁ。

結構な勢いでゲームアプリも増えるんじゃないかな。

まぁ、仕事ぶっちぎっても行ってよかったです。

これで行かなかったらすごい後悔しただろうな。

  • 2009/06/8
  • 0
misc

新しいめがね

今日から新しいめがねで出勤のNeganistです、こんにちわ。
この間、パキっと折れた。
めがねは何個か持ってるけど、怪社用のものも3、4年替えてないし、ちょっと雰囲気変える意味で新しく買った。
最近は、結構いろんなデザインを安くで選べるから服よりお手軽。
アンダーテンプルにしてちょっと変わった感じにしてみましたあ。

めがねが変わるとキャラクタが変わる。
  • 2009/06/7
  • 0
movie

レッドクリフ Part II -未来への最終決戦-

結構前だけどレッドクリフ後編を観てきた。

レッドクリフは、とりあえず無双系アクションを期待するわけですが、その意味では前編より無双っぷりは薄くなっていました。

しかしながら、船団に対する火計はかなりの迫力。

あの場面は赤壁の戦いの最大の見せ場であるわけですが、ヘタに長々見せるんじゃなくて、スピード感を強調する演出がよかったですね。

集団x集団の乱戦もなかなかのスケール。

見終ってみると派手さやスピード感をきっちり印象に残させててよくできていたなー、と思わせる。

悪く言えばハリウッド型の派手重視の作品なんだけど、まぁ元々の本がそういうもんだしいいんじゃないかと。

あと、あの10万本の矢を曹操軍に射らせて獲得するという話も何げにうまいことコミカルに演出されててGood。

三国志演義のおもしろいところを、うまいこと映像化してますね。

すでにストーリーは知られている作品だけにどう映像にするのかが問題だったわけですが、うまいこと飽きさせないようにできていたと思います。

前後編あわせてオススメ。

  • 2009/06/7
  • 0
movie

グラン・トリノ

これも少し前だけどクリント・イーストウッド主演、監督の作品、グラン・トリノを観た。

あまり人気がないらしくほとんど人が入っていなかったです。

とにかく最近のハリウッド作品と真逆をいく地味な作品で、まぁ確かに集客悪くなりそうな気がします。

街の不良に脅されてしぶしぶクリント・イーストウッドが演じる主人公の家にクラシックカー、グラン・トリノを盗みに入った子供を通じてイーストウッドのトラウマとか偏見がとりさられていく様子が描かれる作品。

戦争で負ったトラウマとか敵対心を乗りこえていくさまが、ほんとに派手な演出なく地味に描かれていてすごいうまい。

勧善懲悪なんだけど、落しかたがまた渋い。

つーかイーストウッドかっこよすぎ。

この手の作品は、イーストウッドほどの実績と実力があるから許されたんだと思う。

あのキャラクタをあのムードで演じられるのは、なかなか居ない。

こういうのよいと感じるのは、年とったからかもしれないけど。

もう、あまりやっている劇場がないけど、ぜひ観てほしい作品。

こういうテンポもあるんだ、と発見できるはず。

しかし、このところイーストウッドはアジアに傾倒しているな。

この作品も中国とかそのへんの民族の文化が全面に表現されている。

  • 2009/06/7
  • 0
movie

スタートレック

スタートレックのファーストシリーズの過去を扱ったいわゆるオリジン作品。
カーク、スポックを始めとするクルーが出会う話が一気に。
好きな人間にはたまらないものになっております。

結構、アクションが多いというか殴りあいが多いというか。
もう少しSFらしい艦隊戦とか見せてほしかったところ。
まぁ、知っているファンを対象にしたファンサービスみたいな作品だろうから、そもそもニッチを狙っているのかもしれないけど。

今のCG技術、デザインでTOSを作るとこうなります、てな作品で、まぁ単体で見るとちょっとモノ足りないかも。
とりあえずファン向けかな。
  • 2009/06/3
  • 0
game

E3雑感

今年のE3はえらい盛り上がる発表が多かった気がしますね。
とりあえず、

1. Project NATAL
2. Metal Gear Solid: Rising
3. The Last Guardian
4. FF14
5. Modern Warfare 2

あたりかな。
NATALは、とりあえず金かかるのでSONY、任天といえどそうそう追い着けそうにない。
デモのインパクトは今回一番すさまじかった。
あとはゲームがどうこのデバイスを使うかだな。

MGSRは、360独占ではないけどPS3独占が売りだったMGSシリーズだけに、SONYは涙目でしょう。
これまでのMGSシリーズとゲーム性も変わりそうなので、気にはなるけど情報待ちですな。

TRICOと呼ばれていたTeam ICOの新作The Last Guardianは、今までのシリーズ全部はまったのでやはり気になる。
今度はどういうネタで驚かすのか。

FF14は、FF11の後継だけど、もうちょい敷居さげてくれたらやるかも。
正直、このところMMOは廃人しか手出せないでしょ。

MW2は、純粋におもろそう。
いい意味で洋ゲーらしい洋ゲー。

今回発表されたものは大作系は2010年から2011年に発売だろうから、しばらく次世代機戦争や保留するのかな。
MSは、かなり360で継続しようとしている風に見えるけど、PS3は結構フライングしそうだな。
しかしまぁ、今回はなかなかエキサイティングなネタが多かった。

しょんぼり賞

  • グランツーリスモ5

もうこのネタ古いからそろそろあきらめたほうがいい。

  • PSP Go

ネットワークを全面に押し出しているのにメモステとか中途半端に付けたりよくわからん。

  • 2009/05/23
  • 0
music

ヒヨーコ七夕ライブ

抽選に申しこんでいたことをすっかり忘れていた。
メールが来なかったら気づかなかったよ。
まぁ、郵送にしてたから大丈夫か。

というわけで、七夕に開催される
YOKO KANNO SEATBELTS『超時空七夕ソニック』 ~次回公演は22世紀を予定しております。~
のチケットを確保しました。
おもいきり平日なんで今から工作活動をしないと。。。
スーパーアリーナは、だいぶ前に行ったWIRE以来だな。
ポジションはセンター横の200レベル1列目なので、かなりいい。
んー、楽しみだわ。
  • 2009/05/11
  • 0
flash

マクロスFのシェリルのCGっぽいのをFlashで書く

f:id:clover-leaf:20090511021420j:image

こういうやつ。

ライブシーンとかでたまに出てくる映像エフェクト。

なんかカッコいいよねぇ。

これをPaperVision3Dで、基本的なところを書くとこんな感じ。

SherylEffect (要FlashPlayer10)

ソースはこんな感じ。

package {
import flash.display.StageAlign;
import flash.display.StageQuality;
import flash.display.StageScaleMode;
import flash.events.Event;
import org.papervision3d.core.math.NumberUV;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
[SWF(width="800", height="500",backgroundColor="0x000000")]
public class SherylEffect extends BasicView {
private static var NUM_FACES_W:uint = 10;
private static var NUM_FACES_H:uint = 10;
private var basePlane:DisplayObject3D;
private var texture:BitmapFileMaterial;
private var sizeW:Number;
private var sizeH:Number;
private var planes:Array;
public function SherylEffect() {
super(0,0,true,true,"Target");
init();
}
private function init():void {
stage.frameRate = 60;
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.quality = StageQuality.MEDIUM;
camera.x = 0;
camera.y = 0;
camera.z = -1200;
camera.fov = 35;
this.basePlane = new DisplayObject3D();
scene.addChild(this.basePlane);
createFaces();
startRendering();
}
override protected function onRenderTick(event:Event=null):void {
this.basePlane.yaw(1);
if (this.planes.length == NUM_FACES_W * NUM_FACES_H) {
movePlanes();
}
super.onRenderTick(event);
}
private function movePlanes():void {
for (var i:uint = 0; i < NUM_FACES_H; i++) {
for (var j:uint = 0; j < NUM_FACES_W; j++) {
var plane:Plane = this.planes[i * NUM_FACES_W + j];
plane.x = (this.sizeW + .2 * Math.abs(this.basePlane.rotationY) * j;
plane.y = (this.sizeH + .2 * Math.abs(this.basePlane.rotationY) - texture.bitmap.height / 2) * i;
}
}
}
private function createFaces():void {
this.texture = new BitmapFileMaterial("penpen.png");
texture.doubleSided = true;
this.planes = new Array();
BitmapFileMaterial.callback = onLoadTexture;
}
private function onLoadTexture():void {
this.sizeW = texture.bitmap.width / NUM_FACES_W;
this.sizeH = texture.bitmap.height / NUM_FACES_H;
for (var i:uint = 0; i < NUM_FACES_H; i++) {
for (var j:uint = 0; j < NUM_FACES_W; j++) {
var plane:Plane = new Plane(texture, this.sizeW, this.sizeH);
this.basePlane.addChild(plane);
plane.x = this.sizeW * j;
plane.y = this.sizeH * i - texture.bitmap.height / 2;
plane.z = 0;
plane.geometry.faces[0].uv = [new NumberUV(sizeW * j / texture.bitmap.width,
sizeH * i / texture.bitmap.height),
new NumberUV(sizeW * (j + 1) / texture.bitmap.width,
sizeH * i / texture.bitmap.height),
new NumberUV(sizeW * j / texture.bitmap.width,
sizeH * (i + 1) / texture.bitmap.height)];
plane.geometry.faces[1].uv = [new NumberUV(sizeW * (j + 1) / texture.bitmap.width,
sizeH * (i + 1) / texture.bitmap.height),
new NumberUV(sizeW * j / texture.bitmap.width,
sizeH * (i + 1) / texture.bitmap.height),
new NumberUV(sizeW * (j + 1) / texture.bitmap.width,
sizeH * i / texture.bitmap.height)];
this.planes.push(plane);
}
}
}
}
}

ポイントは、後半のonLoadTextureでグルグルfor分で回しているところです。

テクスチャとして使うpenpen.pngを分割して、個別のPlaneオブジェクトに貼りつけています。

plane.geometry.faces[0].uvが1枚の四角のうち左下半分を、plane.geometry.faces[1].uvが右上半分のポリゴンを表現します。

ここで指定しているNumberUVの配列は、左下半分のポリゴンが、左下, 右下, 左上、右上半分のポリゴンが、右上, 左上, 右下のポイントを指定しています。

これは、0から1までの値で表現するため、全部テクスチャのサイズで割ります。

これを分割数分ぐるぐる回して、テクスチャをざくざく分割しちゃいます。

んで、movePlanesで書いているように、フレーム毎にそれぞれのPlaneをplane.x、plane.yプロパティを調整してちょっとずつづらすと、分割したテクスチャがばらけてそれっぽいエフェクトになります。

z位置も調整するとよりそれっぽい動きになると思います。

こういう整然と動くエフェクトって単純だけど好き。

なんかカッコいいよねぇ。