windows7 を買ったので XP Mode をつかって coLinux を動かしてみました。

環境
windows7 Professional 64bit
coLinux 0.7.4.1

XP Mode を起動して、 coLinux をインストールします。
XP Mode のネットワーク設定は NAT です。さらに coLinux も XP との NAT を設定します。
関係としてはこんな感じ

windows7(host) –NAT– WindowsXP : XP Mode(client&host) –NAT– coLinux(client)

まず最初にやったのが、ブート用のイメージを windows7 上のGドライブに配置して起動してみました。
XP Mode では windows7 のドライブを共有設定していて、\\tsclient\ドライブレター でアクセスできます。
下記のようにコンフィグを修正して起動しました。

kernel=”c:\Program Files\coLinux\vmlinux”

cobd0=”\\tsclient\G\Linux\img\ubuntu4gb.img”
cobd1=”\\tsclient\G\Linux\img\ubuntu-swap.img”
cobd2=”\\tsclient\G\Linux\img\work.img”

root=/dev/cobd0
ro
initrd=”c:\Program Files\coLinux\initrd.gz”
eth0=tuntap, “TAP”

これは失敗。

ext3_get_inode_loc: unable to read inode block

と出てうまく動きませんでした。
今まで問題なく動いてたものなので、イメージが破損しているということはないです。

ネットワーク上のイメージでは駄目なようです。
イメージをXPの仮想ディスク(Cドライブ)にコピーして、コンフィグを書き換えて試してみました。

kernel=”c:\Program Files\coLinux\vmlinux”

cobd0=”c:\Linux\img\ubuntu4gb.img”
cobd1=”c:\Linux\img\ubuntu-swap.img”
cobd2=”c:\Linux\img\work.img”

root=/dev/cobd0
ro
initrd=”c:\Program Files\coLinux\initrd.gz”
eth0=tuntap, “TAP”

これで問題なく動作しました。
イメージはXP側に配置しなければならないようです。

つぃったーで知ったのですが、More Effective C# の翻訳版が出るみたいです。

こちらは英語版

 
 
まず Effective C# の翻訳版を出すべきだと思ったんすが、内容が古いんじゃないすかねーと言われて確かになと思いました。
# 2004年の書籍なので、C# 2.0 が顔を見せ始めた頃ですね。
 
Effective C# は C#4.0 対応版が2月に出るようなので、そちらの翻訳版が出るのかもしれませんね。

3日目は下記に参加してきました。

・『国民的ゲームとは何か? 〜ドラゴンクエストの場合〜』
・Squirrelを使ったゲーム開発 Part II
・IMAGIRE DAY : 続・レンダリスト養成講座
・IMAGIRE DAY :破壊シミュレーション入門
・IMAGIRE DAY :3Dゲーム開発マニアックス
・モンスターハンター フロンティア オンライン(MHF)のビジネス概論

・『国民的ゲームとは何か? 〜ドラゴンクエストの場合〜』
ドラクエの歴史とか、ドラクエを作るにあたっての話。
公演中に、ドラクエ9のすれ違い通信がはじまりました。

・なぜドラゴンクエストは人気が維持できるのか
当時はゲームセンターでできるような短いゲームが主流
家で遊ぶなら RPG ができるだろう
ドラクエを作る前に、「ポートピア連続殺人事件」でユーザが文字を読むことに慣れさせた

・ドラゴンクエストIXのゲームデザイン
少しずつ慣れさせた
ドラクエ1でプレイヤーキャラクタ1人
ドラクエ2でプレイヤーキャラクタを増やした
ドラクエ3で転職システム
時間をかけて、少しづつユーザに慣れさせる

・これからのゲームはどうなっていくのか
ゲームは無くならない
ハードウェアの進化によってゲームがやれることは増え続ける
ユーザにプレイしたいという躍動感を持たせることが必要
 

・Squirrelを使ったゲーム開発 Part II
・Squirrel とは
ゲームに特化したスクリプト言語
スタック形式
c/c++ <-> squirrel でのやりとりが容易
Lua とはアプローチが異なる(下記)

・Lua との比較
参照カウンタを使ったGC
クラスの正式サポート、継承も可能
整数型(Integer)と浮動小数点型(Float)が区別されている
配列とテーブルが別扱い
ビット演算サポート
関数の戻り値は1つまで

・開発実績
小さな王様と約束の国 ファイナルファンタジー・クリスタルクロニクル (2008)
光と闇の姫君と世界征服の塔 ファイナルファンタジー・クリスタルクロニクル (2009)

