2010-12-29

仮想OSの導入【VMWare Server / VMWare Player / VirtualBox】

ホストOS:Win7(64bit)
ゲストOS:Ubuntu10.10(64bit)

という環境で導入してみた。

VMWare Server2.0.2
まずはVMWare Serverを試してみたが、いろいろとハマるところが多かった。

1. 使えるブラウザの制限
VMWare Severは文字通り、サーバー上で起動させることを想定されている。
よって、起動はブラウザ上から行う。
が、ブラウザはリモートコンソールプラグインを入れる必要あり、それが使えるブラウザは限られてる。

・Internet Explorer (32bit)
・Firefox (32bit) (しかし3.6は現状動かない)

↑このありさまである。
VMWareのソフト自体は32bitなので(ホストOS 64bit、ゲストOS 64bitの実行はできるが)、32bitでなければ動かない。
さらには現状のFirefoxの最新版には対応していない\(^o^)/
このためだけに、IE(32bit)を使うのはいささか面倒。

2. VMWareToolsのインストールが面倒 and エラー
VMwareToolsはゲスト側にインストールするもので、ゲスト側とのやりとりをより便利にしてくれるツールである。
これをインストールすることで、ホストからのドラッグアンドドロップ、ウインドウサイズと解像度の同期、フォルダ共有などが可能となる。

インストールは付属の仮想メディアからのマウント、そこにあるファイルをコンソールから実行することで行う。
が、自分の環境ではうまくインストールすることができなかった。
具体的には、kernel headerが足りないといわれてインストールできなかった。
自分のカーネルに合わせてapt-getしてみたが、それでも別のエラーがうんぬん・・・うがぁ(゚Д゚)ウゼェェェ



VirtualBox 4.0
で、VirtualBoxに切り替えた。
こちらはインストールが比較的楽だった。
こちらではVMWareToolsに相当するものがGuest Additionsと呼ばれるものになっているが、基本的にインストール方法は同じ。
こちらは特に問題もなくインストールすることができ、仮想環境を構築することができた。

VirtualBoxにはシームレスモードと呼ばれるゲスト側のウインドウを直接ホスト側に表示するモードが存在する。



↑シームレスモード。コンソールとフォルダを表示しているウインドウはUbuntu。

自分の環境では画面の上と下(Win7のタスクバーの上に)ゲストのUbuntuのタスクバーが表示され、Ubuntuの各ウインドウが単体でこちらに表示された。

しかし、ホスト側のウインドウを全画面にするとゲスト側のタスクバーが消えてしまう。ゲスト側の各ウインドウもゲスト側のタスクバーにしか表示されない。

どうも、ゲストOSの壁紙が透過になっているだけにしか見えない。


VMWare Player 3.1.3
VirtualBoxでいいか、と思いつつも、でもやっぱり気になって、Playerをインストールしてみた。

プレイヤーの現在のバージョンは3.1.3。
1.x.xなどの古いバージョンでは、仮想領域を作る機能がなかったり、VMWareToolsが付属されていなかったりしたが、最近のバージョンでは作成までフルサポートされるようになった。

その上、ゲストをインストールするためのisoを指定すると自動で「Ubuntu 64ビット」と認識して簡易インストールが始まった。
なにもしないでも勝手にインストールが始まり、さらにVMWareToolsまで自動でインストールされてしまった。

Serverより便利すぎワロタwww
最初からPlayer使っておけばよかったのね。

VMWareにもVirtualBoxにおけるシームレスモードと同じような機能として、ユニティがある。


↑ユニティ実行時。OpenOfficeとコンソールがUbuntu。

ユニティ実行時。
ゲスト側ウインドウにはウインドウバーの上にマークがついている。
よくみると、Win7のタスクバーにゲスト側ウインドウがそれぞれ表示されているのがわかる。
ゲスト側のウインドウをそれぞれホストのウインドウとして扱っているため、各ウインドウに最大化等を行っても全く違和感なく操作ができる。

また、左下にマウスポインタを動かすとゲスト側のメニューを操作することも可能。

やばい、なにこれ超便利w

完全にVMWare Playerの勝利でした。圧勝でした。
さすがVMWareたん。

でも、できるなら、Serverにも同じ機能入れてください、お願いします・・・

2010-12-24

Firefoxの64bit環境のインストールと日本語化

