さて、今日は最近はまっている、動画鑑賞について。動画といってもアニメですが(汗
最近は、エウレカセブンにはまっているのですが、最近のアニメは絵、音楽共に質が高くて見ていて良い意味で五感を刺激されます。で、エウレカセブンの製作元BONES繋がりで、最近KURAU Phantom Memoryを見ているのですが、この音楽がまたいいんですよー(苦笑

S.E.N.S.の勝木ゆかりさんの弾くピアノやエンディングテーマがすごく綺麗で悲しく、オープニングテーマである新居昭及さんの「懐かしい宇宙」が物語全体の優しさ、暖かさを醸し出している。ここまで物語にマッチしている音楽は、COWBOY Bebop 天国の扉の菅野さん以来でしょうか。すごく感動しました(DVD見ている最中に、5回も泣いてしまいました)。
最近は、Zガンダムやハガレン、攻殻機動隊などアクションシーンの多いものばかりを見ていたので、こういった心が温かくなるような物語もたまにはいいなぁと。

あ、そういえば、泣いたと言えば「ファンタジック・チルドレン」も良かったです。

S.E.N.S.や、新居昭及さんのCDは後でかりてみようかなぁと思ったり。

DSKではまった…

2005年10月19日
どうも、三上先生が書いていたInterface,2004.FebのDSPの記事のプログラムは、最適化すると音が出ない。で、printf文をはさんでなんとかゴマかしてきたのだが、6416TDSKでは、そんなことは通用しなかった…

というわけで、何が悪いのかを調べてみた。
どうも、McBSPのほうのレジスタ設定は問題ではなく、McBSPを介して接続されているAIC23のレジスタ設定の方が問題のようだ。なんでかというと、McBSPはメモリにレジスタがマップされているため、この設定はある程度ウェイトを入れてやれば必ず反映される。
問題は、AIC23のほうで、そもそもMcBSPを介しているのだから、データが送信されなければレジスタ設定もできない。

となれば、疑うべきは、レジスタ設定を行っているAIC23_Base::RegSetメソッドということで、よく見てみる。

while(!McBSP_xrdy(hControl));

で、メソッドに入る前に送信されそうになっているデータが送信されるのを待っている。で、その後に自分のデータを送信しているが、ん、ちょっと待てよ、自分のデータが送信完了するのを待っていないじゃないか…

というわけで、

while(!McBSP_xrdy(hControl));
MCBSP_write ( hControl, (reg<<9) | (val&0x1FF)) ;
while(!McBSP_xrdy(hControl));

としてみた。すると、最適化しても音が鳴るようになった。

よかった。というか、これで1週間も悩んだよ…やっぱり、雑誌の記事って鵜呑みにしちゃだめなのね。

libxml2 その2

2005年10月12日
読み込み部分はきっちりとできたので、次は書き込み部分を書く。
xmlSaveFileEncでxmlDocは書き出せる。

書き込みと、読み込みを一つのインタフェースでこなしたいので、次のような感じで簡易的に実装。

xmlDocument : XML文書管理クラス
xmlElement : XMLの各要素にアクセスするためのクラス

xmlElement::GetElem(const char*);で、ディージーチェーン状(数珠繋とでも言おうか、確か、これ専門用語で何かあったんだよなぁ、忘れてしまった…)に子エレメントを呼び出せる。

GetElem()->GetElem()->GetElem()

って感じで。
もし、要素を作りたいなら

Create()->Create()->Create()

といった感じで、これも同様に作れる。
あとは、要素の削除、入れ替え、変更、コピーをつければOKか。結局はtinyXMLっぽくなってしまった…

libXMLを使ってみる。

2005年10月11日
Hornet用のエディタの開発で、アプリの設定保存のためにXMLを利用しようということで、C++で利用できるxmlプロセッサを探してみた。
XML4C、Xercesはでかすぎるし、かといって他のライブラリはライセンス上問題があるので、各プラットフォームに移植されていて、利用しやすいlibXMLを採用することにした。

ただ、問題が、libXMLはC用であって、C++用ではlibXML++を利用しなければならないという点。このlibXML++は、MITじゃなくて、LGPLなため、あんまり利用したくない。
というわけで、libXMLをC++でラッピングすることに。

とりあえず、木構造でアクセスするだけで十分なので、xmlDocGetRootElementで取得したルートのxmlNodeを利用して再帰的に検索をかけるようにした。
子xmlNodeは、クラスとしてラッピングさせ、ファイル検索と同様にコンポジットパターンで記述し、さっと書き上げた。後でIlaliartのCVSリポジトリに上げるつもり。

読み込みはできたので、次は書き込みを実装する。
書き込み実装の際に、できれば読み込みと同時にできるようにしたいなぁと考えたり。

Unicodeの問題

2005年10月8日
現在、自分はMicrosoftのVisual Studio2003を使ってプログラムを組んでいます。Linuxのプログラムも、Macのプログラムも、大半はこれを利用して組んでいます(ただし、実際の移植の際にはEmacsで各プラットフォーム用にコード修正をかけますが、大半はそのままで利用できるので、そのまま利用しています)。
ただ、例えば日本語表示をアプリケーションでやろうとした際、S-JISを利用するとLinuxやMacでは文字化けを起こしてしまいます。これは各プラットフォームで文字コードが異なるためです。
最近はUTF-8やUTF-16といったUnicodeがプラットフォーム間の差異を吸収してくれるようになっているので、文字化けなどは起こりにくくなってきていますが、実際はこれらの実装も各プラットフォーム間で同じかというとそうでは無いのが現状です。
例えば、ワイド文字列として利用可能なwchar_tも、WindowsではUCS2、LinuxではUCS4など、対応が異なります。また、UTF- 16ではU+110000以降の文字列を表現できないサロゲートペアの問題があり、UCS4を完全に表現できない(つまり、不完全なUnicodeである)などの欠陥があります。UTF-8は、可変長文字列としてUCS4の範囲を完全にカバーできる能力を備えているのですが、UCS4をUTF-8で表現しようとした場合、極端にバイト数が増えてしまうなどの問題もあります。
ただ、だからといってUCS2やUCS4を利用するにはAPIが揃っていないなど、実装だけでも一苦労しそうです(IBMのICUを利用するなどの解決方法はありますが、実装して配布するには、あまりにもサイズが大きすぎます)。
というわけで、現行ではchar型で扱えるUTF-8が一番実装しやすいようです。
また、UCS4があまり普及していない今では、UTF-8で文字サイズを気にするような大げさなファイルサイズの肥大化は起こりませんし、その点ではUTF-8はどの点でも優れているように見えます。

最近流行のXMLや、OSのロケールをUTF-8で統一する動きも加速しています。
そのため、外部ファイルをUTF-8で統一し、それを内部構造へ変換する仕組みを各プラットフォーム間で実装すれば、外部へ保存するファイルのテキスト形式を一つに統一することができ、ゲームや各アプリケーションの設定データやソースコードの読み込み、書き出しが楽になります。
それに、UTF-8からUCS2やUCS4への変換は、S-JISやEUCのように変換テーブルを利用する必要が無く、ただのビット演算で高速にできるといった利点もあります。これについては下記URLに詳細が書いてありますので、興味のある方は見てみるとよいでしょう。

http://homepage1.nifty.com/nomenclator/unicode/ucs_utf.htm

というわけで早速、今日そのコードの実装を行い、自サイトのCVSリポジトリへインポートしました。興味のある方はSourceForge.jpプロジェクト名IlaliartのCVSリポジトリを覗いてみてください。それっぽい名前のフォルダの中にソースが入っています。

と、まぁ宣伝みたいになってしまいましたが、もうそろっと寝ないと明日の学会がやばいので寝ます(汗
今日は、朝は研究室の片付け、その後プレゼンの直し、昼は電気が来たのでLANの敷設、その後またプレゼンの直しを加えて、その後3時からプレゼンを先生に指導してもらい、夜はプレゼン直しをして8時に帰宅した。

というか、朝からやばかった。後輪ブレーキをかけたら、そのままロックして滑って前の車のライトを割ってしまった…あぅぅ。出てきたおじいちゃんの訛がひどくて、なかなか言っていることが聞き取れなかったんだけれども、「未来を背負ってゆく科学者が、そんなことでどうする!」と叱咤されて、本当に反省した。最近、どうも気が抜けていたのか、何事にもなぁなぁと反応していたが、この出来事を皮切りに、気を引き締めて行こうと思う。

それと、グラフを吐かせるプログラムであるVS_plotが、どうも使い辛いので学会の発表が終わったらすぐに改良する予定。特に、グラフ作成機能が、バグ有り(カレントディレクトリにグラフを吐かない)なので、そこをまずは直す。あと、「送る」で、データの表示をやれるようにする予定。これはalinkでつちかった技術をそのまま応用すればいいだけだから簡単。

あと、1年経ってレベルアップした技術も導入するつもり。
最近、忙しかったので久しぶりの更新になります。でも、2日書かなかっただけですが(苦笑

この二日でDSPS教育者会議に行って来ました。職業能力開発総合大学校の三上先生(DSPの本を沢山書いてらっしゃる方ですね)や、技大の岩橋先生、また、あの超有名な辻井重男先生(東工大の出身だったのですね)のお話を直に聞けたのは、信号処理の研究に携わるものとして、感動的なものでした。また、修士の先輩方と直接お話できたのもとても面白かったです。

三上先生のお話では、DSP教育で1週間、学生にまるまるDSPの実技を行わせ、能力の向上を図るというものが印象に残りました。どうも、1週間ごとに実験を行わせると、学生さんはそれを忘れてしまうというらしいので(実際、確かに間が空くと実験の内容を忘れてしまいがちです)集中的に実験させるらしいです。

岩橋先生のお話は、長期のインターンシップを行うことで、学生を「自分でやらなければならない」という状態に追い込み、鍛える。これにより、企業にも学校にもより良い技術者作りができるということでした。確かに、お尻に火が付かないとやらない人って多いですからね。

辻井先生は、情報セキュリティについてのお話を聞かせて頂きました。一番初めに持っていた堅苦しい印象とは対照的に、とってもユーモアのある先生で、茶目っ気があって面白かったです。やはり、年を重ねるごとに人の話方って熟練してゆくんだなぁと実感しました(内容については、ちょっと分かり辛かったので微妙なところだったんですが、この点についてはまだまだ勉強しなきゃといった感じです)。

最後に、今回は参加して、とても良かったと思いました。自分と同じ適応フィルタを用いた分野での研究をされている方とのお話もできたし、自分がまだまだだということも、発表を通して感じました。最年少だという理由で、なんだかんだ逃げていた気がしますが、歳なんて関係ない、もっともっと広い世界で頑張って行きたいと思いました。

来年も、絶対参加して、もっともっと成長した姿を皆さんに見てもらいたい。そのためには、もっと勉強して頑張らなければと思いました。

ああぁ!いや、忘れていたわけではないんですが、先生。お疲れ様でした。出来の悪い生徒に、3日間もほぼ徹夜でご指導いただいて、頭が上がりません。うはー。
次は、ぎりぎりになんか上げませんので、今回は勘弁してくださいー。
今日・明日はDSPS教育者会議です。

昨日は、先生に色々と手伝ってもらってギリチョンで準備が終わりました(ちょっとはみ出たかもしれんけど)。有難う先生。ごめんなさい先生(泣

今日の6時にとりあえず駅に行って、新幹線に乗って東京まで。今日は一日中立ってなきゃいけそうなんで、ちょっと徹夜明けはきついかも。

あと、アメリカに行った先輩からメールが届いてた。無事あちらに付いた模様。時差ぼけできついみたいだけれども、頑張って!応援してます。
中山隼雄科学技術文化財団のゲームに関する研究開発、調査研究への研究助成費応募要領研究費補助をうちの研究室の先生が持ってきた。
分野がいくつかに分かれているんだけど、Aは、既に研究発表を行っている人の推薦が必要で、Bはそれ以外。あとCは海外発表向けの旅費補助だった。

うちの場合は、音響関係でBに入ることになり、約100万もらえるらしい。ただ、最大100万で、ちょっと小さくなると思う。
まだ申請したわけではないので(10/31締め切り)なんとも言えないが、出せばもらえると思う。バイノーラル・トランスオーラル再生システムをゲームに適用できるようなシステム作りは前々からやってみたいと思っていたし。
まぁ、申請書の出来次第だなぁ。うちの先生が書いたら通ると思うけど、自分が書いたら通らなそう。

そういえば、前にどこかの大学の助教授さんが動きのアルゴリズム(郡の運動について)について説明してくれたけれども、あれはすごかったな。KONAMIのサッカーゲームに使われているらしいんだけど、チームの動きがすごく綺麗に再現されていた。あれの資料があったはずなんだけど、もう一回見直してみたいな…

そう考えると、Hornetを研究用に使うというのも面白そうだなと思った。ただ、それにはかなり厳密な検証を行わなければならないので、ユニットテストが大変そうだなぁ。

テスト終了ー

2005年9月20日
ふへー、テストが一通り終了しました。今回は色々とやることが重なってつらかったですが、なんとか終わりました。

結果としては、2教科Bを取ってしまった以外は他はAっぽいです。英語が微妙ですが…

今日は、午後はDSPS用のデータまとめを行って、その後帰宅したらTJS2の修正をやっていた。とりあえず警告レベル1から初めて、警告レベルを上げながらやってゆくつもり。こう、ソースを見ていると、意外と適当に組んでいる部分が多くてビックリしたりする。W.Deeさんほどの人でも、やっぱり面倒な部分は結構適当に組むんだなぁと思った。

それと、Hornetのイベント機能組み込みと、CVSのリポジトリ構築、モジュールの登録、あとサーバーにWebDAV入れてファイル共有しなきゃ…

やるこたぁ山積みですなぁ。
某掲示板で、以前のサークルのときに色々とご意見を頂いたのですが、ちょっと雲行きが怪しくなってきているのでここで本人から一言。

きららは、毎回楽しく掲示板を見させて頂いていますが、「一度も」書き込んだことはありません(汗、そして、これからも書き込むことはありません。管理人さんが書き込みされた方をホストから判別できるかどうかはわかりませんが、もしできるのならばして頂ければそれで分かると思います(サーバー内にログとして残っていると思いますので)。何せ、自分のところはケーブルテレビで、固定IPですので(苦笑

厳しい意見も色々と頂いていますが、自分は怒ったりしませんよー^^; それに、色々と擁護して下さっている?方には不快な思いをさせてしまい申し訳ないです、すいません。ただ、やはり喧嘩腰に相手を挑発するような発言は双方避けていただければと思います。

あと、不思議に思ったのですが、中にHornetがエラーで落ちた方がいらっしゃったみたいですけど、標準状態ではHornetは保護モードで動いているので、エラーウィンドウなどが出るような、大げさなエラーで落ちることはまず無いです。エラーを吐いたというのは、stderr.txtのことでしょうか?ちょっと気になります。

それと、実行してくださった方は、stdout.txtをスレ内に添付、もしくはIlaliartの方へ送って頂ければと思います。ちなみに、自分のstdout.txtは、こんな感じです。一部省略はしていますが…きららで無いということを証明したい方は、stdout.txtをスレ内に貼り付けることをお勧めしますよー、これで一目でわかりますから。

=======================================================
Begin Loading Function Name List.
=======================================================
=======================================================
End Loading Function Name List.
=======================================================
=======================================================
System Initialization.
=======================================================
=======================================================
System Initialization OK.
=======================================================
=======================================================
Reading Script main.hnt
=======================================================
Open File = main.hnt.
=======================================================
Reading Script main.hnt OK.
=======================================================
=======================================================
Begin Check CPU Extensions.
=======================================================
RDTSC Support : YES
MMX Support : YES
MMEExt Support : YES
3DNow Support : YES
3DNowExt Support : YES
SSE Support : YES
SSE2 Support : NO
AltiVec Support : NO
=======================================================
End Check CPU Extensions.
=======================================================

Vendor : NVIDIA Corperation
Renderer : GeForce4 MX 440/AGP/SSE/3DNOW!
Version : 1.5.3
Extensions : GL_ARB_imaging GL_ARB_multitexture GL_ARB_point_parameters GL_ARB_point_sprite GL_ARB_shader_objects GL_ARB_shading_language_100 GL_ARB_texture_compression GL_ARB_texture_cube_map GL_ARB_texture_env_add GL_ARB_texture_env_combine GL_ARB_texture_env_dot3 GL_ARB_texture_mirrored_repeat GL_ARB_texture_rectangle GL_ARB_transpose_matrix GL_ARB_vertex_buffer_object GL_ARB_vertex_program GL_ARB_vertex_shader GL_ARB_window_pos GL_S3_s3tc GL_EXT_texture_env_add GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array GL_EXT_Cg_shader GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_multi_draw_arrays GL_EXT_packed_pixels GL_EXT_paletted_texture GL_EXT_pixel_buffer_object GL_EXT_point_parameters GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color GL_EXT_shared_texture_palette GL_EXT_stencil_wrap GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map GL_EXT_texture_edge_clamp GL_EXT_texture_env_combine GL_EXT_texture_env_dot3 GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod GL_EXT_texture_lod_bias GL_EXT_texture_object GL_EXT_vertex_array GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat GL_KTX_buffer_region GL_NV_blend_square GL_NV_fence GL_NV_fog_distance GL_NV_light_max_exponent GL_NV_packed_depth_stencil GL_NV_pixel_data_range GL_NV_point_sprit GL_NV_register_combiners GL_NV_texgen_reflection GL_NV_texture_env_combine4 GL_NV_texture_rectangle GL_NV_vertex_array_range GL_NV_vertex_array_range2 GL_NV_vertex_program GL_NV_vertex_program1_1 GL_SGIS_generate_mipmap GL_SGIS_multitexture GL_SGIS_texture_lod GL_SUN_slice_accum GL_WIN_swap_hint WGL_EXT_swap_control

SDL_GL_RED_SIZE: requetsed 8, got 8
SDL_GL_GREEN_SIZE: requested 8, got 8
SDL_GL_BLUE_SIZE: requested 8, got 8
SDL_GL_ALPHA_SIZE: requested 8, got 8
SDL_GL_DEPTH_SIZE: requested 32, got 16
SDL_GL_DOUBLEBUFFER: requested 1, got 1

=======================================================
Profile Result Output Begin.
=======================================================
Write profile result ( Average 1Loop).
Process average time [ms] : 24.077669902912621
Process average frate [fps] : 41.532258064516128
GP average time [ms] : 0.783171521035599
EP average time [ms] : 23.294498381877023
GP percentage [%] : 3.252688172043011
EP percentage [%] : 96.747311827956992
Number of Profiling times : 309
Total 100.000000[%]
=======================================================
Profile Result Output End.
=======================================================

ソースコードについてですが、これはLGPLでの配布になっています。また、現在配布しているものは、最新のものではないので実行時にエラーが出るかもしれません。注意してください。あと、まだdoxygenのコメントをきちんと書いていないので説明が足らないのですが、後々頑張って書きますのでその点はご了承下さい。

というわけで、この文章を見つけた方は、とりあえずスレの方に貼り付けておいて頂けると有難いです。皆さんが良いサークルにめぐり合えることを心から祈っています。(でも、多分この文章でまた掲示板が賑わっちゃうんだろうなぁと思うとちょっと複雑な気分ですが)

ではでは、皆さん良い掲示板ライフを。
いやはや、今日は一日中忙しかった。朝は起きたらすぐにHornetの調整をやりながら、明日のテストの勉強(電子物性と、実用英語、あとコンピュータービジョンのレポートがある)。
その後、ある程度バグの修正が終了したら、アップした。

それで、午後になったら学校へ行き、やり残していた実験を済ませて帰宅。その後で山田電気へ行って、親のパソコンのための無線アダプタを購入。自分のも欲しかったので、BUFFALOのWLI-U2-KG54を購入した。

家に帰ったら、今度はひたすらマニュアルを書き書きしていた。うひー、疲れた。Hornetに今後TJS2を乗せるつもりだけれども、その前にイベント関連の命令をざっと入れないとやばいなぁ。
サークル内部用のツールだから、使い勝手とかはこれから調整しないとだめだし。一応、一般公開もするけれども、サークル内部用の独自命令とか入っているバージョンのHornetが出てきた場合はどうしたものか…

それと、alinkにboostを利用するかどうかで迷い中。今まで、boostは避けてきたけど(TJS2の時はしかたなくだったので)、もうそろっとboostを本格的に利用したほうが良さそうだ。boost::filesystemを見ると、存在チェックや、デリミタの扱いなど、楽になりそうだー、と思った。Fuyaさんに頼むときも、boost使っていいよーって言えばよかったとか今更公開したり…
VisualC++7.1では、G6オプションを利用してHornetをコンパイルをすると、どうもテクスチャ周りでおかしな現象が起こることがわかった。うむー。

とりあえず、一つずつモジュールチェックを行うつもり。CCSなら使い慣れてるんだけど、VisualC++のプロファイラやその他の機能はまだ使い慣れていないので、勉強しないとだめそう。とりあえず資料探しからやるかー。

アセンブラで機能を組む方がいるみたいだけれども、コンパイラの最適化機能は、下手なアセンブラよりも遥かに速い。でも、最適化の挙動がわからなければ(コンパイラ特有なので、癖が掴めないと、最適化されやすいコードを書くのは結構困難なんだよね)効果的な結果は得られない。意外とこの部分が面倒なんだよなぁ。英文の最適化マニュアルとか読んでると頭が痛くなってくるし。まぁ、でも大体最近のプロセッサは似たり寄ったりな部分が多いから、ある程度の速度は引き出せるんだけれども…

あー、調べよっと。
今日は、とりあえず朝からむちゃくちゃに忙しかった。朝はとりあえず起きたらすぐにバイトに行き、その後昼に帰ってきてAEONへ。終わったら友人の家へ行き、その後家へ帰る。その後は、火曜のテスト勉強をしながらDSPSのプレゼンを考え、飯を食べた後でちょっと休憩したら、今度はHornetにアーカイブ機能を組み込んだ。

うへー、でも結構いい感じに出来上がっている。ただ、微妙なのは、なぜかReleaseビルドすると一部のファイルが正常にテクスチャ化されないこと。

うーん、何かウェイトが必要なんだろうか。転送が間に合わずに、描画に失敗しているという可能性はあるのかな。

一応、調べてみよう。
絵が、オーバーマンキングゲイナーに似ているなぁ似ているなぁと思ってみたアニメ。吉田健一さんの絵に惹かれてまぁ、見てしまったんだな。一目でそれとわかる作風は流石なだぁと。

メカニックを担当している河森正治さんは、AIBOのデザインも手がけているなど、結構有名な方。凄い。

というか、最近のアニメは質が高い。大御所で働いてきた人たちの技術が向上して、どんどんと凄いものになってきているのだろうけど、こういった技術の進歩を見ていると正直自分ももっともっと腕を磨かないとと思う。
うぅ、結局だめだった。まさかこんなところで挫折するとは…というわけで、AlsLinkを中心にやっていくことになる。一応一番高速だし、これはこれでいいかなぁと。

まぁ、圧縮ツールの問題があるけどこれは右クリックメニューで送るにショートカットを追加して、デフォルトのディレクトリにものを突っ込むという荒業で解決してしまおうと思う。

あー、惜しかったなぁ。いいライブラリだと思ったんだけどなぁ。
とりあえず、ライブラリの組み込みをささっとやってしまおうと思ってテスト勉強の合間に1時間ほど時間をとってSDL_archiveを取り込もうとしたところ、なぜかinfrate2関数で落ちる。くっ、時間が無いってのに…

気を取り直して、zlibをインストール。1.2.3になってた。いつのまに…というわけで、もう一回やり直す…だめだ。やっぱり落ちる。

そもそも、msvcrt.libをはずしてlibcmt.libでやっているのが悪いのか?
更に悪いことに今度はtarが読み込めん。Archive_FromArchiverListで確実に落ちる。これはReadFileが落ちているようだが、ここまでくると何が原因だかさっぱりわからん。

うー、落ち着いて考えよう。

そもそも、zlibのバージョンが悪いんじゃないか?もちっとバージョンを下げてみようか。確か、SDL_imageで使ったzlibは1.2.1だったはず…ぐわー

3Dエンジンについて

2005年9月10日
先日、色々と人からアドバイスを受けて、WindowsではDirectXを、MacではOpenGLを、という各プラットフォームで最も優れているツールを利用すると言う方向性でプログラミングをやり直すことにした。

んで、irrlicht(イルリヒト)かN++を使うかで悩み中。というか、基本的にN++を使えばいいんだけど(irrlichtは、そもそもMacには対応を謳ってないし。ただ、人にN++をインストールしてよと言ったときに、コンパイルできるかは謎)。irrlichtは、N++ほど積極的に更新を取り入れないからなぁ。その点、N++は危険であるとは言えるけど。まぁ、どちらも同じプログラムが元だしN++でいいかなぁとは思う。

3Dエンジンの組み込みは初めてなのでちょっと緊張したりするが、基本的に今までやってきたことの総復習なので、力まないで取り組もう。

Hornet再考

2005年9月9日
一応、学校で色々と試していたら、後輩から一言「Luaって使いにくいですねー」といった感じのことを言われた。beginで始まってendならまだしも、beginが無くて突然endで終わるのだから分かり辛いとのこと。確かに色々と見方があるんだなーとちょっと感心した。

今まであれこれと組んで来たが、スタッフの人に色々と忠告されて目が覚める思いだった。毎回色々と注文が来るわけだけれども、それに対応して、あれこれと実装するのはとても楽しかったし、辛いものでもあった。
たまに、今まで自分のやってきたことを全否定されるような厳しい意見もあったけれども、それはそれで悩むのも楽しいうちに入っていたと思う。

ただ、よくよく考えてみると、現在のHornetの形を見て、それでよかったのか?と思える部分がある。
それと、人に言われてあれこれと再考したが、それ以前に頑なに守り続けなければならない部分もあったのではないだろうかということも考えた。

Luaは高速だとは言われるが、TJS2と比較してどうなのか。
実質、Luaの高速性は、その言語仕様の簡易さから来るものだ。そう考えたとき、TJS2と比較して機能と速度というトレードオフの関係にあるもののバランスはどうなのか。TJS2のほうが、時代から考えれば実装に適しているのではないのか?

僕らプログラマは、いつの時代も常に新しい優れた技術を取り入れ、常に最先端を行かなければならない。
そう考えたときに、僕らが行っていることは時代に逆行しているのではないか?パフォーマンスを気にしすぎて、最も重要であるゲーム性を無視していないか?
昔感動したゲームにめぐり合えた時に必ず思った「自分も作ってみたい」というそういった純粋な気持ちを、自分は忘れてそれ自体では何も成さない技術的なことに走りすぎていないか?

前の日記にも書いていたが、製品ではなく、商品を作れと。
正に、今やっていることは、正に製品を作っていることそのものだと思う。存在しない架空の客を相手に、あれこれ考えて実装したところで、それは全く意味の無いことだ。

そもそもHornetは何かを表現するための手段でしかなく、いかに技術的に凝ったところでそれはプログラマのオナニーでしかない。重要なのは、いかに自分の思ったことをそのまま相手に伝えられるかだ。その手段を僕らは求めていたのではないのか。そして、自分はその手段を自分自身のために用意したかったのではないのか。

人それぞれ、様々な考え方がある中で自分が貫き通さなければならないものがある。そういった、最も重要な部分は、時々開発と言う暗雲の中で見失ってしまう。
だが、そんな時に雲の隙間から光を届けてくれる言葉の数々は素晴らしいものだ。感謝したい。
すいませーーん!

メールの返信が滞っております。テスト期間中なので、とりあえず15日までお待ち下さい!あれこれと忙しいので!

ではー!

1 2 3 4 5 6 7 8 9 10 >