「プログラミング」タグアーカイブ

Irrlicht、アニメーション形式統合、IUnknown廃止に

Unified Skeletal Animation, RIP IUnknown (Irrlicht3d.org)

Irrlichtは非常に多くのファイル形式を直にサポートしていることで知られています。例えば、アニメーションB3D、DirectX、Milkshapeファイルを、たった2行のC++コードを用いるだけで、ダイレクトに読み込んで表示出来ます。Irrlichtはこれをそれぞれのファイル形式のメッシュアニメーションコードを実装することにより実現しています。これらの実装はお互いに短所と長所を持ち合わせています。しかし、この差異問題について現在は少し修正を加えています。hybridは数日前、Irrlicht svn trunkの中にSkinnedMesh-Branchをマージしました。trunkには多くのIrrlichtエンジンユーザのため、lukeとbitplaneの多大な成果も盛り込まれています。

私は既に開発版irrEditへ、それらの新コードを適用し、リリースされたばかりのirrKlang 1.0にも対応させました。いくつかのテストを済ませ、全て想定内の動作をすることも確認しています。嬉しいですね。3Dエンジンの全機能の70%を使用するような多機能エディタは、かなり良い検証用ソフトになると思います。

また、私はほぼ全てのIrrlicht基底クラスである"IUnknown"を"IReferenceCounted"にリネームしました。この変更は昨日のirrKlangのリリースと共に行いました。リネームの理由のひとつは、Irrlichtの名前空間を使いたがらない人々が"windows.h"をインクルードしたときに、クラス名の衝突が起こる事にあります。その他の理由には、もちろん、IReferenceCountedはIUnknownよりも他所で使用される確率が少ないからです。

原文 - Nikolaus Gebhardt / 翻訳 - 屋森英樹

アニメーションクラスを大改修、確かにとんでもない勢いで進行していました。要するに、「Irrlicht独自のアニメーション定義を作り、読み込み時に統一しよう」と言う事。これで他のアニメーション形式からの変換もやり易くなればいいですね。

もうひとつの変更点、IUnknownの名称変更ですが、名前空間を適切に使っている人には縁のない話です。IUnknownは特にいろんなプロジェクトで見かけます。名前空間を使いわけないと、頻繁にクラス名の衝突が起こって大変ではないでしょうか。ライブラリを使う側は名前空間をもっと有効活用したほうがいいと思います。何が言いたいかと言うと

「ヘッダにusing namespaceは書かないで!」

名前空間の開放はcppファイルの中でお願いします(切実)

irrKlang 1.0、ライセンス価格が提示される

irrKlang 1.0 released, some facts and a review about it (Irrlicht3d.org Blog)

12回のβ版とα版リリースを経て、遂にirrKlang 1.0が登場しました。irrKlangはC++、C#、VisualBasic.NET etc.対応のオーディオライブラリです。ソフトウェアがバージョン1.0を迎えるのは、いつも素晴らしい事です。もちろん、irrKlangも例外ではありません。irrKlang 1.0は安定版であり、沢山の機能を提供しています。

irrKlangはバージョン1.0に至るまで、合計数万回ダウンロードされました。また、日曜プログラマ、irrlichtユーザ、インディーズや大手ゲーム会社、そして、今日では科学者や3Dエンジン開発者達によってテストされ使われました。使用プロジェクトのいくつかは、既にこのブログ上で紹介しています。皆さんがirrKlangを使いやすいと考えており、そのような人々の役に立っているのを、私は非常に嬉しく思います。もちろん、商業ライセンスを購入してくれる人々が存在し、近々店頭に並ぶ製品に同梱される事もありがたい限りです。あなたが実際に手に取るゲームがirrKlangを使っている、痺れますね:)

