カテゴリー

アクセスカウンター


since 1996/06/14

Count per Day

  • 0今日の訪問者数:
  • 63昨日の訪問者数:
  • 1091月別訪問者数:
  • 0現在オンライン中の人数:

ハッピーマンデー(笑)

 さて、三連休ですね。
祝日を月曜日にして三連休にするという制度が出来たおかげで、ゆっくり休めます。
でも、「ハッピーマンデー制度」ってネーミングセンスのかけらも無い名前はどうかと思います。
 この休みは特に旅行の予定も無いので、友達とカラオケに行ったり、パソコンラックを組み直したりくらいしかしない予定。まぁ、台風も来るので遠出できそうなところもなかなか無いですね。
 あ、でもちょっと面白いツールを作ってるので、公開するかも?
こうご期待(期待するほどの物でもないが…)

変な日本語

 仕事とかでeMailが手放せなくなってから早数年が経ちました。おかげでまじめな仕事のメールの中に、微笑ましい誤変換があったりして、一服の清涼剤となっていますねw
 まぁ、仕事中にそれらしい話をしていたら、誤変換系のサイトを教えて貰いました。
 中にはわざとらしいのもありますが、「あーアルアル」ってものいくつかあって笑えます。
http://www.dfnt.net/t/photo/your/gohenkan01.shtml
http://www.kanken.or.jp/henkan/happyou.html
 誤変換と言えば、それを検索サイトで検索しちゃうのが一昔前に流行りました。で、未だに謎なのが、大使館→大便館の誤記(お食事中の方、スミマセンm(__)m)。
 そんな間違え無いだろうと思うかもしれませんが、これがまた結構あったんですよ。
最近は少ないですが、Yahooとかで探すと素で間違ってるっぽいのは未だにあります。
 これは、意図的としか思えません。
 あと、微妙に「誤」では無いですが、「アジアのいかしたTシャツ」というサイトがあります。
http://sunao.s2.xrea.com/
 ショッカーライダー13とか書いてあるTシャツとかw
微妙に着てみたい気もしますね。
 ちなみに、うちには私の名前(名字)が入ったTシャツがありますw。
とある国のブランドなので、ネタでは無く普通のTシャツなんですけどね。

検索ワードに答えてみる

 Webサイトを作った人は知ってると思いますが、いろいろとアクセス解析が出来ます。その中に、たとえばgoogleとかでどういう検索ワードで来たのかとかもわかりますが、検索してこのサイトに来た人が、内容を見てガックリってのも多いと思うので、最近の検索ワードに答えてみようと思います。

tcp113 Redhat

 identまたはauthってやつですね。
メールの送受信の時にこの通信が発生することがありますが、ほとんど使われてないので、意図していなければ止めましょう(メールは送信は25番、受信は110番なので、113番は使用しなくても普通は問題無いはず)。
 たとえば、qmailはタイムアウトまで30数秒待たされるので、ドロップフィルタされてるとそのくらい待たされます。

qmail 起動スクリプト

 qmailの起動スクリプトは結構たいへんですね。このサイトでもqmailでメールサーバでいくつか紹介しています。
 qmailなどのデーモンは、通常スーパサーバと呼ばれるラッパーから呼ばれます。有名所では、inetd、xinetdですね。これらはTCPラッパーを備えているのでアクセス制限しやすい上に、qmailと外界のインターネットとの境界にさらに壁を作るようなイメージなので、セキュリティ的にも良いです。また、qmailは同じ作者が作ったucspi-tcpとの相性がいいですね。ただ、クセがあるので、個人的にはちょっと設定が大変ですがxinetdなどにした方がいいんじゃないかなぁと思います。

Apache2.2 httpd.conf バーチャルホスト IPベース

 この検索ワードは目的がちょっとわかんないけど、こんな感じかな。

 以下のように書くと、アクセスのしかたによって表示されるサイトが変わります。複数のIPアドレスを持ってる場合はそれぞれ書けばその通りになるかな。