新PCを買ったはいいものの、各ソフトウェアの64bit対応の微妙なこと・・・いろいろハマります(;´∀`)

普段はChrome使うんだけど、Firefoxも持っておきたかったので。
(ちなみに、Chrome自体は64bit版は用意されていないっぽい。32bit版でも動くが)

Firefoxの64bit対応版は以下のサイトにある
http://wiki.mozilla-x86-64.com/Firefox:Download


しかし、どう見てもUS版しか配布されていない様子。
したがって、まずインスコ、その後言語パックを引っこ抜いて設定という感じになる。


2010/12/23現在は、安定しているFirefox 3.6.13をインストールすることにした。
インストール時、コードネーム(Namoroka)が出て、Firefoxの文字がどこにもないので焦るw

ということで、インスコしても日本語化が必要。
で、以下のサイトから

http://releases.mozilla.org/pub/mozilla.org/firefox/releases/


3.6.13/win32/xpi/ja.xpi


の言語パックをFirefoxに入れる。


その後、アドレスバーにabout:config
general.useragent.locale の値を ja に変更して再起動。


以上で、64bitのFirefoxのインストールと日本語化ができる。

2010-11-28

【OpenCV】ラベリング処理ライブラリcvblobの導入

しばらくブログ放置してた(;´∀`)

社内ネットワーク上ではブログ支部つくって、
毎日書き込んでるんだけどなw

今回は、OpenCVについて。 OpenCVは超便利なC言語ベースの画像処理ライブラリ。
自分も学生時代にはよくお世話になりました。

マジOpenCV様、救いの神様。

でも、実はこいつには一つ問題があって・・・
未だに「ラベリング処理」が実装されていない。

ラベリングなんて、画像処理の基本中の基本じゃね?
とか思うんだけど、なんで入ってないんだろうね・・・
で、それに不満を持つ人達がすでにいくつかライブラリを提供しているわけです。
これに便乗しない手はない。

今回はその中でも、cvblobを紹介。
(cvBlobsLibとかいうのもあったんだけど、イマイチ使い方分からないんだよねw
解説ブログも情報が古くて対応してないみたいだった・・・)

ライブラリはここから → http://code.google.com/p/cvblob/

でも、バイナリが用意されてないので、自分でコンパイルする。
Linuxならそのままmakeでいいんだけど、VC++環境でやる場合にはCMakeをしなくちゃならない。

で、めんどーながらもCMake、CV++用のプロジェクトファイルを作成。
後は、OpenCVのライブラリパスを通して、CV++でビルドすればいいんだが、
なんとこいつ、ビルドでコケやがったwww

