A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.

UOKR

今日からオープンベータが始まったUltimaOnline蘇りし王国ですが、早速ダウンロードしてきました。アカウントは止まっちゃったので、体験版アカウントで侵入。 …結果… 重すぎ、、、目が疲れる、、、 なんか、結局UO3Dの見た目をよくしただけって感じ。まぁ、安定はしているのかな。 やってみると、やっぱりUOは初期の2Dクライアントが一番いいのかなぁ、って感じ。インターフェースもあたらしくなっちゃってなじめないし。 とりあえず、某ギルドの方々には懐かしいスクリーンショットをゲットしてきました。

人が降り立った

前回から大分時間が経ちましたがまたDirectXなプログラミングネタです。とりあえず、以下のような機能ができあがりました。

世界が広がった。 人が降り立った。

前回の舞台は100×100ポリゴン(実際にポリゴンは三角形なので、1×1の中には2枚のポリゴンが居ます)でしたが、今回は1000×1000ポリゴンです。

…と簡単に書きましたが、ここでいろいろやっています。まず、1000×1000のフィールドデータを一つ一つ作るのは面倒なので、お絵かきツールで地図を描いてそれを読み込むっていうのをまずやりました。まぁ、そこは難しくないけどね。

さらに、地平線の彼方にメモリを食われるのは勿体ないので、それを分割して、ある程度移動する毎に必要なデータを読み込むという処理をしています。簡単に書いたけど、案外計算が面倒です。 なので、データさえ作れば1000×1000以上も余裕で可能。さらに、フィールドデータの無いエリアを越えるとどうなるかというと、永遠と海が続きます。見えない壁にぶつかるのは虚しいですからね。 あとは、読み込む時に一瞬止まるので、データ読み込みとかを別スレッドで動かせればなぁと考えつつ、まだやってません。 「人」は、身動きしないモデルデータを読み込むのは簡単だけど、アニメーションするモデル(歩いたり走ったり)を処理するのはちょっと大変でした。次はたとえば剣を持ったら剣を表示とか、そういうオブジェクトの合成を考えないと…って感じ。 その辺まで出来れば、木とか建物とかのオブジェクトを管理するモジュールを作って、仮想世界の中にばらまけばソレっぽくなるかな。 ちなみに、この仮想世界の中でカメラを動かせますが、そこにもいくつか問題があります。たとえば、マウスをクリックするとそこに移動とか。 3Dモデルは、適当に3次元のベクトル座標を食わせれば、内部で擬似的に3D空間を作りつつ、カメラの位置にあわせで2Dに変換して画面へ表現するってことをほぼ自動でやってくれます。 しかし、2D空間でクリックした場合、それを3次元空間に変換して、クリックされたのは目の前のオブジェクトか、先のオブジェクトか〜なんて判定をしてやらないとなりません。…これってどうやるんだろう?(^^; あと、キャラクターの移動は単純に考えています。マビノギや、リネージュ、FFXIのようにスムーズにどこでも移動とは考えていません。仮想空間の中に擬似的に50cm四方の「マス」が存在していて、そこに移動します。つまり、ラグナロクオンラインみたいに、移動先は四角いマスの中になります。しかも、8方向の移動しか考えてません。 リアリティには欠けるけど、その先にある、人と人、人と物の衝突判定は、その50cm四方だけを考えればいいので、処理的には全然楽になります。 いろいろ書いたけど、まぁまだまだやることはいっぱいあるって感じ。

 

ミカンせいじん

職場で話題が出て懐かしくなって検索してみたら結構長いムービを見つけた。 http://www.youtube.com/watch?v=X2KnNLlPaZs 相変わらず面白い^^ 上のムービはあにきも収録されてます。 あと、全然関係ないがいろいろ見ていたらDDR(ダンスダンスレボリューションというダンスゲーム)のすごいムービも発見。 http://www.youtube.com/watch?v=uIt-sv6zQZY 今更ながら、改めてYouTubeのおもしろさに感服

DirectXなネタ

なんか、最近プログラミングなネタばっかりですみません。 ってことで、また最近熱が入っているDirectXなネタ。 前回、影のコントロールが出来たので、今回は地形データをいじってみた。前回までは配列に手で一つ一つデータを入れていたんだけど、今回はペイントで描いた平面図をデータ変換して読み込ませてみた。ちょっと中国の山々みたいだけどね… モデルデータサイズも前回は20×20ポリゴンから、今回は100×100ポリゴンまで増やしてます(あ、あと海面も付加)。 あとは、モデルの中を移動する際に、動的に必要な分だけポリゴンをモデリングする機能を作れば、仮想世界の中での移動ができそう。 テクスチャとか、影の落とし方とかがショボいけど、テクニカルな部分は後回し。

法線その2(昨日の続き)

かんぺき♪やっと美しい影が付きました。 …今日のブログはこれだけw

法線

本題に入る前に〜…いや、DirectX(3Dゲームでよく使われるプログラムの基盤みたいなの)でプログラミングをしている訳ですが、ここまで作るのに実は一ヶ月くらいかかってるのよ。ウインドウを汎用的に表示てきるモジュールと、地面っぽいのを出すモジュール。まぁ、地面っぽいのはまだ制作途中だけど。 で、本題ですが、この地面おかしくないですか?立体なんですが、影がありません。 いろんな本とかネットで調べた結果、原因が分かりました。 こういう3D画像って「面」の集まりだけど、その一つの面に垂直な線を引きます(そういうイメージをしてみて下さい)。で、光はその面に当たると、面に垂直な線を軸にその反対側へ反射しますよね?その軸のことを「法線」って言います。

実は、この地面。その法線がすべて上を向いています。だから、どこの面に光が当たっても平らな地面と同じ反射の仕方をします。なので、陰影が無いと… … めんどくせぇな…そのくらい上手くやってよ… と、思いつつ法線計算ロジックを探しながら、一晩かけて作ってみました。 ※3Dモデリングツールとかで作れば、勝手に計算してくれるんだけどね。これは動的に地面を生成したいので、こつこつ計算して作ってます。

結果 なんか、この影嘘臭くね? 続きは明日でいいや…orz

ブログの設定を変更しました。

なんだか、トップページに置いてあったブログのカレンダーの日付がリンクになっていたおかげで、サーチエンジンのロボットが全部のリンクを網羅しようと、やたらとアクセスがありました。 そんな訳で、カレンダーを撤廃しちゃいました。 過去のブログへは投稿した月のリングが残ってるので、そこからアクセスして下さい。

DirectXっぽい備忘録

管理者のメモです。まぁ、興味のある人は読んでも損にはならないかも。 2007年5月時点での情報なので、鮮度にご注意を。

DirectX

Microsoftが作ったマルチメディア処理用API群。 最新はDirectX10だけど、WindowsVista以降にしか入ってないし入らない。 以下のコンポーネントを含んでいる。

DirectX Graphics…2D/3D処理。Direct3DとかDirectDrawとか言われていたものが統合されたモノ。 DirectX Audio…BGMとかSEの再生。 DirectInput…主にキーボードとマウスとジョイスティック制御。 DirectPlay…ネットワーク系。 DirectShow…動画再生とか? Managed DirectX

.NET FrameworkベースのアプリからDirectXを呼ぶ為のAPI。 今後はMicrosoft XNAに置き換わる。

Microsoft XNA

いろんなプラットホームに対応するように見せかけた、ゲーム開発用フレームワークで、WindowsとXBox360に対応している。年間一万円くらい払えばこれでXBox互換ゲームも作れる(作ってもプレイヤーも年間一万円くらい払わないと出来ない)。 開発言語はC#。 ボーンスキャニング、ネットワーク系のコンポーネントが遅れてる?

OpenGL

オープンソースのグラフィックライブラリ。マイクロソフトとは直接関係ない。 純然たるDirectX以外の最近のテクノロジーはまだまだって感じ。ある程度形がしっかりしたらいい感じになるのかな(でも今からC#なんて覚えたくない)。 開発ツールが無料になった分、マイクロソフトも成長したなぁと思う。

ゲーム検定

ゲーム検定というのがあったのでやってみました。ゲームと言っても家庭用ゲーム機中心ですな。 http://ent.nikkeibp.co.jp/cgi-bin/ent_game.cgi 100問もあるんで、ちと大変でしたが。 あなたの総合得点は57点 全国平均 52点 全国順位(5月12日 22時現在) 48647位(160403人中) −−ジャンル別得点表−−−−−−−−−−−− 0_________50____ ハードウェア ■■■■■■■■■■■■ ゲームシステム&テクニック■■■■■■■■■■■■ キャラクター ■■■■■■■■■■■■■ ビジネス ■■■■■■■■■■ 雑学 ■■■■■■■■■ −−−−−−−−−−−−−−−−−−−−−−−−−− −−講評−−−−−−−−−−−−−−−−−−−−− あなたは「ゲーム大臣」 これだけの知識があれば、たいていのゲーム好きの人間 とは楽しく会話ができるはず。しかし、この先、もっと 深く広い知識を得ることで、世界はさらに広がるだろう。 貴方がもっとも詳しいゲームのジャンル: キャラクター 貴方がもっとも詳しいゲームの年代: 80年代後半までのゲーム誕生期 −−−−−−−−−−−−−−−−−−−−−−−−−− …いろんな意味で…orz 正直わからんところはわからんって選択肢が欲しいなぁ。たぶん、正解の中の4割くらいはわかって、4割くらいはわかんなくて適当。2割くらいはなんか微妙に知ってそうな問題だった。キャラクター問題なんて特によく知らない部類だし。 つうか、これ本当に16万人もやっているのか!?

ギガビットネットワーク

Amazon:B0002I7XEQ 最近のパソコンに付いたネットワークポートはギガビットネットワーク対応だけど、中継機器(ハブとか)があまり安くなってないですね。そんな訳で、しばらく対応して居なかったのですが、このG/W中にいろいろ高速化しました。 うちの家庭内LANは、 -FTTH—ルータ—ハブ—–マイPC1 | |-マイPC2 |–親のPC |–サーバ って感じですが、ルータがちょっと古め(NetGenesisOPT:カタログスペックで30Mbps)だったんですが、今回は上の写真のNetGenesis SuperOPT-GFiveというやつにしました(途中のハブもギガビット対応済み)。 …っていうか、こんなのまでamazonで扱ってるのね… で、測定結果。 ※上記のマイPC1でウイルスソフトを止めて測定。以下の結果はいずれも3回ずつやった最高値。 ダウンロード OLD:推定転送速度: 21887.044kbps(21.887Mbps) 2735.43kB/sec NEW:推定転送速度: 55467.542kbps(55.467Mbps) 6933.01kB/sec アップロード OLD:データ転送速度: 15.62Mbps (1.95MB/sec) NEW:データ転送速度: 72.72Mbps (9.09MB/sec) 思ったより早いなー。特にここのサイトを見る時は自宅サーバなので、「アップロード」の性能がそのまま結果に反映されます。 ってことで、閲覧速度も速くなったかな?

本とか

職業柄…ではなく、趣味でよく本を読みます。基本はコミックとコンピュータ関連の専門誌。プログラムの本とかよく読むけど、職業プログラマーじゃ無いからね。でも、実は活字は嫌いなので、専門誌を買っても実際読むのは数ページだけです。 Amazon:475773526X まずは、ゲーム関係。 「THE NETGAMES ウルティマオンライン」某所を見ていたら載っていました。「これまでの様々な非公開イラストおよび設定資料などを掲載」ってのを見て、Amazonで即買いです(UOはもうやってないんだけどねw)。 Amazonの紹介に「UOKRの情報漫画(イラスト:まゆも@さん)」ってのが書いてありました。この人のイラストは独特で好きなんだよなぁ。 Amazon:4063406326 最近読んでるコミック。 「のだめカンタービレ」前から読みたいなぁと思っててやっとG/Wに入ってから読み始めました。ドラマとかアニメとかでもやってる(やってた?)みたいだけど、そっちは見てません。 只今、6巻まで読破。ストーリは音大での生活〜みたいな感じ。なんて言うか、全体的にギャグっぽいけど、時々まじめにクラシックをやってみるとかみたいな感じ。時々入ってくるギャグが鋭くって面白いです。月刊マガジンのBECKもそうだけど、音楽系のマンガってギャグ系に走ってるの多いね(笑)。 Amazon:477751272X 最近読んだ専門誌。 「DirectX9実践プログラミング」。DirectXの初歩的な内容ですが、特にDXUTに詳しいです。DXUT(DirectX SDKはFebruary 2007)の基本的なことを詳しく知りたい人にはお勧め。リファレンスとしては浅いところまでしか書いてないです。 ちなみに、私はDXUTで昨日のブログの通りハマっているので、お勧めしていいか悪いかは微妙〜。

きれいだったのでつい。10倍光学ズーム+4倍デジタルズーム。露出とか調整出来ればもう少しきれいに撮れたんだけど…

キャレット

カーソルには、マウスカーソルとワープロとかで文字を打つ場所にあるカーソルの二種類あるわけですが、文字を打つ場所にあるカーソルのことを「キャレット(caret)」って言います。 Windowsが出来る前の時代は普通にカーソルって言っていましたが、Windows時代になってキャレットって言うようになったそうな。

つうか、そんなのプログラマーくらいしか知らないよ。

で、4/29のブログにDirectXっぽいネタを書きましたが、今は3D描画では無くて、UI(ユーザインターフェース)…つまり文字とかコマンドを入力するようなところにチャレンジしています。 普通のWindowsのプログラムなら、画面上にボタンとかテキストボックスとかをペタペタ貼るだけで作れます。しかし、DirectXにはそんなものはありません。ボタンなら、ボタンの四角い枠から、ボタン上の文字、ボタンをクリックしたという処理とか、クリックした時に凹んだ画像までそういうプログラムを全部書きます。 文字入力のコピペ処理なんて、文字の選択中は選択範囲の色を反転させるとか、CTRL+Cを押すとどうのとか、考えるだけでイヤになります。 …ってのはまぁ面倒なので、DirectXのSDK(Software Development Kit:ソフトウェア開発キット)にDXUTというオマケが付いているので、今回はそれを利用。 だがしかし!うまく動きませんorz テキストボックスにメッセージを入力すると、普通はカーソル(キャレット)は右に移動しますが、移動しません(T_T DXUTのサンプルでCustomUIというのがありますが、それも同様。試しに別のパソコン(Windows2000)で試しても同じ。 う〜む。 ググってもそれっぽい情報が出てこないんだよなぁ〜。うちだけの問題なのかなぁ。 とりあえず、DXUTのソースを追ってみると、

CDXUTEditBox::Render(エディットボックスの描画処理)内にあるm_nCaretがどうもカーソルの位置を示しているっぽい。 「hr = m_Buffer.CPtoX( m_nCaret, FALSE, &nCaretX );」ってところで、m_nCaretと文字情報から、実際の相対座標をnCaretXに格納してるっぽいが、nCaretXには常にゼロが入っている。 ↑のCPtoX(CUniBuffer::CPtoX)を辿ると、「Analyse();」という関数が常にE_NOTIMPL(そんなオブジェクトねぇよ)を返している。 ↑のAnalyse(CUniBuffer::Analyse)を辿ると、_ScriptStringAnalyseが常にE_NOTIMPLを返している。

って感じ。それ以上先はわからん。ScriptStringAnalyseはusp10.dllってところで処理が動いているみたいだけど、このDLLのバージョンを変えてみたりとかしてもダメだったので、とりあえずギブ。 … あぁ〜。今日の昼に食べた寿司は旨かったなぁ…(←現実逃避) … とりあえず、m_nCaretにカーソルの位置が入っているので、その分の適当な数字をCPtoXの中でnCaretXに入れてやるとうまく動く感じ(実際には全角1文字も半角1文字と判断しているようで、全角文字を入れるとおかしくなる)。 まぁ、この辺はフォントクラスから情報を貰ってごにょごにゅすればうまくいくのかな。いい加減時間をかけるのが勿体ないので、そんな方向で逃げよう。

そういえば、マビノギ(ネットワークゲーム)でも最近のパッチで文字入力(漢字変換)がおかしくなったけど、ゲームの開発者も同じような苦悩をしているのかな。

[…]

これからのネットゲー

久々にROBINのまんがコーナーでマンガを読んだ。相変わらず面白いな〜。 私がネットワークゲームの世界にはまった原因がまさにこのマンガ(BRITANNIAの勇者達)で、UltimaOnlineを題材にしたもの。 当時のネットワークゲームは、今のみたいに制限がほとんどなく、同じサーバにいろんな国の人が居たりとか、PK(ゲーム内で他の人のキャラを殺すこと)の制限が無いとか、死ぬとそこに死体が残ってそこからアイテムを盗んだりとかが出来た。 まぁ、このマンガはそれをおもしろおかしく描いてるけど、実際にそれがゲームの中で繰り広げられていた訳。 そこで、今までのネットワークゲームを振り返ってみる。 過去にゲーセンやコンシューマ(ファミコンとかの家庭用ゲーム機)の時代があったけど、どれにしても今やネットワーク対応ゲームであることが、一つの基盤になりつつある。 所謂対戦ゲームが単にインターネットというインフラに乗っただけと言えばそれだけだけどね。ただ、UltimaOnline(UO)の時代くらいから始まったMMO(多人数参加型)ゲームは、安定期というかむしろ衰退の方向に向かっている。 UOは確かによく出来たゲームだった。リチャード・ギャリオットという人の知識と経験と資本のなせた技とも言えるけど、それ以降それを大きく超えるゲームは見あたらない。 確かに攻城戦が面白いとか、画像のクオリティが高いとかはある。だけど、MMOというゲームは開発にかかる時間と費用と、その運用コストを考えると、攻城戦「だけ」とか、風景がきれい「だけ」ではビジネスに成り立たない。それが、今の衰退の原因のような気がする。 UOの何がよかったのか? プレイ時間に差があっても、古参/新参プレイヤーが一緒に遊べる(シンプルな装備、スキル制によるもの)。 遊びの幅が広い。40を超えるスキルがあったが、ROみたいに技ごとでは無く、1つ1つが個性的なスキルだった。たとえば、剣技、魔法、採掘、裁縫、大工、乞食、楽器、牧羊、検屍、弓、鑑定などなど。 「家」が持てた。また、内装などもかなり凝れた。 プレイヤーによるサポートシステム。 経済システム(莫大な金持ちが生まれづらい)。 こういった幅の広さと、プレイヤー同士の差の狭さが一つのブームの火付け役として貢献したんではないかなぁ、と思う。 でも、そのUOも度重なるパッチでシステムが複雑になり、また他のネットワークゲームが増えてきたことから、人が離れていった。 しかし、新天地にあったのは、ただの戦闘ゲームだったり、非ネットワークゲームに比べたら全く世界感の狭いものばかり。 結果、アメリカではオンラインゲームはかなり衰退していった。韓国は「国」がオンラインゲーム発展の為に助成があるらしい。また、日本に近くて「萌え」文化が存在する。 日本は、FFXIとか、モンスターハンターとかあるけど、オンラインゲーム自体がほとんど輸入に頼っていて、代理店自体は「販売店」としてとっかえひっかえゲームを売っているので、そういったベンダーに愛を感じ無いところがある。 果たして今後のオンラインゲームはどのように進化を遂げていくんだろう。 ※画像は上からUltimaOnline、CrossGate、RagnarokOnline(β版の時なので文字化けしてる)、FinalFantasyXI、マビノギ

[…]

2007年4月30日富山を満喫

今回は富山に行ってきました。…と、言っても去年、一昨年に引き続き実は3回目です(なので、あんまり写真を撮りませんでした)。まぁ、場所はいいところですからね。 富山はこれと言って名物とかあまりよく知りません。むしろ能登半島の方が輪島とか有名どころが多いですが、能登は石川県で、富山県はそのとなりです。 今回は車(と言ってもほとんど友達が運転^^;)で行きました。写真の駅はJR氷見線の雨晴の駅です。 まずは、氷見線で高岡駅まで向かい、軽く朝食を食べてそこから路面電車の万葉線で越の潟まで。この万葉線が実に面白くて、始めは路面電車(つまり路面上のレールを走って、バスのように降りるときにブザーを鳴らすと止めてくれる)なんですが、そのうち住宅地や工場地を抜けていきますが、そちらは普通の電車と変わらない風景です。でも、あくまで路面電車なので、ブザーを鳴らさないと駅を素通りします(笑)。 越の潟からはフェリーが出ています。乗船時間は5分程度ですが、自転車とかバイクで通勤通学に使われているようですね。 この写真は船上から撮ったのですが、見ての通り大きな橋が建設中です。これが出来たらなくなっちゃうんですかね。ちなみにフェリーは無料。 フェリーはネタ程度に往復して(ちなみに対岸は住宅地や工場地で見回れるところは無いです)、時間があったので、越の潟の隣の海王丸(駅)まで行き、帆船の海王丸をさっと観光(冒頭の写真)。 その後、伏木という駅の近くに渡し船(如意の渡し)があるので、それに乗って伏木駅へ。一度雨晴に戻って、車で高岡駅に戻って駅弁を購入(ちなみにAM11時にならないとほとんど駅弁が出てないので、時間調整の為このルートを使用)。 雨晴海岸で購入した駅弁で昼食。今回は三色ちらし弁当です。唐揚げとかエビ天とか入っていて美味しかったです。 ちなみに天気がいいと、海岸から立山連峰が見えますが、今回は空気が淀んでいたようで見えませんでした。この写真は2年前に撮った物 。 帰りがけによった喫茶店ブルートレイン。ここはコミックの鉄子の旅でも紹介されているのですが、店内にHOゲージ(Nゲージより大きい鉄道模型)が走っていて、店内の装いもまるで食堂車。あちこちに店主のこだわりを感じられます。私はアイスコーヒを飲んだのですが、友達が飲んだカプチーノが最高に美味しかったです。

[…]