ホスト名も実ドメインだろうが、エイリアスだろうが、設定した分反映されます。
まぁそういう場合は、設定してないアドレス(デフォルト)の設定にも注意。

 NameVirtualHost IPアドレス
 # 「http://IPアドレス/」へアクセスしてきた時
 <VirtualHost IPアドレス>
   ServerName IPアドレス
   DocumentRoot /home/xxx
   <Directory /home/xxx>
     # ディレクトリの設定とか
   </Directory>
 </VirtualHost>
 
 # 「http://www.sample.com/」へアクセスしてきた時
 <VirtualHost IPアドレス>
     ServerName www.sample.com
     DocumentRoot /home/yyy
   <Directory /home/xxx>
     # ディレクトリの設定とか
   </Directory>
 </VirtualHost>

postfix 仮想メールユーザ 設定

 pop3サーバメモにかなりいい加減に書いていますが、うちは確かteapopとdracを使ってます。でも確か結構設定が面倒だった気がする。
 Postfixはまじめに勉強してないからなぁ…。
 

qmail メールを読む コマンド

 コマンドベースで、qmailが受信したメールを読みたいってことかな?
qmailはMTA(Mail Transfer Agent)、メールを読むツールはMUA(Mail User Agent)とそもそものレイヤーが違いますね。なので、コマンドラインのメールクライアントを捜せばOK…っていうか、Linuxならmailコマンドでいいと思う。

ネットワークゲーム プログラミング

 おー。がんばるさーw
本の紹介とかネットゲー系も含めてプログラミング本で紹介してます。

…と、まだありますが、今回はこのくらいで。
 ちなみに、メールサーバ系の検索ワードがおおいね。確かにこのサイトの情報も比較的濃い目に紹介してるけど。
 ちなみに自宅サーバでメールを使いたいならそれなりの覚悟が必要なので注意ですね。そうそう止められないし、10年くらい先を見越して考えるべきです。
 また、やっぱりsendmail以外のツールがいいなぁという傾向がありますが、その場合まだまだqmailが選択されることが多いようです。個人的にはqmailは選択すべきではないと思ってます。
 Postfixもちょっと複雑だけど、今選ぶならこっちかな。

通信制御