・開発事例 光と闇の姫君と世界征服の塔~
PGは2人
システム部分をC++, ゲーム部分を Squirrel で記述
メインループ Squirrel 側
ゲームデータ Squirrel 側
try-catch によるエラーハンドリング、復帰処理の強化 -> エラーが出てもゲームを止めないで修正可能
再読込処理によるデータの差し替えを容易に
Excel のデータを VBA でコードに直接変換
ゲームを起動したままデバッグ機能を追加したり可能

・実装テクニックとノウハウ
ツールを作って、C++ の定義から バインドコードを自動生成
Squirrel 中に起きたエラーはスタックダンプをチェックすることで確認可能
メモリブロック数に注意 (100Byte以下程度の細かいブロックがたくさんできる)
Table は Array よりもメモリ消費大
GCのタイミングとデフラグメントに注意
GCの実行はフレームレートに影響する (ゲームに影響しにくいところで行う)
Squirrel <-> C++ の往復は重いので少なめに
文字列の加工は重い
ピーが発生する引数や戻り値の受け渡しは重い
GCは重い
デバッガあります (Eclipse/SQDev, Squirrel Visual Studio 2008 Integration)

・まとめ
前作システムで, まったく違ったゲーム作成
小規模開発
Squirrel をフル活用
今後も是非使いたいです
 

・IMAGIRE DAY : 続・レンダリスト養成講座
前半は田村氏による 論文 「Line Drawing via Abstracted Shading」(SIGGRAPH 2007) の紹介
要約すると、輪郭抽出を行うための手法として伝統的な「ジオメトリの拡大」ではなく、「ハイトマップの近似」によって輪郭抽出を行うというもの

・伝統的な手法
NPR において、山・谷線、折り目線、輪郭線を統一的に描画できる
完全な2次元処理
ラインの太さは火炎
大元となるアルゴリズムに追うようの余地がある
少々計算時間がかかる
3Dシーンに適用すると、結果が視点依存

・Line Drawing via Abstracted Shading の手順
(描きたい線の太さ) / 2 の感覚で 3×3 のサンプル点を配置
色の濃さを高さとしたハイトマップ構築
ハイトマップを放物線で近似
頂点・曲率・曲線方向を計算
頂点・曲率・曲線方向から色の補正係数を計算

・まとめ
各ピクセルで、近傍の色情報の放物面近似によって自分が山・谷にいるのかを判断
放物面の係数から、放物面の曲率、山・谷線方向といった付加情報を計算可能
山・谷線に近いほど、また曲面の曲率が大きいほど色を変化させる

・考察
山・谷の区別だけではなく、曲率や山・谷線方向を導出し、レンダリングに反映させている点が面白い
現在は2次元処理なので、3次元情報を上手く利用すれば、結果の向上がはかれるかも
近傍の色情報の放物面近似は、SSAOやトーンマップにも応用可能かもしれない
 

後半は川瀬氏による「縮小バッファ」の実装についての話。
塗りつぶし面積が減る分高速になるが、解像度不足になってしまう。という話。

こちらで資料が公開されている
http://www.daionet.gr.jp/~masa/column/2009-09-12.html

・IMAGIRE DAY :破壊シミュレーション入門
今給黎氏による破壊シミュレーションの理論紹介と実現方法についての話
講演では、破壊についての論文紹介や手法の紹介、シミュレーションとはいえ、物体の分割等はすでに破壊されたメッシュを用意しておくなどオフライン的なテクニックも紹介されていた。

数式による破壊シミュレーションの紹介が主だったのだが、数式はメモれなかった。
詳しくは資料を参照してほしいのだが、資料公開はCEDECのサイトで参加者のみぽい orz

・IMAGIRE DAY :3Dゲーム開発マニアックス
西川氏がMC、今給黎氏、石田氏、藤田氏、川瀬氏、田村氏、五反田氏 の豪華面子でのパネルディスカッション。
このセッションのみ撮影や録音が許可されていたが、機材は持っていなかったため残念。

以下セッションのメモ

