以下、本発明をオンラインゲームシステムに適用した一実施形態を図1〜図7に基づいて説明する。
ネットワークゲームシステムとは、複数のプレイヤーが該プレイヤーのパーソナルコンピュータ(以下、「クライアント」と示す)によりインターネット上のサーバにそれぞれ接続することで、該サーバを通じて各クライアントにゲームを提供するシステムである。そして、前記サーバは、各クライントが前記サーバに同時に接続する場合、これら同時に接続する各クライアントを対象にしてゲームを提供するようになっている。すなわち、ネットワークゲームシステムでは、複数のクライアント(プレイヤー)に対して同時に同じゲームを提供するものである。
また、ネットワークゲームでは、サーバに接続している各クライアントに対して該サーバに同時に接続しているクライアントの情報を提供して、同じ仮想空間を共有することができるゲームを提供するものである。なお、仮想空間とは、インターネット上に形成されるデータにより構成される空間のことである。
このような複数のクライアントが同時接続されるネットワーク上のサーバを通じてゲームが提供されるネットワークゲームシステムでは、当該ゲームシステムを管理する統括管理者の取り決めたシナリオ等の制約の範囲内でしかゲームが進行しないようになっている。したがって、プレイヤーが該プレイヤー自身の望むシナリオ等のもとでゲームをプレイしたいと思った場合には、同プレイヤーがゲームサーバの統括管理者になる必要があるが、一個人がゲームサーバを用意することは困難であり、これは現実的でなかった。
これに対し、一個人が容易に管理者となり得るネットワーク上のサーバとしてホームページ用に普及しているwebサーバがある。そして、近年は、このwebサーバ側にて用意される画像や文字など表示内容の一部を書き換えるCGIプログラムも搭載されつつある。なお、CGI(Common Gateway Interface)とは、webサーバがクライアントからの要求に応じて、プログラムを起動する仕組みであり、本発明では、クライアントからのHTTP通信による要求に対してプログラムを動作させ、結果をHTTP通信によって送り返すインタフェースという意味で利用している。そこで、ネットワークゲームを提供するためのサーバとして、このようなwebサーバを利用するようにすることも考えられる。図1に示すように、インターネット上においては、サーバとして複数のwebサーバとなるサーバS1,S2,S3,・・・,SNと、これら複数のwebサーバに対して複数のクライアントC1,C2,・・・,CNが接続可能に構築されたネットワーク環境とを有している。そして、サーバS1,S2,S3・・・SNは、該サーバS1,S2,S3,・・・,SNとクライアントとの間での情報授受プロトコルとしてHTTP(HyperText Transfer Protocol)が採用されるシステムで構成されるものであって、専らホームページ用に用いられる要求応答型のwebサーバである。
ただし、周知の通り、このサーバS1,S2,S3・・・,SNとは、いわゆる要求応答型のサーバであり、サーバからクライアントに対して要求を行うことはできない。すなわち、サーバ、クライアントで双方向に要求を送ることのできる、いわゆる対話型のサーバが採用されることが多いゲームサーバとはそもそも異なる構造を有したものである。このような要求応答型のwebサーバでは、クライアント側の処理の進捗状況等に応じて適切な応答がその都度求められるゲームサーバとしては利用し難いものであることはもとより、クライアント側との接続が一時的にしか維持されないため、リアルタイム性にも劣ってしまう。結果、該webサーバを通じてネットワークゲームを提供することは単純なものではない。そこで、本実施形態では、webサーバを利用するにあたり該webサーバをそのまま利用するとともに、ゲームに関するクライアント側の表示画面における表示内容の更新表示については各クライアント側での処理として行うように構成することで、webサーバを用いてネットワークゲームを提供することができるようにしている。
すなわち、図2に示すように、本実施形態では、サーバSにクライアントCからwebサーバに対してHTTP通信による接続要求を行うことで、ネットワークゲームが行われるように構成されている。すなわち、本実施形態では、複数のクライアントが同時接続されるネットワーク上のサーバを有し、該サーバと接続されたクライアント側の所定の表示画面HGでは、前記複数のクライアントの別にそれぞれ対応付けされているキャラクタ体が背景画像上に表示されるネットワークゲームシステムにおいて、ネットワーク上に共通して形成される仮想空間内で、複数のクライントCがそれぞれに対応付けされるキャラクタを操作して、共通する目的を達成する、所謂、ネットワークRPGゲームを提供するようになっている。なお、図2では、クライアントとしてクライアントCのみを示しているが、実際には図1に示すように複数のクライアントが存在しており、サーバSに対して複数のクライアントが同時に接続されるようになっている。
図2に示すように、クライアントCは、ゲームブラウザ20aにより、サーバS内のwebサーバプログラム20bにHTTP通信(要求)を行い接続要求することで、各種ファイルや、座標情報などの各種データを取得することができ、該クライアントC側の表示画面HGにゲームに係るゲーム画面を表示させてネットワークゲームを行うことができるようになっている。本実施形態において、ゲームブラウザ20aは、サーバSからHTTP通信を利用して、ハイパーテキストファイル、マルチメディアファイルなどの各種ファイルを取得し、該ハイパーテキストファイル(ハイパーテキストプログラム)に記述されているゲーム内容を解釈し、実際のゲーム画面としてクライアントC側の表示画面HGに表示し、プレイヤーからの入力に対して適切なゲーム処理を行うためのアプリケーション・ソフトウェアのことである。すなわち、ゲームブラウザ20aは、ハイパーテキストファイルの所在を示すURLへの接続要求をwebサーバプログラム20aに対して行うことで、前記webサーバプログラム20bを通じてハイパーテキストファイルを取得する通信制御手段に相当する。本実施形態において、ハイパーテキストファイルは、ネットワークゲームの仮想空間を構築するための背景画像となるフィールド情報や、前期フィールド上に存在する仮想的な人物や動物を表すキャラクタ体、仮想空間内で発生するイベント等を示す情報を、文書間の関係をハイパーリンクで表現したものであり、所謂、ゲームプログラムである。なお、URLとは、インターネット上に存在する情報資源の場所を指し示す記述方式であり、サーバ名、ポート番号、ファイルパスなどで構成される。また、ハイパーテキストとは、文書の任意の場所に、他の文書の位置情報を埋め込み、複数の文書を相互に連結できる文書のことである。
一方、サーバSは、webサーバプログラム20bにゲームブラウザ20aを通じてクライアントCからHTTP通信により接続要求がされる場合に、該webサーバプログラム20bを通じてクライアントCからのHTTP要求に対して、適切なHTTP応答を返す。そして、webサーバプログラム20bは、クライアントCから要求されたURLが外部記憶装置20c上のハイパーテキストファイル、もしくは、画像データ、音楽データ、動画データなどのマルチメディアファイルの所在を示すURLなどの情報を指していた場合、該情報に対応したハイパーテキストファイル、もしくは、画像データ、音楽データ、動画データなどのマルチメディアファイルをクライアントCに対して送り返す。
また、webサーバプログラム20bは、クライアントCからCGI20dの起動要求があった場合、すなわち、要求されたURLがCGI20dの所在を示すURLなどの情報であった場合、URLに該当するCGIプログラム、またはCGIスクリプトを実行し、その結果を返す。なお、スクリプトとは、インタプリタ型の言語で記述された実行ファイルのことである。CGI20dは、webサーバプログラム20bを通じたクライアントCからの接続要求に対して、スクリプト、又はプログラムを起動させ、その結果を返す機能を有している。そして、CGI20dは、webサーバプログラム20bを通じてクライアントCから接続要求されると、外部記憶装置20c上に記録されているCGIファイルを実行し、現在同一CGI20d(サーバS)に対して接続を行っているプレイヤー情報20eのデータの参照、書き換えを行い、クライアントの名前やキャラクタ体のグラフィック等のプロファイル情報とキャラクタ体の座標情報の管理を行うものである。したがって、本実施形態においてCGI20dは、サーバSに接続している各クライアントに関わるプレイヤー情報20eを更新し、各クライアント間で情報を共有する役割を持つ。なお、本実施形態では、プレイヤー情報20eとして、サーバSに接続しているクライアント毎に対応しているキャラクタ体毎のグラフィック等のプロファイル情報から構成される識別情報と、該識別情報に対応するように各キャラクタ体の座標情報とが管理されている。すなわち、各クライアント、及び各クライアントに対応するキャラクタは、識別情報によりそれぞれ区別可能に構成されている。
また、本実施形態では、ゲーム画面の表示に関わる前期ハイパーテキストファイル、また該ハイパーテキストファイルから参照されるマルチメディアファイルと、プレイヤー情報20eのデータの参照、書き換えを行い、クライアントの名前やキャラクタ体のグラフィック等のプロファイル情報とキャラクタ体の座標情報とのうち、プレイヤー情報20eのデータの参照、書き換えを行い、クライアントの名前やキャラクタ体のグラフィック等のプロファイル情報とキャラクタ体の座標情報のみの管理を行うようになっている。すなわち、CGI20dは、サーバSに同時接続されるクライアントの別にそれぞれ対応付けされているキャラクタ体の座標情報と、キャラクタ体の所在を示す画像情報とのうち、該座標情報のみを統括管理する座標管理用CGIプログラムのことである。また、本実施形態において、座標情報とは、クライアントC側の表示画面HGに表示される、前記キャラクタ体の背景画像に対する位置を示すものである。すなわち、クライアントC側では、前期座標情報をもって、該キャラクタ体が表示されている位置を把握している。なお、本実施形態では、クライアントCの表示画面HGの座標位置を(X,Y)とし、背景画像の左上を座標位置(0,0)としている。そして、背景画像における座標位置は、座標位置(0,0)を基準に右方にいくほど座標位置「X」の数値が増加するとともに、座標位置(0,0)基準に下方にいくほど座標位置「Y」の数値が増加するように定められている。ここで、背景画像がクライアントC側の表示画面HG内に収まりきらない場合は、クライアントCのプレイヤーが操作するキャラクタ体を中心として、表示画面HGの解像度で表示できる範囲のみを描画する。
次に、サーバSを管理し、クライアントCにネットワークゲームを提供するゲーム管理者M側で利用するシステムを図3に示す。ゲーム管理者Mは、ゲームのマップ、キャラクタ体、イベント等をハイパーテキストファイルに記述し、このパイパーテキストファイルと、ハイパーテキストファイルから参照されるマルチメディアファイル、CGIファイルを、ネットワークを介してファイルサーバプログラム20fにアップロード要求を行うようになっている。ファイルサーバプログラム20fは、FTP(File Transfer Protocol)等の通信プロトコルを利用して、ゲーム管理者MからサーバSの外部記憶装置20cに各種ファイルの転送を行う機能を持つプログラムである。そして、ファイルサーバプログラム20fにより、ハイパーテキストファイル、マルチメディアファイル及びCGIファイルは、サーバS上(外部記憶装置20c)にアップロードされるようになっている。なお、本実施形態において、マルチメディアファイルには、クライアントCの表示画面HGのゲーム画面を構成する背景画像としてのフィールド情報を表すフィールド用画像データや、該背景画像上に存在する仮想的な人物や動物を示す仮想キャラクタ用データや、各クライアントに対応するキャラクタ体を示すプレイヤー用キャラクタデータなどの画像データ、各種音声データなどがある。
次に、図3に示すシステムに従い、サーバS上にアップロードするハイパーテキストファイルについて図4(a)〜図4(c)に基づき説明する。
本実施形態においてハイパーテキストファイルは、XML(Extensible Markup Language)ベースの言語で記述されている。XML言語は、文書やデータの意味と構造を記述するためのマークアップ言語のひとつで、ホームページを構成する目的で利用されるHTMLと同様に扱うことのできる形式を目指したものである。具体的には、“<”,“>”で囲った部分をタグと呼び、“<tag>”がタグの開始、“</tag>”がタグの終端をそれぞれ表し、タグの開始と終端で文字列を囲うことでタグの内容が表現できる。さらに、<tag1> <tag2> </tag2> </tag1>というように、タグをタグで囲うことで、階層的な構造を表すこともできる。XMLはすなわち、タグによるマークアップが可能なマークアップ言語である。なお、XMLとは、文書やデータの意味、構造を記述するために、利用者がタグと呼ばれる特定の文字列を独自に定めることができ、地の文に構造を埋め込んでいくことのできる言語のことである(本実施形態ではJIS X 4159:2002)。また、マークアップ言語とは、タグと呼ばれる特定の文字列で地の文に構造や意味を埋め込んでいく言語のことである。
そして、本実施形態では、XML言語の独自のタグを指定することで、その意味を与え、機能を記述することができるという特徴を利用し、ネットワークゲームを表現するために必要な情報として、独自のタグのセット(集合)を定義している。このタグの種類は多数に及ぶため、全てのタグについての説明は省略するが、以下に、具体的な幾つかの例を挙げる。
<MAP>のタグは、クライアントC側の表示画面HGに構成される仮想空間内の地形を表し、地形のグラフィックや、該表示画面HG上に表示されているキャラクタがその場所に侵入することが可能かどうかというデータを表現する。また、<CHARACTER>のタグは、クライアントC側の表示画面HGに構成される仮想空間内に存在する登場人物を表し、登場人物のグラフィックや動作のパターンなどを表現する。また、<EVENT>のタグは、プレイヤーが特定の操作をしたときに発生する出来事を表し、その処理工程を記述する。具体的に処理工程とは、メッセージの表示<MESSAGE>、キャラクタ体の座標や属性の変更<SETPOSITION>など、マルチメディアファイルの再生と停止<PLAY>、<STOP>、表示画面HGへの視覚的な演出<EFFECT>、URL指定による別XMLファイルの読み込み<GO>、別ゲームの起動<EXECUTE>、内部変数の参照<GETVAR>、内部変数の変更<SETVAR>などのタグによる処理の組み合わせにより構成されている。また、本実施形態の処理工程は、順接工程、分岐工程及び反復工程のこれらの工程の組み合わせによる制御構造で表現されるようになっている(図4参照)。
図4(a)に示すように、処理工程40a,40b,40cは、順接工程の例である。ここで処理工程40aは、<EVENT1>タグに対応する処理を実行することを示すものであるとともに、処理工程40bは、<EVENT2>タグに対応する処理を実行することを示すものである。また、処理工程40cは、<EVENT3>タグに対応する処理を実行することを示すものである。そして、順接工程では、複数の処理工程40a,40b,40cが予め定められた順序でのみ実行される。このため、タグを順に記述した場合に、処理工程40a→処理工程40b→処理工程40cの順に、全ての処理工程(イベント)が実行される。なお、ここで<EVENTX>タグが示しているものは処理工程であり、メッセージの表示、キャラクタ体の座標や属性の変更、マルチメディアファイルの再生と停止、表示画面HGへの視覚的な演出、URL指定による別XMLファイルの読み込み、別ゲームの起動、内部変数の参照と変更といった処理の組み合わせである。
図4(b)に示すように、<IF>タグで囲まれた内容を示す処理工程41a,41b,41cは、分岐工程の例である。ここで、処理工程41aは、<CONDITION>タグで囲まれた内容を示すものであり、ある特定の条件が成立しているか否かを判定する工程である。また、処理工程41bは、<EVENT1>タグの内容を示すものであるとともに、処理工程41cは、<EVENT2>タグの内容を示すものである。そして、分岐工程では、処理工程41aに定める条件が成立している否かによって複数の処理工程41b,41cのうちのいずれかの処理工程が実行されるものである。図4(b)では、処理工程41aの判定結果が肯定である場合に処理工程41bが実行される一方で、該判定結果が否定である場合に処理工程41cが実行される。
図4(c)に示すように、<WHILE>タグで囲まれた内容を示す処理工程42a,42b,42cは、反復工程の例である。ここで処理工程42aは、<CONDITION>タグで囲まれた内容を示すものであって、ある特定の条件が成立しているか否かを判定する工程である。また、処理工程42bは、<EVENT1>タグの内容を示すものであるとともに、処理工程42cは、<EVENT2>タグの内容を示すものである。そして、反復工程は、処理工程42aに定める条件が成立している限り、一つの処理工程42bが繰り返し実行され続けるものである。図4(c)では、処理工程42aの判定結果が肯定である場合に処理工程42bが実行されるとともに、該処理工程42bの実行後に再度、処理工程42aの判定を実行する。そして、処理工程42aの判定結果が肯定である限り、繰り返し処理工程42bが実行される。一方、処理工程42aの判定結果が否定である場合に処理工程42cが実行される。
例えば、<EVENT1>に対応する処理としてマルチメディアファイル再生<PLAY>とする。また、<EVENT2>に対応する処理としてメッセージの表示<MESSAGE>とする。<EVENT3>に対応する処理として別XMLファイルの読み込み<GO>の処理とする。このように構成する場合、図4(a)に示す順接工程によれば、マルチメディアファイルを再生後、メッセージを表示し、別のXMLファイルの内容に移動、というようにゲームの内容が進むこととなる。また、図4(b)に示す分岐工程によれば、処理工程41aに定める条件が成立している場合はマルチメディアファイルが再生され、処理工程41aに定める条件が成立していない場合はメッセージが表示される。また、図4(c)に示す反復工程によれば、処理工程42aに定める条件が成立している限りマルチメディアファイルが繰り返し再生され続け、処理工程42aに定める条件が成立しなくなれば、メッセージが表示される。
このように本実施形態の処理工程は、前記マークアップ言語のマークアップ機能の1つとして分岐工程や反復工程(分岐構造)が定義付け可能とされており、該定義付けされている分岐工程や反復工程を利用して前記ゲーム処理工程を記述することによって前記ゲームの進行を分岐可能としたものである。
本実施形態では、上記のタグのセットをRPGML(Role−Playing Game Markup Language)と示し、該RPGMLを利用してハイパーテキストファイルを記述することで、ネットワークゲームのシナリオなどを構築することが可能となる。すなわち、RPGMLとは、XMLの書式に従い、ロールプレイングゲームを作成するために必要なタグと該タグの機能を定義した言語のことである。なお、RPGMLでは、マークアップ言語により記述されているため、ハイパーリンクを利用することで別ファイルの参照を行うことが可能であるため、複数のwebサーバ間での連携や分散処理も実現可能となる。
しかし、RPGMLはタグの種類が多く、学習には多少の時間を必要とするため、図3のゲーム管理者M2のように、該ゲーム管理者M2自身がビルダー30aを備えている場合もある。ビルダー30aとは、GUI(Graphical
User Interface)のサポートによりRPGMLを簡単に出力できるようにしたツールのことである。なお、GUIとは、コンピュータ・グラフィックスを利用し、視覚的に情報の表示を行い、主にマウスなどのポインティングデバイスを利用して操作を行うインタフェースのことである。ビルダー30aを利用すると、GUIを利用し、完成後のRPGMLをゲームブラウザが読み込んだ際に表示画面HGに表示されるゲーム画面を確認しながら、マウスやカーソルキー操作でマップを作成し、イベントを構築することができる。
そして、ゲーム管理者Mは、上記RPGMLにて記述されたハイパーテキストファイル、該ハイパーテキストファイルから参照されるマルチメディアファイルをサーバS上に公開する。サーバSに公開された時点で、ハイパーテキストファイルのURLに対して、ゲームブラウザ20aから接続要求されることで、クライアントCに対してゲームを楽しませることができる。
さらに、公開したハイパーテキストファイルに記述されるゲームのコンテンツを、ネットワーク上の複数のクライアント、すなわち、マルチプレイヤーでプレイ可能にするためには、ハイパーテキストファイルにプレイヤー情報共有のためのCGIファイルへの参照を記述し、CGIファイルをサーバS上に公開する。CGIファイルとは、後述するフローで、サーバ側のCGI20dによって実行されるCGIファイルのことである。本実施形態では、CGIファイルをPerl言語を用いて記述する。Perl(Practical Extraction and Report Language)言語とは、Larry Wall氏が開発したインタプリタ型のプログラミング言語である。
このように、サーバSを利用することができる環境にあり、RPGMLの定義(文法)を認知している者であれば、ゲーム管理者Mとなってネットワークゲームを提供することができる。なお、RPGMLの定義(文法)とは、本実施形態のRPGMLで定義付けされており、タグとして用いることができるタグの種類と各タグの機能のことである。また、サーバSを利用することができる環境にあり、RPGMLの定義(文法)を認知していない者であっても、GUIによるサポートによりRPGMLを視覚的に出力することができるビルダー30aを備えることで、ゲーム管理者Mとなってネットワークゲームを提供することができる。すなわち、本実施形態では、ビルダー30aを用いることで、ゲーム提供者のRPGMLの認知度にかかわらず、誰でもゲーム管理者Mとなることが可能である。
次に、クライアントC側に用意されるゲームブラウザ20aの具体的な処理内容と、サーバS側の具体的な処理内容について図5及び図6を利用して説明する。
まず、ゲームブラウザ20aの処理内容について説明する。
ゲームブラウザ20aは、処理工程50aにて、アプリケーション起動後に最初に読み込むハイパーテキストファイルの所在を示すURLを指定し、サーバSに対して該URLへの接続要求を行う。そして、ゲームブラウザ20aは、サーバSから所定のハイパーテキストを取得する。
続いて、ゲームブラウザ20aは、処理工程50bにて、処理工程50aで取得したハイパーテキストファイルを解析し、RPGMLの定義に従い、仮想空間を構築するためのフィールドデータや、キャラクタ体やイベント等のデータを抽出する。すなわち、処理工程50bにおいてゲームブラウザ20aは、ハイパーテキストファイルが取得されたとき、該ハイパーテキストファイルに記述されているゲーム処理工程を解析している。ここで、フィールドデータとは、仮想空間内の地形を表現するデータであり、地形のグラフィックのパターンや、プレイヤーがその場所に進入することが可能か否かの情報等が含まれている。なお、本実施形態の処理工程50bの処理では、広く配布されているXMLの汎用的な構文解析器(ゲーム解析手段)を利用することで、容易に実装を行うことができるように構成されている。なお、構文解析器とは、構文解析を行うプログラムである。
続いて、ゲームブラウザ20aは、処理工程50cにて、処理工程50bでハイパーテキストファイルを解析した結果、解析結果にマルチメディアファイルの所在を示すURL情報が指定されている場合、サーバSに対して該URLへの接続要求を行う。そして、ゲームブラウザ20aは、サーバSから所定のマルチメディアファイルを取得する。すなわち、処理工程50cにおいてゲームブラウザ20aは、ハイパーテキストファイルの取得に従いクライアントCの表示画面HGに画像表示させる背景画像を構成するフィールド用画像データ(背景画像)を取得している。そして、本実施形態では、処理工程50aに合わせて処理工程50cが実行され、処理工程50cにより背景画像が一旦取得されると、次にハイパーテキストファイルを取得する処理工程50aが実行されるまでの間、処理工程50cにより背景画像が取得されることはないように構成されている。したがって、背景画像は、ハイパーテキストファイルを取得してから次にハイパーテキストファイルを取得するまでの間において、1回取得されるのみである。
また、ゲームブラウザ20aは、処理工程50dにて、処理工程50bでハイパーテキストファイルを解析した結果、解析結果にCGI20dの所在を示すURL情報が示されているか否かを判定する。この判定結果が肯定の場合、ゲームブラウザ20aは、サーバSに対してCGI20dの所在を示すURLへの接続要求を行う。そして、ゲームブラウザ20aは、処理工程50eにて、サーバSに対して解析結果に示されるCGI20dへの接続要求(ログイン要求)を行う。処理工程50eにおいて、ゲームブラウザ20aは、クライアントCに対応付けされているキャラクタ体を識別する識別情報として、該キャラクタ体の名前や、該キャラクタ体を表示画面HGに表示させるためのプレイヤー用キャラクタデータなどのプロファイル情報をサーバS(CGI)に対して送信する一方で、同一のCGI20dに接続している他のクライアントに関わる識別情報の一覧を該CGI20d(サーバS)から取得する。そして、ゲームブラウザ20aは、処理工程50fに移行する。なお、本実施形態においてログインとは、CGI20dに対してクライアントに関する識別情報(プレイヤー情報)を送信して該CGI20dに接続している他のクライアントに対して自分の識別情報を提供可能な状態にすることである。そして、本実施形態では、処理工程50aでハイパーテキストファイルを取得して初めてのCGI20dへの接続要求がログイン要求となり、処理工程50eの処理によりCGI2dへログインすることとなる。
一方、処理工程50dを否定判定する場合、ゲームブラウザ20aは、処理工程50fに移行する。本実施形態において、処理工程50dを否定判定する場合とは、ゲーム管理者Mによって提供されているゲームが複数のクライアントを対象としないゲームであって、該ゲームを構成するハイパーテキストファイルを取得したプレイヤーのみに提供されるゲームである場合である。すなわち、複数のクライアントを対象としないゲームを構成するハイパーテキストファイルには、サーバSでクライアントに係る識別情報を管理する必要がないため、CGI20dへの所在を示すURL情報が示されていない(記述されていない)。
続いて、処理工程50fに移行したゲームブラウザ20aは、処理工程50bでハイパーテキストファイルを解析した結果と、処理工程50cで取得したマルチメディアファイルと、処理工程50eにて取得した他のクライアントに関わる識別情報とから、背景画像となる仮想空間のフィールド、該フィールド上に存在する仮想的な人物や動物を示すキャラクタ体、各クライアントに対応するキャラクタ体等を表示画面HGに画像表示させる(描画する)。なお、処理工程50fにより表示画面HGに画像表示されるゲーム画面は、初期画面であり、処理工程50aでハイパーテキストファイルを取得してから最初のゲーム画面となる。
続いて、ゲームブラウザ20aは、処理工程50fで仮想空間のフィールド、該フィールド上に存在する仮想的な人物や動物を示すキャラクタ体、各クライアントに対応するキャラクタ体等を表示画面HGに画像表示させた後、図6で示されるネットワークゲームの進行に係る処理である、処理工程60a〜60fによるイベント/プレイヤーの入力待ちループ(情報更新時)へと移る。
図6に示すように、ハイパーテキストファイルに基づくイベント/プレイヤーの入力待ちループ処理においてゲームブラウザ20aは、処理工程60aにて、CGI20dにログインしており、ログイン要求もしくは、前回のCGI20dへの接続(情報更新)要求から、予め定められた一定の時間が経過しているか否かを判定する。この判定結果が肯定の場合、ゲームブラウザ20aは、処理工程60bにて、サーバSに対してCGI20dへの接続要求を行う。処理工程60bにおいて、ゲームブラウザ20aは、サーバSに対してCGI20dへの接続要求を行うことで、ゲームに関する各種情報の情報更新要求を行っている。そして、ゲームブラウザ20aは、情報更新要求を行う際に、クライアント自身に関する識別情報及びクライアントCに対応するキャラクタ体の座標情報で変化のあったもの(主に座標情報)を送信する。一方、ゲームブラウザ20aは、情報更新要求を行う際に、クライアント自身に関する識別情報及び座標情報を送信すると、情報更新要求の応答としてCGI20dにログイン中の変化のあった他のクライアントに関する識別情報の一覧及び変化のあった識別情報に対応するキャラクタ体の座標情報を取得する。また、ゲームブラウザ20aは、処理工程60cにて、処理工程60bでCGI20dに新しくログインしたクライアントに関する識別情報(新規のプレイヤー情報)を取得した場合、該新しくログインしたクライアントに関する識別情報のうち対応するキャラクタ体のプレイヤー用キャラクタデータを取得する。
続いて、ゲームブラウザ20aは、処理工程60bで取得した識別情報の一覧に基づきクライアントCの表示画面HGの表示内容を決定する。そして、ゲームブラウザ20aは、情報更新要求前に取得している前回の情報更新要求時の識別情報の一覧及び座標情報と、今回の情報更新要求時の識別情報の一覧及び座標情報とを比較して、クライアントCの表示画面HGの表示内容を決定する。識別情報の一覧には、現在CGI20dにログインしているクライアント毎に識別情報が振り分けられており、該識別情報に基づき対応するキャラクタの座標情報がゲームブラウザ20aにより比較される。そして、ゲームブラウザ20aは、前回の情報更新要求時の識別情報の一覧と、今回の情報更新要求時の識別情報の一覧とを比較して、識別情報別に座標情報の変化を算出し、算出した結果に基づき前回の情報更新要求時の更新前の座標情報に基づく表示内容から、今回の情報更新要求時の更新後の座標情報に基づく表示内容となるようにクライアントCの表示画面HGの表示内容を決定する。また、ゲームブラウザ20aは、処理工程60dにて、処理工程60bでCGI20dに新しくログインしたクライアントに関する識別情報(新規のプレイヤー情報)を取得した場合、該新しくログインしたクライアントに関する識別情報に基づき処理工程60cで取得したプレイヤー用キャラクタデータに従ったキャラクタ体を表示画面HGの所定の位置に表示する表示内容を決定する。そして、ゲームブラウザ20aは、処理工程60eに移行する。
一方、ゲームブラウザ20aは、処理工程60aを否定判定する場合、処理工程60eに移行する。本実施形態において、ゲームブラウザ20aは、ゲーム管理者Mによって提供されているゲームが複数のクライアントを対象としない上記ゲームである場合に処理工程60aを否定判定する。
続いて、処理工程60eに移行したゲームブラウザ20aは、プレイヤーのキーボードやマウスなどの入力機器による入力や、ゲーム処理工程に基づくゲーム中のイベントなどに関わるゲーム処理を実行する。例えば、ゲームブラウザ20aは、プレイヤー入力に基づき該プレイヤーの入力が表示画面HGに反映されるかたちでクライアントCに対応するキャラクタ体を移動させるとともに、キャラクタ体の座標位置を変化させる。また、ゲームブラウザ20aは、プレイヤーの入力に基づくクライアントCに対応するキャラクタ体の行動が、ハイパーテキストファイルに記述されているイベントの発生条件を満たせば(図4(b)の処理工程41aや、図4(c)処理工程42a)、イベントを開始させる。本実施形態においてイベントの発生条件としては、例えば、クライアントCに対応するキャラクタ体とは異なる特定のキャラクタ体と接触する場合に、該特定のキャラクタ体に対して話しかけるコマンドをプレイヤーの入力により指示することで、内部変数がある値と等しくなる、もしくは、大きくなる、小さくなる場合、等がある。そして、ゲームブラウザ20aは、イベント開始後、RPGMLにて記述されたイベントの処理工程に従って、処理を実行する。
プレイヤーは、CGI20dにログインしている他のプレイヤーに対してメッセージを送ることができる。メッセージの種類によって、テキストベースの会話や、マルチメディアファイルの送受信、アイテムの交換、別ゲームでの対戦要求等を行うことができる。クライアントC(プレイヤー)から他のクライアント(他のプレイヤー)にメッセージを送る際の処理は以下となる。
クライアントCは、他のクライアントにメッセージを送るために、まずゲームブラウザ20aからwebサーバプログラム20b(サーバS)に対してCGI20dへの接続要求を行い、クライアントCを識別するID情報と、他のクライアントのID情報、メッセージの種類とデータを送信する。上記接続要求を受けたCGI20dは、受信したデータを保存しておき、その後、ID情報が一致する他のクライアントから情報更新要求があった場合、座標情報と共に先の保存したデータを他のクライアントに送る。
テキストベースの会話やマルチメディアファイルの送受信では、該当するテキストデータ、マルチメディアファイルデータを、メッセージとして送信する。アイテムの交換では、アイテムの名前、種類、使用した際の効果、アイテムのグラフィック、その他の属性データ等のアイテム情報をメッセージとして送信する。貴重なアイテムの場合は、上記アイテム情報を暗号化して送信する。
そして、ゲームブラウザ20aは、処理工程60fにて、処理工程60dや処理工程60eなどで決定した内容に基づいてクライアントCの表示画面HGの表示内容を更新した後、イベント/プレイヤーの入力待ち処理(処理工程60a〜処理工程60f)を繰り返し実行する。イベント/プレイヤーの入力待ち処理の繰り返しは、該ゲームブラウザ20aのアプリケーションを終了するか、別のハイパーテキストファイルに読み込み先を変えるまで(新たにハイパーテキストファイルを取得するまで)、継続する。ゲームブラウザ20aは、クライアントCの表示画面HGの表示内容の更新にあたって、背景画像を変化させることなく、処理工程60bの情報更新要求により取得した情報に基づき各クライアントに対応するキャラクタ体などの表示内容を更新する。
そして、本実施形態において処理工程60bによる情報更新要求は、処理工程50aでハイパーテキストファイルを取得した後に行われ、該ゲームブラウザ20aのアプリケーションを終了するか、別のハイパーテキストファイルに読み込み先を変えるまで繰り返し実行される。一方で、クライアントCの表示画面HGにおいては、ゲームブラウザ20aのアプリケーションを終了するか、別のハイパーテキストファイルに読み込み先を変えるまでの間、背景画像を示すフィールド用背景画像データ(背景画像)が処理工程50bにより一度のみ取得されて、処理工程50fにより一度のみ背景画像を表示させる処理が行われる。
次に、ゲームブラウザ20aのサーバSへの各種接続要求に対するサーバS側の処理内容について説明する。
ゲームブラウザ20aの処理工程50aを通じて、ハイパーテキストファイルの所在を示すURLへの接続要求が行われる場合、webサーバプログラム20bは、処理工程51aにて、該URLに記憶されているハイパーテキストファイルをゲームブラウザ20a(クライアントC)に送り返す。また、ゲームブラウザ20aの処理工程50cを通じて、各種マルチメディアファイルの所在を示すURLへの接続要求が行われる場合、webサーバプログラム20bは、処理工程51aにて、該URLに記憶されているマルチメディアファイルをゲームブラウザ20a(クライアントC)に送り返す。
また、ゲームブラウザ20aの処理工程50eを通じて、CGI20dの所在を示すURLへの接続要求が行われログイン要求が行われる場合、webサーバプログラム20bは、処理工程51bにて、CGI20dにアクセスして該CGI20dを起動させてCGIファイルに基づく処理工程51c〜51eの処理を実行させる。処理工程51bにてwebサーバプログラム20bに起動されたCGI20dは、クライアントC(ゲームブラウザ20a)のログイン要求に対して、プレイヤー(クライント)を識別するための識別情報としてID情報を与える(処理工程51c)。続いて、CGI20dは、処理工程51cにてログイン要求をしたプレイヤー(クライアントC)の識別情報をプレイヤー情報20eに加えて更新する(処理工程51d)。そして、CGI20dは、処理工程51dにてプレイヤー情報20eを更新した識別情報の一覧をwebサーバプログラム20bに送信し、該webサーバプログラム20bによりログイン要求を行ったクライアントC(ゲームブラウザ20a)に該プロファイル情報の一覧を送り返す(処理工程51e)。そして、CGI20dは、処理工程51eにて前記プロファイル情報とともに、該CGI20dに同時に接続している他のクライアントに対応するプレイヤー用キャラクタデータの所在を示す情報をログイン要求を行ったクライアントCに送り返す。本実施形態では、該CGI20dに同時に接続している他のクライアントに対応するプレイヤー用キャラクタデータの所在を示す情報として、サーバSに公開されているプレイヤー用キャラクタデータである場合に所在を示す情報としてサーバS内の該キャラクタデータのURLが示される。また、該CGI20dに同時に接続している他のクライアントに対応するプレイヤー用キャラクタデータの所在を示す情報として、クライアントCのブラウザ20aに予め用意及び記憶されているプレイヤー用キャラクタデータである場合に所在を示す情報としてブラウザ20a内の該キャラクタデータが記憶保存されている管理名が示される。なお、本実施形態では、これらプレイヤー用キャラクタデータの所在を示す情報がプレイヤー用キャラクタデータ(キャラクタ体)の画像情報となる。
また、ゲームブラウザ20aの処理工程60bを通じて、CGI20dの所在を示すURLへの接続要求が行われ情報更新要求が行われる場合、webサーバプログラム20bは、処理工程61aにて、CGI20dにアクセスして該CGI20dを起動させてCGIファイルに基づく処理工程61b,61cの処理を実行させる。処理工程61aにてwebサーバプログラム20bに起動されたCGI20dは、クライアントC(ゲームブラウザ20a)の情報更新要求に対して、クライントCから送られてきたクライアントの識別情報及びクライアントに対応するキャラクタの座標情報に基づきプレイヤー情報20eを更新する(処理工程61b)。続いて、CGI20dは、処理工程61bにて更新したプレイヤー情報20eのうち変化のあった識別情報の一覧及び変化のあった識別情報に対応するキャラクタ体の座標情報をwebサーバプログラム20bに送信し、該webサーバプログラム20bにより情報更新要求を行ったクライアントC(ゲームブラウザ20a)に変化のあった識別情報の一覧及び変化のあった識別情報に対応するキャラクタ体の座標情報を送り返す(処理工程61c)。
また、ゲームブラウザ20aの処理工程60cを通じて、新しくログインしたクライアントに対応するキャラクタ体のプレイヤー用キャラクタデータを示す画像情報URLへの接続要求が行われる場合、webサーバプログラム20bは、処理工程61dにて、該URLに記憶されているプレイヤー用キャラクタデータをゲームブラウザ20a(クライアントC)に送り返す。
このようにサーバS側では、クライアントCからの接続要求によるURL情報に示されるハイパーテキストファイルや、マルチメディアファイルなど各種ファイルや、変化のあった識別情報に対応するキャラクタ体の座標情報など各種データを接続要求してきたクライアントに対して送り返す処理工程51a,61dに基づく処理がwebサーバプログラム20bにより実行される。また、サーバS側では、クライアントCからのログイン要求及び情報更新要求によるCGI20dへの接続要求により、該webサーバプログラム20bがCGI20dを起動させてプレイヤー情報20eを更新する処理工程51b(処理工程51c〜51e)及び処理工程61a(処理工程61b,61c)に基づく処理がCGI20dにより実行される。すなわち、本実施形態のwebサーバ20bの機能は、ホームページを提供している一般的な要求応答型のwebサーバが備えている機能、処理と同一のものである。
また、本実施形態では、情報更新要求によりCGI20dで変化のある情報としてキャラクタ体の座標情報の他にキャラクタ体が装備しているアイテムに伴う画像データの更新や、新しくログインしたクライアントに定めるプレイヤー用キャラクタデータを示すURLなどがクライアントに対して送り返される。そして、本実施形態のCGI20dでは、ログインしているクライアントに対応するキャラクタに関わる各種情報が管理される一方で、背景画像に関わるフィールド用画像データに関して管理及び更新がなされないように構成されている。
次に、処理工程60d,60eに基づき処理工程60fにて実現される、ゲームブラウザ20aがキャラクタ体の描画パターンを決定する方法と、画面の更新方法について図7を用いて詳しく説明する。
処理工程60bでゲームブラウザ20aが情報更新要求により取得する識別情報の一覧は、該情報更新要求時に前回の情報更新要求時に取得した識別情報の一覧に対して変化のあったデータを取得する。すなわち、本実施形態においてゲームブラウザ20aは、CGI20d(サーバS)に同時にログインしているクライアントに対応するキャラクタ体のクライアントCの背景画像に対する更新された座標情報を取得している。そして、ゲームブラウザ20aは、座標情報が更新されたキャラクタ体を、更新前の座標位置からから更新後の座標位置へ移動させる。対象となるキャラクタ体の移動に際して、ゲームブラウザ20aは、更新前の座標位置からから更新後の座標位置に移動するまでの移動路を補完しながら滑らかに移動させ、その移動方向やキャラクタ体の動作も含めて連続的に反映されるようにクライアントC側の表示画面HGの表示内容を制御する。なお、表示画面HGには、画面の解像度に合わせてクライアントCのプレイヤーが操作するキャラクタ体座標を中心とする背景画像の一部分が表示され、表示画面に入りきらない座標のキャラクタ体は表示されない。
例えば、情報更新要求によって更新されるキャラクタ体における更新前の座標位置が(112,48)であり、更新後の座標位置が(80,80)であった場合には、これら2つの座標位置の中間地点である(96,64)を経過した可能性が高いと推測することができる。そして、ゲームブラウザ20aは、このような判断と、ハイパーテキストファイルに記述されたフィールドデータの進入可能情報、他キャラクタ体の座標との衝突判定等から総合的に判断し、座標(112,48)から(80,80)へ、連続的に座標を移動させられるように間を補完し、最終的な画面を決定する。また、ゲームブラウザ20aは、処理工程50c,60cにおいて、プレイヤー用キャラクタデータの取得に際して、各方向(図7における上下及び左右方向)を向いているキャラクタ体の上用データ、下用データ、左用データ及び右用データをそれぞれ取得している。そして、ゲームブラウザ20aは、キャラクタ体の移動する移動方向を算出し、その移動方向に従い上用データ、下用データ、左用データ及び右用データを連続的に表示してキャラクタ体が移動する態様を表現するようになっている。例えば、ゲームブラウザ20aは、キャラクタ体を座標位置(112,48)から座標位置(80,80)に移動させる場合、その途中に障害物などがなく直線的に移動させるときに左用データ、下用データを用いてこれらを組み合わせて左下方向に該キャラクタ体を移動させる。また、ゲームブラウザ20aは、キャラクタ体を座標位置(112,48)から座標位置(80,80)に移動させる場合、その途中に障害物などが存在し、キャラクタ体が通過することができない座標位置を示す情報が設定されているときに上用データ、下用データ、左用データ及び右用データを用いて組み合わせて、座標位置(112,48)から座標位置(80,80)にキャラクタ体を移動させる。
処理工程60bでゲームブラウザ20aが情報更新要求により取得する識別情報の一覧は、該情報更新要求時に前回の情報更新要求時に取得した識別情報の一覧に対して変化のあったデータのみであり、最終的にクライアントC側の表示画面HGの表示内容を構成するための情報ではない。すなわち、情報更新要求によりCGI20dにより更新される識別情報の一覧に基づき、クライアントC側の表示画面HGの表示内容を構成することができないように構成されている。
以上の実施形態では、サーバSのCGI20dに同時にログインするプレイヤー毎に対応付けされているキャラクタ体の背景画像に対する座標情報と、キャラクタ体の画像データの所在を示す画像情報(本実施形態ではURL)とのうち、定期的に変更される可能性の高い該座標情報のみを更新する機能を有するCGI20dをサーバS側に設けた。また、RPGMLを用いて記述したハイパーテキストファイル(ハイパーテキストプログラム)やマルチメディアファイルを、外部記憶装置20cに記憶させて、サーバS側に設けるようにした。
また、本実施形態では、ハイパーテキストファイル(ハイパーテキストプログラム)やマルチメディアファイルにこれらファイルの所在を示すURLへの接続要求をサーバSに対して行うことで、HTTP通信を利用して取得する機能を有する通信制御手段をクライアントC側に備えた。また、通信制御手段によりハイパーテキストファイルが取得されたとき、該ハイパーテキストファイルに記述されているゲーム処理工程を解析するプログラム解析手段をクライアントC側に備えた。また、プログラム解析手段の解析結果に基づいて背景画像を取得する背景画像情報取得手段と、該背景画像情報手段が取得した背景画像を表示画面HGにて表示する背景画像表示制御手段とをクライアントC側に備えた。また、プログラム解析手段の解析結果に基づいてCGI20dの所在を示すURLへの接続要求をサーバSに対して行い、CGI20dに対するログイン要求を行うことで、該CGI20dに同時接続されるクライアントに対応するキャラクタ体の画像情報を取得する画像情報取得手段をクライアントC側に備えた。また、プログラム解析手段の解析結果に基づいて上記CGI20dの所在を示すURLへの接続要求を上記サーバSに対して行い上記CGI20dに対する情報更新要求を行うことで、該CGI20dに同時接続されるクライアントに対応するキャラクタ体の座標情報を取得する座標情報取得手段をクライアントC側に備えた。また、画像情報取得手段が取得した画像情報と座標情報取得手段が取得した座標情報とに基づき該座標情報の示される座標位置にキャラクタ体を表示するとともに、情報更新要求時に取得できるキャラクタ体の座標情報の変化から該座標情報の示される座標位置に対応するキャラクタ体を表示するキャラクタ体表示手段をクライアントC側に備えた。さらに、プログラム解析手段の解析結果に基づいてクライアントC(プレイヤー)側からの操作に応じた分岐処理等を行うゲームの進行に係る制御を行うゲーム進行手段をクライアントC側に備えた。そして、通信制御手段と、プログラム解析手段と、背景画像取得手段と、背景画像表示制御手段と、画像情報取得手段と、座標情報取得手段と、キャラクタ体表示手段と、ゲーム進行手段との機能を有するゲームブラウザ20aをクライアントC側に備えている。
したがって、クライアントC側から要求があったときだけ予め定められた情報を送り返す、といった機能のみを専ら有する要求応答型のサーバSを利用しながらも、RPGMLにて上記ハイパーテキストファイルに記述されたゲーム処理工程が上記クライアント側にて解析されることで、座標情報の定期的な更新処理など、キャラクタ体の座標情報の統括管理や、シナリオを進行させるための処理など、ゲームの進行にかかる制御、等々といった処理をクライアント側からの要求に応じたかたちで適切に実行することができるようになる。
しかも、上記構成では、ゲームのリアルタイム性についてはキャラクタ体の位置的変化によるところが大きいことに鑑み、上記サーバSを利用するにあたり、キャラクタ体の上記座標情報と上記画像情報とのうち、前記座標情報のみを統括管理するCGI20dを備えることとした。そして、キャラクタ体の移動に際しての表示内容の更新表示については各クライアントC側での処理として行うようにしている。すなわちこの場合、サーバSとクライアントC側との間でのHTTPが採用されるシステムでありながらも、クライアント側からの表示内容の更新要求に対し、その表示内容の変更にかかる画像処理(画像情報の記憶処理など)を、複数のクライアントが同時接続されるサーバS側にて行わずともよくなる。これにより、クライアントC側と、サーバS側とで役割をそれぞれに分担することで、キャラクタ体に位置的変化が生じたときのサーバS側での処理負荷、さらにはサーバS側の応答速度を大きく改善することができるようになり、要求応答型のwebサーバを利用しつつも、ゲームのリアルタイム性とインタラクティブ性を好適に維持することができるようになる。
またさらに、上記構成では、ゲームブラウザ20aが、キャラクタ体を表示画面HGにて一旦表示した後、情報更新要求時に更新記憶された座標情報が新たに取得されたときは、該新たな座標情報により示される位置に上記キャラクタ体を更新表示するにあたり、上記所定の表示画面にて該当するキャラクタ体が現在位置している座標情報と、上記新たな座標情報との差分を算出して、該算出された差分を埋める連続的な画像が現れるようにした。このような上記算出された差分を埋める連続的な画像の表示を通じて、要求応答型のwebサーバ、CGIプログラムを利用したことによる通信遅れが生じてしまった場合であっても、プレイヤーに違和感を与えることなく、表示内容の変更にかかる画像処理(画像情報の記憶処理など)をクライアント側にて行うことができるようになる。
従って、現在、ホームページ用に普及しているwebサーバをゲームサーバとしてそのまま利用可能となり、一個人が容易にゲームの統括管理者になることができ、ネットワークゲームを提供することができるようになる。
したがって、本実施形態によれば、以下に示す効果を得ることができる。
(1)サーバSを利用するにあたり、キャラクタ体の座標情報と、キャラクタ体の画像情報とのうち、前記座標情報のみを統括管理するCGI20dを備えることとした。そして、キャラクタ体の移動に際しての表示内容の更新表示については各クライアント側での処理として行うようにしている。すなわちこの場合、サーバSとクライアントC側との間での情報授受プロトコルとしてHTTPが採用されるシステムでありながらも、クライアントC側からの表示内容の更新要求に対し、その表示内容の変更にかかる画像処理を、複数のクライアントが同時接続されるサーバS側にて行わずともよくなる。これにより、キャラクタ体に位置的変化が生じたときのサーバS側での処理負荷、さらにはサーバS側の応答速度を大きく改善することができるようになり、要求応答型のwebサーバを利用しつつも、ゲームのリアルタイム性を好適に維持することができるようになる。またさらに、キャラクタ体を表示画面HGにて一旦表示した後、座標情報が更新されたときは、該更新後の座標情報により示される位置にキャラクタ体を更新表示するにあたり、表示画面HGにて該当するキャラクタ体が現在位置している座標情報と、更新後の座標情報との差分を算出して、該算出された差分を埋める連続的な画像が現れるようにした。このような上記算出された差分を埋める連続的な画像の表示を通じて、要求応答型のwebサーバを利用したことによる通信遅れが生じてしまった場合であっても、プレイヤーに違和感を与えることなく、表示内容の変更にかかる画像処理をクライアントC側にて行うことができるようになる。このように構成されるネットワークゲームシステムでは、ホームページ用に普及しているwebサーバをゲームサーバとしてほぼそのまま利用可能としたため、一個人が容易にゲームの統括管理者になることができ、ネットワークゲームを提供することができるようになる。
(2)座標情報は、背景画像に対する座標を示すものであって、該表示画面の表示内容を示す背景画像に比較して容量の少ない情報である。このため、表示画面HGにおけるキャラクタ体の更新に際しては、クライアントC側とサーバS側とで容量の少ない座標情報の送受信を行うことで実現させ、容量の多い背景画像の送受信が行われる頻度を減少させた。このような構成によれば、座標情報に比較して低い頻度で背景画像を取得することとなり、その結果、サーバSとクライアントC間の通信負担を軽減することができる。
(3)クライアントの別にそれぞれ対応付けされているキャラクタ体の座標情報は、キャラクタ体を示す画像データに比較して容量の少ない情報である。このため、表示画面HGにおけるキャラクタ体の更新に際しては、クライアントC側とサーバS側とで容量の少ない座標情報の送受信を行うことで実現させ、容量の多いキャラクタ体に関する処理頻度を減少させた。さらに、キャラクタ体の表示に関しては、ゲームブラウザ20aにより取得されている画像情報に基づきクライアントC側の表示画面HGの表示制御が行われるように構成した。このような構成によれば、座標情報に比較して低い頻度でキャラクタ体の画像情報を取得することとなり、その結果、サーバSとクライアントC間の通信負担を軽減することができる。
(4)ハイパーテキストプログラムでは、マークアップ言語におけるマークアップの意味を自由に定義付けできるといった性質を利用して、マークアップ言語のマークアップ機能の1つとして分岐構造が定義付けされている。そしてこの上で、該定義付けされた分岐構造を利用して上記ゲーム処理工程を記述することによってゲームの進行を分岐可能としたため、例えばC言語等でプログラムを最初から作成した場合と比較してコード量が少なくなり、プログラムの管理を容易にすることができるようになる。また、クライアントC側のゲームサーバ20aによるハイパーテキストプログラムの取得に際し、通信負荷を軽減することができるようになる。
(5)一般的にホームページ用のサーバSを利用するシステムでは、サーバSとクライアントC側においてXMLで記述されたデータの情報授受が行われている。このため、ホームページ用のサーバSをゲームサーバとして利用する場合には、XMLでハイパーテキストプログラムを記述することにより従前から存在するホームページ用のサーバSで利用されるシステムをそのまま利用することで汎用性を確保することができる。
(6)ゲームブラウザ20aは、CGI20dで定期的に座標情報を更新記憶させ、定期的にサーバSを通じて座標情報を取得することになる。このため、一度CGI20dで座標情報を更新記憶させた後は、ゲームブラウザ20aにより、定期的に更新記憶を行わせ、新しくキャラクタ体の座標情報が取得されることとなる。したがって、定期的にキャラクタ体の表示画像に対する座標情報を更新することができ、表示画面HG上のキャラクタ体の表示画像の表示位置を更新することができる。その結果、サーバSにおいて、定期的に他のクライアントの座標情報を更新することで、プレイヤーに違和感を与えることなく、表示内容の変更にかかる画像処理をクライアントC側にて行うことができるようになる。
(7)CGI20dでは、該CGI20dに接続要求してきたクライントに対してそれぞれ識別情報を対応付け、識別情報毎に座標情報を更新記憶する。そして、CGI20dは、更新記憶した結果、同時接続されているクライントの識別情報とともに座標情報を接続要求してきたクライアント側に送信する。このため、CGI20dは、同時接続されているクライアントを識別情報により識別し、その識別情報に基づき座標情報を更新記憶することとなる。したがって、クライアントC側は、CGI20dに接続要求をすることにより、各クライアントに対応するキャラクタ体を識別する識別情報と座標情報とを取得することとなる。その結果、複数のクライアントが同時接続している場合であっても、各クライアントに対応するキャラクタ体毎に情報を確実に更新することが可能であるとともに、その更新記憶に基づき各クライアントに対応するキャラクタ体を表示画面HG上に確実に表示することができる。
(8)クライアントC側で新たな座標情報を取得した場合に、現在位置している座標情報と新たな座標情報との差分を埋めるよう移動画像を連続的に表示画面に表示させることで、リアルタイムで各クライントの状態を管理しているように表示画面HGに表示させることができる。
(9)ゲームブラウザ20aは、座標情報などをサーバSに送信するかわりに、他のクライアントの識別情報と、座標情報などをサーバSから取得することとなる。すなわち、クライアントCの要求に応じて予め定めた情報を送り返すサーバSの機能を利用して、同時接続している複数のクライアントの識別情報と、座標情報などを管理することができる。
なお、本実施形態は以下のように変更してもよい。
○本実施形態では、RPGML以外のハイパーテキストファイルを読み込み解釈するゲームブラウザ、例えば、HTMLを読み込み、ゲームとして解釈するゲームブラウザ等が挙げられる。
○本実施形態では、ハイパーテキストファイルをバイナリ圧縮、もしくは暗号化したものを用いてもよい。
○本実施形態では、CGIファイルを構成する言語としてはPHP、Rubyなどを利用してもよい。PHP、Rubyは、プログラミング言語、もしくはその処理系を指す。
○本実施形態において、背景画像や、キャラクタ体の画像は、クライアントC側に予め用意されているような構成であってもよい。すなわち、ゲームブラウザ20aは、キャラクタ体の画像データ情報や、背景画像データを該ゲームブラウザ20a内から読み出す。したがって、この場合、背景画像やキャラクタ体の画像の所在を示す画像情報は、ゲームブラウザ20a内のアドレスなどを指定することとなる。
○本実施形態において、キャラクタ体を示す画像情報や、背景画像を示す画像情報は、表示画面HGに表示させる画像データそのものであってもよい。
○本実施形態は、CGI20dのかわりにサーブレットを利用して実現することもできる。なお、サーブレットとは、webサーバ上で実行されるJavaプログラムであり、Javaは登録商標である。
○本実施形態は、ハイパーテキストプログラムをXML以外のマークアップ言語により作成することもできる。また、ハイパーテキストプログラムは、C言語などによっても作成することもできる。
○本実施形態において、ゲームブラウザ20aは、定期的に背景画像を取得するように構成してもよい。しかしながら、背景画像を取得する頻度は、座標情報を更新する頻度に比較して低い方が好ましい。
○本実施形態において、ゲームブラウザ20aは、定期的にキャラクタ体の画像情報を取得するように構成してもよい。しかしながら、キャラクタ体の画像情報を取得する頻度は、座標情報を更新する頻度に比較して低い方が好ましい。
○本実施形態において、表示画面HGにおけるキャラクタ体の移動に際しては、動画やアニメーション画像を用いることもできる。
○本実施形態において、キャラクタ体の座標情報としては、表示画面HGを基準として規定するようにしてもよい。また、キャラクタ体の座標情報としては、プレイヤに対応するキャラクタ体の座標情報を基準として、該キャラクタ体の座標位置からの差分により他のプレイヤーに対応するキャラクタ体の座標情報を構成するようにしてもよい。すなわち、プレイヤーに対応するキャラクタ体の座標位置に対する相対位置として他のプレイヤーに対応するキャラクタ体の座標情報を構成することとなる。
次に、上記実施形態及び別例から把握できる技術的思想を以下に追記する。
(イ)前記通信制御手段は、前記ハイパーテキストプログラムの取得に際しては、当該ハイパーテキストプログラムをバイナリ圧縮された圧縮データとして前記webサーバから受信し、該受信した圧縮データをクライアント側にて解凍することによって前記ハイパーテキストプログラムを取得するものである請求項1〜5のうちいずれか一項に記載のネットワークゲームシステム。
(ロ)前記座標管理用CGIプログラムは、前記座標情報を、前記キャラクタ体を識別する識別情報にそれぞれ対応付けして統括管理するものであり、前記座標情報取得手段は、前記座標管理用CGIプログラムの所在を示すURLへの接続要求を前記webサーバに対して行ったとき、前記更新記憶された座標情報のほか、該座標情報に対応付けされた前記識別情報も取得するものであり、前記キャラクタ体表示制御手段は、前記座標情報取得手段により取得された前記座標情報により示される位置に、該座標情報に対応付けされた前記識別情報に対応する前記キャラクタ体の画像を表示するものである請求項1〜5のいずれか一項に記載のネットワークゲームシステム。
(ハ)前記識別情報は、前記webサーバに同時接続されるクライアントの別にそれぞれ対応付けされている前記キャラクタ体のID情報を含めて、各キャラクタ体のプロファイル情報である技術的思想(ロ)に記載のネットワークゲームシステム。
(ニ)前記座標情報取得手段は、前記座標管理用CGIプログラムの所在を示すURLへの接続要求の際、前記クライアント側にて記憶されている自己キャラクタの前記座標情報を前記サーバ側に送信し、前記座標管理用CGIプログラムにより更新記憶された他のクライアントの座標情報とともに各クライアントに対応付けされている識別情報を取得する技術的思想(ハ)に記載のネットワークゲームシステム。
(ホ)前記クライアント側には、前記プログラム解析手段による前記ゲーム処理工程の解析結果に基づいて前記背景画像を含めて、前記サーバ内で提供されるゲームに用いられる各種の画像を示す画像データの所在を示す情報に基づき前記画像データを取得する画像情報取得手段をさらに備え、前記キャラクタ体表示制御手段は、前記画像情報取得手段が取得した前記画像データに基づく画像を、該画像データを取得した順に順次、前記所定の表示画面に表示させ、これら画像を該所定の表示画面にて一旦表示した後、前記座標情報取得手段により前記更新記憶された座標情報が新たに取得されたときは、該新たな座標情報により示される位置に前記キャラクタ体を更新表示するにあたり、前記所定の表示画面にて該当するキャラクタ体が現在位置している座標情報と、前記新たな座標情報との差分を算出して、該算出された差分を埋める連続的な画像が現れるようにした請求項1〜5のいずれか一項に記載のネットワークゲームシステム。
(ヘ)前記キャラクタ体表示制御手段は、前記連続的な画像が現れるように前記キャラクタ体を表示する場合、前記算出された差分から得られる当該キャラクタ体の向きも反映されるかたちで前記キャラクタ体を表示するものであり、前記キャラクタ体の表示画像を前記所定の表示画面にて一旦表示した後、前記webサーバ側で前記更新記憶された座標情報を新たに取得するとき、該新たな座標情報により示される位置に前記キャラクタ体の表示画像を表示するにあたり、現在の座標情報と更新記憶された座標情報とにより、該更新記憶された座標情報に基づき該現在の座標情報から前記所定の表示画面のいずれの方向に移動するのか移動方向を算出するとともに、その移動方向に従い前記複数の方向の画像データを連続的に表示してキャラクタ体を現す技術的思想(ホ)に記載のネットワークゲームシステム。
(ト)前記キャラクタ体表示制御手段は、前記キャラクタ体の表示画像を前記所定の表示画面にて一旦表示した後、前記webサーバ側で前記更新記憶された座標情報を新たに取得するとき、該新たな座標情報により示される位置に前記キャラクタ体の表示画像を表示するにあたり、前記所定の表示画面にて該当するキャラクタ体が現在位置している座標情報と、前記新たな座標情報との差分を算出するとともに、前記キャラクタ体を該新たな座標情報に基づく位置に移動させるように前記予め取得している移動画像を連続的に表示する場合にこれら移動画像間同士の表示する間をうめた連続画を用いる技術的思想(ホ)に記載のネットワークゲームシステム。
S…サーバ、C…クライアント、20a…ゲームブラウザ、20b…webサーバ、20c…外部記憶装置、20d…CGI、20e…プレイヤー情報、20f…ファイルサーバプログラム、30a…ビルダー、40a〜40c…処理工程(順接工程)、41a〜41c…処理工程(分岐工程)、42a〜42c…処理工程(反復工程)、50a〜50f…処理工程(ハイパーテキストファイル初回読み込み時のクライアント側)、51a〜51e…処理工程(ハイパーテキストファイル初回読み込み時のサーバ側)、60a〜60f…処理工程(入力待ちループ中のクライアント側)、61a〜61d…処理工程(入力待ちループ中のサーバ側)、HG…表示画面