以下、図面を参照しつつ、本発明に係るコンピュータ、その制御方法、及びその制御プログラムについて説明する。ただし、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
このコンピュータは、複数のプレイヤに共通のゲーム空間内にオブジェクトを配置することにより進行していくリアルタイムストラテジーのゲームを提供する。このコンピュータは、それぞれのオブジェクトに重みを設定しておき、ゲーム空間内に配置されるオブジェクトの重みの合計値に、端末スペックによる描画制限の範囲内で閾値(例えば上限値)を設定する。そして、あるプレイヤの操作により新たなオブジェクトを配置する指示がなされたときに、ゲーム空間内に現在配置されているオブジェクトの重みの合計値が閾値以下である場合に限り、そのオブジェクトの配置を許可する。即ち、オブジェクトの重みの閾値と合計値を、同時にプレイする複数のプレイヤ間で共有させる。これにより、このコンピュータは、端末スペックによる描画制限の範囲内で複数のプレイヤが同時にゲームをプレイできるようにすると共に、制限範囲内でどのオブジェクトをどのように配置するかを各プレイヤに考えさせることにより、描画制限をゲームの面白さ(ゲーム性)に転換することを図る。
なお、コンピュータは、上記の手順を実行可能であればよく、例えば、携帯端末、据置端末、サーバ等である。
以下では、上記のコンピュータで実現されるゲームの一例として、複数のプレイヤに共通のゲーム空間であるフィールドマップ上に各プレイヤが多数の兵士等のオブジェクトを配置することで、敵の陣地を攻略していくゲームを説明する。ただし、本発明のゲームは、ゲーム空間内にオブジェクトを配置することにより進行していくゲームであれば、特定のものには限定されない。また、オブジェクトとは、ゲーム空間内に配置(描画)されるデジタルコンテンツのことであり、兵士に限らず、ゲーム内の他のキャラクタ、ゲーム空間内に配置される施設、カード、フィギア、アバター、アイテム等であってもよい。
図1は、ゲームシステム1の概略構成の一例を示す図である。ゲームシステム1は、少なくとも一台の携帯端末2と、サーバ3とを備える。
携帯端末2は、プレイヤによる操作を受け付ける。また、サーバ3は、複数のプレイヤが各自の携帯端末2上でプレイしているゲームの進行を制御する。携帯端末2とサーバ3とは、例えば、基地局4、移動体通信網5、ゲートウェイ6、及びインターネット7等の通信ネットワークを介して相互に接続される。携帯端末2で実行されるプログラム(例えば、ゲームプログラム)と、サーバ3で実行されるプログラム(例えば、ゲーム管理プログラム)とは、UDP(User Datagram Protocol)、ハイパーテキスト転送プロトコル(Hypertext Transfer Protocol, HTTP)、TCP(Transport Control Protocol)等の通信プロトコルを用いて通信を行う。特にゲームの進行中には、携帯端末2とサーバ3は、通信ネットワークを介して常時通信を行う。
なお、携帯端末2としては多機能携帯電話(所謂「スマートフォン」)を想定するが、本発明はこれに限定されない。携帯端末2は、本発明が適用可能であればよく、例えば、携帯電話(所謂「フィーチャーフォン」)、携帯情報端末(Personal Digital Assistant, PDA)、携帯ゲーム機、携帯音楽プレーヤ、タブレットPC、ノートPC、ウェアラブルコンピュータ、デスクトップPC等でもよい。
図2は、携帯端末2の概略構成の一例を示す図である。携帯端末2は、端末通信部21と、端末記憶部22と、操作部23と、表示部24と、端末処理部25とを備える。
端末通信部21は、所定の周波数帯を感受帯域とするアンテナを含む通信インターフェース回路を備え、携帯端末2を無線通信ネットワークに接続する。端末通信部21は、基地局4により割り当てられるチャネルを介して、基地局4との間でLTE(Long Term Evolution)、CDMA(Code Division Multiple Access)方式等による通信信号回線を確立し、基地局4との間で通信を行う。そして、端末通信部21は、端末処理部25から供給されたデータをサーバ3等に送信する。また、端末通信部21は、サーバ3等から受信したデータを端末処理部25に供給する。
端末記憶部22は、例えば、半導体メモリ装置を備える。端末記憶部22は、端末処理部25での処理に用いられるオペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム、データ等を記憶する。例えば、端末記憶部22は、ドライバプログラムとして、操作部23を制御する入力デバイスドライバプログラム、表示部24を制御する出力デバイスドライバプログラム等を記憶する。また、端末記憶部22は、アプリケーションプログラムとして、ゲームを進行させ、その結果を表示するゲームプログラム等を記憶する。また、端末記憶部22は、データとして、プレイヤの識別番号(ID)、ゲーム空間としてのフィールドマップ(以下単に「マップ」という)を管理するマップテーブル(図3(a))、マップ上に配置される敵キャラクタ等を管理する敵キャラクタテーブル(図3(b))、プレイヤが使用する味方の兵士等を管理する兵士テーブル(図3(c))、敵キャラクタ及び味方の兵士等のオブジェクトに係る画像データ、映像データ等を記憶する。さらに、端末記憶部22は、所定の処理に係る一時的なデータを記憶してもよい。
図3(a)〜図3(c)は、端末記憶部22に記憶される各種テーブルのデータ構造の一例を示す図である。
図3(a)は、マップを管理するマップテーブルの一例を示す。マップテーブルには、マップを識別するためのマップID、対応する画像データのファイル名、そのマップの難易度を示すレベル、そのマップ上に配置可能なオブジェクトの重みについての上限値を示すコスト上限、並びに、そのマップ上に配置される各敵キャラクタに対応する敵キャラクタID及びそれらの配置位置等が記憶される。以下では、オブジェクトに設定された重みのことを、「配置コスト」ともいう。
なお、このゲームでは、マップは格子状に構成されており、各オブジェクトはいずれかの格子に配置され、その位置は所定の格子(例えば、マップの左上)を原点とする格子の座標で表現されるものとする。ただし、ゲーム空間(マップ)の構成等は、本発明が適用可能であればどのようなものでもよい。
図3(b)は、マップ上に配置される敵キャラクタ等を管理する敵キャラクタテーブルの一例を示す。敵キャラクタテーブルには、敵キャラクタを識別するための敵キャラクタID、敵キャラクタの種類、対応する画像データのファイル名、敵キャラクタの強さを示すレベル等が記憶される。なお、敵キャラクタは、敵の兵士等に限らず、敵の陣地に設けられる壁等の施設であってもよい。
図3(c)は、プレイヤが使用する味方の兵士等を管理する兵士テーブルの一例を示す。兵士テーブルには、兵士を識別するための兵士ID、対応する画像データのファイル名、その兵士の強さを示すレベル、その兵士一人当たりに設定されたオブジェクトの重みである配置コスト等が記憶される。
操作部23は、携帯端末2の操作が可能であればどのようなデバイスでもよく、例えば、タッチパネル、キーボタン等である。プレイヤは、操作部23を用いて、文字、数字、記号等を入力することができる。操作部23は、プレイヤにより操作されると、その操作に対応する信号を発生する。そして、発生した信号は、プレイヤの指示として、端末処理部25に供給される。
表示部24も、映像、画像等の表示が可能であればどのようなデバイスでもよく、例えば、液晶ディスプレイ、有機EL(Electro−Luminescence)ディスプレイ等である。表示部24は、例えば液晶タッチパネルディスプレイにより操作部23と一体化されていてもよい。表示部24は、端末処理部25から供給された画像データに応じた画像、映像データに応じた映像等を表示する。
端末処理部25は、一又は複数個のプロセッサ及びその周辺回路を備える。端末処理部25は、例えばCPU(Central Processing Unit)であり、携帯端末2の全体的な動作を統括的に制御する。端末処理部25は、端末記憶部22に記憶されているプログラム、操作部23の操作等に基づいて携帯端末2の各種処理が適切な手順で実行されるように、端末通信部21、表示部24等の動作を制御する。端末処理部25は、端末記憶部22に記憶されているプログラム(オペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム等)に基づいて処理を実行する。また、端末処理部25は、複数のプログラム(アプリケーションプログラム等)を並列に実行することができる。
図4(a)、図4(b)および図5(a)〜図5(d)は、携帯端末2の表示画面の一例を示す図である。ここで、図4(a)〜図5(d)を参照しながら、ゲームシステム1が提供するゲームの概略について説明する。
図4(a)は、ゲームの開始時に表示されるマップ選択画面200を示す。このゲームでは、対戦ゲームが展開されるマップがいくつか提示され、プレイヤはその中からいずれかのマップを選択することができる。例えば、図4(a)では、3つのマップ201、202、203が提示されており、プレイヤは、対応する選択ボタン211、212、213を操作することにより、いずれかのマップを選択することができる。マップによって、登場する敵キャラクタのレベルやマップの大きさが異なっており、攻略の難易度も異なる。プレイヤのレベルによって、選択可能なマップの種類(難易度)を変化させてもよい。
図4(b)は、1つのマップが選択されて、ゲームが開始されるときのゲーム進行画面300を示す。この画面には、対戦ゲームが展開されるマップ301が示されている。このマップは敵の陣地であり、その上には、敵キャラクタとして、マップに応じて様々な敵の兵士又は施設等302〜306が配置されている。このゲームの目的は、ゲームに参加する複数のプレイヤが互いに協力してマップ301上に味方の兵士等のオブジェクトを配置していき、敵の中心拠点(例えば施設303)を攻略することである。
例えば、複数のプレイヤにより同じマップが選択されると、ゲームに参加するプレイヤの組合せが決まり、そのマップを対戦場とする対戦ゲームが開始される。同時に同じマップにてゲームをプレイできるプレイヤの人数には、例えば4人まで等の上限が設定される。そして、このゲームでは、例えば敵の兵士等はコンピュータ(サーバ3)により操作され、最大4人のプレイヤとコンピュータが対戦する。あるいは、ゲームシステム1が提供するゲームは、複数のプレイヤで構成されるグループ同士が対戦するものであってもよい。
なお、ゲームシステム1が提供するゲームでは、プレイヤ間でフレンド関係を結ぶことができる。フレンド関係にあるプレイヤは、後述するように、例えば共同でプレイしたときに有利な条件で敵キャラクタと対戦可能になる。1人のプレイヤは複数のプレイヤとフレンド関係を結ぶことができる。ただし、1人のプレイヤがフレンド関係を結ぶことができる他のプレイヤの人数には、上限を設けてもよい。
図5(a)は、ゲームの進行を説明するためのゲーム進行画面300の模式図である。図5(a)〜図5(d)では、説明のため、格子状に簡略化したマップ311を示している。マップ311の上には、例えば、「●」で示した敵の兵士312が4人と、「▲」で示した壁等の施設313と、「■」で示した敵の陣地の中心拠点314が配置されている。プレイヤは、ゲーム開始時には、例えばマップ311の周縁部315に味方の兵士を配置可能であり、攻略が進むにつれて、敵の中心拠点314の近くにも兵士を配置できるようになる。それぞれのプレイヤは、各自の携帯端末2に表示される同じゲーム進行画面300を見ながら、マップ311上にリアルタイムに兵士を配置していく。
図5(b)は、プレイヤの操作によりマップ311上に味方の兵士を配置するときの兵士選択画面400の模式図である。例えば、図5(b)に示した矢印Aの位置をあるプレイヤが選択する(操作部23がタッチパネルであれば、矢印Aの箇所をタッチする)と、そのプレイヤの携帯端末2のゲーム進行画面300に重ねて兵士選択画面400が表示される。この兵士選択画面400上で、そのプレイヤは、いずれかの兵士の画像401を選択して、マップ311上の矢印Aの位置にその兵士を配置する操作を行うことができる。各プレイヤが配置できる兵士の種類は、例えばプレイヤのレベル等の、ゲーム内のスコアによって変化してもよい。
ただし、このゲームでは、プレイヤがマップ上に同時に配置できる味方の兵士の人数は制限されている。具体的には、それぞれの兵士401には、配置コスト402が設定されている。図5(b)の例では、画面の左側、中央、右側に表示されている兵士401の配置コスト402は、それぞれ30、10、20である。配置コスト402は例えば兵士のレベル(強さ)と対応しており、レベルの高い兵士ほど、高い配置コストが設定される。そして、マップ311には、配置コスト402の合計値の上限値が設定されている。図5(b)の例では、符号403で示した「0/100」の「100」が上限値である。また、「0」は、現在マップ311上に配置されている兵士の配置コスト402の合計値である。図5(b)の例ではまだ味方の兵士が配置されておらず、現在の配置コスト402の合計値は0になっている。
図5(c)は、図5(b)の状態から、あるプレイヤにより配置コスト30の兵士が選択されたときのゲーム進行画面300の模式図である。図5(b)の状態では、マップ311上に配置されている兵士の配置コストの合計値は0なので、配置コストが30増えても上限値の100以下であり、配置コスト30の兵士を新たに配置することができる。このため、図5(c)内に太枠で示したようにプレイヤにより配置コスト30の兵士が選択されると、同じマップを選択し共通のゲーム空間(マップ)においてゲームをプレイするすべてのプレイヤの携帯端末2のゲーム進行画面300上において、図5(b)の矢印Aの位置にその兵士が新たに配置される。図5(c)では、味方の兵士が配置されたことを、符号316の「○」で示している。
そして、この操作により、符号404で示したように、現在の配置コストの合計値は30になる。即ち、あるプレイヤが配置コスト30の兵士を1人配置したことにより、上限値100のうちの30が消費される。このため、以後、同じマップを選択し共通のゲーム空間(マップ)においてゲームをプレイするすべてのプレイヤには、100−30=70の配置コストの範囲内で兵士を配置しなければならないという制限が課される。ただし、味方の兵士が敵キャラクタと対戦して倒れると、その兵士による配置コストの消費はなくなり、新たに余分に兵士を配置できるようになる。
図5(d)は、新たに兵士を配置しようとすると配置コストの合計値が上限値を超える場合のゲーム進行画面300の模式図である。例えば、領域315内に味方の兵士が複数配置されて、符号405で示したように現在の配置コストの合計値が90になったときに、矢印Bの位置にさらに配置コスト30の兵士を配置する操作が、あるプレイヤによりなされたとする。この場合、その兵士を配置すると配置コストの合計値が90+30=120となって上限値の100を超えるため、その兵士を配置することは許可されない。配置コストの上限値を超えて兵士を配置しようとすると、操作を行ったプレイヤの携帯端末2のゲーム進行画面300上に、例えばエラーメッセージ406が表示される。あるいは、エラーメッセージ406に代えて、例えば、新たに配置すると配置コストの合計値が上限値を超える兵士についてはその画像401をグレーアウトするなどして、その兵士は配置できないことを各プレイヤに報知してもよい。
このように、ゲームシステム1が提供するゲームでは、マップ上に配置される兵士等の配置コスト(オブジェクトの重み)の合計値と上限値が、同時に同じマップにてゲームをプレイしている複数のプレイヤ間で共有される。即ち、オブジェクトの重みについての同じ閾値(上限値)が、複数のプレイヤに共通に適用される。この上限値は、携帯端末2とサーバ3のスペックに応じて、オブジェクトの描画処理に支障が出ない範囲内で適宜設定される。上限値が決まっている配置コストをどう使って兵士を配置していくかという戦略を複数のプレイヤに考えさせることにより、新たなゲーム性が与えられる。
なお、合計値と上限値が共有されるプレイヤは、例えば、同じマップを選択したプレイヤ全員でもよい。あるいは、複数のプレイヤで構成されるグループ同士が対戦するゲームの場合には、合計値と上限値が共有されるプレイヤは、同じマップを選択しかつ一方のグループに属するプレイヤでもよいし、一方のグループに属するプレイヤおよび対戦相手となる他グループに属するプレイヤの両方であってもよい。
こうして複数のプレイヤがマップ上に味方の兵士を配置しながら敵の陣地を攻略していき、例えば規定の制限時間内(3分以内等)に敵の中心拠点を攻略できれば、プレイヤの勝ちとなる。逆に、規定の制限時間内に敵の中心拠点を攻略できないと、プレイヤの負けとなる。あるいは、規定の制限時間内(3分以内等)に敵の陣地を予め定められた割合(例えば50%)以上破壊できれば、敵の陣地を攻略できたとして、プレイヤの勝ちとしてもよい。
以上の機能を実現するために、端末処理部25は、ゲーム進行部251と、オブジェクト指定部252と、オブジェクト配置部253とを備える。これらの各部は、端末処理部25が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、これらの各部は、ファームウェアとして携帯端末2に実装されてもよい。
ゲーム進行部251は、ゲームの開始及び進行を制御し、適宜、オブジェクト指定部252、オブジェクト配置部253等に処理の実行を指示する。
具体的には、プレイヤにより操作部23を介してマップが選択されたときに、ゲーム進行部251は、そのプレイヤのプレイヤIDとそのマップのマップIDを含むゲーム開始要求を、端末通信部21によりサーバ3に送信する。そして、例えば複数のプレイヤにより同じマップが選択され、端末通信部21を介してサーバ3からゲーム開始指示を受信したときに、ゲーム進行部251は、ゲーム進行画面300を表示する。
このとき、ゲーム進行部251は、プレイヤにより選択されたマップのマップIDをキーとして、端末記憶部22に記憶されているマップテーブルを参照し、対応するマップの画像ファイル名を抽出する。また、ゲーム進行部251は、対応するマップ上に配置される各敵キャラクタに対応する敵キャラクタID及びそれらの配置位置をマップテーブルから抽出する。さらに、ゲーム進行部251は、抽出した敵キャラクタIDをキーとして、端末記憶部22に記憶されている敵キャラクタテーブルを参照し、対応する敵キャラクタの画像ファイル名を抽出する。そして、ゲーム進行部251は、抽出した画像ファイル名に対応するマップ及び敵キャラクタの画像データを端末記憶部22から取得する。そして、ゲーム進行部251は、抽出された配置位置に従ってマップの画像データの上に敵キャラクタの画像データを配置したゲーム進行画面300を構成し、表示部24に出力する。
また、プレイヤにより操作部23を介して兵士を配置する指示がなされたときに、ゲーム進行部251は、オブジェクト指定部252に処理の実行を指示する。
また、サーバ3からオブジェクト配置指示を受信したときに、ゲーム進行部251は、オブジェクト配置部253に処理の実行を指示する。
また、プレイヤにより操作部23を介して他の処理が指示された場合に、ゲーム進行部251は、その処理を実行する。
オブジェクト指定部252は、プレイヤにより操作部23を介して兵士を配置する指示がなされたときに、プレイヤにより選択された兵士の兵士IDをキーとして、端末記憶部22に記憶されている兵士テーブルを参照し、対応する兵士の配置コストを抽出する。そして、オブジェクト指定部252は、選択された兵士の兵士ID、プレイヤにより指定された配置位置、及び対象の兵士の配置コストを含むオブジェクト配置要求を、端末通信部21によりサーバ3に送信する。
このオブジェクト配置要求に対し、端末通信部21を介してサーバ3から応答としてオブジェクト配置不可通知を受信すると、オブジェクト指定部252は、例えばエラーメッセージ406を表示部24に出力して、プレイヤが選択した兵士はマップ311上に配置できない旨をプレイヤに報知する。
オブジェクト配置部253は、オブジェクト配置要求に対し、対象の兵士の兵士ID及び配置位置を含むオブジェクト配置指示を端末通信部21によりサーバ3から受信すると、その兵士IDに対応する画像ファイル名を兵士テーブルから抽出する。そして、オブジェクト配置部253は、抽出した画像ファイル名に対応する兵士の画像データを端末記憶部22から取得し、マップ311上の配置位置に兵士の画像データを配置したゲーム進行画面300を構成して、表示部24に出力する。
また、オブジェクト配置部253は、他のプレイヤの携帯端末2からのオブジェクト配置要求に応じて、端末通信部21によりサーバ3からオブジェクト配置指示を受信したときも、そのオブジェクト配置指示に含まれる兵士IDに対応する画像ファイル名を兵士テーブルから抽出する。そして、オブジェクト配置部253は、上記と同様に、マップ上の配置位置に兵士の画像データを配置した新たなゲーム進行画面300を構成(即ち、画面を更新)して、表示部24に出力する。
また、オブジェクト配置部253は、味方の兵士と敵キャラクタの対戦により例えばいずれかの兵士が倒されたことに応じて端末通信部21によりサーバ3からオブジェクトを消滅させる指示を受信したときは、対応する兵士をゲーム進行画面300上から消滅させる。
図6は、サーバ3の概略構成の一例を示す図である。サーバ3は、サーバ通信部31と、サーバ記憶部32と、サーバ処理部33とを備える。
サーバ通信部31は、サーバ3をインターネット7に接続するための通信インターフェース回路を備え、インターネット7との間で通信を行う。そして、サーバ通信部31は、携帯端末2等から受信したデータをサーバ処理部33に供給する。また、サーバ通信部31は、サーバ処理部33から供給されたデータを携帯端末2等に送信する。
サーバ記憶部32は、例えば、磁気テープ装置、磁気ディスク装置、フラッシュメモリ、又は光ディスク装置のうちの少なくともいずれか一つを備える。サーバ記憶部32は、サーバ処理部33での処理に用いられるオペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム、データ等を記憶する。例えば、サーバ記憶部32は、アプリケーションプログラムとして、オブジェクトの配置制御及び動作制御を行うゲーム管理プログラム等を記憶する。また、サーバ記憶部32は、データとして、マップを管理するマップテーブル(図7(a))、マップ上に配置される敵キャラクタ等を管理する敵キャラクタテーブル(図7(b))、プレイヤが使用する味方の兵士等を管理する兵士テーブル(図7(c))、プレイヤを管理するプレイヤテーブル(図7(d))、プレイヤ同士の親密度のパラメータを管理する親密度テーブル(図7(e))、敵キャラクタ及び味方の兵士等のオブジェクトに係る画像データ、映像データ等を記憶する。さらに、サーバ記憶部32は、所定の処理に係る一時的なデータを記憶してもよい。
図7(a)〜図7(e)は、サーバ記憶部32に記憶される各種テーブルのデータ構造の一例を示す図である。
図7(a)は、マップを管理するマップテーブルの一例を示す。図3(a)のものと同様に、マップテーブルには、マップID、画像ファイル名、そのマップのレベル、そのマップについてのコスト上限、並びに、そのマップ上に配置される各敵キャラクタに対応する敵キャラクタID及びそれらの配置位置等が記憶される。
図7(b)は、マップ上に配置される敵キャラクタ等を管理する敵キャラクタテーブルの一例を示す。図3(b)のものと同様に、敵キャラクタテーブルには、敵キャラクタID、敵キャラクタの種類、画像ファイル名、敵キャラクタのレベル等が記憶される。
図7(c)は、プレイヤが使用する味方の兵士等を管理する兵士テーブルの一例を示す。図3(c)のものと同様に、兵士テーブルには、兵士ID、画像ファイル名、その兵士のレベル、その兵士についての配置コスト等が記憶される。
図7(d)は、プレイヤを管理するプレイヤテーブルの一例を示す。プレイヤテーブルには、ゲームシステム1に登録されている各プレイヤについて、そのプレイヤのプレイヤID、名前、画像ファイル名、レベル、そのプレイヤが所持している兵士の兵士ID及び人数等が記憶される。
図7(e)は、プレイヤ同士の親密度のパラメータを管理する親密度テーブルの一例を示す。親密度は、プレイヤの組ごとに設定されるパラメータであり、例えば、互いにフレンド関係にあって一緒にゲームをプレイした時間又は回数が多いプレイヤの組ほど、高い値に設定される。図7(e)の例では、プレイヤP01とプレイヤP02の組は、フレンド関係になく親密度が0である。プレイヤP01とプレイヤP03の組は、フレンド関係にあって親密度が5である。プレイヤP02とプレイヤP03の組は、フレンド関係にあって、プレイヤP02とプレイヤP03の組より一緒にゲームをプレイした時間又は回数が多く、親密度はより大きい10である。このように、親密度テーブルには、プレイヤの組ごとに設定された親密度のパラメータが記憶される。
なお、ゲームシステム1では、図3(a)〜図3(c)と図7(a)〜図7(c)に示すように、端末記憶部22とサーバ記憶部32が同じマップテーブル、敵キャラクタテーブル及び兵士テーブルを記憶している。ただし、端末処理部25が必要に応じてこれらのテーブルの情報をサーバ3に問い合わせるような制御とすれば、これらのテーブルはサーバ記憶部32のみが記憶してもよい。
サーバ処理部33は、一又は複数個のプロセッサ及びその周辺回路を備える。サーバ処理部33は、例えばCPUであり、サーバ3の全体的な動作を統括的に制御する。サーバ処理部33は、サーバ記憶部32に記憶されているプログラム等に基づいてサーバ3の各種処理が適切な手順で実行されるように、サーバ通信部31等の動作を制御する。サーバ処理部33は、サーバ記憶部32に記憶されているプログラム(オペレーティングシステムプログラム、ドライバプログラム、アプリケーションプログラム等)に基づいて処理を実行する。また、サーバ処理部33は、複数のプログラム(アプリケーションプログラム等)を並列に実行することができる。
サーバ処理部33は、サーバ制御部331と、閾値設定部332と、合計値算出部333と、配置可否判定部334と、オブジェクト制御部335とを備える。これらの各部は、サーバ処理部33が備えるプロセッサで実行されるプログラムにより実現される機能モジュールである。あるいは、これらの各部は、ファームウェアとしてサーバ3に実装されてもよい。
サーバ制御部331は、サーバ3の動作を制御し、適宜、閾値設定部332、合計値算出部333、配置可否判定部334、オブジェクト制御部335等に処理の実行を指示する。
具体的には、複数のプレイヤの携帯端末2からサーバ通信部31を介して同じマップについてのゲーム開始要求を受信すると、サーバ制御部331は、そのゲーム開始要求の送信元に、サーバ通信部31を介してゲーム開始指示を送信する。また、このとき、サーバ制御部331は、受信したゲーム開始要求に含まれるマップIDをパラメータとして、閾値設定部332に処理の実行を指示する。
また、ある携帯端末2からサーバ通信部31を介してオブジェクト配置要求を受信した場合に、サーバ制御部331は、受信したオブジェクト配置要求に含まれる配置コストをパラメータとして、合計値算出部333、配置可否判定部334及びオブジェクト制御部335に処理の実行を指示する。
また、配置可否判定部334により新たなオブジェクトの配置が許可されなかった場合に、サーバ制御部331は、オブジェクト配置要求の送信元の携帯端末2に、サーバ通信部31を介してオブジェクト配置不可通知を送信する。また、オブジェクト制御部335からオブジェクト配置指示が与えられた場合には、サーバ制御部331は、同じマップを選択し共通のゲーム空間(マップ)においてゲームをプレイするすべてのプレイヤの携帯端末2に、サーバ通信部31を介してそのオブジェクト配置指示を送信する。
また、携帯端末2からサーバ通信部31を介して他の要求を受信した場合に、サーバ制御部331は、対応する他の処理を実行して、ゲームの進行を制御する。
閾値設定部332は、ゲームが開始されるときに、ゲーム空間であるマップ上におけるオブジェクトの重みの合計値に閾値(例えば上限値)を設定する。このために、閾値設定部332は、サーバ制御部331から与えられたゲーム開始要求に含まれるマップIDをキーとして、サーバ記憶部32に記憶されているマップテーブルを参照し、対応するマップのコスト上限を抽出する。そして、閾値設定部332は、抽出されたコスト上限の値を、対象のマップ上におけるオブジェクトの重みについての上限値として設定する。
マップテーブルには、マップのレベルに応じて異なるコスト上限が記憶されている。このコスト上限の値は、マップのレベル(攻略の難易度)と連動している。例えば、マップのレベルが高くなるほど、マップ中に配置されている敵キャラクタの個数が多くなるか又は敵キャラクタのレベルが高くなり、攻略するのにより多くの兵士が必要になる。このため、マップテーブルには、マップのレベルが高くなるほど、コスト上限としてより高い値を予め記憶しておく。これにより、閾値設定部332は、マップのレベルが高くなるほど、それに応じてオブジェクトの重みについての上限値を高く設定する。
あるいは、逆に、マップテーブルには、マップのレベルが高くなるほど、コスト上限としてより低い値を予め記憶してもよい。これにより、マップのレベルが高くなるほど閾値設定部332がオブジェクトの重みについての上限値を低く設定して、ゲームをより難しくしてもよい。
また、閾値設定部332は、ゲームに参加しているプレイヤ同士の親密度に応じてオブジェクトの重みについての上限値を変更してもよい。この場合、例えば、閾値設定部332は、サーバ制御部331から与えられたゲーム開始要求に含まれる参加者全員のプレイヤIDをキーとして、サーバ記憶部32に記憶されている親密度テーブルを参照し、対応するプレイヤの組に設定されている親密度のパラメータを抽出する。そして、例えば、閾値設定部332は、抽出された親密度のパラメータの値が高いほど、対象のマップ上におけるオブジェクトの重みについての上限値をより高い値に変更する。例えば、閾値設定部332は、親密度のパラメータの合計値が2倍高くなると上限値を20%高くする等、親密度のパラメータに応じた係数を掛けることにより上限値を変更してもよい。これにより、フレンド関係にあるプレイヤ同士がプレイするときはより有利な条件でゲームを進められるようにして、プレイヤにゲームへの参加や他プレイヤとの交流を促してもよい。
あるいは、逆に、閾値設定部332は、抽出された親密度のパラメータの値が高いほど、対象のマップ上におけるオブジェクトの重みについての上限値をより低い値に変更して、フレンド関係にあるプレイヤ同士がプレイするときに、ゲームをより難しくしてもよい。
また、閾値設定部332は、ゲームに参加しているプレイヤのレベルに応じてオブジェクトの重みについての上限値を変更してもよい。この場合、例えば、閾値設定部332は、サーバ制御部331から与えられたゲーム開始要求に含まれる参加者全員のプレイヤIDをキーとして、サーバ記憶部32に記憶されているプレイヤテーブルを参照し、各プレイヤのレベルを抽出する。そして、例えば、閾値設定部332は、抽出されたレベルが高いほど、対象のマップ上におけるオブジェクトの重みについての上限値をより高い値に変更する。例えば、閾値設定部332は、ゲームに参加しているプレイヤのレベルの合計値が2倍高くなると上限値を20%高くする等、プレイヤのレベルに応じた係数を掛けることにより上限値を変更してもよい。これにより、レベルの高いプレイヤほどより有利な条件でゲームを進められるようにしてもよい。
あるいは、逆に、閾値設定部332は、抽出されたレベルが高いほど、対象のマップ上におけるオブジェクトの重みについての上限値をより低い値に変更して、レベルの高いプレイヤほどゲームをより難しくしてもよい。
合計値算出部333は、プレイヤにより兵士を配置する指示がなされたときに、ゲーム空間であるマップ上に現在配置されているオブジェクトの重みの合計値を算出する。このために、合計値算出部333は、例えばゲームの開始時に初期値を0に設定しておく。そして、合計値算出部333は、サーバ制御部331から与えられたオブジェクト配置要求に含まれる兵士IDをキーとして、サーバ記憶部32に記憶されている兵士テーブルを参照し、対応する兵士に設定されている配置コストを抽出する。そして、合計値算出部333は、抽出された配置コストの値を前回算出した合計値に加算する。また、例えばマップ上に既に配置されている兵士が敵キャラクタによって倒されたときは、合計値算出部333は、対応する兵士に設定されている配置コストの値を、前回算出した合計値から減算する。即ち、合計値算出部333は、ゲーム空間内に配置されたオブジェクトが消滅した場合には、消滅したオブジェクトの重みを除いて合計値を算出する。このようにして、合計値算出部333は、マップ上に現在配置されているオブジェクトの重みの合計値を算出する。
なお、マップ上に配置されている敵キャラクタについても、それぞれ配置コストを予め設定してもよい。そして、合計値算出部333は、プレイヤが配置した味方の兵士の配置コストだけでなく、マップ上の各敵キャラクタに設定されている配置コストもオブジェクトの重みの合計値にカウントし、マップ上に現在配置されているすべてのオブジェクトの重みの合計値を算出してもよい。
また、合計値算出部333は、プレイヤが配置した兵士の配置コストを、ゲームに参加しているプレイヤ同士の親密度に応じて変更して、オブジェクトの重みの合計値を算出してもよい。この場合、例えば、合計値算出部333は、閾値設定部332により抽出された親密度のパラメータの値が高いほど、対象の兵士に設定されている配置コストをより低い値に変更する。例えば、合計値算出部333は、親密度のパラメータの合計値が2倍高くなると各兵士の配置コストを10%低くする等、親密度のパラメータに応じた係数を掛けることにより配置コストを変更してもよい。これにより、フレンド関係にあるプレイヤ同士がプレイするときはより有利な条件でゲームを進められるようにして、プレイヤにゲームへの参加や他プレイヤとの交流を促してもよい。
あるいは、逆に、合計値算出部333は、閾値設定部332により抽出された親密度のパラメータの値が高いほど、各兵士の配置コストをより高い値に変更して、フレンド関係にあるプレイヤ同士がプレイするときに、ゲームをより難しくしてもよい。
また、合計値算出部333は、プレイヤが配置した兵士の配置コストを、ゲームに参加しているプレイヤのレベルに応じて変更して、オブジェクトの重みの合計値を算出してもよい。この場合、例えば、合計値算出部333は、閾値設定部332により抽出された各プレイヤのレベルが高いほど、対象の兵士に設定されている配置コストをより低い値に変更する。例えば、合計値算出部333は、ゲームに参加しているプレイヤのレベルの合計値が2倍高くなると各兵士の配置コストを10%低くする等、プレイヤのレベルに応じた係数を掛けることにより配置コストを変更してもよい。これにより、レベルの高いプレイヤほどより有利な条件でゲームを進められるようにしてもよい。
あるいは、逆に、合計値算出部333は、閾値設定部332により抽出された各プレイヤのレベルが高いほど、各兵士の配置コストをより高い値に変更して、レベルの高いプレイヤほどゲームをより難しくしてもよい。
配置可否判定部334は、プレイヤからゲーム空間であるマップ上に新たにオブジェクトを配置する指示(オブジェクト配置要求)を受け付けたときに、合計値算出部333により算出されたオブジェクトの重みの合計値が閾値設定部332により設定された上限値以下であるか否かを判定する。そして、配置可否判定部334は、算出されたオブジェクトの重みの合計値が上限値以下であれば、新たなオブジェクトの配置を許可する。
一方、配置可否判定部334は、算出されたオブジェクトの重みの合計値が上限値より大きければ、新たなオブジェクトの配置を許可しない。このとき、配置可否判定部334は、オブジェクト配置要求の送信元の携帯端末2を宛先とするオブジェクト配置不可通知を、サーバ制御部331に与える。
オブジェクト制御部335は、現在マップ上に配置されているオブジェクトの動作を制御する。このために、オブジェクト制御部335は、配置可否判定部334により新たなオブジェクトの配置が許可されると、サーバ制御部331から与えられたオブジェクト配置要求に含まれる兵士IDとマップ上の配置位置を取得する。そして、オブジェクト制御部335は、一定の時間間隔で、現在マップ上に配置されているすべてのオブジェクトについて、時間経過による移動先(新たな配置位置)を算出する。そして、オブジェクト制御部335は、同じマップを選択し共通のゲーム空間(マップ)においてゲームをプレイするすべてのプレイヤの携帯端末2を宛先とする、各兵士の兵士IDと、各敵キャラクタの敵キャラクタIDと、それらの新たな配置位置とを含むオブジェクト配置指示を、サーバ制御部331に与える。
また、オブジェクト制御部335は、味方の兵士と敵キャラクタの対戦により、例えばいずれかの兵士が倒されたか否かを判定する。そして、いずれかの兵士が倒された場合には、その兵士をゲーム進行画面300から消滅させる指示を上記のオブジェクト配置指示に含めて、サーバ制御部331に与える。
図8(a)及び図8(b)は、端末処理部25の動作フローの一例を示す図である。以下に説明する動作フローは、予め端末記憶部22に記憶されているプログラムに基づいて、主に端末処理部25により、携帯端末2の各要素と協働して実行される。
図8(a)は、ゲーム進行部251の動作フローの一例を示す図である。
プレイヤが操作部23を介して端末処理部25にゲームの開始を指示すると、端末処理部25は、ゲームプログラムに基づいて処理を開始する。まず、ゲームプログラムにより実現されるゲーム進行部251は、表示部24にマップ選択画面200を表示する(ステップS100)。表示されたいずれかのマップがプレイヤにより操作部23を介して選択されると、ゲーム進行部251は、端末通信部21を介してサーバ3にゲーム開始要求を送信する(ステップS102)。
これに対し、端末通信部21を介してサーバ3からゲーム開始指示を受信すると(ステップS104)、ゲーム進行部251は、表示部24にゲーム進行画面300を表示する(ステップS106)。
ここで、プレイヤにより操作部23を介して兵士を配置する指示がなされると(ステップS108でYes)、ゲーム進行部251は、オブジェクト指定部252に処理の実行を指示する(ステップS110)。ステップS110の処理が終わると、動作フローはステップS106に戻る。一方、兵士を配置する指示がなされていないとき(ステップS108でNo)は、動作フローはステップS112に進む。
また、ゲーム進行部251は、端末通信部21を介してサーバ3からオブジェクト配置指示を受信する(ステップS112)。このオブジェクト配置指示は、一定時間ごとに受信される。オブジェクト配置指示を受信すると、ゲーム進行部251は、オブジェクト配置部253に処理の実行を指示して、ゲーム進行画面300を更新させる(ステップS114)。そして、動作フローはステップS106に戻る。ゲーム進行部251の動作フローでは、以上の処理が繰り返される。
図8(b)は、オブジェクト指定部252の動作フローの一例を示す図である。
プレイヤにより操作部23を介して兵士を配置する指示がなされると(ステップS108でYes)、オブジェクト指定部252は、表示部24に兵士選択画面400を表示する(ステップS120)。そして、オブジェクト指定部252は、プレイヤの兵士選択画面400における操作に基づくオブジェクト配置要求を、端末通信部21によりサーバ3に送信する(ステップS122)。
これに対し、端末通信部21を介してサーバ3からオブジェクト配置不可通知を受信すると(ステップS124でYes)、オブジェクト指定部252は、例えばエラーメッセージを表示部24に出力して、プレイヤが選択した兵士はマップ上に配置できない旨をプレイヤに報知する(ステップS126)。一方、サーバ3からオブジェクト配置不可通知を受信しなかった場合(ステップS124でNo)は、オブジェクト配置部253により、ゲーム進行画面300を、マップ上に新たに兵士を配置したものに更新させる(ステップS128)。そして、オブジェクト指定部252は処理を終了する。
図9は、サーバ処理部33の動作フローの一例を示す図である。以下に説明する動作フローは、予めサーバ記憶部32に記憶されているプログラムに基づいて、主にサーバ処理部33により、サーバ3の各要素と協働して実行される。
まず、複数のプレイヤの携帯端末2からサーバ通信部31を介して同じマップについてのゲーム開始要求を受信すると(ステップS200)、サーバ制御部331は、そのゲーム開始要求の送信元に、サーバ通信部31を介してゲーム開始指示を送信する(ステップS202)。
また、このとき、サーバ制御部331は、受信したゲーム開始要求に含まれるマップIDをパラメータとして、閾値設定部332に処理の実行を指示する(ステップS204)。それに応じて、閾値設定部332は、選択されたマップ上におけるオブジェクトの重みの合計値に閾値(例えば上限値)を設定する。
そして、ある携帯端末2からサーバ通信部31を介してオブジェクト配置要求を受信すると(ステップS206でYes)、サーバ制御部331は、受信したオブジェクト配置要求に含まれる配置コストをパラメータとして、合計値算出部333に処理の実行を指示する(ステップS208)。それに応じて、合計値算出部333は、マップ上に現在配置されているオブジェクトの重みの合計値を算出する。なお、オブジェクト配置要求を受信していない場合(ステップS206でNo)は、動作フローはステップS214に進む。
次に、サーバ制御部331は配置可否判定部334に処理の実行を指示し、配置可否判定部334は、ステップS208で算出されたオブジェクトの重みの合計値がステップS204で設定された上限値以下であるか否かを判定する(ステップS210)。
オブジェクトの重みの合計値が上限値より大きければ(ステップS210でNo)、サーバ制御部331は、オブジェクト配置要求の送信元の携帯端末2に、サーバ通信部31を介してオブジェクト配置不可通知を送信する(ステップS212)。一方、オブジェクトの重みの合計値が上限値以下であれば(ステップS210でYes)、ステップS212を実行せずに動作フローはステップS214に進む。
そして、サーバ制御部331はオブジェクト制御部335に処理の実行を指示し、オブジェクト制御部335は、現在マップ上に配置されているすべてのオブジェクトについて、時間経過による移動先(新たな配置位置)を算出する(ステップS214)。それに応じて、サーバ制御部331は、同じマップを選択し共通のゲーム空間(マップ)においてゲームをプレイするすべてのプレイヤの携帯端末2に、サーバ通信部31を介して各兵士の兵士IDと、各敵キャラクタの敵キャラクタIDと、ステップS214で算出された新たな配置位置とを含むオブジェクト配置指示を送信する(ステップS216)。その後、動作フローはステップS206に戻る。サーバ処理部33の動作フローでは、以上の処理が繰り返される。
以上説明してきたように、ゲームシステム1では、ゲーム空間であるマップ上に配置されるオブジェクトの重みの上限値と合計値を、同時にプレイする複数のプレイヤ間で共有させる。これにより、端末スペックによる描画制限の範囲内で複数のプレイヤが同時にゲームをプレイできるようになると共に、制限範囲内でオブジェクトをどのように配置するかを各プレイヤに考えさせることにより、描画制限をゲームの面白さ(ゲーム性)に転換することが可能となる。
なお、端末処理部25及びサーバ処理部33が備える各機能をコンピュータに実現させるためのコンピュータプログラムは、半導体記録媒体、磁気記録媒体、光記録媒体等のコンピュータにより読み取り可能な記録媒体に記録された形で提供され、その記録媒体から公知のセットアッププログラム等を用いて端末記憶部22及びサーバ記憶部32にインストールされてもよい。
当業者は、本発明の精神及び範囲から外れることなく、様々な変更、置換、及び修正をこれに加えることが可能であることを理解されたい。