fatal error C1083: include ファイルを開けません。'sys/time.h': No such file or directory
あ、sys/time.hって、Linux環境でしか使えないのか・・・なんのためのCMakeなんだよwww
まあ、サンプルソースみたいだからこれ単体がビルド通らなくても問題ないけどさ・・・ちゃんとビルドは通そうよ。
ということで、VC++環境で動作するようにソースを以下のように変更でゲソ。
//代わりにこっち
//#include <"sys/time.h">
#include <"sys/types.h">
#include <"sys/timeb.h">
//timeval ==> _timebに入れ替え
//int diff_ms(timeval t1, timeval t2)
int diff_ms(_timeb t1, _timeb t2)
{
    //return (((t1.tv_sec - t2.tv_sec) * 1000000) + (t1.tv_usec - t2.tv_usec) + 500)/1000;
    return (((t1.time - t2.time) * 1000000) + (t1.time - t2.time) + 500)/1000;
}
さらにmain関数内で、
int main()
{
   ………
    //timeval tim1;
    //gettimeofday(&tim1, NULL);
    _timeb tim1;
    _ftime(&tim1);
    unsigned int result = cvLabel(randomBinImg, labelImg, blobs);
    //timeval tim2;
    //gettimeofday(&tim2, NULL);
    _timeb tim2;
    _ftime(&tim2);
   ………
とする。これでビルドが通るんじゃなイカ?

実行結果。



ふーん。
1000msecごとにランダムにノイズをつくって、その画像のラベリングをしているっぽい。
時々、0msecになってるのは使ってるPCがしょぼいからです、ごめんなさい。

ついでにもう一つサンプル(test.cpp)があったので実行してみる。
こっちはサンプルの原画像から、ラベリングを行った結果を返すプログラムらしい。



結果を見る限り、面積だけでなく、重心やx,y位置での最小最大位置、平均色なども取得できるみたいね。


ふーとりあえず、これで自由にcvblobが使えるようになったわけですね。
インクルードするヘッダはcvBlobフォルダ以下のものをコピーすればよし。
あとは、ビルド時に生成されたcvblob.libをリンクする。場所はCMakeで事前に指定した先にある。

細かいライブラリの使い方については、またあとで。

2010-08-22

【Blender】便利そうなショートカットとか基本的な使い方の個人的メモ

画面操作
・画面の回転:マウス中ボタンでドラッグ
・画面の平行移動:マウス中ボタン + Shiftでドラッグ
・画面のズームイン/アウト:ホイール回転 or マウス中ボタン + Ctrlでドラッグ

(視野は画面内メニュー「View」からも変更可能)
・カメラ視野:テンキー0
・正面視野:テンキー1
・横視野:テンキー3
・上視野:テンキー7

各モード共通
【選択系】
・全選択 or 選択解除:aキー
・選択:右クリック
・フリーハンド範囲選択:左ドラッグ + Ctrl
・矩形範囲選択:bキーを1回押した後、左ドラッグ
・円範囲選択:bキーを2回押した後、左ドラッグ
・範囲選択離脱:Escキー or 右クリック

【選択後の操作】
・平行移動:左ドラッグで直線にマウスジェスチャー or 右ドラッグ or Gキー
・回転:左ドラッグで曲線にマウスジェスチャー or Rキー
・拡大縮小:左ドラッグでV字にマウスジェスチャー or Sキー
・複製:Shift + Dキー
・別々のオブジェクト1つにする:Ctrl + Jキー

主にオブジェクトモードで
(エディットモードを使うとオブジェクト中心がずれる場合がある)
・オブジェクト中心を移動先に修正:オブジェクト選択後「Center New」ボタン
・オブジェクト中心にオブジェクトを移動:オブジェクト選択後「Center」ボタン

主にエディットモードで
・ナイフ機能:Kキー
・面を貼る機能:Fキー
・カーソル付近の対象とその対象に接続されているものをすべて選択:Lキー
・選択モード(Vertex, Edge, Face)変更:Ctrl + Tabで選択メニュー表示
・Specialメニュ:対象選択後、Wキー。
  「Subdivide」 - メッシュ分割
  「Subdivide Multi」 - メッシュ分割(分割回数指定)
  「Subdivide Multi Fractal」 - メッシュ分割後、Vertexの位置がランダムに移動(クシャクシャにした紙)
  「Subdivide Smooth」 - メッシュ分割後、球に近づくようにVertexの位置が移動

その他
(3Dの操作系の表示/非表示、各マニュピレータの選択など)
・マニュピレータのウインドウ表示:Ctrl+Spaceキー

(3Dカーソルの位置を基点にしてオブジェクト生成などが行われる)
・3Dカーソルの移動:画面中を左クリック

(レイヤーは固定で20個用意されている。表示・非表示が選択できる)
・レイヤー1-10切り替え:数字キー
・レイヤー11-20切り替え:数字キー + Alt
・レイヤー複数選択:数字キー (+ Alt) + Shift
・オブジェクトのレイヤー移動:オブジェクト選択後、Mキーでレイヤー選択ウインドウ表示

・その場にメニュー表示:Space
・オブジェクトモードとエディットモードの切り替え:Tab
・ユーザ情報(画面配置など)の保存:Ctrl + u

2010-08-11

ニコスクリプトとニワン語のメモ・その3

ニコスクリプト、ニワン語のメモその3。
一番重要な関数の説明を忘れていた。

commentTrigger(then:式,timer:有効時間)
省略形はctrig。then:は省略可。
おそらく、ニワン語でもっとも重要な関数。
有効時間内にニコ動中のコメントがが画面に表示される度にthen以下の処理を行う。
以下、ポイント。

1. 関数が有効になるのはユーザーが投稿した瞬間ではない
正確には、現在投稿されている(コメントサーバに登録されている)コメントをすべて検出する。
これを勘違いするとハマる。

したがって、特にコメント数が多いときにこの関数が有効になっていると、全てのコメントにおいて、commentTriggerが発動するため、動作が重たくなりやすい。
弾幕に対して適用したりすると、PC環境や動画が止まる可能性もあるため、使用する際は有効時間を短く設定するなどの対策が必要。

2. 定義変数chatを上手く使え!
実は、ニワン語にはすでにchatという変数が宣言されている。
これはcommentTriggerが発動した際、そのコメント情報がchatに記録されるようになっている。
chatの持つ情報は以下のようになる。
chat.message:コメントの内容(文字列)
chat.vpos:コメントの再生位置(時間)
chat.isYourPost
コメントの投稿者が現在の視聴者 => true
それ以外 => false
chat.mail:コマンド欄の内容
chat.fromButton
コメントのコマンド欄にfrom_buttonがある => true
それ以外 => false
chat.isPremium
コメントの投稿者がプレミアム会員 => true
それ以外 => false
chat.color:コメントの色(0~16777215)。未指定の場合はundefined
chat.size
コメントの文字サイズ。medium、big、smallの順に0、1、2。未指定の場合はundefined
現在の視聴者が投稿したコメントを判別する例。
20::/ commentTrigger(then:if(chat.isYourPost, then:dt('お前、コメントしたな!')), timer:10)
△動画開始20秒目から10秒間コメントを検出。その間のコメントが現在の視聴者のコメントだったなら、"お前、コメントしたな!"とコメント表示。


BGM(id:動画ID,x:x座標,y:y座標,width:幅,height:高さ,visual:表示方法,volume:音量)
外部からBGMとして使用する動画を定義する関数。
visualはtrueで参照動画を小窓に表示。x,y,width,heighは小窓の位置、幅、高さ。

この関数により定義されると、0番から順に番号がふられる。
再生、ポーズをしたい場合は、その番号を使って、以下の関数を呼び出すことで可能。
playBGM(番号) 
stopBGM(番号)
なお、これらの機能は、ニコスクリプトにおける「@BGM、@ポーズ」と同様のもの。

1. 外部BGM参照できる動画の条件
動画情報で「@BGMとして使用の設定」が許可されていること。
しかし、ニコニコムービーメーカーを使う場合は2MB以下にしないと上記の項目を許可することができないので注意。
自分がうpした動画以外では、「@BGM推奨」タグが付いている動画であれば参照可能。

2. BGMはseekの影響を受けない
seekで動画内をジャンプしても、BGMで参照した音声は途切れることはなくそのまま再生される。
そのため、seekの多い動画でもBGMは飛ばしたくない場合などに有効だと考えられる。


def_kari(obj , script)
オブジェクト(関数)を作成する関数。
objと記述するとscriptを実行する。
コードが長い場合、同じ処理を繰り返し行う際に有効。
引数を渡すことも可。以下、サンプル。
0::/def_kari('love',dt($1 + target + $2 + $1))
10::/love('かわいいよ',target:'ミク','さん')
△10秒目に"かわいいよミクさんかわいいよ"とコメント表示。

2010-07-22

ニコスクリプトとニワン語のメモ・その2(子ネタ編)

ニコスクリプト、ニワン語のメモその2。
ニコスクリプトとニワン語の構文だけなら、それぞれ以下を参照すれば大体分かる。

http://nicowiki.com/ニコスクリプト.html
http://nicowiki.com/ニワン語.html

ここでは、個人的に実験してみて得られた実際の挙動、ハマるポイントなどを中心にメモとして残す。

seek
動画内の再生位置を変更する関数。分岐動画を作る際はもう必須の関数。
しかし、かなりこの関数はクセモノである。

1.再生位置→指定位置の間のスクリプトに注意!
なんと、seekでは現在の再生位置から指定位置に一瞬でジャンプするのではなく、現在の再生位置から指定位置までシークする間のスクリプトがすべて実行される。
現在の再生位置をt、指定位置をt'とすると、

・t < t' :指定位置を先に指定
→ t, t'間にあるスクリプトを順番に実行しながらt'まで移動
・t > t' :指定位置を手前に設定
→ 0秒に戻り、0,t'間にあるスクリプトを順番に実行しながらt'まで移動

となる。
前者は、seekを実行する前にフラグを立てておき、ifで判定することで回避可能。
特に注意すべきは後者。
手前に移動する場合、0秒からスクリプトが実行されてしまうため、問答無用で保存している変数が初期化されてしまう。
データを保存しながら進めるタイプのニワン語を組む際は注意が必要。

2.エコノミーになると全く機能しない
これは個人的には未検証だが、wikiに考察されていた。
しかも、リロードをかけると飛ぶ時間も変わってしまうという、全く使い物にならない状態になる。

3.キーフレームの位置にしか移動できない
基本的にはキーフレームの位置にしか移動はできないが、swf形式ならキーフレーム以外でもseekが可能。


4.2回目以降の再生はスルー
再生が一度最後までいってしまうと、2回目以降の再生ではseekを無視する。
よくわからないがそういう仕様らしい。
1回目の再生中であれば、同じseekを何度も使うことは可能(うpした動画では5秒で答えられなかった場合に5秒前に戻るように設定している)
動画自体をリロードすることで再度有効になる。


@CM
要するに、ニコ割を再生するニコスクリプト。
ニワン語でもCM、playCMという関数が提供されていたが、自分が試した段階では上手く動作しなかった。

1.@CMは何度でも再生可能
実験した限りでは同じで動画でも、何度もニコ割を入れることができた。

2.@CMで再生中に@CMすると割り込んで再生する
基本的に、再生を開始する秒を守って再生をかけるらしい。

3.@CMで使えるのは200KB以下、544×56px、300kbps以下のswf
これは仕様。200KB以下なので、ラスタを多用するのは避けた方が良いかもしれない。


@ボタン
要するにボタン。
押すと、特定のコメントを自動で投稿する。投稿したコメントは自分だけが見れる/誰でも見れるを選択可能。
色は決められるが、デザインなどは選択不可能。

1.ユーザが「コメント非表示」設定にしてると表示されない
ボタンはコメント扱いらしい。

2.ボタンを押せる回数は1回
もう一度押すには、F5などで動画自体をリロードする必要がある。



とりあえず、今回は、こんなところで。

2010-07-19

ニコスクリプトとニワン語のメモ(基本編)

ニコスクリプトとニワン語について。

ニコスクリプトとは。
ニコスクリプトとは、動画投稿者が動画に仕掛けをすることが出来る機能である。略してニコスもしくはNICOS。


基本的には、投稿者コメントにおいて独自の命令を入れることにより、視聴者に対してインタラクティブな仕掛けを施すことが出来る。
動作させたいタイムライン上で、@ + (日本語)と投稿者コメントをすることで誰でも簡単に使うことが出来る。

ニワン語とは。

ニコニコ動画において、アップロード者が動画に機能をつけたいときに使うことができるスクリプト言語。



ニワン語は未公開のスクリプト言語。
本来は、ニコスクリプトを実装するために運営側が作った言語。
そのため、ニコスクリプトの機能は全てニワン語を使って実現することができる。

また、ニワン語では、ニコスクリプトでは出来ない細かな設定や、数値計算などができる。これらを使って簡単なゲームも作ることが可能。

記述は、具体的に、投稿者コメントで、

秒::/スクリプト

とスラッシュを加えて入れることでスクリプトとして認識される。

しかし、ニワン語は未公開なスクリプトなため、突然使えなくなったり、動作が不安定なもの、バグがあるものも多い。


ニコスクリプト、ニワン語においてできることを簡単にまとめる。

1. 描画
・任意のメッセージの描画
・円の描画
・矩形の描画
・押すだけで特定の内容のコメントを行うボタンの描画

2. コメント制御
・コメントを検出する(コメントが自分がのものか、他人のものか判別することが可能)
・文字列のreplace
・ユーザのデフォルトのコメントの色、サイズなどを変更
・コメントの流れる方向を変更
・コメントマスク
・コメントによる投票機能(投票後、表示、ジャンプ)
・スコア機能(スコア集計後、表示、ジャンプ)

3. 動画制御
・一時的にコメントを投稿できなくする
・一時的に動画をシークさせなくする
・動画を任意の位置にシークする

4. 他の動画との連携
・他の動画のBGMを本動画に流す
・ニコ割を流す(ニコ割用動画をニコ割枠に流す)
・他の動画にジャンプする(ジャンプ後返ってくることも可能)


基本的にはこれくらい。
色々できそうで、実は制約も結構ある。

それはまた次回に。

2010-07-17

ニコニコ動画でswfファイルをうpするときのメモ

今回はじめてニコ動にswfをうpしたけれど、swfの場合は他の形式と違って、いくつか注意しないといけないことがあった。
とりあえず、基本的な仕様は以下のサイトを見ればすぐわかる。

SWFとは (スウィッフとは) - ニコニコ大百科: http://dic.nicovideo.jp/a/swf

ニコ動にswfを投稿するには、ニコニコムービーメーカー(以下、NMM)を使う必要がある。
投稿するだけなら無料版でも利用可能。

で、ここから、3つほど、自分がハマったこと。


1.サウンドの設定はストリーミングにする
サウンドはイベントサウンドがダメだが、設定をストリーミングにすれば問題ない。
設定はFlashCSシリーズなら配置したサウンドを選択後、プロパティで変更可能。

2.パブリッシュは、FlashPlayer9、またはそれ以下(ニコニコプレイヤーバージョンv4)
ニコニコプレイヤー以前に、NMMでアップロードしようとするとサーバーにはじかれる。

しかも、そのエラー内容が何も表示されないので、原因を探るのに苦労した。
インターネット社どうにかしてください(;^ω^)
FlashPlayer10でパブリッシュ出来ないということは、当然モーションプリセットは使えない。


3.「こいつ動くぞ」をサウンドでやってはいけない!
そもそも、ニコ動の、止めても「こいつ動くぞ」は、ステージのタイムラインしか制御しないというニコニコプレイヤーの仕様による副作用。
ステージ上にMovieClipをおき、そのMovieClipの中のタイムラインで動かすことで簡単に実現できる。
しかし、それと同じことをサウンドやることはオススメしない。

確かに、これをやるとニコニコプレイヤーで止めても、サウンドは確かに止まらなくなる。
しかし、2回目以降の再生、具体的にはサウンドのキーフレームまで戻るとそのサウンドは2重再生される
これは、ループ再生した場合やニコスクリプトやニワン語でタイムラインを移動した場合も適用される。
Flashはたしか32チャンネルあるので、最大32重再生…耳が死ぬw
もはやテロ動画…でも、こんな動画があげられること自体が問題な気がするんですけど…

2010-07-14

ニワン語でミク充動画作ってみた





ニワン語を使って、分岐する動画を作ってみた。
かなり癖があって、苦労した。
あとで調べたことをまとめおこう。

ちなみに、上の動画はコメントを入力しないと先に進まないので注意です。
なので、↓のURLで実際にコメントしてみてください。
【ニコニコ動画】ニワン語でミク充動画作ってみた

2010-06-20

【Wii】影の塔体験会でハドソン本社行ってきた【ミッドタウン・タワー/32F】

あんまりゲーム関しては記事書かないつもりだったんだけど、事が事なのでw

7月22日に発売予定のWii専用ソフト「影の塔」の体験会に行ってきた。
詳細はこちらに。(あ、ちなみに自分は後ろ姿ぐらいしか映ってませんw)
ファミ通com. - E3開催と同時期にソフトを体験! あの名人も参加した『影の塔』の日本最速体験会

エンタブレインさんとハドソンさんの企画で、抽選で6組12名の人が「影の塔」の体験プレイができるというもので、いつも懸賞とかくじ運とかに全く縁のない自分が何故か当たってしまったわけで。
(いろいろ思うところがあるけど、偶然ってコワイね)

会社帰りに同期を誘って、六本木に直行。
集合はミッドタウン・タワーF21だったけど、さらに上に行くエレベーターに乗りF32の一室に移動。
日本では4番目に高いビルだったのねーそりゃ高いはずだw
外の眺めがハンパなかった。

会場では、もう準備が整っていて、サンドイッチやペットボトルまで用意してもらっていた。
もうそれだけで、なんだか申し訳ない気持ちに(;´∀`)

開始早々、何故か自分のツイッター垢がバレたw
実は、影の塔ではTwitter連動サイトがあり、「体験会当たった」ツイート後に、そのサイトを使ってツイートしたんだけど、それを、ちゃんとハドソンの方が確認していたらしい。
垢バレワロスwwwまあ、バレたところで全く自重する気がないのでいいのだけれどw

Wiiの試遊は3台。
1台につき2組割り当てで、代わる代わるに交代しながら2回プレイ。
さらに、3チームでのタイムアタックで1回プレイ。
・・・という感じ。

肝心のゲームの内容について。
パズル性のあるアクションゲーム。
基本的には影になった主人公を操作
→ 先に進めなくなったら、ポインタを使ってギミックを動かしたり、光源を動かす
→ 影の形が変わる
→ 先に進めるようになる
という感じ。

主人公が影で影の上しか歩けないというコンセプトは、確かに今までにないアイディアでなかなか面白いと思った。
それだけに、ハドソンさんの方でもかなり力を入れているように感じた。

以下、細かい所感。

良かった点:
【ゲームの雰囲気作り】
ゲーム全体としてうまくまとまっていたように思う。なんとなくicoみたいな雰囲気。
特にセーブデータ選択画面では、セーブデータが試験管みたいなもので、その中の液体の量で進み具合が分かる模様。
全体的に古びた、腐敗した感じが良く出てる。そういうところはWiiの割には綺麗に見えた。

【ゲームの進行と難易度】
これは、全部やっているわけではないのでいいきれないんだけど、難易度的なバランスはなかなか頑張っているような感じを受けた。
セーブファイル選択の時点で難易度を3段階で設定できるし、淡々とパズルを解くだけでなく、敵から逃げるアクションもあり、ちゃんと緩急つけてていいなぁと思った。


ちょっと気になった点:
【カメラ切り替わりと主人公の位置】
主人公が影なだけに、背景に比べて目立たない。
そのために、急激なカメラ切り替わりが合った場合に一瞬主人公の位置を見逃す場合がある。
ゲーム慣れしてる人ならいいんだけど、うちの同期はそこが結構気になったみたい。
後で聞いてみたら、これについては、開発の方でも結構もめたけど、結果的に「視点を変えることで魅せること」を優先させたらしい。

【淡々と続く古城】
パズル、アクションとしての緩急はありそうな気がした。
が、グラフィック自体は、ひたすら古城っていう印象でずっと同じような風景なのかなーと。
そもそも、メインは影だし、キャラ操作自体は2Dだし、その分グラフィックとして魅せる部分がないと飽きがこないか少し心配になった。
まあ、体験会では演出として機械的なギミックも見せてもらったので、代わりにそういうのが後半でもあるのなら飽きずにプレイできる気がした。


疑問点:
【影と主人公の壁判定】
あ、これは、プログラマー的な視点で。
通常、影の描画はレンダーに渡して描画かけるから、そこからどうやって主人公と影の壁判定してるの?って思った。
体験会では、そもそもこの場でこんなこと聞いてもしゃーないし、スタッフの方もプログラマーの方ではないので聞いてもわからないだろうしって感じで、特に質問はしなかった。

予想としては、もうレンダーとは別で、壁の手前側に平面を仮定して一度そこに影を投影
→ その交点座標と主人公モデルをおいて壁判定を計算
→ 平面をさらに壁に投影して最終的な出力にする
みたいなことしてると勝手に予想。
あ、これ、勝手な予想よ。別に聞いたわけでもないく。
いずれにしても、プログラムとしては面倒な計算は避けられそうにない気がした。


ところで、体験会では高橋名人がいらっしゃるというサプライズがあった。
名人は華麗にiPadを使いこなしておりました。ウラヤマシス。
しかも、サインやら、名刺やら、写真やらとらせてもらってしまった。
高橋名人のCD持ってきてそれにサインしてもらえばよかったなぁとちょっと後悔。

結果的にいろいろもらってしまった、戦利品↓

å½±ã�®å¡�ä½�é¨�ä¼�ã��æ�¦å�©å��ã��å��人ã�®ã�µã�¤ã�³ã��ã��ã�·ã... on Twitpic

ハドソンさん、エンタブレインさん、今回は体験会を開催、招待いただきありがとうございました。
貴重な体験ができ、また高橋名人にもお会いすることが出来、ゲームファンとして非常に光栄でした。

・・・あ、もちろん、影の塔はすでにアマゾンでポチりましたよ(キリッ

2010-06-03

Ribbon3Dで遊んでみた:wonderflのforkテスト

カメラ操作
・回転:ドラッグ
・平行移動:[Space]キー
・拡大:マウスホイール画面ドラッグで回転。

Flash 3Dの本に載っていたので使ってみる。

Ribbon3Dを作った人のブログ
http://blog.soulwire.co.uk/code/actionscript-3/papervision3d-ribbons

短いコードでこれだけ面白いの作れるとはなぁ。すばらしい。

ランダムな動きはTweener使ってます。

var ribbon:Ribbon3D = new Ribbon3D(マテリアル, リボンの幅, リボンの高さ);
container.addChild(ribbon);
こんな感じにマテリアル、リボンの幅、高さを引数にnewして、addChildするだけ。
あとは、描画時に
ribbon.draw();
とすればいいだけ。簡単。

2010-06-01

wonderflでPaperVision3Dを使ってみる

カメラ操作
・回転:ドラッグ
・平行移動:[Space]キー
・拡大:マウスホイール

注意)ブログ上だと、マウスホイールがブラウザ優先になる場合あり。
上のwonderflのリンク先で操作すると分かるかも。

ソースはこちら→http://wonderfl.net/c/e08v

wonderflの垢取っていたんだけど、まともに今まで使ってなかったので勉強の意味を含めて使ってみる。

とりあえず、PaperVision3Dも対応しているそうなので、カメラ操作するだけのやつを作ってみた。

wonderflでは、1つのFlashにつき、1つファイルのファイルで完結させないといけない。
そのため、1ファイルに複数クラスを書く必要が出てくる。
その場合、
package
{
   import flash.display.Sprite;

   public class TestFlash extends Sprite
   {
      // メインクラス
   }
}

// ここに他のクラスで必要なものをimport

internal class hogehoge {
   // hogehogeクラスの中身
}
ていう感じで書くといいらしい。

importがpackageで区切られているので、TestFlashとhogehogeで同じクラスが必要な場合でも、当然2回記述しないといけない。

・・・これなんとかなんないのかな(;´∀`)

2010-05-08

Bloggerでインポート可能なMT形式への移行方法

BloggerはMT形式の読み込みが可能。
でも、どうやら、ちょっと特殊な仕様らしい。
そこで、以下のような変換ツールがサイト上あがっている。

>>MovableType2Blogger conversion utility
http://movabletype2blogger.appspot.com/

しかし、このサイトのツールは時間が12時間表示じゃないといけないという不具合がある。
それを修正するスクリプトをPythonで作った方がいらっしゃった。

>>放置かも - SHOP CHIHIRO (SLMaMe) : Blogger用MT形式
 http://shop-chihiro.blogspot.com/2009/09/bloggermt.html

Pythonって初めて見るけど、他の言語とも大差ないねー。
すらっとみたところ、時間が書かれている行を引っ張ってきて、
12時間表示に切り替えてる感じかな。

まあ、これくらいなら自分でも出来そうだ。

でも、あるものは使っていきたいよね。自分がブログするのは、そこが大事ではないから。

というわけで、お世話になったので、最初の記事にしてみました。

2010-05-04

ブログ引越ししてみた

くさもち研究室生活ブログだったもの

から引越してきました。

くさもち、改め、ねぎもちです。

まだ、ブログのデザインが安定してないんだけども・・・まあ、これからどうにかしますよ。

たぶん、今後はプログラミングに関する技術的な内容とか、

趣味のお絵かきとかがメインになる気がします。


正直、ボカロネタはTwitterで充足されている感があって、今更ブログで語ることはあんまない気がします。

フォロワーの方々がボカロ色強い方ばかりで(というか自分からボカロクラスタをフォローしまくった結果だが)、反応もそっちの方がいいので、たぶんブログとは住み分けする感じになりそう。


このブログ的には、技術的にGoogle先生の知識ベースの一端を担えればなぁと考えつつw

だらだらやるんで、どうぞよろしくお願いします。

2010-01-08

Google Analyticsで自分のブログを事業仕分け

このブログ、 かれこれ、2ヶ月更新してきませんでした。



これも、何もかも、Twitterとかいうやつのせい。



現在のTwitterには、ボカロPさんや絵師さんやボカロ厨な人とかボカロクラスタな方々がたくさんいらっしゃっるので、ボカロの情報を得るのに一番早いメディアじゃないかと思っている。

��にゃっぽんは自分が入ってないので除く ← あ、いや、別に自分は入りたいわけじゃない。ボカロな方々との交流が広がって楽しそうだが、閉鎖的SNSが嫌いなだけ。)