blog-2007-06-24-dx11 今回は一連のDirectXがプログラミングの続きですが、DirectXとはあまり関係ないプログラムのネタです。通信対戦ゲームやMMORPGのようなゲームには、ネットワーク経由での通信制御が必要です。では、通信をどうやって実現しようか…?
今回考えた候補は以下の通り。

  • DirectPlay(DirectXのモジュールの一つで、ネットワーク通信専用モジュール。
  • フリーのソレっぽいモジュール(今回はHawkNLを使ってみた)
  • 気合いで一から書く。

まぁ、最近blogでこのネタを扱わなかったのは、この辺でモンモンとしていたからです。
まず、DirectPlay。これは評判が悪いですね。何でかよく知らないけど。
まぁ、でも評判云々の前に、まるで通信対戦の概念を知らない私が選り好みをしてる方がアフォっぽいので、コーディングしてみた。
結果は、まず参考となるサイトが少ないですね。DirectX SDKのサンプルとかチュートリアルも、今使っている2007/Febには付いて無くて、2003/Summerまで遡ってGETしましたが、参考になるのがソレとHELPくらいしか無いので、非常に辛いです。サーバ/クライアントで繋がるくらいまで組んだけど、よく分からない分制御がしづらいのでDirectPlayはやめにしました。
次は、HawkNL。英語サイトしか無いのでわからん(笑。
まぁ、コードは組んだけど、せっかくこういうモジュールを使うなら、完全なブラックボックスで、あまり中身を意識しなくてもいいような使い方をしたい。SocketとかMulti Threadとかの機能があるけど、結局通常のAPIの焼き直しっぽくて、、、まぁ、不採用。

で、結局Socket(winsock)を使って自前で組みました。winsockのプログラミングって過去にやった記憶があったので本棚を漁ったら→こんな本を発見(リンク先は最近の本だけど、うちにあったのは同じやつの1998年度版)。既に10年近くの本だけど、winsock自体の仕様がほとんど変わってないってのは嬉しいね。
とりあえず、思いだし程度に1、2時間程度でサラっと読み返して、後はインターネットでサンプルコードを探してコーディング。いきなり現状のクライアントに組み込むのもアレなので、テストクライアントも作成って感じです。
現状はここまで。
簡単な通信は実現できたから、あとはマルチタスク化して多量の通信でも難なくこなせるような仕組みにしたいな。まだもうちょっといろいろと時間がかかりそうです。
以下、買ってないけど参考になりそうな本。これからこういうプログラミングをする人は参考にしてみて下さい。

 

 

鉄子の旅



 最近旅行によく行くけど、このマンガの影響がかなりあります。で、このマンガが明日(6/24(日))よりアニメでやるそうです。
 よくありがちな旅行マンガとは一線を画す内容で、すごくコミカルなんですがちゃんと取材に行ってそれをマンガ化しています。
コミックはこんな感じ
 ちなみに、単行本ではゲストでいろいろな人が出ていますが、アニメではそのゲストの人が声を当ててたりとか、そういう意味でも面白い。
鉄子の旅(アニメ公式サイト)
Wikipedia(鉄子の旅)

ネタ

 ビリーズブートキャンプのCMで出てるビリーが来日してるらしいですね。
CMを見たこと無い方はこちら→http://www.youtube.com/watch?v=M9PN_f4goao
 効果がすごいのか、ビリーのキャラクターがネタとしてうけているのかが微妙だけど、最近話題でニュースとかにも出てます。
 まぁ、買った人の話を聞いてみると、エアロビクスの変形版のような感じなので効果はあるみたいだけど、結構ハードみたいです。Wikipediaとかにも載ってるけど、1週間で集中的にやるのは注意が必要っぽい。
Wikipedia(ビリーズブートキャンプ)
http://www22.atwiki.jp/onemoretime/

strcpy

 コンピュータへの不正アクセスの方法として、buffer overflow(もしくはbuffer overrun)という攻撃があります。コンピュータには「メモリ(記憶装置)」というものがありますが(HDDとか半導体とかいうのは気にしないでください)、「メモリ」にはプログラムとデータが入っています。
 しかし、ここがプログラム、ここがデータという明示的な境界はありません。それはプログラマが決めます。
 どういうことかというと、砂場で遊んでいる子供が、砂場が狭いと「ここまではボクの遊び場、そこからはキミの遊び場」なんて境界を作ることがありますが、「砂場」の砂の色が違ったりとか壁があったりとかはしません。第三者から見れば、どこからがボクでどこからがキミの砂場かはわからない…つまり、論理的な境界であって、物理的な壁がある訳ではないです。
※最近はメモリ保護機能とか、単純なレベルならOSが保護してくれます。
 で、buffer overflowというのは、データを溢れさせてメモリ上のプログラムを書き換えることで実現する攻撃方法です。
 こういうbuffer overflowな話でよく言われる例として、プログラム言語であるC/C++の関数の「strcpy」が例によく使われます。「strcpy」は文字列Aを文字列Bにコピーするという関数です。つまり、文字列Aが10文字、文字列Bが5文字しかキャパシティが無いと、あっさりbuffer overflowが発生します。はみ出した5文字分は、メモリ上の「プログラム」がかかれている場所に行くか、「データ」の場所に行くかはわかりません(意図的にそういうことをすることはありますが…)。
 ちなみに、C/C++言語にはもう少し複雑な背景があって、こういう関数が「標準化」されています。C/C++言語はVisualC++とかgccとかBorland Cとか様々な種類がありますが、「標準化」された命令はそのまま実装されています。「この命令はヤバいので乗せない」なんてことはそうそう出来ません(移植性が損なわれる)。それが、こういうセキュリティ問題をさらに根深いものにしてるとも言えるのかな。だから、未だにstrcpyはC/C++にそのまま存在します。
 で、今VisualC++でプログラムをしてるけど、最近のバージョンではこんな警告が出るようになりました。



warning C4996: ‘XXXXX’: This function or variable may be unsafe. Consider using XXXXX_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.


訳)警告 C4996: ‘XXXXX’: この機能か変数が危険であるかもしれません。代わりにXXXXX_sを使用すると考えてください。 無効にするには、_CRT_SECURE_NO_WARNINGSを使用してください。




 strcpyを使うと警告(エラーじゃないので、無視すればそのまま使える)がでて、strcpy_sなんてものを使うことを薦められます。ちなみに、strcpy_sはstrcpyとほとんど同じだけど、「文字数」を指定してそれを超えるとエラーになります。プログラマーが文字数を間違えたら話にならないですが、まぁそんな感じであまり意識しなくても安全なプログラムを書けるようになっています。
 こういった関数を多く使うと「標準化」されたプログラムでは無くなってきます。つまり、プログラムの「移植性」が損なわれてきます。しかし、JAVAのような違うベクトルから「移植性」を重視した言語が現れてきた今日では、そもそもそういう「標準化」の意味も薄れてきているのかなぁ…と、何となく思いました。
※っていうか、過去のプログラムを使ったら警告だらけになって一つ一つ修正しています(T_T

ワンセグTV

blog-2007-06-18-potaro 2006/11/20のブログでちょいテレというのを書きました。
USBにつなげるUSBアンテナで、パソコンでワンセグTVを見るというもの。

 その後、どうかというと…全然見ていませんw

 何故かというと、電波が悪いとか画像がどうとかいろいろあるんだけど、ぶっちゃけ今回のワンセグにしろ、TVチューナボードとかにしろ、パソコンでそれをやっちゃうと、他にパソコンで何もできないのよね。
 パソコンでテレビを見ながら、ゲームなんてもってのほかです。DualCore CPUで、メモリ2GByte積んだって、やっぱり厳しいです(たまにフリーズとかするし)。

 で、ポータブルテレビを買ってみました。東芝の「ポータロウ」というやつで型名はSD-P70S(http://www3.toshiba.co.jp/hdd-dvd/products/player/sd-p70s/index.html)。
 ちなみに、これは所謂DVDプレイヤーで、テレビは見れません。

 これに、ワンセグチューナ(http://www3.toshiba.co.jp/hdd-dvd/products/option/sd_pdt1.html)を繋げるとワンセグテレビが見れます。

 プレイヤーはそんなに高値じゃないけど、チューナは結構値が張ります。
ワンセグチューナ内蔵なのは他にもあったけど、これは外部アンテナが使えるのがポイント(他に使える機種もあるかもしれないけど、よく知らない)。
 結局、ワンセグってかなり画像が汚いから結構気になる。ただ、外部アンテナを有線で繋げれば、電波が弱くて見れないってことは無いので、室内でパソコンをやりながらテレビを見るのはこの組み合わせがいいね。

 あ、ちなみにモバイル用途ではこの組み合わせはお勧めしません。なんか、チューナがバッテリー対応してなくね?まぁ、対応しててもかさばるのでダメ。
 まぁ、チューナが無くてもDVDプレイヤーとして使えるから、モバイルではそういう用途ならいいかも。

 横に普通のテレビが置ける環境ならそうすればいいけど、うちみたいにそういうのが厳しい人には、こういう環境もいいですよ。

 

Delta’s X Web sites生誕11周年

blog-2007-06-14-96081029 本日でこのサイトは生誕11周年ですよ。そのころからカウンターを回し続けて77万アクセス!サイト名もDdashホームページからサイト名やハンドル名を変えたり、サイトを増やしたり減らしたり…まぁ、速いものです。
 11年前ってどんな感じよ?と思い起こしてみると…


  • 検索サイトはYahooくらい(プロバイダ毎のサイト紹介の方が活発だったかな)。

  • デジカメが初めてこの世に出回ったくらいの時期(当時30万画素くらい)。

  • JavaとかFlashとか無かった(サイトを作るのはHTMLだけ、あとCGIとかSSIとか)。

  • ブラウザはIEとネスケくらい(Verは2とか)。しかも、ネスケは有料で売ってた。

  • インターネットはISDNとか。速度は64kbps(最近のADSLは8Mbpsくらいだから1/100以下)。ついでに従量制が主流(3分10円)。

  • 当時の大手プロバイダは、ベッコウアメ、リムネット、ソネットとか?Niftyはパソ通の方が主流だったかな。あと、NECのBiglobeもあったかな。

  • WindowsはWindows95(とNT)が主流。


 こんな感じかなぁ。相川七瀬の「恋心」とかもこの年にブレイクしてたみたいw
ちなみに、上の画像は当時のデジカメで撮った写真。圧縮とかしてない素でこれだよ。

プリングルス スパイシーグァカモレ味

 コンビニに行ったらプリングルスのSpicyGuacamoleというのがあった。パッケージに英語でしか書いてなかったので始め読めなかったけど、フタに日本語の張り紙がしてあったのでわかった。味は、食べた瞬間は「青臭い!」、そしてジワジワとピザっぽい味がしてきます。まぁ、そんな感じ。美味しいけど好みが分かれそう?

ものもらい


 目(まぶた)がおかしかったので眼科に行ったら、一時間待たされたあげく、10秒程度で「ものもらいですね」って言われて目薬を貰って帰ってきた。
 たかがものもらいでも、ここxx年パソコンやっててこんなに酷いのは初めてだぞ!もすこし患者をいたわれ!って心で叫びつつ帰ってきた。
 まぁ、府に落ちないので、ちとググって見た。
http://monomorai.phrontis.net/
…このURLすごいな…
 ものもらいには2種類あるらしい。
麦粒腫(ばくりゅうしゅ)
まぶた(まつげ近くの毛穴)に細菌が入って化膿する。

霰粒腫(さんりゅうしゅ)
まぶたの中にできる、脂の分泌線が詰まる。

 ものもらいは今回が初めてじゃないけど、明らかにいつもなるのは前者、今回のは後者だ。まぶたを触ると堅いしこりがあるし、「痛みは通常ありません。」ってのもその通りだ。


霰粒腫は、麦粒腫とは異なり、そのままの状態で放っておくと同じ状態のまま何ヶ月も続くこともあります。




 たしかに二週間くらいほっぽらかしながら、土日は養生してたけど、一向によくならなかった。
 ざざっと上のサイトを読んだところ、「目を清潔にする」「眼帯はなるべくしない」「時間がかかるっぽい」って感じのようだ。「温湿布を貼る」ってのは意外だ。今まで炎症だと思って冷やしていたけど、これはよくないっぽい。
 まぁ、気長に直すか。
貰った目薬はこれ。
http://www.interq.or.jp/ox/dwm/se/se13/se1319722.html


…殺菌的に作用します。黄色ブドウ球菌など…




これって、麦粒腫対策のようにも見えるが…まぁ、清潔にすることには違いないので、いいや。

  • おひさです。 そんなものが売られてるのですね。 SpicyGuacamole 日本人の縁遠いメキシコ料理ですよ。 アヴォカドディップの味ですね。 アメリカ行きてぇえええ。 – SNEEZY (2007年06月25日 21時04分59秒)

  • おひさぁです。最近、ダブルチーズとカレー味のプリングルスもありましたが、こちらはお勧めしません>< – デルタ (2007年06月25日 21時37分35秒)

目が〜

blog-2007-06-11-dx10 右目が真っ赤になっちゃいました。どうも、まぶたの内側に変な腫物ができたようで、それが眼球を刺激しているようです。そんな訳で、今は左目だけでブログを書いています。
こういうときこそブログを書かなくては!…と言っても、左目は運転免許所をメガネ無しでギリギリ通る程度の視力なので、あまり見えません。ぶっちゃけ、ディスプレイの文字もかなりボヤけてます…。明日…仕事休んで眼科へ行ってきます…

ま、それはそれとして、上の画像は毎度おなじみDirectXなプログラミングネタ。
3Dゲームとかで、画面をクリックすると、そこに向かってキャラが走り出したりしますよね。この前の土日は、その「画面をクリックと仮想世界との連動」のプログラムをしてました。

「画面」という平面をクリックした場合、そこは仮想世界(3D)のどこをクリックしたのかを計算しなければなりません。これはさほど難しくなく、仮想世界のどこかにあるカメラから見ているので、そのカメラの中心位置からのマウスの相対位置で求めることが出来ます。

ちなみに仮想世界の視点は「点」ではなく、その点から少し離れた面としています(たぶん)。
クリックした場所がわかったら、こんどはそこから仮想世界の中で線を引きます。
線と仮想世界の地面の交点が、「クリックした場所」になるわけです。
ちなみに、「線」というのは、

    • 2つの点
    • 1つの点と方向

のいずれかがわかれば引けます。これは、小学校の算数で習います。しかし、「クリックした場所」という一点しか求めていません。
もう一つの情報である「方向」を与えます。方向というのは「カメラの向いている方向」というのがあります。ちなみに、「カメラの向いている方向」と完全に平行にはなりません。カメラで見た世界は「奥ほど広い」ので、「クリックした場所」が中心でないかぎり、距離が遠くなるほどに、カメラの向いている方向から離れます。

まぁ、その辺の微妙な演算をしてくれる関数が存在しているので、ペロっとデータを与えれば計算してくれます。
これで、クリックした点とそこからの線が求まりました。しかし、これでもまだ終わりじゃないです。その求めた「線」と仮想世界の中の地面という「面」の交点を求めなければなりません。
まぁ、この交点を求めるのも、関数+αで計算出来ます。

で、上の画像ですが、今回、テクスチャにちょっと細工をしました。四角いマス1つに「●」というマークを付けています。この世界は●という「面」の集合で出来ています。この画面の中には700くらいの●(面)があるでしょう。
つまり、一回クリックするごとに、このすべての●に対して、クリックしたポイントからの線と交わっているかを計算します。当然700●なら、700回計算です。

しかも、デコボコなので、手前の●と奥の●とかもあります。
最後の計算は結局力業なので、その分繰り返してやります。で、そんな計算地獄を2日間ほどかけてやってクリックした場所にカーソル(上の画像の赤丸で囲んでいる所にある赤いオブジェクト)が行くようになりました。
ちなみに画面描画をしながらこんな計算をしたら、画面が一瞬とまっちゃうので、この計算はバックグラウンドでガシガシやっちゃいます。

日頃、何気なくゲームでクリックとかしてると思いますが、裏ではこんなことをやってるんですよ。ホントに疲れます。
目がおかしくなるのもわかるでしょ?

 

鎧を着たり、武器を装備したり

またかなり時間が開いてしまいましたが、今回はキャラクターモデル系のプログラムを書いていました。あと、そのネタ用のモデルデータを作るのも一週間くらいかかっちゃったかな。
まずは、人が走っているところ。

« 鎧を着たり、武器を装備したり »の続きを読む

UOKR

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

人が降り立った

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

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

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

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

blog-2007-05-29-dx6

さらに、地平線の彼方にメモリを食われるのは勿体ないので、それを分割して、ある程度移動する毎に必要なデータを読み込むという処理をしています。簡単に書いたけど、案外計算が面倒です。
なので、データさえ作れば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モデリングツールとかで作れば、勝手に計算してくれるんだけどね。これは動的に地面を生成したいので、こつこつ計算して作ってます。

結果
blog-2007-05-16-dx2
なんか、この影嘘臭くね?
続きは明日でいいや…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#なんて覚えたくない)。
開発ツールが無料になった分、マイクロソフトも成長したなぁと思う。