あさちゅんのゲームブログ

UnityやSiv3Dに関するゲーム開発メモを残していきます

Siv3D + Ruby で通信ゲームを作る #1 サーバとは

同じパソコンにゲームパッドをたくさん繋いで対戦ゲームも悪くないですが、画面が見辛くなっちゃいますし、やっぱり今時、オンライン対戦とか一度でいいから作ってみたいですよね?

そこで今回はクライアントサイドにSiv3D、サーバサイドにRubyを使って通信対戦ゲームを作ってみようと思います。

っと、その前にちょっぴりお勉強です

そもそも、クライアントとサーバって何?

クライアントはソシャゲで言うところのスマホに入ってるアプリのことです。今回の場合、普段作っているSiv3Dのアプリケーションがそのままクライアントになります。

じゃあ、サーバって何でしょうか?

ソシャゲの話に例えると、アクセス過多でよく落ちるアレ、きっと日本のどこかにある黒い箱みたいなコンピュータのことですね。

それじゃ、通信対戦ゲームを作るには、自分たちも黒い箱を借りなければならないのでしょうか?

そんなことはなくて、自分たちが使っているノートパソコンとかにもサーバになれるものが入っています。それがこれです

f:id:chunchunmorning:20161204224717p:plain

いわゆる黒い画面ってやつですね。今回はRubyを動かすのでコマンドプロンプトでもPowerShellでも好きな方で構いません。

正確には違うのですが、この覚え方で困ることはないです

黒い画面には抵抗があるかもしれませんが、簡単なことしかしないので頑張っていきましょう!

それじゃ、このパソコンをサーバにできるの?

結論から言うと、開発は出来ますが全国対戦とかは無理です。

まず、ゲームの通信でよく使われるTCP通信の話をしましょう。

f:id:chunchunmorning:20161204224718p:plain

TCP通信では通信相手を決めるのにIPアドレスというものを指定します。電話番号のようなものだと思ってください。

このIPアドレスはネットに繋がっているすべてのパソコンに振られていて、ググれば簡単に確認方法が載っています。

しかし、残念なことに自分たちのパソコンに振られているIPアドレスを外のパソコンから指定しても繋がらないのです、、、

グローバルIPアドレスとプライベートIPアドレス

実はIPアドレスグローバルIPアドレスとプライベートIPアドレスの2種類があり、外から指定しても繋がるのはグローバルIPアドレスだけなんです。

f:id:chunchunmorning:20161204224719p:plain

自分たちのPCに振られているプライベートIPアドレスは、同じネットワーク内限定で使用できるIPアドレスになります。

では、同じネットワーク内ってどこまでと言うと、Wi-Fiで繋いでいるなら同じWi-Fiに繋いでいるパソコン、LANケーブルで繋いでいるなら同じLAN内までが範囲となります。

なので、全国対戦とかは無理ですが、同じ部屋とかなら通信可能です。また、どちらでもプログラムは同じなので勉強したことは決して無駄にはならないです。

開発にPCは何台必要?

実際に対戦したいならその台数分必要ですが、動作を確認するだけなら1台だけで大丈夫です。

TCP通信には自身を示すIPアドレスが用意されているので、クライアントとサーバを同じPCで動かくこともできますし、さらに1台で2, 3人分のクライアントを動かすこともできます。

まとめ

Siv3DもRubyもカケラも出ませんでしたが、通信対戦ゲームの仕組みは理解していただけたでしょうか?

次回からはいよいよプログラミングをして、通信対戦ゲームを作っていきます!

次回

使用したソフト
Windows 10
Siv3D August 2016
Ruby 2.3.1