W.Deeの2007年1月の日記

kikyou.info»日記

誠に勝手ながら、kikyou.infoは2017年12月いっぱいをもって閉鎖します。ながらくありがとうございました。

最新月 : 2008年10月
2003年 [             3    4    5    6    7    8    9   10   11   12  ] 月
2004年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2005年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2006年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2007年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2008年 [   1    2    3    4    5    6    7    8    9   10   11   12  ] 月
2009年 [   1    2    3    4    5    6    7    8    9   10   11       ] 月
前月の日記  次月の日記

2007年1月27日

Risse進捗(10)

Risseの進捗をお伝えするのはものすごく久しぶりです。

オブジェクト指向システムの作成のエントリを書いた時点からずっとオブジェクト指向システムを作ってました。

いまのところやっと、すべての祖となる Object クラスや、言語仕様としても重要なポジションの Array クラス、String Integer Real などのプリミティブ型クラスを作りました。

といってもまだ実装されている中身はほとんどありませんが、たとえば

var i = new Object(4);

こういったクラスとオブジェクトの基本的な機能であるnewであるとか、

global.t = 4;

こういった、インスタンスに対するメンバの新規作成&代入であるとかできるようになってます。

TJS2ではできなかった、プリミティブ型のクラスからの new ができるようになっています。

var i = new Integer(4);

ECMAScriptとちがい、この場合作成されるインスタンスは var i = 4; とした場合と違いがありません。

プリミティブ型クラスは、パフォーマンスの関係上いろいろと制約があり、おそらくサブクラスを作れないようにしたり、既存メソッドの置き換えをできなくしたりすると思いますが、それでもプリミティブ型のクラスにメソッドを追加することはできます。たとえば

String.repeat = function(i) { var s = ''; while(i--) s += this; return s; };
return "ab".repeat(5); //=> "ababababab"

のようにrepeatメソッドを追加して動作させることができます。

ちょっとおもしろいのが

Integer.charAt = String.charAt;
return 987654321 . charAt(3); //=> 6

みたいに、Integer クラスに String クラスのメソッドを突っ込んだりしてもそれなりに動作してしまうということですね。この場合は Integer がいったん String に変換されてからcharAt()が動作しています。charAtが内部でthisをStringに変換してから処理しようとするためです。将来的にもこのような動作ができるようにするという保証はありませんが、内部的にはTJS2と比べて相当メタプログラミングがしやすいようになっています。

あと、今のところnew演算子は、new演算子の右側に書いたオペランドのnewメソッドを呼び出すだけの演算子として実装されています。これは

(new Object()).foo()

Object.new().foo()

とかけるということです。ちょっとRuby風味です。

2007年1月20日

綺麗なUIは好きですか

綺麗なUIは割とやる気に直結するなと思いました。

BlenderのNode Editorはとても綺麗ですね。しかもUIをOpenGLで描画している恩恵か、ぬるぬると無段階ズームとかできたりします。これはよい。癖になるかも。

  • 2007-01-20 12:44 SB : 綺麗なUIも好きですが、綺麗なお姉さんのほうがもっと好きです。
吉里吉里3のグラフィックシステム

吉里吉里3(Risa) のグラフィックシステムはまだ全く構想段階ですが、最近BlenderのComposite Nodesを弄ってて、もやもやしていたものがピコーンと固まったわけです。

BlenderのComposite Nodesはこんな感じ。

BlenderのComposite Nodes

基本的には左から右にデータが流れ、一番端っこのやつが出力画像になってます。各ボックスはノードと呼ばれ、入力に何らかの処理を加えて出力する物や、入力だけのものや出力だけのものもあります。

上記の例だと左端の画像からVector Blur(モーションブラーの一種)の出力が分岐して、一つは色調補正を通過した後にブラーがかかって、Add(加算合成)につながってます。Addのもう一方の入力はVector Blurの出力になってます。Addの出力が最終的な画像出力になっています。ちなみにこれはglowを実現するためのものです。Viewerでは、適当な画像出力に接続することにより、そこから流れてくる画像を見ることができます。

出力や入力は(形式があえば)それぞれ配線することができ、自由に組み替えることもできます。

似たような表現はMac OS のQuartz Composerで見ることができるものや旧ActiveMovieからあるGraphEditなどにもありますね。

吉里吉里2だと描画パイプラインがちょうどこれに相当しますが、裏方に回ってて表に出てくることは無い上に、吉里吉里2のそれは「レイヤ」の概念上に縛られていて、あまり自由な配線をすることができませんでした。

Risaで上記のComposite Nodesのようなアーキテクチャを採用するとなれば、エフェクトがかかった画像をトランジションさせた結果に回転をかけて他のトランジションに流し込んでそれを重ね合わせて出力、のような複雑なパターンにも対応できます。レイヤの概念をより一般化したとも言えるかもしれません。

あ、ちなみにこういう風に編集できるUIを作るとは言っていません。あくまでも内部的な概念やアーキテクチャの話です。

いろいろ課題はありますが、構想段階でのお話でした。

2007年1月10日

液晶ディスプレイ買ってきました

SONY製CRTを今まで使ってきたのですが、色ズレは調整しきれないし、フォーカスもボケてきたし、SONYタイマも壊れてるようだし、目が悪くなりそうな事も考えると、もうそろそろ乗り換え時期かな、と思ったので、三菱の液晶ディスプレイRDT261WH を買ってきました。

