JP2004298373A - ネットワークゲームサーバ、制御方法、プログラム及び記憶媒体 - Google Patents
ネットワークゲームサーバ、制御方法、プログラム及び記憶媒体 Download PDFInfo
- Publication number
- JP2004298373A JP2004298373A JP2003094482A JP2003094482A JP2004298373A JP 2004298373 A JP2004298373 A JP 2004298373A JP 2003094482 A JP2003094482 A JP 2003094482A JP 2003094482 A JP2003094482 A JP 2003094482A JP 2004298373 A JP2004298373 A JP 2004298373A
- Authority
- JP
- Japan
- Prior art keywords
- character
- game server
- network game
- information
- terminal device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 40
- 230000005540 biological transmission Effects 0.000 claims abstract description 42
- 230000008859 change Effects 0.000 claims description 7
- 230000008569 process Effects 0.000 description 29
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000000926 separation method Methods 0.000 description 10
- 230000009467 reduction Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000001514 detection method Methods 0.000 description 3
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
【解決手段】ネットワークゲームサーバのプログラムであって、コンピュータを、端末装置から第1のキャラクタTのチャット情報を受信する手段、チャット情報を受信したとき、仮想空間上の第1のキャラクタの位置の周囲に矩形領域1000を設定し、各キャラクタの位置に基づいて木構造で関係付けられたキャラクタ相互の親子関係に基づいて、矩形領域の方向に、第2のキャラクタAを根とした当該子孫キャラクタを探索していき、子孫キャラクタが矩形領域内に存在する場合は、当該子孫キャラクタを送信対象として特定する手段、送信対象に対応する端末装置にチャット情報を送信する手段、として機能させる。
【選択図】 図18
Description
【発明の属する技術分野】
本発明は、ネットワークゲームサーバ、制御方法、プログラム及び記憶媒体に係り、特に、ネットワークゲームサーバの負荷を軽減するネットワークゲームサーバ、該制御方法、該プログラム及び該記憶媒体に関する。
【0002】
【従来の技術】
近年、ブロードバンドの普及によりインターネット人口の拡大と通信技術の進歩が目覚しく、これに伴ってネットワークを介して複数のプレイヤが同時に参加可能なネットワークゲームの人気が高くなってきている。
【0003】
ネットワークゲームには、多数のゲーム参加者のうち8人程度を1グループとして多数のグループに分け、各グループのゲーム参加者が操作する端末装置のうちの何れか1台をホストマシン、他をクライアントマシンとして1グループ内で1つの仮想空間を共有し、センターの専用サーバが各グループ内の端末装置間でなされるゲームコマンドの送受信を仲介し、実際のゲームプログラムの実行は端末装置側が行うロビーサーバ型と、センターのホストマシンとしての専用サーバが実際のゲームプログラムの主な実行と各端末装置が共有する仮想空間を一元管理し、各端末装置とゲームコマンド等の送受信をすることでゲームが進行する多人数参加型のMMORPG(Massively Multiplayer Online Role Playing Game)型がある。
【0004】
このMMORPG型のネットワークゲームは、ゲーム提供者が運用する高スペックサーバに接続することにより、数千人規模のプレイヤが参加可能なゲームであり、近年急激に人気を集めているが、あまりに多数のプレイヤが同時に参加するとサーバに高負荷がかかり、ゲーム進行に支障をきたすため、サーバの負荷を軽減するための技術が研究されている。
【0005】
これに関する特許文献として、例えば、特開2001−232068号公報には、複数のプレイヤが同一のコンピュータゲームを行う場合、ネットワーク上のデータの送受信の量を減少させることができる発明が開示されている。この発明は、単なるプレイヤキャラクタの仮想空間上の移動等、ゲーム進行上利害関係が殆どないデータは、変化の度に他のプレイヤの端末装置との送受信を行わず、アイテムの取得やキャラクタの消滅等の特別な場合にのみ変化したパラメータを送受信する技術であり、通信上の負荷を軽減することができる。
【0006】
また、特開2001−73899号公報には、対戦の結果によって勝利者が所定のポイントを受け取り、ポイントによって自分のランクが上昇していくロビーサーバ型のゲームであって、対戦の結果によりポイントが付与されるサーバ負荷の重いロビーと、対戦の結果に関係なくポイントが付与されないサーバ負荷の軽いロビーとを設け、双方のロビー数を適応的に増減することにより、全体的にサーバの負荷を軽減する発明が開示されている。
【0007】
そして、特開2002−183762号公報には、プレイヤが自己のキャラクタを操作して仮想空間内を徘徊している場合、キャラクタ数が多い地点に来ても、画面表示されるキャラクタ数が所定数に制限されるようにした発明が開示されている。この発明によれば、キャラクタ数が多くなり、プレイヤの端末装置の画面内に表示されるキャラクタの密度が増しても、キャラクタが動きにくくなるという不都合が生ずることはない。このため結果的にサーバ負荷の増大を抑えることができると考えられる。
【0008】
更に、本発明に関する他の文献として、1988年8月に発行された「Computer Graphics」誌の第289頁から第298頁に、Matthew Moore氏とJane Wilhelms氏による「Collision Detection and Response for Computer Animation」と題される、コンピュータグラフィクスによるキャラクタがアニメーションする際の他のキャラクタとの衝突判定に関する記載がある。特に、第291頁には、剛体を構成するポリゴン点を木構造とし、他の剛体との当たり判定を行う際に8分木(Octtree)探索を用いる技術が開示されている。
【0009】
【特許文献1】
特開2001−232068号公報(段落番号「0003」から「0014」まで)
【特許文献2】
特開2002−273058号公報(段落番号「0004」から「0031」まで)
【特許文献3】
特開2002−183762号公報(段落番号「0004」から「0071」まで)
【非特許文献1】
「コンピュータ グラフィクス(Computer Graphics)」,(米国),アディソン ウェズリー社発行(Addison Wesley Publishing Co.,Inc.),1988年8月,第22巻,第4号,p289−p298
【0010】
【発明が解決しようとする課題】
しかしながら、特開2001−232068号公報及び特開2002−273058号公報に記載の発明は、全体的なネットワークゲームサーバの負荷を軽減できるものの、ネットワークゲームにおける仮想空間内の特定のエリアに多数のプレイヤキャラクタが密集している特別な場合に、特に、サーバ負荷を軽減させるものではない。
【0011】
また、特開2002−183762号公報に記載の発明では、画面表示可能なキャラクタ数を直接制限するのでネットワークゲームサーバの負荷の増大を抑制できるが、あえて多数のキャラクタがある地点に密集する様子を表現するには向いているといえず、また、定員数を超えた場合は更に別なキャラクタがそのエリアに入ってきても表示されないため、殆ど同じ位置にいる他のプレイヤのキャラクタを認識することができない場合がある。
【0012】
そこで本発明は、ネットワークゲームサーバの負荷が最も増大するプレイヤキャラクタの密集エリアでのチャット等の情報送受信において、情報発信しようとするプレイヤキャラクタの仮想空間上の位置を中心とした所定領域内の密集度を素早く検知し、その密集度に応じて情報受信可能な領域としての所定領域を段階的に狭くしていくことで、ネットワークゲームサーバの負荷の増大を抑制することを課題とする。
【0013】
【課題を解決するための手段】
上記課題を解決するための、本発明の第1の態様は、ネットワークを介して接続される複数の端末装置と通信することによってネットワークゲームを進行するネットワークゲームサーバであって、前記端末装置から第1のキャラクタについての所定情報を受信する情報受信手段と、前記所定情報を受信したとき、仮想空間上の前記第1のキャラクタの位置の周囲に所定領域を設定し、各キャラクタの位置に基づいて関係付けられたキャラクタ相互の親子関係に基づいて、前記所定領域の方向に、第2のキャラクタを親キャラクタとした当該子孫キャラクタを探索していき、前記子孫キャラクタが前記所定領域内に存在する場合は、当該子孫キャラクタを送信対象として特定する送信対象特定手段と、前記送信対象に対応する端末装置に前記所定情報を送信する情報送信手段と、を備えることを特徴とする。
【0014】
第1の態様でいう親子関係とは、あるキャラクタを親とした場合の子及びその子孫(以下、まとめて子とする)の関係であり、全キャラクタの位置に基づいて木構造を構築し、親から子の方向へ辿っていける関係をいう。この場合、探索の開始点としての親キャラクタとその目標領域を特定すれば、後はその方向に存在する子を探索していくことにより、目標領域内に存在するキャラクタを高速且つ正確に特定することができる。即ち、木のその方向のノード(節点)だけを調べれば良いので全キャラクタについて一様に座標値を調べる必要がなくなり、また、目標を点でなく領域とすることで、木のノードがその領域をかすめるような場合でも過不足なく領域内のノードとしてのキャラクタを抽出することができる。これにより、領域内のキャラクタに対応する端末装置にのみ所定情報を送信することで、ネットワークゲームサーバの負荷の増大を抑えることができる。そして、このような木構造は別なタイミングで常々作成又は更新されるようにすれば、更に所定情報受信時の計算コスト減少へと繋がる。
【0015】
ここで、探索の開始点としての親キャラクタを木構造でいう根に割り当てられた特定のキャラクタに固定しておけば、状況により親キャラクタを変更する必要がなくなる。また、目標の所定領域を、情報を発信するキャラクタ(以下、発信キャラクタ)の位置を中心とした正方形等の矩形領域とすれば、その4つの頂点のx,y座標成分(z座標、即ち高さ成分までは考慮しなくて良い)と、探索した子の位置情報のx,y座標成分とを各々比較すれば、その所定領域に属するか否かを容易に知ることができる。ここで、例えば発信キャラクタから半径r離れた範囲に属するか否かを調べる方法では、発信キャラクタと探索した子の2点間の差を求めた後に平方根の定理により距離を求め、半径rと比較するような複雑な計算が必要となるが、本発明ではこのような必要がなくなり、子の子、即ち孫に対しても同様に単純な大小比較を繰り返し行っていけば良いので、大幅な計算コストの軽減となる。また、探索したキャラクタが所定領域に属するか否かが分かれば良いので、発信キャラクタを中心として近いキャラクタから昇順に並べる(ソートする)必要もない。尚、本発明では画面表示されているキャラクタ数に情報を発信するという制限はしない。
【0016】
尚、本発明では、上記非特許文献1に記載されている、剛体を構成する各ポリゴン点を8分木構造で関係させ、ツリーノードとしての各ポリゴン点の親子関係から所定領域内に属するポリゴン点を探索することで剛体の衝突判定を実行する技術を、ネットワーク仮想空間上で各プレイヤが操作するプレイヤキャラクタを含む全キャラクタの位置情報に基づいて、各キャラクタ相互の親子関係を4分木構造として構築し、情報を発信するキャラクタの近傍に存在する他のキャラクタを高速に探索するとともに、探索したキャラクタのみに情報を伝達してサーバ負荷を軽減するという技術に応用している。
【0017】
また、本発明の第1の態様でいう所定情報がチャット情報である場合は、上述の理由でチャット時の負荷が軽減されることになる。更にその所定情報が、仮想空間上で位置変化のあったキャラクタの位置変化量である場合は、その位置変化量からそのキャラクタの最新位置を計算して現在の位置を更新するとともに、その付近又は全体の親子関係も更新する親子関係更新手段を備えれば、キャラクタの移動があったときでも矛盾なく木構造を維持することができ、更に他のプレイヤの端末装置への位置更新の通知も、情報発信源の周辺の領域内に存在するキャラクタに対応した端末装置にのみ通知するので、このときの負荷の増大を防ぐことができる。
【0018】
更に、所定領域内に存在するキャラクタの数を数える人数取得手段を備えて、そのキャラクタ数が所定数を超えた場合はその所定領域を狭くして、再度送信対象を特定するようにすれば、更にサーバ負荷の増大を抑制することができる。
【0019】
本発明の第2の態様は、ネットワークを介して接続される複数の端末装置と通信することによってネットワークゲームを進行するネットワークゲームサーバの制御方法であって、前記端末装置から第1のキャラクタの所定情報を受信したとき、仮想空間上の前記第1のキャラクタの位置の周囲に所定領域を設定し、各キャラクタの位置に基づいて木構造で関係付けられたキャラクタ相互の親子関係に基づいて、前記所定領域の方向に、第2のキャラクタを親キャラクタとした当該子孫キャラクタを探索していき、前記子孫キャラクタが前記所定領域内に存在する場合は、当該子孫キャラクタを送信対象として特定し、前記送信対象に対応する端末装置に前記所定情報を送信する、ステップを含むことを特徴とする。
【0020】
本発明の第3の態様は、ネットワークを介して接続される複数の端末装置と通信することによってネットワークゲームを進行するネットワークゲームサーバが実行可能なプログラムであって、コンピュータを、前記端末装置から第1のキャラクタの所定情報を受信する手段、前記所定情報を受信したとき、仮想空間上の前記第1のキャラクタの位置の周囲に所定領域を設定し、各キャラクタの位置に基づいて木構造で関係付けられたキャラクタ相互の親子関係に基づいて、前記所定領域の方向に、第2のキャラクタを親キャラクタとした当該子孫キャラクタを探索していき、前記子孫キャラクタが前記所定領域内に存在する場合は、当該子孫キャラクタを送信対象として特定する手段、前記送信対象に対応する端末装置に前記所定情報を送信する手段、として機能させる。
【0021】
以上はサーバ側のプログラムであるが、一方で端末装置側のプログラムも考えられる。即ち、ネットワークを介して前記ネットワークゲームサーバと接続された端末装置が実行可能なプログラムであって、コンピュータを、ゲーム画像を表示する手段、前記ネットワークゲームサーバに前記所定情報を送信する手段、前記ネットワークゲームサーバから前記所定情報を受信する手段、前記受信した所定情報を表示する手段、として機能させる。これは、前記第1の態様で構成されるネットワークゲームサーバと接続された端末装置側のプログラムである。
【0022】
そして本発明の第4の態様は、上記第3の態様に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体である。ここでいう記録媒体とは、例えばCD−ROM,DVD,フレキシブルディスク,ハードディスク,MO,ROM,メモリーカード等をいう。
【0023】
【発明の実施の形態】
以下、本発明の実施形態を図面を参照しながら説明する。尚、本実施形態では前述したMMORPG型のネットワークゲームの場合で説明する。
【0024】
図1は、本実施形態のネットワークゲームサーバ(以下、ゲームサーバ)と端末装置との接続形態を示す概略図である。このゲームサーバは、インターネット等のネットワーク(通信回線)を介してゲームプレイヤのパーソナルコンピュータ,家庭用ゲーム装置若しくは携帯電話等の端末装置と接続され、種々のデータの送受信を行うことで、ネットワークゲームの進行処理を行う。そして、ネットワーク上の各装置は、TCP/IP等の通信プロトコルにより接続され、各々異なるIPアドレスが割り振られているため、各プレイヤが送受信する端末装置を識別することができる。
【0025】
プレイヤは端末装置に接続されたモニタ等の表示装置に表示されるネットワークゲームの画面を見ながら、端末装置に接続されたキーボード,マウス若しくはゲームコントローラパッド等の入力装置を操作することにより、例えば、自分のキャラクタ(以下、プレイヤキャラクタ)をそのネットワークゲームの仮想空間内で移動させたり、他のキャラクタとチャット等を行うことができる。ここで、チャットとは、ネットワークゲームに参加しているプレイヤ間で主にテキスト文字による簡単な会話を楽しむものであり、ネットワークゲームの楽しみの一つでもある。
【0026】
図2は、本実施形態のゲームサーバの内部構成を示すブロック図である。CPUはゲームサーバ全体の制御を行う。バスは、CPU,RAM(メモリ),ハードディスク等の記憶装置等の各デバイス間で情報をやりとりする経路である。記憶装置にはプログラムやデータが記憶されており、CPUはこれらをRAMにロードした後にそのプログラムを実行する。ROMにはゲームサーバが異常時に起動するプログラム等サーバの基本的なプログラム等が記録されている。CPU,RAM及びROMをCPUブロックとし、これらの協働により本発明でいう各手段が構成される。通信部はネットワークを介して接続された外部の各端末装置とデータの送受信を行う。
【0027】
図3は、本実施形態の端末装置の内部構成を示すブロック図である。この端末装置はゲームサーバに対していわゆるクライアントとなる。端末装置側のゲームプログラムは、プレイヤによる操作によりネットワークサーバへコマンドやメッセージ等種々のデータを送信する一方、この送信によってネットワークゲーム内で起こった変動結果の情報や、他のプレイヤにより送信されゲームサーバを介して転送される情報、或いはゲームサーバが自発的に送信する情報等、種々のデータをゲームサーバから受信する。そして端末装置は、送受信したデータに基づいてゲームを進行し画面表示する。
【0028】
ここで、端末装置側のプログラム及び画像や音楽等の種々のデータがCD−ROMやDVD等の記録媒体に記録されている場合は、プレイヤがその記録媒体を端末装置としてのゲーム装置やパーソナルコンピュータに挿入してゲームをスタートすると、自動的にそのプログラム等が端末装置内のRAMにロードされた後にそのプログラムが実行され、ゲームサーバと逐次通信しながらゲームが進行していく。一方で、端末装置内にハードディスクがある場合は、いったんプレイヤが記録媒体上のプログラム等をハードディスク上にコピーし、次回からはハードディスク上のプログラムをスタートさせる構成を取ることができる。また、ネットワーク上にこれらプログラム等がアップロードされている場合は、いったんプレイヤが端末装置側のハードディスクにダウンロードした後にそのプログラムをスタートさせる構成にしても良い。
【0029】
そして本実施形態のネットワークゲームでは、先ずプレイヤは自分が担当するプレイヤキャラクタを選択する。プレイヤキャラクタには、例えば戦国時代をテーマとしたゲームであれば、侍,忍者,陰陽師等があり、通常はこれらの中から1つを選択する。そしてその後、プレイヤは自分のキャラクタを操作して戦闘や仕事等をすることによりキャラクタのレベルや能力等のパラメータを上昇させたり、ネットワークを介して接続された他のプレイヤのキャラクタと立身出世を競ったり、或いは他のプレイヤとチャットをしてコミュニケーションを楽しむものである。尚、この世界で登場するキャラクタは、いわゆるプレイヤが操作可能なプレイヤキャラクタに限らず、ゲームサーバによる自動的な演算により動作するNPC(ノン・プレイヤー・キャラクタ)も存在し、各端末装置上の画面に表示される。
【0030】
ネットワークゲームの仮想空間の世界では、共通するゲームマップ上のある特定のポイントに多くのプレイヤキャラクタが集中すると、ゲームサーバの負荷が増大してゲーム進行に支障をきたすため、通常は仮想空間を複数のワールドに分け、各々のワールドに異なるゲームサーバを割り当て、複数のゲームサーバの並行処理で1つの世界を共有する構成をとる。そして、この世界の状況は各プレイヤの操作により常に流動的に変動していく。
【0031】
ネットワークゲームの仮想空間での時間は、ゲームサーバが管理し、現実社会の時間とは異なった時間速度で進行していく。また、ゲームサーバ内の記憶装置に記憶されるゲームデータには、各プレイヤに固有のゲームデータと、全プレイヤに共通のゲームデータがあり、これらは端末装置側のプレイヤの操作やゲームサーバ自身の自動的なイベント発生等により逐次変動するため、定期的に更新され保存される。
【0032】
次に、プレイヤが操作する端末装置側の動作について図4のフローチャートを用いて説明する。プレイヤがゲームをスタートすると、先ずステップ102でユーザ認証を行う。プレイヤが端末装置にユーザIDを入力するとゲームサーバに送信され、これを受信したゲームサーバは記憶装置に記憶されている全ユーザIDのデータを参照し、そのプレイヤが登録された者か否かについて確認する。登録されている場合、ゲームサーバは現在までのそのプレイヤのセーブデータを送信し、端末装置はこれを受信してゲームがスタートする。初めてゲームを開始する場合は、ユーザ登録及び自己が操作するプレイヤキャラクタの選択等の種々の初期設定を行う。その他のゲーム上必要ではあるが本発明と直接関係のない具体的な処理の説明は省略する(以下、そのような説明につき同じ)。
【0033】
ステップ104では、図3に示すモニタの垂直帰線周期と一致した、1/60秒(16.6ミリ秒)に一度の周期で行われる垂直帰線割込(Vsync)がなされたか否かを判断する。否定判断のときは、次のステップ122において、入力受信部から転送された入力情報に対する入力処理やゲーム効果音を音響処理部に合成させるための音響処理等のメイン処理を実行して、ステップ124へ進む。一方、ステップ104で肯定判断のときは、ステップ106において、チャットの送信要求があるか否かを判断する。肯定判断の時はステップ108でそのチャットデータをゲームサーバに送信する。
【0034】
プレイヤがチャットを行う場合、そのプレイヤは端末装置に接続されたキーボードやゲームコントローラ等の入力装置を用いて、自分が発言したい内容の文字列(チャットデータ)を入力する。入力された文字列は入力受信部で受信し端末装置のRAM等のバッファにいったん蓄積され、プレイヤが入力した文字列を確定した場合は、その文字列は通信処理部の送信バッファにコピーされ、通信処理部に対して送信要求を行い、所定のタイミングで自動的にその文字列がネットワークを介してゲームサーバに送信される。尚、ゲームサーバの受信後の処理は後述する。
【0035】
次にステップ110で、ゲームサーバからチャットデータを受信したか否かを判断する。肯定判断の時はステップ112でそのチャットデータをモニタに表示する。ゲームサーバから送信されたチャットデータはいったん通信処理部の受信バッファに蓄積され、所定のタイミングで自動的にそのチャットデータが画像処理部を介して端末装置のモニタに表示される。ここで、受信するチャットデータは、チャットデータを送信したプレイヤ以外の他のプレイヤの端末装置から送信されたものだけではなく、ゲームサーバの管理上の都合等のため、いったんゲームサーバを経由して発信者自身の端末装置にも送り返されるようにしている。また、通常チャットデータの送信はチャットに参加できるように、直接会話を交わす者以外の他のプレイヤにも送信される。
【0036】
次にステップ114で、プレイヤが入力装置を操作して自分のプレイヤキャラクタを移動したか否か判断する。肯定判断の場合、ステップ116でプレイヤキャラクタの移動量、即ち、入力装置上の十字方向ボタンセット等を操作して入力されたx,yの座標変位量を送信する。ここで、本実施形態では高さ成分としてのz座標値は考慮しないものとする。ゲームサーバはこれを受信すると、そのキャラクタの最新位置を計算し、そのキャラクタ付近の他のキャラクタとの親子関係を見直して所定領域に属するプレイヤキャラクタの端末装置に最新位置を通知する。尚、親子関係の見直しは、全キャラクタに対して行っても良い。また、端末装置側でも常に最新の位置情報を持ち、移動があった時に得られた移動量から最新位置を計算する処理まで行い、その後にゲームサーバにその最新位置を送信するようにしても良い。ゲームサーバの動作については後述する。
【0037】
次にステップ118で、ゲームサーバから送信された位置通知を受信したか否かを判断する。肯定判断の場合、ステップ120でその位置通知に対応したキャラクタを最新位置で画像処理部を介して表示し、ステップ124に移る。
【0038】
ステップ124では、ステップ122でゲームを終了させるための入力装置上の所定ボタンが押下された否かを判断し、否定判断のときは、ステップ104へ戻り、肯定判断のときは、端末装置側が実行するプログラムを終了する。尚、説明は省略するが、キャラクタが移動した時やアイテムを得た時、又はキャラクタの能力値が上がった時等ゲーム進行上で重要な変化があった時は、その情報は端末装置からゲームサーバに送信され記憶装置にセーブされるものとし、これによりプレイヤが次回ゲームをするときは前回の状態で開始することができる。
【0039】
次に、ゲームサーバの動作について図5から図13までのフローチャートを用いて説明する。本実施形態ではゲームサーバは常に動作しているものとし終了することはないとする。
【0040】
先ず、図5のステップ202で、図2に示すモニタの垂直帰線周期と一致した、1/60秒(16.6ミリ秒)に一度の周期で行われる垂直帰線割込(Vsync)がなされたか否かを判断する。否定判断のときはこれを繰り返し、肯定判断の時は次のステップ204で、接続中の何れかの端末装置からキャラクタの移動量を受信したか否か判断する。肯定判断の時はステップ206で位置・親子関係更新サブルーチンに移行し、否定判断の時は次のステップ208で、何れかの端末装置から送信されたチャットデータを受信したか否かを判断する。肯定判断の時はステップ210でチャット負荷軽減サブルーチンに移行し、否定判断の時はステップ202に戻って処理を繰り返す。ここで、ゲームサーバの受信は前述した端末装置の場合と同様に、通信部の受信バッファにいったん蓄えた後に処理される。また、ゲーム進行上重要ではあるが本発明と直接関係のない情報を端末装置側から受信した場合の処理や、ゲームサーバ本体が自動的に行う処理等(例えば、上述したNPCの動作等)その他の説明は省略する。
【0041】
次に、ステップ206の位置・親子関係更新サブルーチンについて図6から図9を用いて説明する。先ず、ゲームサーバが受信したデータにはキャラクタの移動量の他にそのキャラクタを識別するキャラクタIDが含まれるものとし、このキャラクタIDは、あるプレイヤが初めてキャラクタを選択してゲームを開始する際に設定され、そのキャラクタの種々のデータの所在を示すポインタアドレス(以下、単にポインタ)は、0から昇順に設定されたキャラクタID順に記憶装置にセーブされるものとする。そしてステップ302でゲームサーバはキャラクタIDを取得すると、これを元にそのキャラクタの座標値等のデータを取得し、ステップ304の移動キャラ探索サブルーチンに移行する。
【0042】
図7の移動キャラ探索サブルーチンでは、移動しようとするキャラクタ(以下、移動キャラクタ)を根から探索し、その親キャラクタへのポインタを、後述する子ノード探索・切り離しサブルーチン内で使用する親変数にセットする処理を行う。ここでセットするとは、RAM上の変数にポインタアドレスやデータを格納して一時記憶することをいうとする(以下、同じ)。先ず、ステップ402で木構造の根として割り当てられたキャラクタのデータへのポインタをRAM上のノード変数にセットする。尚、根は、木構造で唯一であるので仮想空間上の任意の点、例えば原点(x,y)=(0,0)とし、キャラクタが割り当てられていない実体のないノード、即ち視覚的に確認できない任意の座標点であっても良い。また、視覚的に確認できるキャラクタであっても人物以外のキャラクタで移動しないもの(目印となる大きな木等)であっても良い。そしてステップ404で移動キャラクタを探索の対象キャラクタ(以下、探索キャラクタ)とする。
【0043】
ここで、本実施形態でいう木構造並びに親子関係について説明する。先ず、図14(a)に示すようにキャラクタAを中心としたx,y座標軸を考えると、0から3までの4つの領域に分けることができる。一般に、キャラクタAの右上を第1象限と呼び左回りに第2象限というように増加するが、本実施形態では処理の便宜上数字を0から開始し、右上を第0象限、左回りに第1象限というように増加するものとする。また、後述するが、各キャラクタについて自己を中心とした第何象限に子のキャラクタがいるかを考えるものとする。
【0044】
図14(b)は、キャラクタAを根とした場合の木構造の一例である。この例では、キャラクタAを親と考えた場合、キャラクタB,C,D及びEの4つはその子となる。そして、キャラクタBはキャラクタAの第0象限,キャラクタCはキャラクタAの第1象限,キャラクタDはキャラクタAの第2象限,キャラクタEはキャラクタAの第3象限に属するものとする。尚、各キャラクタの子は各象限に1つずつで最大4つまで持てるものとする。同様にして、キャラクタBは第0象限にキャラクタF,・・・というように設定されている。
【0045】
図14(c)は図14(b)の木構造の一例を、実際のx,y座標平面で考えた場合の各キャラクタの接続の様子を示す。
【0046】
そして、図14(d)は図14(b)の木構造の一例を、実際のデータ構造を用いて示した場合である。例えばキャラクタAは、体力値等のデータ(他のデータ)と、上記の4つの子へのポインタを持ち記憶されている。ここで、子へのポインタを記憶する変数を子ポインタ変数と呼び、各キャラクタデータ内に子ポインタ変数0から3を持つとする。子ポインタ変数0は第0象限,子ポインタ変数1は第1象限,・・・とする。キャラクタAの子ポインタ変数0(図中では、A子0)にはキャラクタBへのポインタが記憶されており、キャラクタAの子ポインタ変数1(図中では、A子1)にはキャラクタCへのポインタが記憶されている。またキャラクタBの子ポインタ変数0(図中では、B子0)にはキャラクタFへのポインタが記憶されている。他の場合も同様な考え方で関係付けられている。尚、キャラクタBの子ポインタ変数1(図中では、B子1)にはヌル(0)が記憶され、これはキャラクタBを中心とした第1象限には子がいないことを意味する。他の場合も同様であり、キャラクタFのように全ての子ポインタ変数がヌル(0)の場合はキャラクタFは葉であることを意味する。ここで、子ポインタとは、親キャラクタと関係付けられた異なるキャラクタを子キャラクタとし、その子キャラクタのデータが存在するアドレスを示す。また、各キャラクタデータは動的に確保されるRAM上の領域に記憶され、且つ記憶装置にセーブされる。
【0047】
次に図7のステップ406で、探索キャラクタの位置がノード変数にセットされているそのノードを中心とした第何象限に属するか調べる。そしてステップ408で、そのノードのその象限に属する子を調べる。
【0048】
次にステップ410でその子が移動キャラクタか否か判断し、否定判断の時はステップ412で、その子へのポインタをノード変数にセットし、ステップ406に戻って繰り返す。肯定判断の時はそのノードは移動キャラクタの親であるから、ステップ414でそのノードへのポインタを親変数にセットし、本サブルーチンを終了して図6のステップ306に戻る。
【0049】
ここで、この移動キャラ探索サブルーチンでは、移動キャラクタの位置を目標として木構造の根から順に子を辿っていくが、この様子について図15の一例を用いて説明する。ここで、キャラクタaを根としてキャラクタdが移動キャラクタとすると、先ず、キャラクタdはキャラクタaの右上(第0象限)にあるのでキャラクタaの子ポインタ変数0に記憶されているキャラクタbへのポインタを取得する。また、ここでキャラクタb以降の子孫(b,c及びd)は、全てキャラクタaの右上に存在するものに限られるというルールを設けるとする。次にキャラクタdはキャラクタbの左上にあるのでキャラクタbの子ポインタ変数1に記憶されているキャラクタcへのポインタを取得する。先のルールはここでも適用され、キャラクタb以降の子孫は全てキャラクタaの右上に存在し、キャラクタc以降の子孫は全てキャラクタbの左上に存在するものに限られるということになる。即ち、あるノードの子ノードが属する象限の領域を、ノードを辿る度に論理積をとって狭くしていくというルールである。このようにして子を辿っていくことで、移動キャラクタに接続される親としてのキャラクタを特定する。
【0050】
図6のステップ306に戻ると、ステップ302で取得した移動キャラクタの座標値、即ち現在の位置情報に、受信した移動量の各x,y成分を加算して最新位置を算出し、位置情報を更新する(ステップ306)。
【0051】
そしてステップ308で、子ノード数の変数を0とし、子ノードバッファをクリアする。ここで子ノードバッファはRAM上に確保された領域である。次にステップ310で、ノード変数に移動キャラクタへのポインタをセットし、ステップ312で子ノード探索・切り離しサブルーチンに移行する。
【0052】
図8に示す子ノード探索・切り離しサブルーチンでは、移動キャラクタ及びその全ての子孫のキャラクタ数を数えて子ノード数とし、各々のキャラクタへのポインタを子ノードバッファに追加していく処理を行う。また、これら全てのキャラクタを木構造からいったん切り離す処理を行う。ここで切り離した後に後述する子ノード結合サブルーチンで再結合するが、このようにしないと、キャラクタの移動により木構造の構築で定めた前述のルールに矛盾が生ずるためである。
【0053】
これを図16及び17を用いて説明する。先ず、図16(a)のような例の木構造で、矢印の方向に移動する移動キャラクタであるdに子がいない場合で考える。キャラクタdが図16(b)に示す位置まで移動した場合は、根のキャラクタaから見てキャラクタdは右上に存在し、次のキャラクタbから見てキャラクタdは左上に存在するので、図16(a)での状態で根から辿った場合と同じであり、ここまでは前述のルールは維持できている。尚、キャラクタdはキャラクタcの子であるがキャラクタcの第何象限の子であるかは問題ではなく、キャラクタdがキャラクタaの右上で且つキャラクタbの左上であることが満たされていれば問題ない。ただし、キャラクタcの右上に子がいないことが条件となる。そして、キャラクタdが図16(c)に示す位置まで移動すると、キャラクタdはキャラクタbの子のキャラクタcが存在する左上ではなく、右上にはみ出してしまい、このままキャラクタcとキャラクタdを接続していては、前述のルールに矛盾してしまう。この場合は図16(c’)のように、キャラクタdはキャラクタcとの接続を切り離し、新たにキャラクタbと接続しなければならない。ただし、キャラクタbの右上に子がいないことが条件となる。
【0054】
また、図17(a)のような例の木構造で、矢印の方向に移動する移動キャラクタであるcに子がいる場合で考える。基本的には上記図16の場合と同じであるが、図17(c)とはならず、図17(c’)としなければならない。即ち、キャラクタcが図17(c)で示す位置まで移動した場合は、キャラクタcとキャラクタdは切り離され、新たにキャラクタbとキャラクタdが接続されなければならないということである。ただし、キャラクタbの左上に子がいないことが条件となる。
【0055】
このように、あるキャラクタが移動した場合は、いったんそのキャラクタ以降のノードを木構造から切り離し、再度矛盾が起こらないようにそれらを結合する処理が必要となってくる。
【0056】
再び図8の子ノード探索・切り離しサブルーチンの説明に戻ると、先ず、ステップ502でノード変数がヌルか否かを判断し、肯定判断であれば本サブルーチンを終了する。後述するが、このサブルーチンは再帰的に呼び出される関数であり、ノード変数がヌルの場合とは、そのノードの親にはもはや子はいないことを意味する。そして、ステップ502で否定判断の時は、次にステップ504で子ノードバッファにそのノードへのポインタを追加し、ステップ506で子ノード人数を追加し、ステップ508でそのノードをその親から切り離す。具体的に切り離しの処理は、親変数にセットされているポインタが指すキャラクタの、4つの子ポインタ変数のうち、そのノードへのポインタがセットされている子ポインタ変数をヌルにセットする。そして、ステップ510でそのノードへのポインタを新たに親変数にセットする。
【0057】
次にそのノードの子について調べていく。ステップ512でカウンタ変数lを0とし、ステップ514でlが4より小さいか否か判断する。肯定判断の時は、ステップ516でそのノードの第l象限の子ノードのポインタ、即ち子ポインタ変数lにセットされているポインタをノード変数にセットし、ステップ518で本サブルーチンを再帰的に呼び出す。再帰的に呼び出す理由は、現在のノードに子が見つかったためであり、その子の子,・・・についても調べる必要があるからである。再帰的呼び出しは通常スタックを使用するが、戻り先のアドレスや変数等はスタックにプッシュされ、戻った後にポップされることで正常に動作するものとする。ここで、セットしたノード変数内のポインタがヌルの場合は、再帰的に呼び出された後のステップ502で直ぐに戻されることになる。そして、ステップ520でlを1増加しステップ514に戻る。また、ステップ514で否定判断された時は本サブルーチンを終了する。尚、ここで否定判断される場合とは、結果的にそのノードが子を持たない葉である場合となる。
【0058】
図6のステップ312の子ノード探索・切り離しサブルーチンを終了すると、得られた子ノード数、子ノードバッファを元に、いったん切り離したノードを再度結合し木構造を作り直す処理を行う。即ち、ステップ314の子ノード結合サブルーチンに移行する。
【0059】
図9の子ノード結合サブルーチンでは、先ず、根から子を辿っていくためにステップ602で根のキャラクタへのポインタをノード変数にセットする。次にステップ604でポインタ変数mを0にセットする。次にステップ606でmが子ノード数より小さいか否かを判断し、肯定判断の時は、次のステップ608で子ノードバッファからm番目のデータ、即ちキャラクタへのポインタを取得する。
【0060】
そして、ステップ610でそのキャラクタを探索キャラクタとし、ステップ612で探索キャラクタの位置がノード変数が示すノードを中心とした第何象限に属するかを調べ、ステップ614でそのノードの4つの子のうちその象限に属する子を調べる。そしてステップ616で、既に子がいるかいないか、即ち、その象限に当たる子ポインタ変数がヌルでないか否かを判断する。ここで肯定判断の時は、ステップ618でその子へのポインタをノード変数にセットしてステップ612に戻り、これを繰り返す。また、否定判断の時は、ステップ620で探索キャラクタをそのノードのその象限の子として結合処理を行う。即ち、その象限が第0象限であれば、探索キャラクタへのポインタを、そのノードの子ポインタ変数0にセットされる。その後、ステップ622でmを1増加し、ステップ606に戻り、これを繰り返す。また、ステップ606で否定判断の時は、いったん切り離したノードを木構造のルールに矛盾なく全て結合したので、本サブルーチンを終了し、図6の位置・親子関係更新サブルーチンを終了する。
【0061】
次に、図10のチャット負荷軽減サブルーチンについて説明する。先ず、ステップ702で、受信したチャットデータに含まれるアカウントIDやキャラクタID等の情報を元に、記憶装置に記憶されているそのプレイヤキャラクタ(以下、発信キャラクタ)の、現在の位置情報等のゲームデータを取得する。この点は上記移動の場合と殆ど同じである。
【0062】
そして、ステップ704でそのプレイヤキャラクタが現在いる仮想空間上の領域が不正でないか判断し、肯定判断の場合は本サブルーチンを終了する。これはゲーム上の都合又はトラブル等で、プレイヤキャラクタが本来ゲーム内で行動できない領域に存在する場合に、ネットワークゲームの世界で矛盾がないようにするための処理である。
【0063】
次に、ステップ706でチャット可能な領域(以下、チャット領域)を発信キャラクタの現在位置を中心として各辺25m(仮想空間での距離の単位でメートル)に設定する。ここでいうチャット領域とは、図18でいえばキャラクタTを中心とした一定の大きさの矩形領域(本実施形態では正方形の領域)1000をいう。キャラクタの現在の位置がこの範囲に属する場合は、そのキャラクタはチャットデータの受信候補となる。
【0064】
そして、ステップ708でチャット領域の各辺が5m以上か否かを判断し、肯定判断の場合はステップ710のチャット人数取得サブルーチンに移行し、現在のチャット領域に属するキャラクタの数(以下、チャット人数)を取得する。尚、この部分の処理は後述する。
【0065】
そして、ステップ712で、ステップ310により取得したチャット人数が128人以上か否か判断し、肯定判断の時はステップ714で各辺を5mだけ縮めてステップ708に戻り、処理を繰り返す。又、否定判断の時は後半の処理として、図11のステップ716に移行する。ここで、ステップ712で否定判断の時はチャット人数が128より小さくなるが、ステップ708で否定判断、即ちチャット領域の各辺が5mの場合でもチャット人数が128以上となる非常に密集している場合も、次のステップ716に移行することになる。しかしながら、この場合でも後述するようにステップ734,736で送信の制限を設けているので問題は生じない。尚、チャット可能な人数の上限は128に限らないことはいうまでもない。
【0066】
ここで、図12のチャット人数取得サブルーチンについて先に説明する
先ず、ステップ802でチャットデータ送信の対象とする人数としてのチャット人数というRAM上の変数を0に初期化し、また、送信対象のキャラクタへのポインタを記憶したチャットバッファをクリアする。ここでチャットバッファはRAM上に確保された領域である。そして、ステップ804でノード変数に根のキャラクタのポインタをセットし、ステップ806のチャットループサブルーチンに移行する。
【0067】
図13のチャットループサブルーチンでは、先ず、ステップ902でノード変数がヌルか否かを判断する。尚、本サブルーチンは、図8の子ノード探索・切り離しサブルーチンの場合と同じように再帰的に呼び出される関数であり、ステップ502での処理と同じように、そのノード自身のポインタがヌルの場合はその親の子がいないことを意味する。
【0068】
そして、ステップ904でそのノードの座標値を取得し、ステップ906でそのノードが先に定めた矩形領域内か否かを判断する。ここで、矩形領域内か否かの判断は、その矩形を構成する4つの角(点)の座標値とそのノードの座標値のx,y成分を大小比較することにより判断できる。ここで、ゲームという性質上、空中に浮くということは想定していないので、横と奥行きとしてのx,y座標成分のみ比較すればよく、高さとしてのz座標成分まで比較する必要はない。そして、ステップ906で肯定判断の場合はステップ912でチャット人数に追加し、ステップ914でチャットバッファにそのノードのポインタを追加する。そしてそのノードは矩形領域内に存在するので、そのノードの子ノード4つを全て調べる対象(即ち、調べる象限)とし、ステップ918に移行する。
【0069】
また、ステップ906で否定判断の時は、ステップ908でそのノードが矩形領域のどの方向に範囲外となっているかを調べる。具体的には矩形領域の範囲外の領域は、矩形領域の上,下,左,右と、更に左上,左下,右上,右下の8つの領域に分けられる。図18で言えば、1から8までの領域である。そして、ステップ910で、得られた方向と逆方向の象限に属する子を調べる対象とする。具体的には、そのノードが矩形領域の上にいた場合(図18でいう1領域)は、第2及び第3象限のみ調べ、下にいた場合(図18でいう5領域)は、第0及び第1象限のみ調べ、左にいた場合(図18でいう3領域)は、第0及び第3象限のみ調べ、右にいた場合(図18でいう7領域)は、第1及び第2象限のみ調べることにする。また、左上にいた場合(図18でいう2領域)は第3象限のみ調べ、左下にいた場合(図18でいう4領域)は第0象限のみ調べ、右上にいた場合(図18でいう8領域)は第2象限のみ調べ、右下にいた場合(図18でい6領域)は第1象限のみ調べる。尚、図14(a)を参照すると分かりやすい。従って、ステップ910で分かる調べる象限の数は1又は2となる
【0070】
次に、ステップ918でカウンタ変数kを0に初期化し、ステップ920でkが4より小さいか否かを判断する。否定判断の時は、ステップ922でそのk象限は上記ステップ910又は916で調べた、調べる象限か否かを判断する。否定判断の時はステップ928でkを1増加してステップ920に戻り、これを繰り返す。また、ステップ922で肯定判断の時は、ステップ924でそのノードのk象限に属する子ノードのポインタ、即ち子ポインタ変数kにセットされたポインタをノード変数にセットし、ステップ926で、再帰的に本サブルーチンを呼び出す。図8のステップ518の場合と同様に、種々の変数等はスタックにプッシュされ、呼び出し先から戻る際にプッシュされるものとする。その後、ステップ928に移行する。また、ステップ920で肯定判断の場合は、本サブルーチンを終了し、図12のチャット人数取得サブルーチンを終了する。
【0071】
次に、図11のチャット負荷軽減サブルーチンの後半部分に戻る。先ず、ステップ716でRAM上の送信数及び送信長の変数を0に初期化する。そして、ステップ718で先ずは発信者の端末装置にチャットデータを送信して送り返す。その分として、ステップ720で送信数を1増加するとともに送信長を送信した分だけ加算する。
【0072】
次にステップ722で、カウンタ変数jを0に初期化した後、ステップ724でjが得られたチャット人数より小さいか否かを判断する。否定判断の場合は本サブルーチンを終了して図5のステップ202に戻る。また肯定判断の時は、ステップ726でチャットバッファからj番目のデータ、即ちキャラクタデータへのポインタを取得する。
【0073】
次にステップ728で、ステップ726で得られたポインタが指すキャラクタデータを参照し、そのキャラクタがプレイヤキャラクタか否かを判断する。自動的にサーバが動作させるいわゆるNPC、即ちコンピュータキャラクタである可能性もあり、この場合はチャットデータを送信する必要がないので、ステップ728で否定判断の場合はステップ734まで移行する。
【0074】
ステップ728で肯定判断の時は、ステップ730でそのキャラクタを操作するプレイヤの端末装置にチャットデータを送信する。また、ステップ732で送信数を1増加するとともに送信長を送信した分だけ加算する。
【0075】
次のステップ734で、送信数が64以上か否かを判断する。肯定判断の場合は本サブルーチンを終了して図5のステップ202に戻る。否定判断の場合は、次のステップ736で、送信長が最大値の8192以上か否かを判断する。肯定判断の場合は本サブルーチンを終了して図5のステップ202に戻る。否定判断の場合は、ステップ738でjを1増加してステップ724に戻りこれを繰り返す。ここで、チャット人数の上限と送信数の上限が違うのはNPCの存在によるものである。そして、送信数及び送信長に上限を設けることにより、サーバの負荷に一定の制限を設けている。
【0076】
尚、本実施形態では、ある特定のキャラクタが発信する所定情報をチャット情報及び移動するキャラクタの移動情報としたが、送信先のキャラクタに共通の情報であれば何でも実現できるということは言うまでもない。例えば、ある共通のイベントや命令を同時に実行させるための情報等が考えられる。
【0077】
また、本実施形態では、いわゆる所定時間を、モニタの垂直帰線割込の16ミリ秒としたが、これに限定されるものではない。例えば、画像処理に影響しないように別にタイマ割込みを一定間隔で発生させ、例えば10ミリ秒に一度の周期で処理するようにしても良い。
【0078】
【発明の効果】
ネットワークゲームサーバの負荷が最も増大するプレイヤキャラクタの密集エリアでのチャット等の情報送受信において、情報発信しようとするプレイヤキャラクタの仮想空間上の位置を中心とした所定領域内の密集度を素早く検知し、その密集度に応じて情報受信可能な領域としての所定領域を段階的に狭くしていくので、ネットワークゲームサーバの負荷の増大を抑制することができる。
【図面の簡単な説明】
【図1】本実施形態のネットワークゲームサーバと端末装置との接続形態を示す概略図である。
【図2】本実施形態のネットワークゲームサーバの内部構成を示す概略ブロック図である。
【図3】本実施形態の端末装置の内部構成を示す概略ブロック図である。
【図4】本実施形態の端末装置が実行するプログラムの概略フローチャートである。
【図5】本実施形態のネットワークゲームサーバが実行するプログラムの概略フローチャートである。
【図6】本実施形態のネットワークゲームサーバが実行する位置・親子関係更新サブルーチンのフローチャートである。
【図7】位置・親子関係更新サブルーチン内の移動キャラ探索サブルーチンのフローチャートである。
【図8】位置・親子関係更新サブルーチン内の子ノード探索・切り離しサブルーチンのフローチャートである。
【図9】位置・親子関係更新サブルーチン内の子ノード結合サブルーチンのフローチャートである。
【図10】本実施形態のネットワークゲームサーバが実行するチャット負荷軽減サブルーチンの前半のフローチャートである。
【図11】本実施形態のネットワークゲームサーバが実行するチャット負荷軽減サブルーチンの後半のフローチャートである。
【図12】チャット負荷軽減サブルーチン内のチャット人数取得サブルーチンのフローチャートである。
【図13】チャット人数取得サブルーチン内のチャットループサブルーチンのフローチャートである。
【図14】(a)はキャラクタAを中心とした周囲をx,y座標軸で4つの領域に分け、各々を本実施形態でいうところの0から3までの象限を示す説明図である。(b)は、キャラクタAを根とした場合の木構造の一例である。(c)は(b)の木構造の一例を、実際のx,y座標平面で考えた場合の各キャラクタの接続を示す説明図である。そして、(d)は(b)の木構造の一例を、実際のデータ構造を用いて示した場合である。
【図15】本実施形態の木構造で、子ノードが属することが可能な領域が、根から子ノードを辿っていくにつれて狭くなる様子を示す説明図である。
【図16】本実施形態の木構造で、矢印の方向に移動するキャラクタdに子がいない場合のキャラクタ間の切り離し・結合についての説明図である。
【図17】本実施形態の木構造で、矢印の方向に移動するキャラクタcに子がいる場合のキャラクタ間の切り離し・結合についての説明図である。
【図18】本実施形態の矩形領域で、キャラクタTを中心とする矩形領域の外側の領域を8つに分けた場合の領域1から8までを示す説明図である。
【符号の説明】
2 ネットワークゲームサーバ
4 端末装置
6 ネットワークゲームサーバのCPUブロック(情報受信手段,送信対象特定手段,情報送信手段,親子関係更新手段,人数取得手段)
8 端末装置のCPUブロック
1000 矩形領域
Claims (10)
- ネットワークを介して接続される複数の端末装置と通信することによってネットワークゲームを進行するネットワークゲームサーバであって、
前記端末装置から第1のキャラクタについての所定情報を受信する情報受信手段と、
前記所定情報を受信したとき、仮想空間上の前記第1のキャラクタの位置の周囲に所定領域を設定し、各キャラクタの位置に基づいて木構造で関係付けられたキャラクタ相互の親子関係に基づいて、前記所定領域の方向に、第2のキャラクタを親キャラクタとした当該子孫キャラクタを探索していき、前記子孫キャラクタが前記所定領域内に存在する場合は、当該子孫キャラクタを送信対象として特定する送信対象特定手段と、
前記送信対象に対応する端末装置に前記所定情報を送信する情報送信手段と、
を備えることを特徴とするネットワークゲームサーバ。 - 前記木構造は、前記第2のキャラクタを根とすることを特徴とする請求項1に記載のネットワークゲームサーバ。
- 前記所定領域は、前記第1のキャラクタの位置を中心とした矩形領域であることを特徴とする請求項1または請求項2に記載のネットワークゲームサーバ。
- 前記所定情報は、チャット情報であることを特徴とする請求項1乃至請求項3に記載のネットワークゲームサーバ。
- 前記所定情報は、仮想空間上で位置変化のあった前記第1のキャラクタの位置変化情報であり、
前記ネットワークゲームサーバは、更に前記位置変化情報を受信したとき、当該位置変化情報に基づいて前記第1のキャラクタの位置及び前記親子関係を更新する親子関係更新手段と、
を備えることを特徴とする請求項1乃至請求項3に記載のネットワークゲームサーバ。 - 前記ネットワークゲームサーバは、更に前記所定領域内に存在する前記子孫キャラクタの数を数える人数取得手段を備え、前記送信対象特定手段は、前記人数取得手段により取得したキャラクタ数が所定数を超えた場合は前記所定領域を狭くして、再度前記送信対象を特定することを特徴とする請求項1乃至請求項5のいずれか1項に記載のネットワークゲームサーバ。
- ネットワークを介して接続される複数の端末装置と通信することによってネットワークゲームを進行するネットワークゲームサーバの制御方法であって、
前記端末装置から第1のキャラクタの所定情報を受信したとき、
仮想空間上の前記第1のキャラクタの位置の周囲に所定領域を設定し、各キャラクタの位置に基づいて木構造で関係付けられたキャラクタ相互の親子関係に基づいて、前記所定領域の方向に、第2のキャラクタを親キャラクタとした当該子孫キャラクタを探索していき、前記子孫キャラクタが前記所定領域内に存在する場合は、当該子孫キャラクタを送信対象として特定し、
前記送信対象に対応する端末装置に前記所定情報を送信する、
ステップを含むことを特徴とするネットワークゲームサーバの制御方法。 - ネットワークを介して接続される複数の端末装置と通信することによってネットワークゲームを進行するネットワークゲームサーバが実行可能なプログラムであって、コンピュータを、
前記端末装置から第1のキャラクタの所定情報を受信する手段、
前記所定情報を受信したとき、仮想空間上の前記第1のキャラクタの位置の周囲に所定領域を設定し、各キャラクタの位置に基づいて木構造で関係付けられたキャラクタ相互の親子関係に基づいて、前記所定領域の方向に、第2のキャラクタを親キャラクタとした当該子孫キャラクタを探索していき、前記子孫キャラクタが前記所定領域内に存在する場合は、当該子孫キャラクタを送信対象として特定する手段、
前記送信対象に対応する端末装置に前記所定情報を送信する手段、
として機能させるためのプログラム。 - ネットワークを介して前記ネットワークゲームサーバと接続された端末装置が実行可能なプログラムであって、コンピュータを、
ゲーム画像を表示する手段、
前記ネットワークゲームサーバに前記所定情報を送信する手段、
前記ネットワークゲームサーバから前記所定情報を受信する手段、
前記受信した所定情報を表示する手段、
として機能させるためのプログラム。 - 請求項8または請求項9に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003094482A JP3772328B2 (ja) | 2003-03-31 | 2003-03-31 | ネットワークゲームサーバ、制御方法、プログラム及び記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003094482A JP3772328B2 (ja) | 2003-03-31 | 2003-03-31 | ネットワークゲームサーバ、制御方法、プログラム及び記憶媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004298373A true JP2004298373A (ja) | 2004-10-28 |
JP3772328B2 JP3772328B2 (ja) | 2006-05-10 |
Family
ID=33407039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003094482A Expired - Fee Related JP3772328B2 (ja) | 2003-03-31 | 2003-03-31 | ネットワークゲームサーバ、制御方法、プログラム及び記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3772328B2 (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006293475A (ja) * | 2005-04-06 | 2006-10-26 | Sammy Networks Co Ltd | チャットシステム |
JP2008546469A (ja) * | 2005-06-20 | 2008-12-25 | マイクロソフト コーポレーション | ゲーム・コンテクストの外部でのオンライン・ゲーム・セッションをセットアップすること |
JP2010509810A (ja) * | 2006-11-08 | 2010-03-25 | ドルビー・ラボラトリーズ・ライセンシング・コーポレーション | オーディオシーン作成用装置および方法 |
US7934996B2 (en) | 2006-07-06 | 2011-05-03 | Kabushiki Kaisha Square Enix | Online video game control server and a method of controlling an online video game |
JP2013122629A (ja) * | 2011-12-09 | 2013-06-20 | Masahito Kuwabara | サーバ装置、通信システム、制御方法およびプログラム |
US9375641B2 (en) | 2004-12-08 | 2016-06-28 | Microsoft Technology Licensing, Llc | Social matching of game players on-line |
JP2020018620A (ja) * | 2018-08-01 | 2020-02-06 | 株式会社カプコン | 仮想空間における音声生成プログラム、四分木の生成方法、および音声生成装置 |
-
2003
- 2003-03-31 JP JP2003094482A patent/JP3772328B2/ja not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10398985B2 (en) | 2004-12-08 | 2019-09-03 | Microsoft Technology Licensing, Llc | Social matching of game players on-line |
US9375641B2 (en) | 2004-12-08 | 2016-06-28 | Microsoft Technology Licensing, Llc | Social matching of game players on-line |
JP2006293475A (ja) * | 2005-04-06 | 2006-10-26 | Sammy Networks Co Ltd | チャットシステム |
US8535165B2 (en) | 2005-06-20 | 2013-09-17 | Microsoft Corporation | Setting up on-line game sessions out of a game context |
JP2008546469A (ja) * | 2005-06-20 | 2008-12-25 | マイクロソフト コーポレーション | ゲーム・コンテクストの外部でのオンライン・ゲーム・セッションをセットアップすること |
US8241129B2 (en) | 2005-06-20 | 2012-08-14 | Microsoft Corporation | Setting up on-line game sessions out of a game context |
US7934996B2 (en) | 2006-07-06 | 2011-05-03 | Kabushiki Kaisha Square Enix | Online video game control server and a method of controlling an online video game |
RU2449496C2 (ru) * | 2006-11-08 | 2012-04-27 | Долби Лэборетериз Лайсенсинг Корпорейшн | Устройства и способы для использования в создании аудиосцены |
KR101225475B1 (ko) | 2006-11-08 | 2013-01-23 | 돌비 레버러토리즈 라이쎈싱 코오포레이션 | 오디오 장면을 생성하는데 사용하기 위한 장치들 및 방법들 |
US8403751B2 (en) | 2006-11-08 | 2013-03-26 | Dolby Laboratories Licensing Corporation | Apparatuses and methods for use in creating an audio scene |
KR101201695B1 (ko) * | 2006-11-08 | 2012-11-15 | 돌비 레버러토리즈 라이쎈싱 코오포레이션 | 오디오 장면을 생성하는데 사용하기 위한 장치들 및 방법들 |
JP2012196465A (ja) * | 2006-11-08 | 2012-10-18 | Dolby Lab Licensing Corp | オーディオシーン作成用装置および方法 |
JP2010509810A (ja) * | 2006-11-08 | 2010-03-25 | ドルビー・ラボラトリーズ・ライセンシング・コーポレーション | オーディオシーン作成用装置および方法 |
JP2013122629A (ja) * | 2011-12-09 | 2013-06-20 | Masahito Kuwabara | サーバ装置、通信システム、制御方法およびプログラム |
US9981185B2 (en) | 2011-12-09 | 2018-05-29 | Nintendo Co., Ltd. | Server enabled user data exchange between information processing devices |
JP2020018620A (ja) * | 2018-08-01 | 2020-02-06 | 株式会社カプコン | 仮想空間における音声生成プログラム、四分木の生成方法、および音声生成装置 |
Also Published As
Publication number | Publication date |
---|---|
JP3772328B2 (ja) | 2006-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11103791B2 (en) | Automatic movement of player character in network game | |
US9731196B2 (en) | Apparatus and method for displaying player character showing special movement state in network game | |
JP5951555B2 (ja) | ビデオゲーム処理プログラム、及びビデオゲーム処理システム | |
JP5622704B2 (ja) | プログラム、情報記憶媒体、画像生成システム、サーバ及びゲーム提供方法 | |
US8821290B2 (en) | Automatic movement of disconnected character in network game | |
JP3869452B1 (ja) | ビデオゲーム処理装置、ビデオゲーム処理方法、およびビデオゲーム処理プログラム | |
US20200047066A1 (en) | Communication game system, communication game apparatus, and program | |
EP2463000A2 (en) | Network video game system for executing event in network video game | |
US10881966B2 (en) | Networked game system | |
JP2011110139A (ja) | サーバシステム、及びアイテム管理方法 | |
JP4050658B2 (ja) | ゲーム装置、ゲーム制御プログラムおよびそのプログラムが記録された記録媒体 | |
EP2749331A1 (en) | Information processing system, information processing apparatus, information processing program and information processing method | |
JP3772328B2 (ja) | ネットワークゲームサーバ、制御方法、プログラム及び記憶媒体 | |
JP2022019979A (ja) | ゲームプログラム、およびゲームシステム | |
JP6159458B1 (ja) | ゲームプログラム、方法、および情報処理装置 | |
TW202218722A (zh) | 虛擬場景的顯示方法及裝置、終端及存儲介質 | |
JP6701302B2 (ja) | ゲームプログラム、コンピュータの制御方法、および、コンピュータ | |
JP6694668B2 (ja) | ゲームプログラム、コンピュータの制御方法、および、コンピュータ | |
JP2023049267A (ja) | ゲームシステム、プログラム及びゲーム提供方法 | |
JP2024029961A (ja) | ゲームプログラム、ゲーム制御方法及び情報処理装置 | |
CN116785690A (zh) | 游戏的显示控制方法、装置、电子设备及存储介质 | |
JP2018057821A (ja) | ゲームプログラム、方法、および情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20051025 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20051101 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051102 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051221 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060124 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060203 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3772328 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120224 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150224 Year of fee payment: 9 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |