7.19 一応ネットゲームについての話を。まずはこれまでにやったいくつかのゲームについて書こうかと思う。ああ、そうだ、忘れないうちにNet Gamesへのリンクを作っておこう。ネットワークゲームを作ろうと思ったときに参考になるかもしれないし。 いろいろやった…と言えるほどやってないけれど、ま、それでもまあちょくちょく遊んでいる気もするので意外とやっている方かもしれない。ネットゲーム関係だけの別のページを作ってしまったくらいだし。最初に触れたネットワークゲームは、Diabloだ。たぶん去年の9月くらいだったはず(Windowsに触るようになったのと同時期)。未だに遊んでいるくらいだから息の長いゲームだ。Diabloで遊んでいた頃、そこで知り合った知り合いにさそわれて東風荘をやるようになった。ひと頃はかなりやっていたんだけど最近はとんとごぶさただが。それからTetriNetというネット対戦できるテトリスもどきのようなゲームをやり、MacではSkyFightersで遊んだりJavaでできるカードゲームをしたりもした。他にも細かいものをあげればいくつか出てくると思うけど、まあ省略。とりあえずなんか遊んでみたいっていう人はNetworkable Mac Gamesにいってみるといいかもしれない。ネットワークで遊ぶことができるゲームがたくさん紹介されている。 いろいろやってみて思うのは、ネットワークゲームはやっぱりWindowsの方が活発みたいだってことかな。製品版のゲームについてはDiablo以外全然やってないのでなんともいえないけど、フリーウェア/シェアウェアで…ってことになると、Macのゲームはちょっと寂しいような気がする。まあこんなことが理由でTCPを勉強しようと思ったんだけど、まだ、ネットワークゲームは作成できていない。。(付随的に作ってしまったチャットソフトなんかは完成に近いけど) TCP/IPで遊ぶゲームの形態は、遊ぶ側から見たら2種類に別れるかな(接続形態自体は先にあげたNet Gamesを見るといろいろ載っている。代表的なのはClient-ServerとPeer to Peerかな?)。「サーバが用意されていてそこにつなぐ」ものと、「誰かがサーバになってそこにつなぐ」ものかな。先にあげた例では、Diabloや東風荘は前者で、TetriNetやSkyFightersは後者。ぼくが「HyperCardで…」と考えているものも、後者になる。 サーバが用意してある場合は、そこにみんな接続するわけだから一緒に遊ぶ人を探さなくてもいい。遊ぶ人はそこにいくらでもいるわけだから。が、逆にいえば知らない人がほとんどだし、ゲームの邪魔をする人もいたりする場合もある。対して誰かがサーバを…という場合には、まず一緒に遊ぶ人がいないと始まらない。自分がサーバになってもそこにつないでくれる人がいなければゲームできないから。が、まあ、知らない人がやってくることはないし、邪魔されることもほぼないだろう。一緒に遊ぶ人…というのは、知り合いとICQを使って…とかそういうことになるんだろうな。 サーバが用意されているゲームの方が簡単に遊ぶことができるし長生きすると思う。そこで知り合いが増える可能性もあるし、最初から知り合いだけというのでは一緒に遊んでくれる可能性のある人が少ないから、知り合いがあきてしまったらそれで終わってしまうわけだし。が、ぼくみたいな個人が作ろうと思ったら、「サーバを用意…」というのはかなり難しい。技術的な問題ももちろんあるし、まず専用線とサーバマシンもいる。金ももちろんないし、たくさんの人のアクセスに対応できるサーバをプログラムする技術もないからちょっと無理か。そうするとやはり、「誰かがサーバになって…」という方法以外、ない。 そういうゲームで遊ぼうと思ったらなんらかの方法で連絡をとらないといけないわけだからICQなどのソフトが必須だ。これで「遊ぼうー」と声をかけて遊ぶことになったら誰かがサーバになってそのIPアドレスを残りの人に伝える。そしてサーバを動かし…、ゲームが始まる。まずICQがなければどうにもならないし、知り合いがオンラインでなければそこで終わってしまう。このあたりが、ちょっとネックになってくる。 ぼくが仮になにかゲームを作ったら、まずどうするべきか。ドキュメントにはまあICQを使うといいでしょうみたいなことを書くんだろうな。あとは、一緒に遊ぶ人を探す方法だが…、遊んでくれる人がたくさんあるならIRCなんかでチャンネルを用意して…というのも面白そうだが、最初はそのチャンネルにいっても誰もいないという感じになりそうだ。あとはぼくのICQの番号をドキュメントに書いておいて「テレホタイムならお相手します」って手もあるかもしれないけどそれもどうかわからない。いきなりほとんど知りもしない人を登録しようっていう人がどれだけいるか…。。ぼくの方も突然知らない人に登録されるのはあまり気持ちのいいものではないし、そのあたりは難しい。やはり最初は「知り合いと…」ということになると思うけど知り合いがオンラインにならなければそもそも「遊べない」ということになってしまう。オンラインだったとしても、その人がそのゲームに興味を感じなければだめなわけだし。 こう書いているとなんか「だめやん」って感じになってくるけど、もう少しネットワークゲームというのが普及(?)してくれば状況も変わってくるかもしれない。前にTetriNetというゲームをあげたけれど、最初ぼくはこのゲームの存在すら知らなかったし、知っていたとしても一緒に遊ぶ人がいなかったからダウンロードしようとは思わなかったはず。だけど、サーバのあるDiabloというゲームを遊んでそこで知り合った知り合いに教えてもらって(と同時に一緒に遊ぶ人も確保できるわけ)遊ぶようになった。ぼくがこれから作ろうとしているゲームでも、その可能性がひょっとしたらあるんじゃないかと思う。 これでやっとHyperCardの話に。長くなったからここらで区切りにしようかと思ったけど、まあもう少しだからまとめて書いて(いや、「打って」か)しまおう。ネットゲームをHyperCardで作ろうと思ったのは、「楽だから」ってのが第一の理由。基礎となるXFCNなどはできていたから(せんちゃの時に)TCPを扱う部分はそれで全部できるし、あとはHyperTalkで作っていくだけ。HyperCardって環境はスピードを必要とするようなものでなければゲームを作るにはもってこいだと思うし。どっちにしてもぼくの今の技術ではリアルタイムで動くネットゲームは無理だから、そうしたらHyperCardでできるはず。そう思ったのが第一の理由。 第二の理由はあとから付け加わったんだけど、ネットゲーム用のXFCNをパッケージにして公開しようかなというもの。ぼくが一人で作っているよりも、いろんな人が作ることができる可能性を考えた方が面白そうだし。そのためにまずこれまでに作ったものを書き直して、ドキュメントも整備しないといけない。それからもちろんサンプルのスタックも作らないといけない。一応書き直しはほぼ終わったはず。サンプルを作るまで動作テストできないからちゃんと動くかどうかわからないんだけど…(笑)。また、サンプルを作ってからでないとドキュメントを書きづらいし、まずはサンプルか…。 ここで上で少し書いた「接続形態」の話が出てくる。二人で遊ぶというだけなら、Peer to Peerでできる。これだとどちらがサーバでどちらがクライアントという区別がまったくないから(ストリームを開くときにActiveかPassiveかの違いはあるけど)クライアントとサーバをわけてプログラミングする必要がなくて楽だ。何人かで遊べるものを考えるとすると、誰かがサーバになってClient-Serverで作ることになるだろう。その場合はサーバの人もクライアントとなってサーバにつなぐことにするとすっきりする。「せんちゃ」では、そうなっている。手軽に作れるのはPeer to Peerで二人対戦…だからそういうサンプルを作ろうかなと思うんだけど、そのままでは何人かで…というのは作れないからサンプルとしてはいまいち。両方のモデルのものを作るのがベストだと思うけどそれも大変だし…。でもドキュメントを作るとしたらそのあたりのことにも触れないといけないからやはり両方あったほうがいいかもしれないという気もする。 ま、まずは二人対戦のサンプルだけ作るつもり。予定では、「じゃんけん」(笑)とか考えているけど、もう少しゲーム性があるものの方がいいかな? サンプルだからまあこんなもんでいいかなとか思ったりするんだけど。。なんにしてもまずはひとつ作ってみないとしかたないから簡単なものでも作ってみるつもりだけど。 この話の続きはサンプルができてから、かな。ひょっとしたら使い方〜スクリプトの解説もここでやったりするかもしれないけどそれはさすがにないかな?^^; 次は予定もないのでパソコン暦の話にしようかなと思う。書き出したらかなり長くなってしまいそうなのがちょっと気掛かりだが…(笑)。 |