CGIでオンラインゲームを作る理由
通常、オンラインゲームを作ろうとしたときに、以下の方法が思い当たります。
- EXEなどの実行ファイルとして作成したゲーム
- FlashやJavaなどインタラクティブコンテンツとして作成したゲーム
- CGIで作成したWebページ上で動作するゲーム
動作環境を考えた場合、FlashやEXE形式で作成した場合も、ゲームデータをサーバに保存するためにはCGIを介するのが一般的なので、CGIの実行が許可されたサーバに配置することになります。
開発環境を考えた場合、FlashやEXE形式は開発ツールが必要ですが、CGIならテキストエディタで済みます。
そのため、動作環境や開発環境を踏まえるとCGIでオンラインゲームを作るのが手軽だと思います。
CGIでオンラインゲームを作る際の問題点
CGIでオンラインゲームを作ろうとしたときに、最も困るのは「サーバとデータをやりとりするのに、いちいちページをリロードしなければならない」ことです。
これは、HTML的に「ある一つのプロセスにおいて、ブラウザからWebサーバへデータを渡して結果を受け取るのに、ページをリクエストしなければならない」ためです。
CGIでのゲーム作りは、これが原因でストレスの感じるゲームになってしまいます。
Ajaxを使い、リロード不要なゲームを作る
どうにかクライアント側のスクリプトでサーバとのデータ通信を行うことができれば、CGIで作ったシステムもページをリロードする必要が無くなります。
そこでJavaScriptから「XMLHTTP」というオブジェクトを使うことでサーバとの通信を行うアイデアが発見され、その仕組み(技術の組み合わせ)が「Ajax」と呼ばれています。
このAjaxという手法を使うことで、Webページをリロードすることなく、ストレスの無いCGIゲームを作ることができます。
例えばチャットを作る場合でも、普通のCGIでは、書き込みや会話データの再表示をする際に、毎回ページをリロードしなければなりませんが、Ajaxを使えばJavaScriptとCGIがデータのやりとりを行ってくれるため、ページをリロードすることなく会話データの再表示をすることができます。
Ajaxを使えばSSIでのCGI埋め込みが便利
Ajaxを使うとSSIでWebページにCGIを埋め込もうとしたときに、ただのCGIでは困っていた問題点が解決します。
例えば「3つのサイトに、投稿CGIを埋め込みたい」と思っい、投稿フォームをSSIで埋め込んだとします。
Ajaxを使わない場合、投稿フォームは埋め込めても、それをサーバに送信した後の投稿確認画面や投稿完了画面は別のページに移ってしまうため、それらの画面のデザインの切り替えが困難です。
ところがAjaxを使えば、投稿確認画面や投稿完了画面が投稿フォームと同一ページのまま切り替わるため、画面デザインの切り替え手段に困る必要が無くなります。