Dec 26, 2009

PhysicsEffects メモ


masafumi さん情報に感謝です。

入手とビルド
> svn co http://bullet.googlecode.com/svn/branches/PhysicsEffects .
Bullet本体も src/ 以下にダウンロードされます。PhysicsEffects は

  • PhysicsEffects/Physics
  • PhysicsEffects/Util

が本体。

ビルドスクリプトは cmake で生成。Visual Studio 2008 Express Edition を利用したいので:
> cmake -G "Visual Studio 9 2008"
> start PHYSICS_EFFECTS.sln
OpenGLのセットアップが済んでいるなら問題なくビルドは通るはず。

AppHelloWorld が利用方法を示す最低限のサンプルです。で、絵の出るデモはどこにあるんでしょう? AppBasicDemo は Bullet のデモですし。

PfxViewer

独自のシーンフォーマットを持っていて、そのビューアーがこれ。
Havok にもそんなアプリケーションがあったような。

includeパスが SCE_PS3_ROOT という環境変数を利用しているのであらかじめ定義しておきます。
内容は PhysicsEffects のルートでOK。このような感じで:
> set SCE_PS3_ROOT=d:/tmp/PhysicsEffects
> start Plugins/PfxViewer/PfxViewer.sln
ビルド時に app.rc の "afxres.h" が無い、と言われたら…

  * #include "afxres.h"
  ↓
  * // #include "afxres.h"
    #include <windows.h>
    #define IDC_STATIC -1