前回RDT178Sを買ったときに、ツクモで4回戦までやったので、今回も頑張るか、と思ってドット抜け保証かけたらドット抜けないでやんの。くそう、損した orz

ちなみにRDT178Sはサブマシン用ですが、サブマシンは数ヶ月前に煙を吐いてお亡くなりになっております。

新しいディスプレイは、とても良いです。

2007年1月7日

宣伝

僕は吉里吉里を宣伝することはほとんどなくて、サイトも必要最小限な質素なものなのですが、ソフトウェアが注目される (≒協力してくださる方が増える) には宣伝も重要だなと思い始めています。さすがに将来構想をさもすでに実装されているかのように書いたりはしませんが、もうすこし派手なキーワードやメッセージを使ってみようかなと。

サイトもいずれリニューアルしなければ、とも思います。

あとは割ける時間ですね。最近こともあろうにBlenderにハマりだしたのですが、あまり吉里吉里の開発に影響が出ないようにしたいと思います。

RisaGL

一年近く前の日記にも書きましたが、RisaGLをどなたかやってくれるといいなぁということで、wikiにどんなものかを書きました

チケットはこちら

いずれは作らなくてはならないのですが、比較的独立してて汎用性が高い部分なのでどなたかやってみませんかということで。

  • 2007-07-31 01:21 alfeim : はじめまして。alfeimと申します。実はRisaGLやってみようかな?と思って実装始めてます。subversionリポジトリはこちら> http://rayfill.dyndns.org:2481/svn/RisaGL/ んで、例のチケットとか見ながらやってるんですが、わかんないところとかが出てきてるんですが開発メーリングリストのほうに投げたほうがいいんですかね?
  • 2007-07-31 22:01 W.Dee : 始めまして。おお、なんと。ご質問は MLあるいはIRCでお願い致します (記録を残すという意味では ML のほうがよいかも)。
演出エディタ

演出エディタをいずれ作りたいと考えていますが、こちらも比較的独立しているのでどなたかやってみませんか。

演出エディタとしてはこういう物を考えています

これもチケットを書いておきました

どなたかやってみませんか、というのはいいんですけど、そう簡単にできる物じゃないですよねorz

  • 2007-01-18 04:02 たにみちNON : 演出エディタの出力をPluginとして提供できて、BD-JAVAやHD-DVDのiHDに出力できるようにしたら、そのままオーサリングが可能になるかもしれませんね。複雑なプログラム的演出はともかくとして、iアプリ程度のものならBD-Jでいけそうです。BD-Rがもちっと安くなればPS3がアマチュアゲームプレイヤーになるというのはちと愉快かも。
  • 2007-01-20 02:15 W.Dee : 完全に元データを共有できるのどうかが不安です。ビジュアルノベルのようなもので、HTMLとCSSのように文章と演出を分離して管理して、デバイスごとに適切に表示しようという試みはいくつかあった気がしますが、大きく成功しているのは(そう調べた訳ではないのですが)見たことがないですし、僕も自信がないです。
  • 2007-01-20 02:17 W.Dee : ああ、ここで「共有」と言ったのは、たとえばPC用と他デバイス用で元データを共有する場合のことです。最初から単一のデバイスしか考えないのであればいくらかは楽かもしれません。
  • 2007-02-07 02:59 たにみちNON : なるほど。複数デバイスを同じプロジェクトをまんま動いてしまうってのは無茶で、ちょっと手直しで動くってならそれでも面白いですよ。文章と演出を分離して~ってのは確かにあんまみないんですけど、GUIベースのプロジェクトファイルはそういう実装にして、吐き出し時にスクリプトベースにするのがいいのかなって。っつーのもアドベンチャーゲームの場合、膨大な音声ファイルと文章とのリンクが存在するんですよね。これだけでも別個に管理できればどれだけ手間とバグが減らせるかと考える現場はかなり多いかと:-) 一個づつズレとか多いんだこれが……
  • 2007-02-07 13:18 W.Dee : 手直しする前提であればすこしは考えやすいかもしれませんね。でも文章と演出はそう簡単に切り放せるのかなあ。ここは自分の中でも解が見えてないです。なんか難しそう。
  • 2007-02-07 15:12 W.Dee : ちなみにKAGEXだとボイスが連番になっていればセリフやキャラ毎に自動的にインクリメントして再生することができます。膨大な時間がかかるボイスのチェックの時間短縮用に、音程を変えないまま倍速でボイスを再生する機能もあります。
  • 2007-02-15 03:17 たにみちNON : どもです。KAGexの機能、すげっすね。ボイス連番処理は目から鱗がおちました。もう現場を知り尽くしたというかカユイ所に手が届く感じですな。サンプルをチョイといじるだけで即プロ仕様のものができるなあこれ。プログラマブルなスクリプトで効率化を目指すならこっちが正解っすね。ただまあこれもこの手のゲームを何回か作ったことのある人間の意見であって、初めて作る人にはハードルの高いものなのかもしれません。演出エディタが効率化は無視しても初心者が容易に作れるものを目指すのか、演出作業補佐をするのかによって解は変わってくるのかなあ。 と、長文失礼(苦笑)

2007年1月1日

明けましておめでとうございます

今年もよろしくお願いいたします。