October 29, 2004

水曜どうでしょう

水曜どうでしょう on the web

無料配信。

名前は聞いてたけど初めて見た。
ディレクターがちょっと笑いすぎと思ったけど、ツボにはまる。

October 25, 2004

(゚∀゚)ラビィ!!

とうとう注文してしまった。

LaVie G タイプJ

ゲームじゃなくてB5ノートPCです。

変更点(買い替えの理由)
Video Trident → radeon7500(AGP)
HDD 20G → 80G
CPU Mobile Pentium iii 750MHz → PentiumM 1.0GHz
Memory 512MB → 768MB

やっぱ軽いノートでも3Dやりたいですよ (゚∀゚)=3

古いやつは 母ちゃんにお下がりするつもり。

October 21, 2004

KyoX Updater そのに

updater2.JPG

圧縮ファイルからの更新にも対応した。

圧縮形式に何を使おうか悩んだが、ZIPやらLZHやらはライセンスの問題やライブラリ引用するのが面倒くさいので、一番手っ取り早そうな LZCopy 系 *1 を使うことにした。

圧縮率に関しては可もなく不可もなくという感じだが、アップデートソフトに追加でDLLが必要、というのもやりたくなかったので決定。サーバ上に圧縮されたファイルを置いておけばダウンロードしたときに自動的に解凍されるようにした。

とりあえず形にはなったのでバグとりも兼ねてなにかのゲームで実際に使っていきたいところ。
つまりネタ募集。

*1 : 一昔前までは頻繁に使われていたWindows標準の圧縮形式。解凍用のAPIがありWindows95以上ならどれでも使える。setup.ex_ のように拡張子の最後がアンダーバーになってるファイルがソレ。VBが吐き出すインストーラで使われてたね。今はcabに取って代わったが。

October 20, 2004

KyoX Updater

イマドキなオンラインゲーム等はゲームの修正が入ったときに、自動的にダウンロード&インストールする仕組みを持っている。

自分の作ったゲームがこの機能を持っていたらカッコいいと思ったので作ってみた。

updater.JPG

仕様上、別EXEになってしまうのだが、ゲームからこいつを呼び出すと更新ファイルがあるかをサーバーに確認しに行き、あれば既存ファイルと置き換える形でダウンロードを行う。

サーバ側では、更新するファイルのリストを準備しておく必要がある。(すべてのファイルを確認してたら重そうなのでしかたない)リストにあるファイルのタイムスタンプを確認し、サーバーにあるものが新しかったら更新という筋書きである。

とりあえず作ってみただけなので、ファイルは素のままダウンロードするし(圧縮すら無し)ファイルの破損確認などを今後追加していこうと思う。

てことで一般公開はまだNGです。

October 08, 2004

winsock2

SocketのプログラムをWindowsで書く場合、winsock.hまたはwinsock2.hをインクルードすることになる。

前者はVersion1のWinSockで、後者はVersion2となっていて、TCP、UDP以外のプロトコルを使いたい場合や、高速な通信を行いたい場合は多機能な新バージョンの WinSock Ver2 を用いるわけだが、ここには罠が存在している。

winsock.h と winsock2.h は互いに排他的で、同時に使用することはできない。(関数や構造体が同名異義となっているものがある)そこでwinsock2.hだけをインクルードしようとするわけだが、実はwindows.h内部でwinsock.hがインクルードされているのだ。

これを回避するためには、windows.hをインクルードする前に _WINSOCKAPI_ を define する。
こうするとwinsock.hがインクルードされても、中身をパスしてくれるのでwinsock2.hをインクルードしても定義の重複は発生しない。

ライブラリなどを組んでいるとあちこちのソースファイルで windows.h をインクルードしているので、結構面倒くさいものである。よって#defineでコード中に記述するより、プロジェクトオプションで定義したほうがよいだろう。しかし、DirectXのライブラリ(d3d9.hとか)でも普通にwindows.hインクルードしてあるので、この場合、手が出せない。この場合ワーニングが出まくるのを我慢するか #pragma warning ( disable : 4005 ) としてワーニングを消してしまう他方法はないものと思われる。

後から追加されたライブラリであることから、しかたないともいえるかもしれんがこの実装はどうかと思うな。