だから、そんな方々ばかりフォローしてるもんだから、ボカロなネタは全部そのままTwitterに流してしまうのだ。

そのほうが反応があって楽しいし。



こんなブログでダラダラ書いたところで、まともに文章読む人なんてそんなにいない。

いや、むしろ、最近、リアルな知り合いにここが知られつつあり、ちょっと焦っている。

ヲタ臭がひどいから。それ以上に、文章が稚拙で痛いから。





小さいときから本を全然読まなかった結果がこれだよ!









まあ、とにかく、Twitterさんのせいでここの存在意義が問われるような気がしたので、流行りの事業仕分けすることにしました!



このブログ意味あるんですか?2番じゃダメないんでs(ry









とりあえず、Google Analyticsさんで、更新の止まった11/27-1/7間のブログを解析してみた。

・ページレビュー数:1,258

・新規セッション率:68.18%



あれ?セッション率が低い・・・

自分で開いた可能性はあるけど、それでも更新はしてなかったから、新たにこのブログへアクセスした回数は、更新している時期にくられば少ないはず。



まさか、30%(うち多く見て20%)ぐらいリピーター?

ハハハ、まさかねー



でも、自分がアクセスしていなくても、更新していなくても、平均20アクセスぐらいあるらしい。



平均アクセス時間はそれほどよくないけど、ばらつきが大きいので、あまり参考にはならないか。

最長で2分46秒もこのページ読んでた人がいるらしい。







まあ、セッション率は何かの間違いだとして、検索ワードを調べてみると、



1.  数式エディタ ショートカット

2.  カレンダーのデザイン

3.  ボカロ miki

4.  新ボカロ

5.  opencv 顔認識

6.  くさもち

7.  papervision3d basicview

8.  flashdevelop cs4

9.  opencv ubuntu

10.ハッシュ関数 lsh



3,4はボカロ。でも、これはTwitterを発言元に速報で記事書いたから、ページランクが上位になっていると考えられる。



2は美術部の話。履歴を見る限り一時的なものなので、ここに挙がったのはたまたま。



6はどうでもよくて、1,5,7,8,9,10はPC関係の小ネタ、プログラム、Flash関係、アルゴリズム等・・・やっぱ技術系ですよねー。





やはり、圧倒的にPC周りや技術系の話でググって来る人が多いようです。









結果を見る限り、技術系のブログであれば意外と需要があると感じ。



技術系だと長い文章になりやすくて、Twitterじゃ書き込めないし、ログとして後で見るには不便であることを考えると理にかなっている。





ボカロとかは・・・うーん、情報に速報性があれば、需要があるのかな。



でも、速報といっても元からTwitterの情報だし、それをわざわざブログに書くのも煩わしい。RTするだけでも十分。







つまり、



ブログ:技術系ネタ、メモ、140文字で収まらないこと



Twitter:ボカロ全般、普段の生活



がうまく棲み分けできるのではないかと考えられる。









ということで、事業仕分けの結果、



「ボカロネタはカットして、Twitterに垂れ流す」



ことになりましたw



たぶん、そのうち、リフレッシュするためにブログも移転します。



それに、卒業したらもう「研究室ブログ」じゃなくなるし。





ただ、未だにヒットする記事があるようなので、このブログ自体はずっとこのまま放置すると思われ。





一応、万に一つも見てくれている方がいるかもしれないので、移転先が固まり次第、案内出します。