OGRE & Cube (1)
Cube の設計は OGRE をベースにしています。私が Cube (Shade2 という名前だった)
のデザインに手をつけ始めたとき、私は PHP と Web
アプリケーションを十分に習得していませんでした(今もですが)。そこで、私は私が普段扱っている設計を
Xcube に持ち込みました。それはシーングラフの概念(特にOGRE)です。
この頃、私は Shade がそのまま XCube
になるとは考えていませんでした。しかし、私は次のような考えを持っていました。
フレームワークなし
この当時、日本の
PHP
プログラマはフレームワークについてよく議論していました。そして、「フレームワーク」は日本人にとって特別な意味を持ち始めていました。日本人はよく日本語と英語を使い分けるため、「フレームワーク」はその邦訳である「枠組」とは異なるものになっていました。それは
IT
プロフェッショナルたちにとって重要な議論であったと思われます。しかし、私には普通でない状況に感じられました。私はそれに巻き込まれたくありませんでした。以上のことから、私は
XCube はフレームワークを持つべきではないと考えました。
マルチレンダーターゲット
デザイナーはテーマフォーマットや
CSS
を問題視しています。しかし、これは一種の宗教論争です。私は、これは複数のレンダラによって解決可能なため、
XCube
がこの手の論争に加わるべきではないと思いました。しかし、新しいフォーマットは既存のモジュールやテーマに悪影響をもたらします。私たちは同時に異なるフォーマットを使うことができ、最終出力はそれらの結果を含んでいることができるべきです。3Dアプリケーションはよくそのような目的を持ちます。私はレンダーシステムとレンダーターゲットの概念を
XCube に持ち込みました。
構成
XCube
の構成は .ini ファイルによって決定されます。それは DI
ではないかといった人がいます。しかし、これは DI ではありません…なぜなら、 XCube
はプロフェッショナルの世界でホットトピックスとなっていることに首を突っ込むつもりはないからです。実は、このプロセスも
OGRE をベースにしています。 OGRE
は換装可能なマネージャで構成されています。そして既にそれらのマネージャとして使用可能な多くのプラグインがあります。開発者は
cfg
を編集することによって、その組み合わせを決定します。これはユーザーがプログラムの初期段階に影響を与えることができる唯一の手段です(ソースコードの直編集を除けば)。
OGRE
は「換装可能」というコンセプトを示すことで、「万人が納得する設計とは何か?」という不要な議論に遭遇しなくなりました。
換装
XCube
はウェブサイトを実現するための具体的な関数を持っていません。これも OGRE のコンセプトです。 OGRE
は非常にコンパクトなエンジンです。それは力学、AI、地形、そして BSP を持っていません。OGRE
の開発が始まった頃、そのようなエンジンは常識では考えられませんでした。「エンジン」とは FPS
を速やかに実現するために多くのフィーチャーを実装していなければならないモノだったからです。しかし、他のいくつかのエンジンは、多くの達成課題や多くの論争を解決することができずに、開発が止まり始めました。その間にも
OGRE はその進捗を維持しました。
たとえば、あるエンジンにおいて、あなたが BSP
の処理に納得がいかなかったとしても、ソースコードをいじらない限り組み込みの BSP
処理を変更することはできません。 OGRE
はそのようなケースに対して異なる道を示しています。「換装」は「唯一無二の標準」を否定します。 OGRE
において、あなたは異なる BSP を開発することが可能です。同じことが XCube
でも言えるのです。この特徴は Wii 的であると呼ぶこともあります。
Various Open-Source Style
私は、長い間、オープンソースの考え方がお気に入りでした。しかし、ここ数年、私は、私の周辺のオープンソースに限定して、いくつかの疑問を抱くようになりました。昨日、私は、同僚とそれについて雑談する機会を持ちました。私の勤め先は、オープンソースについて何の関心も持っていません。しかし、私達には、オープンソースに関して共通のエキサイティングな経験がありました。それは
Doom 、そして Quake
です! これらのGPL版は、私の記憶に残る真実のオープンソースであり、私の原点でした。この価値観は、私が
XOOPS 日本コミュニティと相性が悪い原因かもしれません。しかし、活動的ユーザーであれば、なぜ私が
Quake にそれを見いだしたか理解を示すでしょう。
日本の XOOPS
コミュニティの周りには、「オープンソースとは何か?」という議論があります。オープンソースは、単にコンセプトのあるライセンスにすぎません。しかし、その精神の解釈について、多くの人々は、それぞれ異なる意見を持っています。
私がオープンソースにおける新米の活動家だったため、私は、この議論についてしばらく自分の意見を持ってきませんでした。そして、日本オープンソースコミュニティの一部の先輩方は、オープンソースの決まり事について私に指導してくれました。面白いことに、皆さんが教えてくれた「決まり事」は人によって言うことが全部違っていました。これは、(ライセンスを除けば)統一的な不文律などは存在していないことを意味しています。オープンソースは、活動的ユーザーを束縛する行動制約の集合ではなく単にライセンスです。
私は、行動を伴わない解釈議論が好きではありません。それは、一種のシミュレーションであり学術的な活動です。私がオープンソースに参加した理由は、大学の代わりにディベートの授業を受けることを望んだからではありません。スポーツ討論をするためだけに、スポーツクラブに入る人はいないでしょう。私は、実際に何かをするために、この世界に入りました。ですから、私は机上の空論で議論をしたいと思いません。当初私は、日本の文化の下では、おしゃべりだけの人間は誰からも嫌われると信じていました。しかし、私は、どういうわけか
XOOPS Cube 日本における少数派の側にいます...
それゆえに、私は、国際コミュニティに期待しているし、英語をもっとうまく使いたいと思っています。
私は日本が嫌いではありません。オープンソースに関しては合わないと思って入るだけです。
私にとって最も良いオープンソースプロジェクトは何か? それについて、私は、模範的回答として gcc
を挙げるべきでしょう。しかし、それは私の本当の真の意見ではありません。間違いなく、私にとっての最も良いオープンソースプロジェクトは、「
Quake2 」です。私は、 i.d.
ソフトウェアがそれを公開した出来事を忘れることができません。それは、エキサイティングな出来事でした。私は、ソースコードを変えて、そして、他の人たちによって変更されたカスタム
Quake
を手にいれることに夢中になりました。それは、まさに自由であり、そして、その自由は、一般人の活動によって満たされていました。世界は、美しく、エキサイティングでした。
その経験は、オープンソースにおける私の原点です。私は、 XOOPS Cube
が楽をする場所ではなく、エキサイティングのための場所であってほしいと思っています。私の意見は、与えられた役割を果たすことを望む一部の日本人によって嫌悪されるでしょう。しかしながら、私は、結局、オープンソースは彼らの希望を満たさないと思います。オープンソースは、ライセンスによって保証される心の自由です。プロプライエタリのサブセットではありません。ですから、私は、日本から国際グループへプロジェクトを動したいと思っています。なぜなら私は外国の方が積極的な人々が多いと信じているからです。
私は、オープンソースについての議論をすることは嫌いではありません。しかし、実行動なしで議論のみをすることは、無益な時間です。私は、なぜ多くのユーザーが実行動より議論を好むか理解できません。
ところで、 GPL Quake は、中央集権組織を持っていませんでした。もちろん、 XOOPS を
Quake
と比較することは、ナンセンスです。しかし、オープンソースを突き詰めれば、「自由」に行き着くはずです。私の疑問は、この意見への反対者がよその例を挙げるばかりで自分では何もしないことです。
Careless oversight
私は不注意なバグで2日間苦しみました。恐らく、あなたは私の不注意な問題を笑いとばすでしょう。もしくは、それは私とあなたにとって、良い教訓になるかもしれません。
私はある法線ベクトルから、別の法線ベクトルへの回転を計算する数学関数を開発しました。
これにより、オブジェクトは指定されたポイントに向かって向きを変えることができます。猛獣がプレイヤーをロック・オンして、彼を攻撃するようなことに、この一般的な関数は役に立ちます。
この私の作業において、私はこれら2つの法線ベクトル間の角度を必要としない新しい方法を試しました。この方法では、クォータニオンはアークコサイン等なしで内積と外積のみによって計算されます。
この方法は有名ですが、それは実装は初めてでした。
実装が終わり、私と仕事仲間は改造されたメソッド'Look At'に満足していました。
しかし、しばらくして、私たちは、このメソッドで回転されたオブジェクトが目標ポイントに背中を向けていることに気付きました。
別のプログラマーは前方方向を示す基本的なベクトルを逆にしました。
彼は、この最初の問題を解決して、諸点を調整しました。
私は、彼の修正をしらずに、すぐに別の問題に遭遇しました。私が'前進'をオブジェクトに与えたとき、オブジェクトは後退を始めたのでした。
私たちは、ミーティングを持って、このバグの原因が異なる座標系の混在だと推測しました。私たちは右手座標系を使用していました。ですから、私たちは左手座標系の計算コードを含むバギーなコードを見つけさえすればよかったのです。しかし、私たちはバグポイントを得ることができませんでした。
翌日、デザイナーは、アプリケーションのメッシュ・データ・エクウポータのオプション項目が切り替わっていたことに気づきました。エクスポータは左手座標系のデータとして、メッシュ・データを変換していたのでした。私たちはデータが私たちのテストに正しいかどうかを検証していませんでした。私が、私たちが完全に理解していなかった異質のコードを書いたので、私たちは、原因がプログラミングバグであると思いこんでいたのでした。。。
Good bye 2006 & JP Official Site
ハッピーニューイヤー ! そして、私は、 2006 年と日本公式サイトへさよならを言いました。
xoopscube.jp
は新しいモデレータを得て、そして、公式のサイトであることを止めたのです。それは、重要な前進です。なぜなら、日本のユーザーは、強迫観念から解放されたからです。誰もが、公式サイトとは何か?といったことを考えずに自分自身の信念の下で実行動できるのです。
あなたは、日本人は決して実行動に出ないと思うかもしれません。確かに、xoopscube.jp
は、行動なけれども要望ありのユーザーから成る不活発性集団のように見なされます。日本人は出る杭を打つ習性を持つ動物です。ですから、この国で、すすんで出る杭になろうと思う人はいません。しかし、活動的ユーザーは、
xoopscube.jp
の縮小計画を理解し、そして、多くのプロジェクトを始めました。私は、それらのうちいくらかを、ここにリストしました。
中央集権主義を愛する一部のユーザーは XOOPS Cube
が消滅するだろうと警告します。彼らは、他の有名なオープンソースプロジェクトと同様に、コミュニティをコントロールすることができるかどうかを試したがっています。とても良いことです。彼らは、開発チーム抜きで自分自身の政治的手腕を試してみることができる自由を手にしました。あらゆる価値観は、なんの許可もなく存在するものです。自身の信念の下で行動してください。
たとえ XOOPS Cube
が日本で将来消滅するとしても、私は、それは全く問題ない、と思います。なぜなら、歴史は、人々の行動の結果だからです。私達ができる唯一のことは、私達の行動の結果を受け止めることです。行動しないことは、望みを持たないことに等しいのです。
XOOPS Cube
は、国家でもなければ、政府でもなく、地球でもなければ、宇宙でもありません。すなわち、これは命がけで必要とされるものではありません。ですから、滅亡可能な
XOOPS Cube
で、私達は、私達が、目的実現のために行動し、それを共有することができるフロンティアであるかどうかを試すことができるのです。私達が真に人間であるかどうかを試すことができるのです。