HSPで使えるネットワークライブラリの比較
さて、我々トーシロがネットワークゲームを作るに当たって、何から始めなければならないか。それは、開発環境の選択である。筆者が(なんとか)解説できそうな言語は他にCppとJavaがあるが、サーブレットでブラウザゲームが関の山、という状況なので今回は例によって開発言語にHSPを採用する。
めでたく言語が決まったところで、その言語に出来ない事*1を調べなければなるまい。残念ながらHSP単体では通信を行う事が出来ないため、ライブラリ、いわゆる拡張プラグインを利用しなければならない。HSPで利用可能なライブラリやモジュールが幾つか公開されているので、今日はそれの比較をやる。自分の野望と能力と好みと機能と資料の多さを基準に選ぶと良いです。
といいたい所だが、このページを読んで始める入門者達が、読んで即わかった気になるような資料は余り無い。
ライブラリ一覧
ネットワークゲームに直接使えそうなものの中で、オラが調べてすぐ出てきたものを列挙する。PCBSoftwareのモノなんかは開発停止&ソースが公開されており、無数のバージョン違いがあることも想定されるが、知らん。
また、ライブラリ→拡張プラグインと読み替えても特に問題は無い。また特に書かない限り、HSP3で利用するものとする。
ライブラリ名 | 開発元 | 主たる機能 | 備考空間 |
HSPSOCK | onion software | TCP通信 | 公式ライブラリ、HSPに付属 |
HSPINET | FTPとHTTP通信 | ||
gDP | だるだるでわるいか。 | DirectPlayを 利用できるようにする | C++のお供にも是非 |
PCBnet2 | PCBSoftware 再配布所 | TCP通信、UDP通信 | 開発停止、公式サイトも混沌に沈んだ。 バグフィックスされたVerも入手可 |
HSPSOCKA | HSPSOCKのすっごいの | やっぱり開発終了。 |
HSPSOCK
読み方は「えいちえいすぴーそっく」。僕の友達が一回「えいちえすぴーさっく」って言ったのでぶん殴ってやりました。TCP通信が行えるようになる。最大で32人まで通信が行える。使ってみたが、接続処理がめんどくさい。他に選択肢があるので無理して使うほどのもんではない。ただし資料は(比較的)充実しているようだ。
HSPINET
読み方は「えいちえすぴーあいねっと」だと思う。HTTPやFTP通信を行う。注意すべき点は、他のライブラリを使ってTCP通信が出来ればHTTP通信だって出来るという事。*2
ブラウザから簡単に情報を取得したり、CGIと連携したりする時はこいつを使うと手軽かもしれん。また、FTP通信が出来るのでサーバーにファイルを上げたりするツールも作れちまう。流石にゲーム中FTP通信をやるかどうかは・・・オラは怖くてできねえ。
gDP
読み方は「じぃ↓でぃーぴー↑」か?
DirectPlayを利用できるようにする。DirectPlayというのは簡単に言えば、DirectXについてくる通信ライブラリだと思えばいい。DirectXが入ってる全てのWindowsについているわけでそういう意味ではナイス。DirectPlayにはロビー機能など実装がめんどくさい幾つかの機能が搭載されているので、文字通りだるい人お勧め。
PCBnet2
天知る地知る人が知る。入門者が何かを問えば、やまびこのように名前が返ってくる不思議な存在。読み方は「ぴーしーびーねっとトゥ」
多機能である。明示的にUDP通信を行いたいなら筆者の中で選択肢はこれしかない。オイラも愛用しているが開発は既に停止しており、オイラが認識している限り以下の不具合が存在する。
- pack,unpack命令で実数を扱おうとするとエルァー
- MD5でハッシュを吐くと妙な挙動に・・・
後者はShark++氏によって修正され、再配布所より入手できる。
なお、HSP2.x向けに開発されており、若干の修正を加えないとHSP3で動作しない。
HSPSOCKA
HSPSOCKの修正版。らしいが、俺HSPSOCKを殆ど使ってないので何がなにやら。名前だけ紹介。
どれを選ぶべきか
入門者はまずどのライブラリを選ぶべきか迷うだろう。迷ったならPCBnet2一択でいい。2008年現在はこれが鉄板と言って良い。これから連載予定の講座でもPCBnet2を利用する。タダ個人的にはgDPにもかなり魅力を感じており、最近俺ゲームにHTTP通信が必要になってきたのでHSPINETも無理やり選択肢に入らなくは無い。この辺は需要と気分で変わるので、とりあえずPCBnet2でネットに触れ、他のライブラリに移るのも良いと思われる。
結論は、好きにしろ、ということだ。/(^o^)\
ああ、ワスレテタ
なんか、HSPTVとか、HSPO2とかあったね。いらないね。それだけ。