8.31.2008

浮気ばかりでごめんなさい。

SDLで2Dをいじりながらも、やっぱり3Dが楽しそうやなぁと思う今日この頃。
そんなわけで浮気しちゃいました。

っていうか、3D関連のほうが作っていて楽しいし、動いても楽しいんだよね。

まずはモデルの表示と、それにテクスチャを貼るだけ。



CypherS TufTさんのラグナロクキャラクターの3次元モデルを利用させてもらいました。

こういう扱いやすいモデルをおいていて下さるサイトさんが少ないので重宝してます。

んで、今後はこれを動かせるようにしたいなぁと。
もちろん先日入手したジョイパッドで(笑)

アニメーションをつけるには、RokDeBone2というツールが便利そう。
Xファイルへの書き出しもできるみたいだし。

先んじての問題は、私にセンスがないということと、ライブラリについての学習がぜんぜんできていないってことかな。

気になっている人のために言っておきますが、Delphi + QuadrupleDが制作環境です。
付属のドキュメント以外にドキュメントらしいドキュメントが転がっておらず、検索結果では一見ドキュメントっぽくみえても、私のように書き散らしただけのものだったり、ドキュメントとして機能してくれるドキュメント、特にサードパーティー製のドキュメントが皆無に等しいので(何回ドキュメントって言った?)、リファレンスを読みつつ、試行錯誤的にがんばっている状況です。

今後はしばらく、これに絞って遊んで行こうと思ってますよ。

8.30.2008

SDLよぉ!私は帰ってきたぁぁぁあ!!!

タイトルに意味がないのはいつものこと。そん
そんなわけでLesson27.
アルファブレンドのサンプルコード。

SDLを用いれば、アルファブレンドも値を設定して
SDL_SetAlpha( 透明度を指定したいサーフェス, 方式, 透明度 );
って関数を呼び出すだけで、簡単にサーフェスの透明度を指定できる。
あとは下地になるサーフェスの上に重ねて表示させてやれば、アルファブレンドが完成するというお手軽さ。

ノベルゲーム作る時なんかはサーフェスごとに透明度を設定できるわけだから、キャラクターのサーフェスはそのままで、背景だけフェードアウト→場面転換というような演出をするのには重宝するかもね。

あとは、雲のサーフェスを青空に重ねるときに、アルファブレンドを施してホンモノっぽく見せるとか。
(まぁ、雲のサーフェスが時間とともに動くような状況でもない限り、一枚絵で用意しちゃった方が簡単なんだけどね。)

そんなわけで、いつもの通りアイディアだけは浮かんできますな。

画像はサンプルプログラムを実行した時の画面。
フェードインとフェードアウトに使う画像だけこちらで作成、差し替えました。

キーボードの上キーと下キーで透明度を調整できるようになっている様子。
なかなか面白い。

これってクレーマー?

こないだブログにも書き散らしたり、本部オフィスにもブロークンなイングリッシュでメールした効果だろうか?
Delphi7のUpdateが利用できるようになりましたってメールが来ましたよと。

前回紹介したサイトからは(落とすだけ落として)まだ利用していなかったのでありがたい限り。
なにせこちらは公式のお墨付きだもんね。

さっそくおとしてアップデート。
でも、アップデート中に思った。

これってクレーマー?(笑)

いや、受けられるべきサポートを正当に受けようと思っているだけだよね……?

# そんな気持ちが、実に短い文面ではあるものの、お礼のメールを書くに至ったのかもしれない(笑)

8.29.2008

Joystickを華麗に操る。

SDLのLesson 25。
しばらくSDL触ってなかったけど、案外覚えてるもんだ。

んで、先日某カメラ量販店にて、580円でジョイパッドを手に入れてきた(モチロン10%のポイントもつけてもらった!)ので、それを試すべくLesson25に挑戦しようと思った次第。

ざっと組んでみてだけど、SDLのJoystickの扱いは、まるでファイルを扱うようにして扱えるというところがポイントだと思った。
デバイスをファイルという形で抽象化するのは、UNIXの文化なんだってね。(どっかで読んだ。)

ともかく、そのおかげで
・Joystickへのポインタを定義する
・SDLサブシステムを初期化して、Joystickが接続されているかどうかを調べる
・Joystickが接続されていたら、先ほどのポインタにSDL_JostickOpen( number )関数を使って、Joystickへのハンドルを割り当てる
・SDL_Eventを通じてJoystickから投げられてくるイベントを処理する
・使い終わったら、ハンドルを閉じる
というごく単純なステップでJoystickを華麗に操ることが可能になっている。

応答速度もそれなりなので、簡単な2Dのアクションゲーム程度なら処理できそう。
(もちろん、OpenGLやらDirectXやら使って3次元のシューティングとか実装した場合にも対応できると思う。)

せっかくジョイパッドを手に入れたし、なにかこれを使って遊べるゲームでも組もうかと思う今日この頃。

不思議な不思議なDirectX

という訳でDirectXの話。

SDLといい、まるでゲームプログラミングブログだな。
楽しいからいいけど。


さて、このDirectX、前にSDL+DirectXで簡単な三角形を表示させた時には取り上げなかったけれど、DirectXっていうのは実に奇妙な挙動を示す。
これは、ほかの言語から使っても同じ。
(たとえば、私はいまさっきDelphiからDirectXを利用するコードを書いたけれど、やっぱり同じだった。)