に書き換えることで切り抜けられます(Ref.: http://ameblo.jp/oregano-blog/day-20090720.html)。

シーンファイルのサンプルが PhysicsEffects/Plugins/Sample/*.txt に配置されています。
サンプルと同じ場所に置いてある *.mb は Maya のデータです。*.txtの元データなのでしょうが…エクスポーターは?

「File -> Open Pfx File」と進んで TestScene2.txt を読み込ませた結果がこちら:



」というアイコンのあたりに日本製の香りを感じます。

Dec 20, 2009

Qt 4.6 と qt4-qtruby の自前ビルド版 で遊んでいるところ。



  • OpenGLの描画後にQtの2D描画を重ねることができる(今回はQPainter::drawText)。
  • RubyからOpenGLを利用したい場合はこちら(ruby-opengl)を。
  • 数学関数はこちら(RMath)。
GLUTにできてQtにできないことは…あとはパッド入力くらいでしょうか。

Dec 13, 2009

Game Engine Architecture : 目次の翻訳

(2010-11-16 追記) 日本語訳が出版されます。こちらからどうぞ:

Jason Gregory, Game Engine Architecture (2009) の目次を訳したものです。
  • 目次 (Table of Contents)
  • はじめに (INTRODUCTION)
    • 1.1   ゲーム製作チームの典型的な構造 (Structure Of A Typical Game Team)
    • 1.2   ゲームとは? (What Is A Game?)
    • 1.3   ゲームエンジンとは? (What Is A Game Engine?)
    • 1.4   ジャンルの比較で見るエンジンの差 (Engine Differences Across Genres)
    • 1.5   ゲームエンジンについての調査 (Game Engine Survey)
    • 1.6   ランタイムシステムの構成 (Runtime Engine Architecture)
    • 1.7   ツールとアセットパイプライン (Tools And The Asset Pipeline)
  • 商売道具 (TOOLS OF THE TRADE)
    • 2.1   バージョン管理 (Version Control)
    • 2.2   Microsoft Visual Studio
    • 2.3   プロファイリングツール (Profiling Tools)
    • 2.4   メモリリークとメモリ破壊の検出 (Memory Leak And Corruption Detection)
    • 2.5   その他のツール (Other Tools)
  • ゲームのためのソフトウェア工学基礎 (FUNDAMENTALS OF SOFTWARE ENGINEERING FOR GAMES)
    • 3.1   C++の概要とベストプラクティス (C++ Review And Best Practices)
    • 3.2   C/C++におけるデータ、コード、メモリ (Data, Code And Memory In C/C++)
    • 3.3   エラーの補足と取り扱い (Catching And Handling Errors)
  • ゲームのための3D数学 (3D MATH FOR GAMES)
    • 4.1   3Dの問題を2Dで解く (Solving 3D Problems In 2D)
    • 4.2   点とベクトル (Points And Vectors)
    • 4.3   行列 (Matrices)
    • 4.4   クォータニオン (Quaternions)
    • 4.5   各種回転表現の比較 (Comparison Of Rotational Representations)
    • 4.6   その他の役立つ道具 (Other Useful Mathematical Objects)
    • 4.7   SIMDハードウェアによる数学演算 (Hardware-Accelerated SIMD Math)
    • 4.8   乱数の生成 (Random Number Generation)
  • 基礎システム (ENGINE SUPPORT SYSTEMS)
    • 5.1   サブシステムの起動と終了 (Subsystem Start-Up And Shut-Down)
    • 5.2   メモリ管理 (Memory Management)
    • 5.3   コンテナー (Containers)
    • 5.4   文字列 (Strings)
    • 5.5   エンジンの設定 (Engine Configuration)
  • リソースとファイルシステム (RESOURCES AND THE FILE SYSTEM)
    • 6.1   ファイルシステム (File System)
    • 6.2   リソースマネージャー (The Resource Manager)
  • ゲームループとリアルタイムシミュレーション (THE GAME LOOP AND REAL-TIME SIMULATION)
    • 7.1   描画ループ (The Rendering Loop)
    • 7.2   ゲームループ (The Game Loop)
    • 7.3   ループ構造のスタイル (Game Loop Architectural Styles)
    • 7.4   時間軸の抽象化 (Abstract Time Lines)
    • 7.5   時間の計測と取り扱い (Measuring And Dealing With Time)
    • 7.6   マルチプロセッサ環境でのゲームループ (Multiprocessor Game Loops)
    • 7.7   多人数参加型ネットワークゲームのループ (Networked Multiplayer Game Loops)
  • ヒューマンインターフェースデバイス (HUMAN INTERFACE DEVICES (HID))
    • 8.1   ヒューマンインターフェースデバイスの種類 (Types Of Human Interface Devices)
    • 8.2   HIDとのインタラクション (Interfacing With A HID)
    • 8.3   入力の種類 (Types Of Inputs)
    • 8.4   出力の種類 (Types Of Outputs)
    • 8.5   ゲームエンジンのHIDシステム (Game Engine HID Systems)
    • 8.6   HIDの実際 (Human Interface Devices In Practice)
  • デバッグと開発のための道具 (TOOLS FOR DEBUGGING AND DEVELOPMENT)
    • 9.1   ロギングと追跡 (Logging And Tracing)
    • 9.2   デバッグ描画機能 (Debug Drawing Facilities)
    • 9.3   ゲーム内メニュー (In-Game Menus)
    • 9.4   ゲーム内コンソール (In-Game Console)
    • 9.5   デバッグ用カメラ、ゲームのポーズ (Debug Cameras And Pausing The Game)
    • 9.6   チート (Cheats)
    • 9.7   スクリーンショットとムービーの取得 (Screen Shots And Movie Capture)
    • 9.8   ゲーム内プロファイリング機能 (In-Game Profiling)
    • 9.9   ゲームに組み込みのメモリ利用統計とリーク検出機能 (In-Game Memory Stats And Leak Detection)
  • 描画エンジン (THE RENDERING ENGINE)
    • 10.1   3D描画の基礎 : 深度バッファを利用した三角形のラスタライズ (Foundations Of Depth-Buffered Triangle Rasterization)
    • 10.2   描画のパイプライン (The Rendering Pipeline)
    • 10.3   高度なライティング処理とグローバルイルミネーション (Advanced Lighting And Global Illumination)
    • 10.4   各種視覚効果とオーバーレイ (Visual Effects And Overlays)
  • アニメーションシステム (ANIMATION SYSTEMS)
    • 11.1   キャラクターアニメーションの種類 (Types Of Character Animation)
    • 11.2   スケルトン (Skeletons)
    • 11.3   ポーズ (Poses)
    • 11.4   クリップ (Clips)
    • 11.5   スキニングとその行列パレットの生成 (Skinning And Matrix Palette Generation)
    • 11.6   アニメーションのブレンド処理 (Animation Blending)
    • 11.7   ポストプロセス (Post-Processing)
    • 11.8   圧縮のテクニック (Compression Techniques)
    • 11.9   アニメーションシステムの構造 (Animation System Architecture)
    • 11.10   アニメーションのパイプライン (The Animation Pipeline)
    • 11.11   行動の状態遷移機械 (Action State Machines)
    • 11.12   アニメーションコントローラー (Animation Controllers)
  • 衝突と剛体の動力学 (COLLISION AND RIGID BODY DYNAMICS)
    • 12.1   物理は必要? (Do You Want Physics In Your Game?)
    • 12.2   衝突処理/物理演算のためのミドルウェア (Collision/Physics Middleware)
    • 12.3   衝突検出システム (The Collision Detection System)
    • 12.4   剛体の動力学 (Rigid Body Dynamics)
    • 12.5   物理エンジンをゲームに組み込む (Integrating A Physics Engine Into Your Game)
    • 12.6   さらに先へ : 高度な物理演算処理 (A Look Ahead: Advanced Physics Features)
  • ゲーム本編のシステムとは (INTRODUCTION TO GAMEPLAY SYSTEMS)
    • 13.1   ゲーム内ワールドの解剖 (Anatomy Of A Game World)
    • 13.2   動的な要素の実装 : ゲームオブジェクト (Implementing Dynamic Elements: Game Objects)
    • 13.3   データ駆動型ゲームエンジン (Data-Driven Game Engines)
    • 13.4   ゲームワールドエディター (The Game World Editor)
  • ゲーム本編を支える基本システム (RUNTIME GAMEPLAY FOUNDATION SYSTEMS)
    • 14.1   基本システムの要素 (Components Of The Gameplay Foundation System)
    • 14.2   実行時オブジェクトモデルの構造 (Runtime Object Model Architectures)
    • 14.3   区画データのフォーマット (World Chunk Data Formats)
    • 14.4   ゲームワールドのロードとストリーミング (Loading And Streaming Game Worlds)
    • 14.5   オブジェクトの参照方法と検索方法 (Object References And World Queries)
    • 14.6   ゲーム内オブジェクトのリアルタイム更新 (Updating Game Objects In Real Time)
    • 14.7   イベントとメッセージ通信 (Events And Message-Passing)
    • 14.8   スクリプトによる記述 (Scripting)
    • 14.9   高レベルなゲーム内状態遷移 (High-Level Game Flow)
  • 「まだまだあるだろ」って? (YOU MEAN THERE’S MORE?)
    • 15.1   本書で触れなかったシステム (Some Engine Systems We Didn’t Cover)
    • 15.2   ゲーム本編のシステム (Gameplay Systems)
  • 索引 (INDEX)
  • 参考文献 (REFERENCES)


Dec 12, 2009

qt4-qtruby を Windows で : Qt 4.6でもOK

…という組み合わせでも問題なくビルドできました。qtrubyのcmakeに渡すオプションに変更が必要でした。
cmake -G "Visual Studio 9 2008" -DCMAKE_INSTALL_PREFIX=d:\ruby19  -DRUBY_EXECUTABLE=d:\ruby19\bin\ruby  -DRUBY_LIBRARY=d:\ruby19\lib\msvcr90-ruby191.lib  -DRUBY_INCLUDE_PATH=d:\ruby19\include\ruby-1.9.1  -DQT_QMAKE_EXECUTABLE=d:\Qt\2009.05\qt\bin\qmake  -Wno-dev  -DENABLE_SMOKE=on  -DENABLE_QTRUBY=on  -DENABLE_QTWEBKIT_SMOKE=off -DENABLE_QTSCRIPT_SMOKE=off  -DENABLE_QTUITOOLS_SMOKE=off  -DENABLE_QTTEST_SMOKE=off  -DENABLE_PHONON_SMOKE=off  -DENABLE_QSCI_SMOKE=off-DENABLE_QWT_SMOKE=off  -DENABLE_KDE_SMOKE=off  -DENABLE_KDECORE_SMOKE=off  -DENABLE_KDEUI_SMOKE=off  -DENABLE_KIO_SMOKE=off  -DENABLE_KPARTS_SMOKE=off  -DENABLE_KFILE_SMOKE=off  -DENABLE_KNEWSTUFF2_SMOKE=off  -DENABLE_KNEWSTUFF3_SMOKE=off  -DENABLE_KUTILS_SMOKE=off  -DENABLE_KDEVPLATFORM_SMOKE=off  -DENABLE_KHTML_SMOKE=off  -DENABLE_KTEXTEDITOR_SMOKE=off  -DENABLE_SOLID_SMOKE=off  -DENABLE_PLASMA_SMOKE=off  -DENABLE_QTWEBKIT_RUBY=off  -DENABLE_QTUITOOLS_RUBY=off  -DENABLE_QTSCRIPT=off  -DENABLE_QTTEST=off  -DENABLE_PHONON_RUBY=off  -DENABLE_QSCINTILLA_RUBY=off  -DENABLE_QWT_RUBY=off  -DENABLE_SOPRANO_RUBY=off  -DENABLE_KDEVPLATFORM_RUBY=off  -DENABLE_KORUNDUM_RUBY=off  -DENABLE_KHTML_RUBY=off-DENABLE_KTEXTEDITOR_RUBY=off  -DENABLE_SOLID_RUBY=off  -DENABLE_KROSSRUBY=off -DENABLE_PLASMA_RUBY=off  -DENABLE_QIMAGEBLITZ_SMOKE=off -DENABLE_QTDBUS_SMOKE=off -DQT_QTDBUS_LIBRARY:FILEPATH= .
ENABLE_KDECORE_SMOKEなどの新しいシンボルを無効化するように指定しています。この点のみ読み替えることで、以下の記事は引き続き利用可能です: