Careless oversight
私は不注意なバグで2日間苦しみました。恐らく、あなたは私の不注意な問題を笑いとばすでしょう。もしくは、それは私とあなたにとって、良い教訓になるかもしれません。
私はある法線ベクトルから、別の法線ベクトルへの回転を計算する数学関数を開発しました。
これにより、オブジェクトは指定されたポイントに向かって向きを変えることができます。猛獣がプレイヤーをロック・オンして、彼を攻撃するようなことに、この一般的な関数は役に立ちます。
この私の作業において、私はこれら2つの法線ベクトル間の角度を必要としない新しい方法を試しました。この方法では、クォータニオンはアークコサイン等なしで内積と外積のみによって計算されます。
この方法は有名ですが、それは実装は初めてでした。
実装が終わり、私と仕事仲間は改造されたメソッド'Look At'に満足していました。
しかし、しばらくして、私たちは、このメソッドで回転されたオブジェクトが目標ポイントに背中を向けていることに気付きました。
別のプログラマーは前方方向を示す基本的なベクトルを逆にしました。
彼は、この最初の問題を解決して、諸点を調整しました。
私は、彼の修正をしらずに、すぐに別の問題に遭遇しました。私が'前進'をオブジェクトに与えたとき、オブジェクトは後退を始めたのでした。
私たちは、ミーティングを持って、このバグの原因が異なる座標系の混在だと推測しました。私たちは右手座標系を使用していました。ですから、私たちは左手座標系の計算コードを含むバギーなコードを見つけさえすればよかったのです。しかし、私たちはバグポイントを得ることができませんでした。
翌日、デザイナーは、アプリケーションのメッシュ・データ・エクウポータのオプション項目が切り替わっていたことに気づきました。エクスポータは左手座標系のデータとして、メッシュ・データを変換していたのでした。私たちはデータが私たちのテストに正しいかどうかを検証していませんでした。私が、私たちが完全に理解していなかった異質のコードを書いたので、私たちは、原因がプログラミングバグであると思いこんでいたのでした。。。
BitmapFont on Content-Pipeline
An old XNA Extras had used System.XML, but it becomes
unable to use because XNA Framework doesn't allow to
reference System.XML. But, we can use great solution
using Content-Pipeline. I found it in
this thread.
In this thread, new XNAExtras Aaron Leiby have posted
is a very good solution. This may be the quickest
bitmap font solution I have seen. This converted
XNAExtras makes it possible to load XML files
generated by bmfontgen with content-pipeline.
- Build XNABaseWin or Xbox.
- Modify the reference of XNAImport and build
it.
- Double-click the property of your game project
and add XNAImport.dll to your
content-pipeline.
- Add XNABase.dll as the reference of your
project.
- Change properties of your XML files generated
by bmfontgen. XNA Content Pipeline is true, Content
Importer is BitmapFontImporter, Content Font
Processor is BitmapFontProcessor.
Now, you can load your bitmap font as the following:
BitmapFont bitmapFont =
content.Load<BitmapFont>(asset_name);
XNA Framework doesn't support drawing text
I had heard that XNA Framework RTM tries to enable to
use fonts for drawing text on the screen. I have
expected it, because most of game frameworks doesn't
have such feature. But, according to
this thread, it seems impossible
to use fonts for drawing text. We will have to
keep the solution using bitmap font textures.
XNA Express and Framework have been released
XNA Game Studio and XNA Framework
have been released. We can build the game
for Xbox 360. It's just cross-compile. But, it's
impossible to share one project for PC and Xbox.
That's a barrier for all developers.
C# Possibility for game development
現代において、大部分のゲーム開発者は、 C++ もしくは C
(と若干のマシン語およびシェーダ)を使わなくてはいけません。これらの言語は、非常に強力であり、 C++
は、十分に生産的ですから、特に問題はありません。
しかし、私は、休日用に、他の言語を求めてきました。あらゆるゲーム開発者は、自身のゲームを開発することを望みます。しかし、それは、不可能なように思われます。ゲーム開発は、多くの時間を必要とするからです。大部分の開発者は、自身のゲーム開発より休暇をとって眠ることを望みます。
その目的のために、私は、最小のアーケードゲームを開発するのにいくらかのライト級のプログラミング言語を必要としました。それらは、休暇用の迅速なゲーム開発用の言語です。私は、
HSP 、 Python 、 Ruby 、 Java
、及び、ゲームエンジンのいくらかのスクリプトを試みました。(私は、一度だけ会社の仕事で Java
を使ったことがありますが、二度とゲーム開発には使いたくありません)
そのようにして、私は、多くの言語を試みました。しかし、私は、いつも同じ結果を得ました。C++
がゲーム開発においては世界上で最も生産的な言語であるということです。そこで、私は、 boost
ライブラリと OGRE をチェックし始めました。
しばらくして、私は、 Managed DirectX と C# 2.0 に出会いました。 Managed
DirectX は、 DirectX のマネージドライブラリ版です。C# 2.0 は、 Generics
機能を持つ C#
の拡張です。私は、これらが現在最も良い答えである、と思いました。そして今、マイクロソフトはゲーム開発のために調律された
.NET 製品である XNA フレームワークと XNA スタジオを提供します。
C# は、低パフォーマンスです。C# や Java のような、 GC
機能を持つ言語は、リアルタイム処理に対する適性を持っていません。私が XNA
との最初の接触を持っていたとき、私は、 XNA と C# はなんらかの方法で GC
の問題を克服したのだと考えました。しかし、 XNA は、やっぱりひどいパフォーマンスです。
しかしながら、私も他の開発者も、それに関して同じ結論にたどり着いています。その結論は、我々が GPU
至上主義者であるべきであることです。GPU 処理では、 C++ と C#
に、パフォーマンスの違いはありません。GPU
が物理学等々を計算し得るというアイデアは、いくらかの本にあります。しかし、それは、生産的な方法ではないかもしれませんが...
法線マッピングとツール
法線マッピングは、以前からある技術です。多くのDirectXガイダンスブックはそれを取り上げます。しかしながら、それは、現在のゲームコンソール上で実装しにくいものでした。次世代の製品ではその実装にあたっての問題はありません。
おもしろいことに、法線マッピングに求められたコンセプトは、変遷の途にあります。私は、そのように感じます。昔、法線マッピングは、
GPU
のための省力技術であると紹介されました。しかし、次世代環境において、非常に複雑なポリゴンモデルを扱うことが容易になりました。私は、法線マッピングが
GPU
ではなく、人間のための省力技術として重視されるのではないかと考えます。
私が思うに、大部分の開発者は、背景モデルのために多くの時間を費やすことを望みません。れんが壁の表現のために、開発者は、法線マッピングを使うでしょう。そして、壁のモデルは昔同様プリミティブであり続けるでしょう。
法線マップはもはや人間の仕事ではありません。そこで、優秀なツールが必須です。多くのソフトウェアメーカーは法線マップのソリューションを市場へ投入しています。Zbrushはこのレースにおける先頭ランナーの一人です。加えて、ZBrushはテクスチャのカテゴリにおいても同様に優れていると考えているかもしれません。それは、3Dペインティングのための興味深いフィーチャーと、モデリングのための癖のあるフィーチャーを備えています。
ZBrushによるモデリングは普遍的ではありませんが、十分に興味深いです。しかし、日本の多くのデザイナーはこの普遍的ではないツールをモデリングのために使うことを望みません。ZBrush
はそのことをよく理解しています。それゆえ、彼らはZBrushと他のツールを組み合わせることを勧めるのでしょう。
Interactive Deformable Modeling Framework
DefColStudioは2005
年にSIGGRAPH
で発表されました。
これはインタラクティブな変形可能モデルのフレームワークです。
デモアプリケーションで、私たちはモデルをつまみ、振り回して、別のモデルにぶつけることができます。それは非常におもしろいです。
このデモアプリケーションは、 Bruno Heidelberger
の研究を説明するために、彼によって開発されました。
それは、インタフェースにCEGUI
、レンダリングにOpenGL
およびOGRE
を使用します。
そう、このデモはOGRE
によって作られてている成果物の1
つです。
私たちが注目すべきことは、十分なプログラミング技能を持っている研究者がCG
技術を説明するためにOGRE
を選択したということです。
言い換えれば、OGRE
には、プロトタイプのための十分なライブラリと十分なツールキットが既にあるということです。
Bruno
は、スイス連邦のチューリッヒ工科大学の研究助手であり、AGEIA
で働いています。
AGEIA
は最近、PhysX
でポピュラーになりました。
彼のプロフィールは、彼がAGEIA
の次世代ゲーム物理学に取り組むと説明します。
AGEIA
によって作られたPhysX
は次世代ゲーム物理学を実現する特殊ボードです。
恐らく、彼はPhysX
開発チームのメンバーでしょう。
OGRE
OGRE
は、レンダリングエンジンであり、私が常に見ているオープンソースプロジェクトのひとつです。それは、多くのユーザーの支持、良いツールキット、及び、詳細ドキュメントを持っています。私が
OGRE
を見始めたとき、それは、まだ正式バージョンをリリースしていませんでした。そのため、ユーザーは、
OGRE
プロジェクトの進捗を見るために、毎回ソースコードをチェックアウトし、それをコンパイルしなければなりませんでした。
OGRE
は、長い間 0.9.x
にあり、そして、公式のチーム、及び、サードパーティは、その間に様々なツールキットを開発しました。私は、
OGRE
の計画があまりにも壮大だったので、それは完成しないのではないか、と思いました。しかし、
OGRE
は、多くのツールキット、及び、オフィシャルドキュメントを伴う正式バージョンとしてリリースされました。
OGRE
は、多くの好影響を他のプロジェクトに与え、そして、 OGRE
に関するいくらかのプロジェクトもまた、始まりました。CEGUI
は、それらのなかでも最も良いプロジェクトです。OGRE
、 CEGUI
、及び、いくらかのツールキットは、容易な3Dプログラミングを趣味、もしくは他の分野へもたらします。たとえば、我々は、
SIGGRAPH
で OGRE
アプリケーションを見ることができます。これらのライブラリは、我々の考えをテストするために便利です。同様に、とあるドイツのゲーム学校は、
3
次元プログラミングを学ぶために OGRE
を使います。
しかし、 OGRE
は、アジアでポピュラーではありません。その理由は、それが UTF-8
をサポートしないので、アジアのユーザーが OGRE
で母言語を用いることができないためです。いくらかのソリューションは、提案されており、そして、
3rd party
製のパッチもあります。しかし、公式のソリューションはまだありません。このことは、今しばらくの間、
OGRE
におけるホットトピックであり続けるでしょう。