・GIはゲームグラフィクスに必要か
動的GIをやりたいけど大変 (五
GIはゲームに合わせて利用すべき (藤
SSAOは負荷が高い。クオリティを見ると厳しい? (川

・Windows7, DirectX11 はどう受け止めているか?
Dx11 はプログラマブルな計算ユニットが利用できるが、APIが追いついていない (今
Dx11 はごちゃごちゃしてる感じ (五
シェーダが増えていくのは限界が来る。いずれパイプラインのリセットがあるかも (田
MT Framework はDx10ベースでやってます。次はDx11ベース (石
ラスタライズの問題、LODをやる作業のコスト、自動LOD等考えればやっていきたい (五
ゲーム全てがレイトレにはならない (藤

・GPGPUとの向き合い方
Dx11 のCompute Shader の登場で、GPGPU は利用しやすくなった (田
ミドルウェアに利用するのもあり (川

・プロシージャル
つまらない動きになってしまわないように、アーティストがラクできるように利用する (石
プロシージャルの導入は必要だし、効率の問題で導入すべき (五

・物理シミュレーションとの向き合い方
シミュレーションの制御はいかに面白く使うか (今
ゲームとの上手な融合が課題 (今

・ゲームエンジンとミドルウェア
MT Framework 1.0系はシェーダが拡張しにくかった。そのため絵に違いが出しにくかった (石
MT Framework 2.0系は拡張しやすいので、その点は問題が解決した (石
ミドルウェアを利用するかどうかは会社の需要に合わせてやるべき (川

・マルチスレッドプログラミングのためのプログラム言語、環境
プログラマはこの問題に向かい合うべき (五
コンパイラメーカが並列化してくれるのにも期待 (五
最適化のトレンドが変わってきている。C言語は難しい。動的最適化のような仕組みが欲しい (五

・モンスターハンター フロンティア オンライン(MHF)のビジネス概論
モンスターハンターフロンティアの運営、ビジネスモデルの話
結構問題を抱えている話が聞けたが、特筆すべき点はそこまで無かった。

・面白かった点
カップルキャンペーンやグループキャンペーンが好評
ゲームマスターの廃止
チート対策が大変、対策委員会を設置

・まとめ
ゲームに合った独自のビジネスモデルの構築、ガチャガチャで稼ぐのは将来がない
業務効率とスピード、運営はスピードが重要
3,5年先を見据えた運営対策作り。開発と運営、お互いに尊敬する意識が必要
運営チームは少なくあるべき

期間が空いたけど、2日目は下記に参加してきました。

・慣れたら死ぬぞ
・Crytek社ゲームグラフィックスの将来に向けて!Future of Gaming Graphics
・スケーラブルな並列化
・最新モバイル3Dグラフィックスプログラミング入門
・モバイルゲーム・パネルトーク 〜 その無限の可能性を体感する60分 〜

まぁ、そこまで興奮する話は無かったんだよね。
だいたいこんな感じの話。

・慣れたら死ぬぞ
富野氏はゲームが大嫌い。ゲームなんていらない。くやしかったら俺を黙らせてみろ。
などツンツンとした挑戦的な話で始まって、途中でちょっとデレて、最後にまたツンツンしていた。

・Crytek社ゲームグラフィックスの将来に向けて!Future of Gaming Graphics

CryEngineの紹介
プロシージャルおいしいよ、ゲームグラフィクスの次の変化は2012年頃じゃないかな?

・スケーラブルな並列化
並列化っていろいろあるけど、VisualStudio使えばほら簡単に並列化できるよ

・最新モバイル3Dグラフィックスプログラミング入門
OpenGL ES 2.0 はすごいけど、下位の機種を考えると OpenGL ES 1.0 で頑張らないといけない

・モバイルゲーム・パネルトーク 〜 その無限の可能性を体感する60分 〜

Android マーケットは Apple ストアみたいなもんだよ。野良アプリもOKだよ
 
 
モバイル3Dグラフィクスの話は、結構面白かった。最近は携帯でこれだけポリゴン表示できるのね。
OpenGL ES 2.0 になってしまうけど、シェーダも使えるしね。

CEDEC の話でも。
参加したセッションは下記。

・情報技術はどこへ行くのか?−主役は交代している−
・MMOゲームサーバープログラミングの実際
・バグを限りなくゼロにする方法
・ソウルキャリバーシリーズ、ビジュアルプログラミングについて
・P2P通信技術: BitTorrentプロトコルを用いた大容量データ配信
・Android Marketで配信するアプリ開発するコツ

MMO と P2P が面白かったので、その話を紹介。

MMO
MMOゲームサーバプログラミングにおけるボトルネックはデータベース。
データベースの速度、ボトルネック等を考慮した上でのサーバプログラムの実装について紹介。
クライアントがゲームなので、DBに書き込み、読み込みをしてゲームを遅延させる分けにはいかない。
DB処理は非同期で行う必要がある。
これを解決するためには、クライアントとDBの間に非同期化サーバを入れてやる。
このサーバが一元化、非同期化を行い、DB処理を順次行う。
どこかのタイミングでクライアントに結果をコールバックする。

WEBアプリケーションはDB操作がボトルネックになりやすいのを、非同期化処理によってクライアントには影響ないようにした例。
このような実装をしているメーカーは多いとも言っていた。

P2P
KONAMIのメタルギアソリッドのアップデートパッチ配布を例に紹介された話。
パッチの配布は、公開開始の時機にアクセスが集中しやすい。ピークに合わせて配信サーバを用意するのは高コスト。
CDNやISPキャッシュを利用することでもアクセスの集中に対応できるが、やはり高コスト。

そこで P2P(BitTorrent) の利用を選択。選択した理由は下記。
・配信管理可能
・匿名性なし
・技術的にこなれている
・商用あり

結果として統計で下記を実現
・70%以上のオフロード率を達成
・非常に小さく、安定したトラフィック

今後の課題
・メモリ不足によって接続数が少ない
・ADSL の昇りが遅い(北米、欧州ではADSLが主流)
・ネットワーク距離が長いと遅い
・ISP制限のかかったピアの存在
・NAT越えが困難

非常に面白い話題であった。このP2Pによるパッチ配布は PS3 と PCで実際に行われたらしい。
コンソールゲームに P2P を利用してパッチ配布というと企業は嫌がりそうなものなのに。
結果としてトラフィック分散と費用の削減ができたので、今後はこのような手法が増えて行くかもしれない。

自動整形機能のイライラを軽減するGoogle Syntax Highlighterプラグイン

どんな感じになるだろう。
ログ周りを追加してたコードの破片をぺたり。

#ifdef USE_DIRECTX8
    typedef D3DCAPS8 D3DCAPSX;
#endif

#ifdef USE_DIRECTX9
    typedef D3DCAPS9 D3DCAPSX;
#endif

#ifdef USE_DIRECTX10 // 今のところ未使用
    typedef D3DCAPS10 D3DCAPSX;
#endif

    D3DCAPSX caps;
    ZeroMemory(&caps, sizeof(D3DCAPSX));
    pDevice_->GetDeviceCaps(&caps);

    struct local {
        static const TCHAR* check(const bool v) {
            return v ? _T("○") : _T("×");
        }
    };

    typedef boost::format format;
    typedef TreeLogger logger;

    logger root("D3DCAPS", ofs, true);

おぉ、結構いい感じ!!

下記の日程で CEDEC 2009 参加予定です。
今回はグラフィクス関係のセッション少ないなぁー。
Squirrel は前年度の CEDEC でのセッションは物足りない内容でしたので、今回こそはと期待しています。
 
 
9月1日(火)

9:45〜11:05
情報技術はどこへ行くのか?−主役は交代している−

 原島 博 / 東京大学

11:20〜12:20
MMOゲームサーバープログラミングの実際

 中嶋 謙互 / コミュニティーエンジン株式会社

13:30〜14:30
バグを限りなくゼロにする方法

 伊藤 周 / 株式会社セガ

14:50〜15:50
ソウルキャリバーシリーズ、ビジュアルプログラミングについて

 岩永 欣仁 / 株式会社バンダイナムコゲームス

16:30〜17:30
P2P通信技術: BitTorrentプロトコルを用いた大容量データ配信

 佐藤 良 / 株式会社コナミデジタルエンタテインメント

17:50〜18:50
Android Marketで配信するアプリ開発するコツ

 遠藤 大介、西岡 光治 / 株式会社ハドソン

 
 
9月2日(水)

9:45〜11:05
慣れたら死ぬぞ

 富野 由悠季 /

11:20〜12:20
ライトユーザー市場を狙え!携帯向けFlash Liteゲームの企画立案方法

 南 治輝 / 株式会社ORSO

13:30〜14:30
スケーラブルな並列化

 川西 裕幸 / マイクロソフト株式会社

14:50〜15:50
最新モバイル3Dグラフィックスプログラミング入門

 香田 夏雄 / 株式会社ヒュージスケールリアリティ

16:30〜17:30
モバイルゲーム・パネルトーク 〜 その無限の可能性を体感する60分 〜

 柴田 真人 / 株式会社ハドソン
 手塚 武 / 株式会社カプコン
 近藤 貴浩 / 株式会社バンダイナムコゲームス
 岡本 征史 / 株式会社ゲームズアリーナ

 
 
9月3日(木)

9:45〜11:05
『国民的ゲームとは何か? 〜ドラゴンクエストの場合〜』

 堀井 雄二 /
 市村 龍太郎、藤澤 仁 / 株式会社スクウェア・エニックス

11:20〜12:20
Squirrelを使ったゲーム開発 Part II

 北出 智、神尾 隆司 / 株式会社スクウェア・エニックス

13:30〜14:30
IMAGIRE DAY : 続・レンダリスト養成講座

 田村 尚希、川瀬 正樹 / シリコンスタジオ株式会社

14:50〜15:50
IMAGIRE DAY :破壊シミュレーション入門

 今給黎 隆 / 株式会社バンダイナムコゲームス

16:30〜17:30
IMAGIRE DAY :3Dゲーム開発マニアックス

 今給黎 隆 / 株式会社バンダイナムコゲームス
 西川 善司 / トライゼット
 川瀬 正樹、田村 尚希 / シリコンスタジオ株式会社
 五反田 義治 / 株式会社トライエース
 石田 智史 / 株式会社カプコン
 藤田 将洋 / ライトトランスポートエンタテイメント株式会社

17:50〜18:50
モンスターハンター フロンティア オンライン(MHF)のビジネス概論

 杉浦 一徳 / 株式会社カプコン

emacs 23 がリリースされたので、各環境で乗り換えました。
とりあえず、mac の方のフォント設定がこけたので mac用 に別途設定。
以下のようにしました。

;; .emacs
(defvar run-darwin (equal system-type 'darwin))

;; Emacs の種類, version 判別
(defvar run-emacs20
  (and (equal emacs-major-version 20)
       (null (featurep 'xemacs))))
(defvar run-emacs21
  (and (equal emacs-major-version 21)
       (null (featurep 'xemacs))))
(defvar run-emacs22
  (and (equal emacs-major-version 22)
       (null (featurep 'xemacs))))
(defvar run-emacs23
  (and (equal emacs-major-version 23)
       (null (featurep 'xemacs))))
(defvar run-meadow (featurep 'meadow))
(defvar run-meadow1 (and run-meadow run-emacs20))
(defvar run-meadow2 (and run-meadow run-emacs21))
(defvar run-meadow3 (and run-meadow run-emacs22))
(defvar run-xemacs (featurep 'xemacs))
(defvar run-xemacs-no-mule
  (and run-xemacs (not (featurep 'mule))))
(defvar run-carbon-emacs (and run-darwin window-system))

;; mac 用設定読み込み
(when (or run-xemacs run-darwin)
  (load "init-mac"))

;; ---------------------------------------------------
;; init-mac.el
(when run-emacs23
  (set-face-attribute 'default nil
                      :family "Monaco"
                      :height 120)
  (set-fontset-font "fontset-default"
                    'japanese-jisx0208
                    '("Osaka" . "iso10646-1"))
  (set-fontset-font "fontset-default"
                    'katakana-jisx0201
                    '("Osaka" . "iso10646-1"))
  (setq face-font-rescale-alist
        '((".*Monaco-bold.*" . 1.0)
          (".*Monaco-medium.*" . 1.0)
          (".*Osaka-bold.*" . 1.2)
          (".*Osaka-medium.*" . 1.2)
          ("-cdac$" . 1.4)))
  )

日本語は Osaka, コード書く上では 等幅がいいので ascii の方は Monaco です。

# syntax highligher に lisp が無いので見づらくなってしまった。。

PC版 ストリートファイター IV が届きました。
玄関のドア開けたら袋に入ってぶら下がっているとか扱いがひどかったけど。
佐川急便さんはどういう神経してるんでしょうか。

street fighter iv

Radeon 4770 に乗り換えたよ。
アンチエリアスの設定忘れてたけど、他の設定は全部最高にしてベンチマークテストしてみた。

street fighter iv

快適にプレイできそうです。

C++本16冊すべて届きました
C++本を積んでみた

C++本を積んでいるのを見て、自分も整理も兼ねて積んでみた。
明らかに足りていない本があるんだけど、会社か・・・
book

稲葉さんの Boost 本古いよ。でも第3版を待ったほうが良さそう。
よく見ると C++/CLI 混じってた。