このバージョン1.0は新機能の提供とドキュメントの向上(irrKlang for C++irrKlang for C#)も図っています。また、インディーズ開発者には興味深い情報もあります。irrKlangのライセンスは、顧客とメールで何度か意見交換して弾き出した、現在私が考えうる最も融通の利いた価格設定となっています。irrKlangを使用している全ての人々に感謝します。建設的なフィードバックをくれた人々には特にお礼申し上げます。近いうちに、より洗練されたirrKlangを我々が目にするだろうと私は賭けます。

原文 - Nikolaus Gebhardt / 翻訳 - 屋森英樹

昨日のアナウンスの通り、nikoのプロダクトの一つがアップデートしました。Vistaでも動作するようなので、安心して使えそうです。肝心のirrKlangのライセンス価格は以下のようになっています。(日本国内からは必要ないはずですが、EU地域でライセンス購入するには別途消費税が加算されます。)

  • 非商用:フリーウェアが対象 / フリー
  • シェアウェア:14ユーロ(2200円)未満の1製品か5ユーロ(790円)未満の製品群 / 65ユーロ(1万円)
  • ミドル:25ユーロ(3940円)未満の1製品 / 145ユーロ(2万2900円)
  • フル:1製品 / 390ユーロ(6万1500円)

絶妙な価格設定ではありますが、日本円換算すると意外に高いですね。まぁ、試用してみて気に入ったら購入を考えてもいいのではないでしょうか。3Dサウンドが使えないVistaでも頭を悩ませないで済むのは嬉しいです。

PHP4でPHP5の機能を実現するキット

PHP 4.xでPHP 5.2/6.0の機能を実現する互換キット"upgrade.php 15"登場 (マイコミジャーナル)

7月31日(ドイツ時間)、upgrade.phpの最新版となる「upgrade.php 15」が公開された。upgrade.phpはPHPで開発された後方互換実現のためのコンパチブルキット。パブリックドメインとして公開されている。 PHP 5.2や6.0で導入された新しいコア関数をPHP 4.xで動作するように実装したプロダクトで、4.x系で5.2や6.0で導入された機能を使いたい場合に役に立つ。

upgrade.php

これはどうしてもPHP4を使用せざるを得ない環境で、PHP5、6の機能を使おうという互換キットです。想定されるケースは、レンタルサーバを借りているので自由にPHPをバージョンアップできない場合です。

PHP4は2007年末にサポート終了する関係上、レンタルサーバでも徐々にPHP5以上にアップデートされていくと思います。しかし、完全移行はまだまだ先の話かもしれません。PHP5には便利な機能が沢山あるのに、余命短いPHP4の制約を受けながら新規スクリプトを書くのはナンセンスです。そこで、移行までの繋ぎとして、この互換キットでPHP5、6の機能を使えるようにしておこうと言う訳です。移行の下準備に採用してみては如何でしょう?

それにしても、毎回思う事があります。何れ用済みになることが分かっている移行用リソースにパワーを割くのは勿体無いな、と。やるなら、後方互換性を保持し、移行マニュアルを徹底することにパワーを傾けた方が堅実的だと思います。

Community Choice Awards、Irrlichtは受賞逃す

The SourceForge.net 2007 Community Choice Awards (SourceForge.net)

Gamer部門、Multimedia部門共にIrrlichtは受賞を逃してしまいました。Ogreでさえも受賞していないということは、ここに名前が連なっているプロジェクトは相当数の票を獲得したものと思われます。

さて、我らがIrrlichtを退けたプロジェクトはどんなものなのでしょう。

まず、Gamer部門のScummVM。これはLucasArts社のPCゲームに使われたエンジン"Secumm"のスクリプトを動作させるための仮想マシン。日本風に言うと互換ゲームエミュレータです。ツクールシリーズやNScripter等を連想してもらえば間違いないでしょう。Secummエンジンは海外にファンが多いMonkey Islandにも採用されてます。私が知らないだけで、もしかしたらこのプロジェクトは莫大な支持を得ているのかもしれません。

次にMultimedia部門、Audacity。マルチトラック編集可能なオーディオエディタです。日本語ページが存在するので、ご存知の方も多いのではないでしょうか。マルチプラットフォームに対応し、使いやすいGUIと豊富な機能が特徴。受賞したのは正直驚きましたが、多くのサウンドデザイナーに親しまれている証ですね。

マルチコア時代のゲームプログラミング

西川善司の3Dゲームファンのための「ロスト プラネット」グラフィックス講座 - Xbox 360グラフィックスここに極まる! 日本発の次世代技術の秘密とは? (Game Watch)

特集:カプコン×インテル。「ロスト プラネット」のマルチスレッド最適化対談 (4Gamer.net)

石田智史氏:
 「マルチスレッドはゲーム向きじゃない」という常識みたいなものがあったんですが,今後の流れとしてはマルチコアは避けられません。だからマルチスレッド化に取り組もうと。
4Gamer:
 ゲームのマルチスレッド化が難しいのはなぜですか?
石田智史氏:
 簡単に言うと依存関係(※詳細は後述)が複雑なんですよ。マルチスレッドでパフォーマンスを上げるためには個々のスレッドの独立性が高くなければなりませんが,ゲームはそうじゃないんです。

Core 2 Duoを皮切りにマルチコア時代に突入したPC市場。シングルコアの性能を極限まで追究したPentium4までとはアプローチが全く異なります。Core 2 DuoやCore 2 Quadは、個々のコア性能は若干落ちても、それぞれのコアで並列作業させて速度を補おうという考え。マルチスレッド化されていないゲームではシングルコアしか使われないので、下手をすればPentium4よりもスコアが落ちます。そのため、ゲームにおいてもパフォーマンス向上にはマルチスレッド化を視野に入れなければならなくなりました。

しかし、ゲームでは敵やプレイヤー等、相互が密接に係わり合っている状態。それぞれを独立したスレッドで好き放題に処理をされては、ゲームの同期が取れなくなってしまいます。どの部分をどのように分業させるか、今後は試行錯誤が続いていくと思われます。記事で紹介されているカプコン謹製MTフレームワークは、その一つの実装型として興味深いですね。

4Gamer:
 では,Xbox 360とPCでマルチスレッド化に関して違いはありましたか?
石田智史氏:
 Xbox 360とWindowsはCPUが違いますよね。Xbox 360のCPUはL2キャッシュを三つのCPUコアで共有しています。だから速い。Core 2 Quadは,(CPUコアは四つあるが,2コアずつ)L2キャッシュが独立しているので,そのオーバーヘッドがかなり大きいんです。Core 2 Duoだとシングルコアに対して1.8倍のパフォーマンス向上を実現できるんですけど,Core 2 Quadだと(シングルコアに対して)2.3倍くらいしか出ない。

また、Core 2 QuadはL2キャッシュが2つあり、それぞれ2コアで1つを共有しています。つまり、Core 2 Duoを1つのダイに押し込んだだけのなんちゃって4コア。キャッシュが2分されてしまうため、これではデータを効率よく処理出来ません。現段階ではCore 2 Quadはマルチスレッド化の恩恵を受けにくい地雷CPUということになるでしょうか。ハードもソフトも激動の転換期のようです。果たして、どれだけの技術者が生き残れるのでしょう。