それはどんな挙動か?
それは、対象のウィンドウを乗っ取るという挙動だ。

SDL+DirectXで参考にしたソースコードを見直してみればわかると思うけど、描画するべきウィンドウのハンドル取得している。

おそらくウィンドウズは、DirectXから「これこれのハンドルをもつウィンドウについて、描画権をよこしなさい」といわれると、まったく反論できずに描画権を渡してしまうんじゃないだろうかと。
そう考えると、結構アレゲなライブラリなんだね。
DirectXって。

ともあれ、DirectXを利用するならSDLかますよりもDelphiから使った方が便利そうだというのがわかったから、DirectX叩かなくちゃいけないゲームとか作るときはそっちにお世話になろう。

なにより、Pascalがとても書きやすいし(笑)
C++とは大違いだ。
やっぱり理解している言語っていうのは差がでるものなんだね。

8.28.2008

ジェダイの騎士は強かった。

マックよりモス。
ロッテよりモス。

そんなモス派のケチャップが、午前4時半ぐらいをお知らせします。


深夜です。
最近体調がおかしくて、変な時間に起きてしまいます。

さて、先日Delphiの話を持ち出したのに、実はシステムを再インストールして以降、PCにDelphiを入れていなかったことに気づき、急きょインストールしました(笑)

そしたらCodeGearのサイトからDelphi7.1のアップデートパッチやらドキュメントやらがダウンロードできなくて、今日まで方々探してましたよ。

結論からいうと、ダウンロードできるところは見つかったんんだけれども、まずはCodeGearの日本オフィス曰く、「本社のサーバシステム移管の関係で、ダウンロードできない状態になっている。復旧のめどは立っていないが、早急に必要であればCDに焼いて送付しますよ」とのこと。

おかしな話だろう。
Delphiが製品として優れてるのは知ってる。
CodeGearがソフトウェア作りに関していい仕事してるのも知ってる。
でも、サポート体制がこれじゃ、顧客から見放されるのも無理無いと思ってしまった。
少なくともマイクロソフトに似たような事柄でデッドリンクを報告したときは、直しときましたからお好きにどうぞ的なメールが返ってきたのに。

CDを送付してもらうにも手間がかかるから、結局ネット上を調べたところ、どうやらCodeGearのFTPサイトにはファイルが置いてある様子。
っていうか、FTPに置いてあるならリンク修正するだけじゃないかw
「仕事しろw」とか思いながら、FTPにあるならきっとまとめページがあるハズ!とぐぐってみると、やっぱりありました。まとめページ。

それがこちら

このくらいの代替えページをさっと用意して使ってくださいって体制をとるぐらいのサポートは、やってくれてもいいと思うんだけどどうよ?>CodeGearさん

# 余談だけど、今はCodeGearってのはEMBARCADERO(えんばーきゃどえろ?)って会社の一部門らしいね。




んで、ここからが本題(笑)
SDLにハマってるってことのつながりで、DelphiにもSDLバンドルがあるだろうってことで探したら、JEDIってプロジェクトがSDLバンドルを作ってた。

でも、これ、ソースがすごい変態的になるというシロモノ。

もうちょっと工夫できなかったんだろうか?

一応入れてはあるものの、使う可能性は低いかなぁ。
ただ、JEDIの提供しているJEDI VCLってコンポーネントは驚くほどよくできていて、ちょっとしたツールを作るときにはものすごく役に立ちそう。


今日の朝食はモス。
そう決めたケチャップが、午前5時前ぐらいにお送りしました。

8.24.2008

Delphi2009とC++Builder2009

CodeGearからのメールより引用。

Delphi 2009 and C++Builder 2009 product announcement and two weeks of Live Webinars
start on Monday, August 25 at 5am Pacific Daylight Time (UTC-7)


ということで、Delphi2009とC++Builder2009が登場する模様。
MicrosoftがC#やらVBやらに注力して以来、経営のまずさもあって死んだといわれている両開発環境だけれども、当時Delphi7を数万円のバイト代をはたいて購入した俺にとっては、Delphiというのは絶対に捨てられない環境なのです。

今思えば、オブジェクト指向開発も、コンポーネント指向開発も、プログラムにかける情熱も、すべてにおいてレベルアップさせてくれたのはDelphi7だった。
モチロン、未だにお世話になってます。
まだあの価格を取り返せたとは思っていないのでね(笑)

詳しくはアナウンスやらスピーチやらで語られるのかもしれないけれど、.NETFramework3.5には対応するんだろうか?
……まぁ、次に使うとしても、Delphiを購入することはせず、フリー版で使うんだろうけど(笑)



そうそう、これからC言語を学習しようと思っている人で、ボーランドのC++コンパイラ(いわゆるBCC)を使おうと思っている人がいるならば、C++Builderを利用するといいです。
理由は簡単。
コマンドライン版のみのコンパイラは5.5だかで止まっているけど、C++Builder付属のものは最新バージョンのものだから。
パスさえ通せばコマンドラインからもbcc32コマンドで利用できるし、Windowsアプリケーションが書きたいと思えば、面倒なWindowsAPIを叩かなくても、お手軽にRADプログラミングが楽しめますよ。