JP2004049922A - クライアントサーバシステム - Google Patents

クライアントサーバシステム Download PDF

Info

Publication number
JP2004049922A
JP2004049922A JP2003277060A JP2003277060A JP2004049922A JP 2004049922 A JP2004049922 A JP 2004049922A JP 2003277060 A JP2003277060 A JP 2003277060A JP 2003277060 A JP2003277060 A JP 2003277060A JP 2004049922 A JP2004049922 A JP 2004049922A
Authority
JP
Japan
Prior art keywords
server
client
game
data
udp
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.)
Pending
Application number
JP2003277060A
Other languages
English (en)
Other versions
JP2004049922A5 (ja
Inventor
Makoto Yamamoto
山本 信
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sega Corp
Original Assignee
Sega Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sega Corp filed Critical Sega Corp
Priority to JP2003277060A priority Critical patent/JP2004049922A/ja
Publication of JP2004049922A publication Critical patent/JP2004049922A/ja
Publication of JP2004049922A5 publication Critical patent/JP2004049922A5/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】OS依存性やシステム構築の負担を増やすことなく、多人数が同時に接続した状態においてリアルタイム性を確保しつつ安定してゲーム等を実行することができる新たな枠組みを提供する。
【解決手段】複数のクライアントと少なくとも1つのゲームサーバとを含むゲームシステムを対象とし、クライアントが操作情報をサーバへ送信する工程、サーバがクライアントから操作情報を受信し、これに基づきゲームを進行させてゲームデータを更新する工程、サーバがゲームデータをクライアントへ送信する工程、クライアントがサーバからゲームデータを受信し、これに基づきユーザにゲーム情報を出力する工程を備える。このとき、クライアントからの操作情報の送信(サーバにおける操作情報の受信)はUDPに基づいて行い、サーバからのゲームデータの送信(クライアントにおけるゲームデータの受信)はTCPに基づいて行う。
【選択図】図4

Description

 本発明は、複数のクライアントと、クライアントと通信可能に構成された少なくとも1つのサーバとを含んで構成されるクライアントサーバシステムにおいて、複数のユーザが同時に参加するタイプのオンラインゲーム等を実行するのに適した枠組みに関する。
 インターネット等の急速な発展、更にそのブロードバンド化に伴い、通信ネットワークを介して複数のユーザが参加するオンラインゲーム(ネットワークゲーム)が注目を集めている。このようなオンラインゲームとして、特に多数のユーザが同時に参加するMMOゲーム(Massively Multiplayer Online Game;多人数型オンラインゲーム)と呼ばれるジャンルがある。
 従来においてオンラインゲームは、クライアントサーバシステム、すなわち、ユーザから操作情報等を受け付けるとともにユーザに対しゲーム画面等の情報を出力するクライアントと、ゲームデータを管理しゲーム進行処理を実行するゲームサーバとを備え、両者のあいだでTCP(Transmission Control Protocol)に基づきコネクション型接続を行うシステム構成を採る場合が多い(図5参照)。
 コネクション型接続を行う場合、サーバ側の構成としては、例えば以下のようなタイプが考えられる。すなわち、1)TCPコネクションを介して行われるデータ受信を監視するスレッドをクライアントごとに作成し、スレッドを切り替えることにより各クライアントとの間で通信を行うマルチスレッドタイプ、2)TCPコネクションを介して行われる入出力を複数のクライアントについてまとめて監視する一つのスレッドを作成し、該スレッド内で複数のTCPコネクションをポーリングすることにより各クライアントとの間で通信を行うシングルスレッドタイプ、3)データを受信した場合に割り込みを行うソケットをクライアントごとに作成し、該ソケットからの割り込みに基づいて各クライアントとの間で通信を行う割り込みタイプ、などである。
 しかし、マルチスレッドタイプやシングルスレッドタイプの構成では、クライアント数が増加するにつれてサーバの負担が大きくなってしまうという問題が生ずる。例えばマルチスレッドタイプでは、クライアントごとにスレッドが作成されるため、クライアント数が増加すると、スレッド管理・スレッド切り替えに起因するオーバヘッドが増大してしまうという問題が生ずる。また、シングルスレッドタイプでは、スレッド管理・スレッド切り替えに起因するオーバヘッドは生じないものの、クライアント数分のソケットをポーリングにより監視しなければならないため、ポーリングに起因するオーバヘッドが増大してしまうという問題が生ずる。
 特に、大人数(例えば1000人以上)が同時にサーバに接続するMMOゲームでは上記オーバヘッドは著しく、このことは、例えば入力した情報が反映されるまでのタイムラグの増大や、いわゆる処理落ちの発生など、ゲーム進行に関するリアルタイム性やパフォーマンスを大きく低下させ、またサーバダウンを引き起こす原因となっていた。
 一方、割り込みタイプでは、上記のようなオーバヘッドの問題は回避可能であるが、OSレベルが提供するソケットが割り込み機能を持たない場合、アプリケーションレベル(ゲームプログラム側)で割り込みに対応できるようにソケットの機能を拡張しなければならず、OS依存性が高まる上にシステム構築の負担も大きくなってしまうという問題が生ずる。また、プログラム言語自体も割り込みに対応している必要があるが、広く普及している言語の多くは割り込みに対応していないことから、開発環境が制限されてしまうという問題もある。
 そこで、本発明は、OS依存性やシステム構築の負担を増やすことなく、多人数が同時に接続した状態においてもリアルタイム性を確保しつつ安定してゲーム処理等を実行することができる新たな枠組みを提供することを目的とする。
 本発明のサーバシステムは、複数のクライアントと通信可能に構成された少なくとも1つのサーバを備え、所定のアプリケーション(以下、「AP」と呼ぶ。)を実行可能に構成されたサーバシステムであって、前記サーバは、クライアントから前記APに関わるデータを受信する場合は、データが届いたかどうかを送信側が受信側に確認しないプロトコルに基づいて受信し、クライアントへ前記APに関わるデータを送信する場合は、データが届いたかどうかを送信側及び受信側で相互に確認するプロトコルに基づいて送信するように制御する手段を備えることを特徴とする。
 また本発明のサーバシステムは、複数のクライアントと通信可能に構成された少なくとも1つのサーバを備え、所定のアプリケーション(以下、「AP」と呼ぶ。)を実行可能に構成されたサーバシステムであって、前記サーバは、クライアントから前記APに関わるデータを受信する場合はUDP(User Datagram Protocol)に基づいて受信し、クライアントへ前記APに関わるデータを送信する場合はTCP(Transmission Control Protocol)に基づいて送信するように制御する手段を備えることを特徴とする。
 前記サーバは、UDPに基づいてクライアントから受信したパケットが該クライアントの認証情報を含んでいる場合に正当なパケットと判断する手段を備えることが望ましい。
 前記サーバは、UDPに基づいてクライアントから受信したパケットより検証情報を抽出し、該パケットの順序をチェックして未到着のパケットがあると判断した場合に、対応するクライアントへTCPに基づいて前記未到着のパケットの再送指示を送信する手段を備えることが望ましい。
 本発明のクライアントは、所定のサーバと通信可能に構成され、所定のアプリケーション(以下、「AP」と呼ぶ。)を実行可能に構成されたクライアントであって、前記クライアントは、サーバから前記APに関わるデータを受信する場合は、データが届いたかどうかを送信側及び受信側で相互に確認するプロトコルに基づいて受信し、サーバへ前記APに関わるデータを送信する場合は、データが届いたかどうかを送信側が受信側に確認しないプロトコルに基づいて送信するように制御する手段を備えることを特徴とする。
 また本発明のクライアントは、所定のサーバと通信可能に構成され、所定のアプリケーション(以下、「AP」と呼ぶ。)を実行可能に構成されたクライアントであって、前記クライアントは、サーバから前記APに関わるデータを受信する場合はTCP(Transmission Control Protocol)に基づいて受信し、サーバへ前記APに関わるデータを送信する場合はUDP(User Datagram Protocol)に基づいて送信するように制御する手段を備えることを特徴とする。
 前記クライアントは、更に、UDPに基づいてサーバへ送信するパケットに、該クライアントの認証情報を挿入する手段を備えることが望ましい。
 前記クライアントは、更に、UDPに基づいてサーバへ送信するパケット(以下、「UDPパケット」と呼ぶ。)に、該パケットの順序をチェックするための検証情報を挿入する手段と、TCPに基づいてサーバからUDPパケットの再送指示を受信した場合に、UDPに基づいてサーバへ再送対象のUDPパケットを送信する手段を備えることが望ましい。
 本発明のクライアントサーバシステムは、本発明のサーバシステムと、本発明のクライアントと、を備えることを特徴とする。
 本発明において、前記認証情報は、クライアント−サーバ間のTCPコネクションごとに異なっており、該コネクションが終了するまでの間においてのみ有効となるように制御されることが望ましい。
 また、前記APは、例えば、複数のユーザが同時に参加するタイプのオンラインゲームとすることができる。
 本発明のゲーム制御方法は、複数のクライアントと、少なくとも1つのゲームサーバとを含んで構成されるゲームシステムを対象としたゲーム制御方法であって、クライアントが操作情報をサーバへ送信する工程、サーバがクライアントから操作情報を受信し、これに基づきゲームを進行させてゲームデータを更新する工程、サーバがゲームデータをクライアントへ送信する工程、クライアントがサーバからゲームデータを受信し、これに基づきユーザにゲーム情報を出力する工程と、を備えており、クライアントからの操作情報の送信(サーバにおける操作情報の受信)は、データが届いたかどうかを送信側が受信側に確認しないプロトコルに基づいて行い、サーバからのゲームデータの送信(クライアントにおけるゲームデータの受信)は、データが届いたかどうかを送信側及び受信側で相互に確認するプロトコルに基づいて行うことを特徴とする。
 また本発明のゲーム制御方法は、複数のクライアントと、少なくとも1つのゲームサーバとを含んで構成されるゲームシステムを対象としたゲーム制御方法であって、クライアントが操作情報をサーバへ送信する工程、サーバがクライアントから操作情報を受信し、これに基づきゲームを進行させてゲームデータを更新する工程、サーバがゲームデータをクライアントへ送信する工程、クライアントがサーバからゲームデータを受信し、これに基づきユーザにゲーム情報を出力する工程と、を備えており、クライアントからの操作情報の送信(サーバにおける操作情報の受信)はUDP(User Datagram Protocol)に基づいて行い、サーバからのゲームデータの送信(クライアントにおけるゲームデータの受信)はTCP(Transmission Control Protocol)に基づいて行うことを特徴とする。
 本発明のプログラムは、本発明のゲーム制御方法の工程をコンピュータ上で実行させることを特徴とする。本発明のプログラムは、CD−ROM、磁気ディスク、半導体メモリなどの各種の記録媒体を通じてコンピュータにインストールまたはロードすることができる。
 なお、本明細書において、1つの機能が2つ以上の物理的手段により実現されても、2つ以上の機能が1つの物理的手段により実現されても良い。
 本発明によれば、OS依存性やシステム構築の負担を増やすことなく、多人数が同時に接続した状態においてもリアルタイム性を確保しつつ安定してゲーム処理等を実行することができる新たな枠組みを提供することができる。
 (システム構成)
 以下に本発明の実施の形態について図面を用いて説明する。図1は、本発明を利用したシステムの全体構成をあらわすブロック図である。
 図1に示すように、全体システム1は、サーバシステム10と、複数のクライアント20とを含んでおり、それぞれ、インターネット等の通信ネットワークを介して互いに通信可能に構成されている。
 本発明において、全体システム1上でどのようなアプリケーションプログラムを実行するかは設計に応じて定めることができるが、以下、本実施形態ではゲームプログラム(特にMMOゲームプログラム)を対象とした場合を例として説明を行う。
 サーバシステム10は、相互に通信可能に構成された、ログインサーバ11、ゲームサーバ12、管理データベース13等を含んで構成される。ただし、ログインサーバ11、ゲームサーバ12、管理データベース13は、機能的に区分したものであり、物理的には同一の情報処理装置上に実現されていてもよい。
 ログインサーバ11は、制御手段(CPU)、入出力手段、記憶手段等を備えた一般的な構成を備える情報処理装置において、例えばWebサーバプログラム(Apache httpdや、CERN httpdなど)を実行することにより実現することができる。
 ログインサーバ11は、クライアント20からの要求に基づき、管理データベース13を参照してユーザ認証を行い、認証が成立した場合にセッションIDを発行し、これをクライアント20へ送信する機能を備える。
 ゲームサーバ12は、制御手段(CPU)、入出力手段、記憶手段等を備えた一般的な構成を備える情報処理装置によって構成することができる。
 ゲームサーバ12には、ゲームサーバプログラムが実装されており、これを実行することにより、サーバ側通信制御機能、サーバ側ゲーム制御機能等を実現することができる。ゲームサーバプログラムは、CD−ROM、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又はインターネット等を介して、ゲームサーバ12にインストールまたはロードすることができる。
 サーバ側通信制御機能は、例えば、クライアントとの間でTCPコネクションを確立する機能、クライアントに対しTCPコネクションを介してゲームデータ(一部又は全部)を送信する機能、クライアントからUDP(User Datagram Protocol)に基づいて操作情報を受信する機能等を含む。
 サーバ側ゲーム制御機能は、例えば、クライアントから受信した操作情報に基づきゲームを進行させる機能、ゲーム進行に応じてゲームデータを管理・更新する機能等を含む。
 ここで、サーバ側ゲーム制御機能の具体的内容、例えばゲームの進行方法やゲームデータの内容は、設計に応じて定めることができる。例えば、いわゆる3次元タイプのロールプレイングゲームの場合、ゲームサーバ内に仮想空間を形成し、この空間にゲームのオブジェクトを配置するようにプログラムを構成する。そして、ゲームルールに従ってオブジェクトの動きを制御し、また、ユーザから受け付ける操作情報に従ってユーザが登録したオブジェクト(キャラクタ)を制御して、ゲームデータ(仮想空間内のオブジェクト等のデータ、ゲーム進行状態を示すデータ、ユーザが登録したキャラクタのパラメータ情報等)を更新するようにプログラムを構成する。このようなプログラムは、従来技術を用いて構成することができる。
 管理データベース13は、制御手段(CPU)、入出力手段、記憶手段等を備えた一般的な構成を備える情報処理装置において、リレーショナルデータベース等の従来のデータベース技術を用いて実現することができる。
 管理データベース13は、ユーザIDやパスワード、その他のユーザ情報などを管理するとともに、ログインサーバ11が発行したセッションIDを管理する機能を備える。ユーザ情報は、ユーザが登録したキャラクタのパラメータ情報など、ゲームデータの一部を含んでいてもよい。
 なお、ユーザIDの発行機能、パスワードやユーザ情報の登録機能等については、ログインサーバ11等において、又は専用のサーバを設けて、従来システムと同様のプログラムを実行することにより、実現することができる。
 クライアント20は、制御手段(CPU)、入出力手段、記憶手段等を備えた一般的な構成の情報処理装置、例えば通常のパソコンやゲーム装置によって構成することができる。入力手段として、通常のキーボードやマウス等のほか、例えば画像情報や音声情報を入力するための手段、すなわちデジタルカメラ、ビデオカメラ、マイク等を備えていてもよい。
 クライアント20には、クライアントプログラムが実装されており、これを実行することにより、ログイン機能、クライアント側通信制御機能、クライアント側ゲーム制御機能等を実現することができる。クライアントプログラムは、CD−ROM、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又はインターネット等を介して、クライアント20にインストールまたはロードすることができる。
 ログイン機能は、例えば、ユーザからの入力に基づき、ログインサーバ11に対してセッションIDの発行を要求し、これを取得する機能等を含む。
 クライアント側通信制御機能は、例えば、サーバとの間でTCPコネクションを確立する機能、サーバからTCPに基づいてゲームデータを受信する機能、サーバに対してUDPに基づいて操作情報を送信する機能等を含む。
 クライアント側ゲーム制御機能は、例えば、ユーザから操作情報を受け付ける機能、ユーザに対し、サーバから受信したゲームデータに基づきゲーム情報を出力する機能等を含む。
 ここで、クライアント側ゲーム制御機能の具体的内容、例えばユーザからどのような操作情報を受け付けるか、ユーザに対しどのようなゲーム情報を出力するかは、設計に応じて定めることができる。例えば、いわゆる3次元タイプのロールプレイングゲームの場合、仮想的な視点から見える仮想空間の様子をゲーム画面として表示するようにプログラムを構成する。また、ユーザが登録したオブジェクト(キャラクタ)に、移動、会話、戦闘、売買などの所定のアクションを行わせるコマンドや、ゲーム進行に関する各種コマンド等を受け付けるようにプログラムを構成する。このようなプログラムは、従来技術を用いて構成することができる。
 (ゲームの開始手順)
 以下に、ゲームを開始する場合の手順について、図2を参照して説明する。なお、各工程は処理内容に矛盾を生じない範囲で任意に順番を変更して、又は並列に実行することができる。
 まず、クライアント20は、ユーザからの入力に基づき、例えばhttp(HyperText Transfer Protocol)に従って、ユーザID等とともにセッションIDの発行要求をログインサーバ11へ出力する(S100)。
 ログインサーバ11は、クライアント20からセッションIDの発行要求を受け付けた場合、ユーザ認証処理を実行する(S101)。ユーザ認証処理は、例えば正規ユーザに割り当てられているユーザID及び該ユーザが選択したパスワード等を記憶しておき、ユーザが入力した情報と前記記憶する情報とを照合するなど、従来の方法により行うことができる。
 ログインサーバ11は、認証不成立の場合、その旨のメッセージ等をクライアント20へ出力する。一方、認証成立の場合、セッションIDの発行処理を実行する(S102)。
 セッションIDは、ゲームサーバ12において正規なアクセスであるかどうか等を判断する際に用いられるIDであり、例えばユーザIDと、セッションIDの発行処理ごとにランダムに生成した数列等とを組み合わせて、構成することができる。このように構成した場合、同一のユーザであっても、ログインサーバ11にセッションIDの発行を要求する都度、異なるセッションIDが発行されることになる。
 ログインサーバ11は、発行したセッションIDをクライアント20へ送信するとともに(S103)、該セッションIDを管理データベース13に有効なセッションIDとして登録する(S104)。
 なお、ログインサーバ11は、ゲームサーバのIPアドレス及び通信に用いるポート番号を併せてクライアント20へ送信するように構成してもよい。このように構成した場合、ゲームサーバを実現する情報処理装置を変更した場合等においてもユーザは特にその変更を意識することなくゲームサーバにアクセスすることが可能となり、柔軟なゲームシステムを構築することができる。
 クライアント20は、セッションIDを受信した場合、ゲームサーバ12へTCPコネクションの確立を試みる(S105)。
 TCPコネクションの確立(S106)は、TCPに基づく通常の方法、例えば以下のようなスリーウェイハンドシェークと呼ばれる手順で行われる。まず、クライアント20は、パッシブオープン状態にあるゲームサーバ12に対して、SYNフラグの設定されたTCPパケットを送信する。これを受けて、ゲームサーバ12は、クライアント20にポート番号を割り当てるとともにTCPソケットを作成し、ACKフラグ及びSYNフラグの設定されたTCPパケットに前記割り当てたポート番号を挿入してクライアント20へ送信する。これを受けて、クライアント20は、ゲームサーバ12にポート番号を割り当てるとともにTCPソケットを作成し、ACKフラグの設定されたTCPパケットに前記割り当てたポート番号を挿入してゲームサーバ12へ送信する。かかる手順により、TCPコネクションが確立する。
 クライアント20は、TCPコネクションの確立後、TCPに基づいてセッションIDをゲームサーバ12へ送信する(S107)。
 ゲームサーバ12は、クライアント20からTCPに基づいてセッションIDを受信した場合、クライアント20からのアクセスが正規であるかどうか(正規の手順を経て行われたアクセスであるかどうか)の確認処理を実行する(S108)。
 具体的には、管理データベース13を参照して(又は、ログインサーバ11から)現在有効なセッションIDを取得し、前記受信したセッションIDが現在有効であるかどうかをチェックする。
 ゲームサーバ12は、確認処理の結果に応じてメッセージ等をクライアント20へ出力する(S109)。また、セッションIDが有効である場合、確立したTCPコネクションの情報(クライアントのIPアドレスやポート番号など)とともに該セッションIDをクライアントリストに登録する(S110)。これにより、クライアントリストを参照することで、ゲームに対して参加状態となっているクライアントを知ることができる。
 (ゲームの実行手順)
 以下に、ゲームを実行する場合の手順について、図3、図4を参照して説明する。
 まず前提として、ゲームサーバ12と各クライアント20との間に、ゲーム開始手順に従ってTCPコネクションが確立しているものとする。また、ゲームサーバ12において、サーバ側通信制御機能により、UDPパケット受信用にポートが割り当てられ(以下、「UDPポート」と呼ぶ。)、該UDPポートに対応してデータを読み出すためのUDPソケットが作成されているものとする(図4(a)参照)。なお、UDPポートは原則として1つあればよいが、設計に応じて複数設ける構成としてもよい。
 ゲームの実行は、上記前提のもと、以下の一連の工程(S200〜S210)を原則としてサイクリックに実行することにより行われる。なお、各工程は処理内容に矛盾を生じない範囲で任意に順番を変更して、又は並列に実行することができる。
 ゲームサーバ12は、クライアントリストに登録されているクライアント20に対し、該クライアントとの間に確立されているTCPコネクションを利用して、TCPに基づいてゲームデータを送信する(S200)。図4(b)において符号Tはゲームデータを含むTCPパケットを示している。
 ここで、ゲームデータのうちどのデータを送信するかは設計に応じて定めることができるが、送信するデータ量を少なくするために、2回目以降の送信では前回との差分データのみを送信するように構成することが望ましい。
 クライアント20は、ゲームサーバ12からTCPに基づいてゲームデータを受信し、TCPに基づく応答確認等をゲームサーバ20へ返信する(S201)。また、ユーザに対し、前記受信したゲームデータに基づいてゲーム情報を出力する(S202)。また、ユーザから操作情報を受け付ける(S203)。
 クライアント20は、ユーザから受け付けた操作情報、セッションID、シーケンス番号等をデータとして含み、ゲームサーバ12のUDPポートを送信先とするUDPパケットを作成し、これをゲームサーバ12へUDPに基づいて送信する(S204)。図4(b)において符号Uは、かかる操作情報等を含むUDPパケットを示している。
 ここで、シーケンス番号は、UDPパケットの送信順序(受信順序)を示す番号であり、例えば前回送信したUDPパケットのシーケンス番号に予め定めた所定数を加算(又は減算)して生成することができる(以下では1を加算する場合を例として説明する)。
 ゲームサーバ12は、クライアント20からUDPに基づいて(すなわちUDPポートを介して)UDPパケットを受信し、これを読み出す(S205)。
 そして、前記受信したUDPパケットの正当性チェック処理を行う(S206)。UDPによる通信はコネクションに基づく正当性が保証されないため、パケットごとに、その正当性(正規の手順を経て送信されたパケットであるかどうか)をチェックすることが望ましいからである。
 具体的には、受信したUDPパケットに含まれるセッションIDがクライアントリストに登録されている場合、受信したUDPパケットが正当であると判断する。このとき、クライアントリストにはセッションIDとともにTCPコネクションの情報も登録されているため、ゲームサーバ12は、セッションIDに対応するTCPコネクションの情報を参照することにより、UDPパケットがどのクライアント20から送信されたものであるかを識別することができる。一方、セッションIDがクライアントリストに登録されていない場合、受信したUDPパケットは正当でないと判断して、これを破棄する。
 ここで、単純には、セッションIDの代わりにユーザIDを用いてパケットの正当性をチェックする構成も考えられる。しかし、かかる構成の場合、ユーザIDがいったん漏洩してしまうと、成りすまし等のリスクを回避するためにはユーザIDを変更しなければならなくなり、このような変更は、システム側、ユーザ側の双方に煩雑な作業を強いることになる。これに対し、本実施形態のように、セッションIDを用いてパケットの正当性をチェックする構成の場合、セッションIDは1回の接続(TCPコネクションの確立から終了までの間)ごとに異なり、かつその1回の接続においてのみ有効であるため、仮にセッションIDが漏洩したとしても、次回の接続以降にそのセッションIDを用いて成りすまし等を行うことは不可能となり、IDの漏洩に対して頑強なシステムを構築することができる。
 ゲームサーバ12は、UDPパケットが正当であると判断した場合、次に、UDPパケットが正しい順序のパケットであるかどうかをチェックする(S207)。UDPによる通信はTCPのように通信の信頼性が確保されていないため、アプリケーション側においてデータ欠落等に対応することが望ましいからである。
 具体的には、式(今回受信したUDPパケット(以下、「直近受信UDPパケット」と呼ぶ。)のシーケンス番号)=(前回受信した同じセッションIDを含むUDPパケットのシーケンス番号)+1が成立するかどうかに基づき、正しい順序であるか否かを判断する。
 ゲームサーバ12は、前記式が成立しない場合、正しい順序でないと判断する。そして、所定期間経過しても正しい順序のUDPパケットが到着しない場合、クライアントリストを参照して直近受信UDPパケットのセッションIDに対応するクライアント20を選択し、未到着のUDPパケット(正しい順序のシーケンス番号を含むUDPパケット)の再送指示を、前記選択したクライアント20へTCPに基づいて送信する。
 一方、ゲームサーバ12は、前記式が成立する場合、正しい順序であると判断する。そして、クライアントリストを参照して直近受信UDPパケットのセッションIDに対応するクライアント20を選択し、UDPパケットを正しく受信できたことを示す確認情報(直近受信UDPパケットのシーケンス番号など)を、前記選択したクライアント20へTCPに基づいて送信する(S208)。
 また、ゲームサーバ12は、直近受信UDPパケットに含まれる操作情報に基づいてゲームを進行させ、記憶手段に記憶するゲームデータをゲーム進行に応じて更新する(S209)。
 クライアント20は、ゲームサーバ12からTCPに基づいてUDPパケットの再送指示や確認情報を受信し、TCPに基づく応答確認等をゲームサーバ20へ返信する(S210)。また、再送指示に対しては、対応するUDPパケットをゲームサーバ12へUDPに基づいて送信する。
 なお、UDPパケットに含まれる操作情報が、ゲームをいったん中止する(ゲームサーバとの接続をいったん中止する)ことを指示するものである場合、ゲームサーバ12は、ログアウト処理を実行する。
 具体的には、ゲームサーバ12は、クライアントリストから該当するクライアントの情報を削除する。また、管理データベース13を参照して該当するセッションIDを削除するとともに、必要に応じて管理データベース13が記憶するユーザ情報(ユーザが登録したキャラクタのパラメータ情報など)を更新する。
 また、該当するクライアント20及びゲームサーバ12は、TCPに基づく通常の方法により、両者の間に確立しているTCPコネクションを終了する。
 このように、本実施形態では、ゲームの実行中、クライアントからゲームサーバへ操作情報を送信する場合、TCPコネクションを介さずに、コネクション型接続ではないUDPに基づいて送信するように構成している。
 かかる構成のもとでは、ゲームサーバにおいて、各コネクションに対応させてスレッドを作成したり、各コネクションをポーリングにより監視する必要が無くなるため、クライアント数が増加した場合でもスレッドの切り替えやポーリングによるオーバヘッドが生じず、サーバ側の負担を大きく抑制することができる。その結果、MMOゲームのような多人数が同時に参加するタイプのゲームであっても、リアルタイム性やパフォーマンスを低下させることなく、安定してゲームを実行することが可能となる。
 また、もともとUDPパケットはTCPパケットよりもデータサイズが小さいため、トラフィック量の減少、伝送速度の向上という効果を得ることができ、かかる点からもリアルタイム性を向上させることができる。
 また、コネクション型接続ではないPeer-to-Peerタイプのシステム構成と比較した場合、Peer-to-Peerタイプのシステム構成では、NAT(Network Address Translation)やIPマスカレード技術を利用してプライベートIPアドレスを使用している場合、クライアントは自己宛てのパケットを受信することができない(又は非常に複雑な環境設定が必要となる)という問題が生ずるが、本実施形態では、ゲームサーバからクライアントへゲームデータを送信する場合には、TCPコネクションを介して送信するように構成しているため、上記のような問題は生じない。
 更に、本実施形態の構成は、TCP、UDPという一般的なプロトコルを利用する構成となっているため、OSレベルにより提供される機能を特に拡張する必要はなく、一般的なOSのもとで一般的なプログラム言語を用いてシステムを構築することができる。
 (その他)
 本発明は、上記実施形態に限定されることなく種々に変形して適用することが可能である。
 例えば、サーバシステム10内に複数のゲームサーバを設け、各ゲームサーバにおいてゲーム制御機能を並列に又は分担して実現する構成としてもよい。この場合、サーバシステム10内にNAT(IPマスカレード機能)を設け、一つのグローバルIPアドレスで複数のゲームサーバとの接続を管理できるように構成してもよい。
 いわゆる3次元タイプのロールプレイングゲームにおいて複数のゲームサーバを設ける場合、各ゲームサーバがそれぞれの仮想世界を並列に管理する(ゲーム進行を制御する)構成や、各ゲームサーバが仮想空間内の一部の領域(国、地域、町、店など)を分担して管理する構成や、又はこれらを組み合わせた構成とすることが考えられる。
 上記のような複数のゲームサーバを設ける構成では、ユーザが、複数のゲームサーバを移動しながら(クライアントとの接続を切り替えながら)ゲームに参加できるように、以下のような構成することが望ましい。
 すなわち、ゲームサーバ12Aは、クライアント20から送信されるUDPパケットに、別のゲームサーバ12Bが管理する仮想世界又は領域への移動を指示する操作情報が含まれている場合、TCPコネクションを介して、該クライアント20にゲームサーバ12BのIPアドレス及びポート番号を送信するとともに、ログアウト処理を実行する。ただし、ゲームサーバ12BのIPアドレス等が固定されている場合は、その都度送信する必要はなく、予めクライアント20において記憶しておけばよい。
 次に、クライアント20及びゲームサーバ12Aは、TCPに基づく通常の方法により、両者の間に確立しているTCPコネクションを終了する。ただし、必要に応じて復帰が迅速に行えるように維持したままとしてもよい。
 次に、クライアント20は、ゲームサーバ12Bとの間で、ゲーム開始手順に従って新たにTCPコネクションを確立し、ゲーム実行手順に従ってゲームを引き続き実行する。ただし、ゲームサーバ12Bにおいて、管理データベース13を参照する代わりに、ゲームサーバ12Aから直接クライアント20のセッションIDを取得し、アクセスが正規であるかどうかの確認処理やパケットの正当性チェック処理に用いるように構成してもよい。
 なお、上記実施形態では、ログインサーバ11が発行したセッションIDをパケットの認証情報として用いているが、必ずしもこのような構成に限られず、例えば、ゲームサーバ12においてアクセスが正規であると判断された場合に改めてセッションIDを発行し、これをパケットの認証情報として用いる構成としてもよい。この場合、ゲームサーバ12がユーザ認証についても行う構成とすれば、ログインサーバ11を省略することも可能である。
 また、上記実施形態では、ゲームサーバ12において常にUDPパケットの正当性チェック処理や順序のチェック処理を行う構成としているが、これらの処理を行わない構成、又はUDPパケットに含まれる情報の種類によってチェックを行うかどうかを切り替える構成など、種々の態様を考えることができる。なお、UDPパケットの受信時にクライアントリストを参照しての正当性チェック処理を行わない場合は、例えばUDPパケットに含まれるセッションIDやユーザID、送信元のIPアドレスなどに基づいて直接的に、受信したUDPパケットがどのクライアント20から送信されたものであるかを識別する構成としてもよい。
 また、上記実施形態では、クライアントからゲームサーバへの送信は常にUDPに基づいて、ゲームサーバからクライアントへの送信は常にTCPに基づいて行う構成としているが、本発明は必ずしもこのような構成に限られるものではなく、例えば、送信するデータの内容に応じてプロトコルを選択して送信する構成としてもよい。例えば、リアルタイム性を要求されないデータや欠落が許されないデータについてはクライアントからゲームサーバへ送信する場合は、UDPではなくTCPに基づいて送信するといった構成を考えることができる。
 リアルタイム性を要求されないデータとは、例えばMMOゲームであれば直ちにゲーム進行に反映させる必要性の低いデータ等であり、具体的には、ゲーム中のイベントをクリアしたかどうかを示すフラグ、ゲームキャラクタの所持するお金やアイテム、ゲームキャラクタのパラメータ・経験値などである。このようなリアルタイム性を要求されないデータについてクライアントからゲームサーバへTCPに基づいて送信する構成を採用する場合、ゲームサーバは、TCPソケットのポーリングをリアルタイムに常時行うのではなく、通常よりも間隔を空けて行うことで(例えば1秒に1回など)、ポーリングに起因するオーバヘッドを軽減することができる。
 また、欠落が許されないデータとしては、ゲーム中のイベントをクリアしたかどうかを示すフラグ、特定のアイテムを入手したことを示すフラグ、課金情報などを考えることができる。このような欠落が許されないデータについてクライアントからゲームサーバへTCPに基づいて送信する構成を採用する場合、裏を返せば、クライアントからゲームサーバへUDPに基づいて送信するデータは欠落が許されるデータ(例えば、チャットにおけるテキストデータ、音声データなど)となることから、ゲームサーバでは、UDPパケットについて欠落が生じている場合でも再送指示を送信する必要はなく、更に言うならば、UDPパケットの順序チェック処理自体を行う必要がなくなるため、かかる点においてもゲームサーバの負担を軽減することができる。
 最後に、上記実施形態では、出願時点において広く使用されているプロトコルであるTCP、UDPを特定して説明したが、本発明はこのようなプロトコルを用いる構成に限定されるものではない。すなわち、上記実施形態において、データが届いたかどうかを送信側が受信側に確認しないプロトコル、2つのノード上のプロセス(アプリケーション)間でベストエフォート型のデータグラム指向の通信を行うプロトコルであれば、UDPに代えて用いることができる。また、データが届いたかどうかを送信側及び受信側で相互に確認するプロトコル、クライアントから送信される要求メッセージに基づいてサーバが応答メッセージを返信する要求/応答型のプロトコル、2つのノード上のプロセス(アプリケーション)間でギャランティ型の信頼性のあるセッション指向の通信を行うプロトコルであれば、TCPに代えて用いることが可能である。
本発明の全体システムの構成を示すブロック図である。 ゲーム開始手順を説明するための流れ図である。 ゲーム実行手順を説明するための流れ図である。 本発明の枠組みを説明するための図である。 従来技術の枠組みを説明するための図である。
符号の説明
1 全体システム
10 サーバシステム
11 ログインサーバ
12 ゲームサーバ
13 管理データベース
20 クライアント

Claims (17)

  1. 複数のクライアントと通信可能に構成された少なくとも1つのサーバを備え、所定のアプリケーション(以下、「AP」と呼ぶ。)を実行可能に構成されたサーバシステムであって、
     前記サーバは、クライアントから前記APに関わるデータを受信する場合は、データが届いたかどうかを送信側が受信側に確認しないプロトコルに基づいて受信し、クライアントへ前記APに関わるデータを送信する場合は、データが届いたかどうかを送信側及び受信側で相互に確認するプロトコルに基づいて送信するように制御する手段を備えることを特徴とする、サーバシステム。
  2. 複数のクライアントと通信可能に構成された少なくとも1つのサーバを備え、所定のアプリケーション(以下、「AP」と呼ぶ。)を実行可能に構成されたサーバシステムであって、
     前記サーバは、クライアントから前記APに関わるデータを受信する場合はUDP(User Datagram Protocol)に基づいて受信し、クライアントへ前記APに関わるデータを送信する場合はTCP(Transmission Control Protocol)に基づいて送信するように制御する手段を備えることを特徴とする、サーバシステム。
  3. 前記サーバが、UDPに基づいてクライアントから受信したパケットが該クライアントの認証情報を含んでいる場合に正当なパケットと判断する手段を備えることを特徴とする請求項1記載のサーバシステム。
  4. 前記認証情報は、クライアント−サーバ間のTCPコネクションごとに異なっており、該コネクションが終了するまでの間においてのみ有効となるように制御されることを特徴とする請求項3記載のサーバシステム。
  5. 前記サーバが、UDPに基づいてクライアントから受信したパケットより検証情報を抽出し、該パケットの順序をチェックして未到着のパケットがあると判断した場合に、対応するクライアントへTCPに基づいて前記未到着のパケットの再送指示を送信する手段を備えることを特徴とする請求項2乃至4のいずれか1項に記載のサーバシステム。
  6. 前記APは、複数のユーザが同時に参加するタイプのオンラインゲームであることを特徴とする請求項2乃至5のいずれか1項に記載のサーバシステム。
  7. 所定のサーバと通信可能に構成され、所定のアプリケーション(以下、「AP」と呼ぶ。)を実行可能に構成されたクライアントであって、
     前記クライアントは、サーバから前記APに関わるデータを受信する場合は、データが届いたかどうかを送信側及び受信側で相互に確認するプロトコルに基づいて受信し、サーバへ前記APに関わるデータを送信する場合は、データが届いたかどうかを送信側が受信側に確認しないプロトコルに基づいて送信するように制御する手段を備えることを特徴とするクライアント。
  8. 所定のサーバと通信可能に構成され、所定のアプリケーション(以下、「AP」と呼ぶ。)を実行可能に構成されたクライアントであって、
     前記クライアントは、サーバから前記APに関わるデータを受信する場合はTCP(Transmission Control Protocol)に基づいて受信し、サーバへ前記APに関わるデータを送信する場合はUDP(User Datagram Protocol)に基づいて送信するように制御する手段を備えることを特徴とするクライアント。
  9. 更に、UDPに基づいてサーバへ送信するパケットに、該クライアントの認証情報を挿入する手段を備えることを特徴とする請求項8記載のクライアント。
  10. 前記認証情報は、クライアント−サーバ間のTCPコネクションごとに異なっており、該コネクションが終了するまでの間においてのみ有効となるように制御されることを特徴とする請求項9記載のクライアント。
  11. 更に、UDPに基づいてサーバへ送信するパケット(以下、「UDPパケット」と呼ぶ。)に、該パケットの順序をチェックするための検証情報を挿入する手段と、
     TCPに基づいてサーバからUDPパケットの再送指示を受信した場合に、UDPに基づいてサーバへ再送対象のUDPパケットを送信する手段と、を備えることを特徴とする請求項8乃至10のいずれか1項に記載のクライアント。
  12. 前記APは、複数のユーザが同時に参加するタイプのオンラインゲームであることを特徴とする、請求項8乃至11のいずれか1項に記載のクライアント。
  13. 請求項1乃至5のいずれか1項に記載のサーバシステムと、請求項7乃至11のいずれか1項に記載のクライアントと、を備えることを特徴とするクライアントサーバシステム。
  14. 前記APは、複数のユーザが同時に参加するタイプのオンラインゲームであることを特徴とする、請求項13記載のクライアントサーバシステム。
  15. 複数のクライアントと、少なくとも1つのゲームサーバとを含んで構成されるゲームシステムを対象としたゲーム制御方法であって、
     クライアントが操作情報をサーバへ送信する工程、サーバがクライアントから操作情報を受信し、これに基づきゲームを進行させてゲームデータを更新する工程、サーバがゲームデータをクライアントへ送信する工程、クライアントがサーバからゲームデータを受信し、これに基づきユーザにゲーム情報を出力する工程と、を備えており、
     クライアントからの操作情報の送信(サーバにおける操作情報の受信)は、データが届いたかどうかを送信側が受信側に確認しないプロトコルに基づいて行い、サーバからのゲームデータの送信(クライアントにおけるゲームデータの受信)は、データが届いたかどうかを送信側及び受信側で相互に確認するプロトコルに基づいて行うことを特徴とするゲーム制御方法。
  16. 複数のクライアントと、少なくとも1つのゲームサーバとを含んで構成されるゲームシステムを対象としたゲーム制御方法であって、
     クライアントが操作情報をサーバへ送信する工程、サーバがクライアントから操作情報を受信し、これに基づきゲームを進行させてゲームデータを更新する工程、サーバがゲームデータをクライアントへ送信する工程、クライアントがサーバからゲームデータを受信し、これに基づきユーザにゲーム情報を出力する工程と、を備えており、
     クライアントからの操作情報の送信(サーバにおける操作情報の受信)はUDP(User Datagram Protocol)に基づいて行い、サーバからのゲームデータの送信(クライアントにおけるゲームデータの受信)はTCP(Transmission Control Protocol)に基づいて行うことを特徴とするゲーム制御方法。
  17. 請求項15又は16記載のゲーム制御方法の工程をコンピュータで実行させるためのプログラム。
JP2003277060A 2002-07-19 2003-07-18 クライアントサーバシステム Pending JP2004049922A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003277060A JP2004049922A (ja) 2002-07-19 2003-07-18 クライアントサーバシステム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2002211579 2002-07-19
JP2003277060A JP2004049922A (ja) 2002-07-19 2003-07-18 クライアントサーバシステム

Publications (2)

Publication Number Publication Date
JP2004049922A true JP2004049922A (ja) 2004-02-19
JP2004049922A5 JP2004049922A5 (ja) 2006-08-31

Family

ID=31949526

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003277060A Pending JP2004049922A (ja) 2002-07-19 2003-07-18 クライアントサーバシステム

Country Status (1)

Country Link
JP (1) JP2004049922A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005278144A (ja) * 2004-02-26 2005-10-06 Ricoh Co Ltd 通信装置、サービス提供方法、サービス提供プログラム及び記録媒体
JP2007275472A (ja) * 2006-04-11 2007-10-25 Nintendo Co Ltd 通信ゲームシステム
JP2010029393A (ja) * 2008-07-28 2010-02-12 Namco Bandai Games Inc プログラム、情報記憶媒体及びゲーム機
JP2021119724A (ja) * 2016-05-27 2021-08-12 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 電子制御ユニット、フレーム生成方法及びプログラム

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005278144A (ja) * 2004-02-26 2005-10-06 Ricoh Co Ltd 通信装置、サービス提供方法、サービス提供プログラム及び記録媒体
JP2007275472A (ja) * 2006-04-11 2007-10-25 Nintendo Co Ltd 通信ゲームシステム
US8545325B2 (en) 2006-04-11 2013-10-01 Nintendo Co., Ltd. Communication game system
US9186586B2 (en) 2006-04-11 2015-11-17 Nintendo Co., Ltd. Communication game system
US9199176B2 (en) 2006-04-11 2015-12-01 Nintendo Co., Ltd. Communication game system
US9227144B2 (en) 2006-04-11 2016-01-05 Nintendo Co., Ltd. Communication game system
JP2010029393A (ja) * 2008-07-28 2010-02-12 Namco Bandai Games Inc プログラム、情報記憶媒体及びゲーム機
US8734246B2 (en) 2008-07-28 2014-05-27 Namco Bandai Games Inc. Information storage medium, synchronization control method, and computer terminal
JP2021119724A (ja) * 2016-05-27 2021-08-12 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 電子制御ユニット、フレーム生成方法及びプログラム
JP7289332B2 (ja) 2016-05-27 2023-06-09 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 電子制御ユニット、フレーム生成方法及びプログラム

Similar Documents

Publication Publication Date Title
US8732236B2 (en) Managing network communications between network nodes and stream transport protocol
TWI491229B (zh) 基於網路位址轉譯類型之順暢的主機遷移
US9450855B2 (en) Message routing mechanism for communication networks
US7543064B2 (en) Multiplayer peer-to-peer connection across firewalls and network address translators using a single local port on the local host
JP4965574B2 (ja) 複数のプロセスにおけるポートの共有
RU2766438C2 (ru) Способы двунаправленного обмена пакетами по узловым путям
JP4828619B2 (ja) ルーティングヒント
KR101561716B1 (ko) 원격 메시지 라우팅 디바이스 및 이의 방법들
WO2018072650A1 (zh) 移动终端与iptv进行交互的实现方法、装置及平台
CN105991640B (zh) 处理http请求的方法及装置
US20080267395A1 (en) Apparatus and method for encrypted communication processing
JP2006050407A (ja) セキュリティポリシー設定方法、プログラム、及び、通信装置
US20080005790A1 (en) Multi-Session Connection Across a Trust Boundary
JP4425257B2 (ja) 通信装置、通信制御方法、及び通信制御プログラム
JP2006185194A (ja) サーバ装置、通信制御方法及びプログラム
JP4183664B2 (ja) 認証方法、サーバ計算機、クライアント計算機、および、プログラム
JP2004049922A (ja) クライアントサーバシステム
JP2008027202A (ja) セッション管理方法、それに用いられるサーバ、セッション管理プログラム、プログラムを記録した記録媒体
US20140156870A1 (en) Communication system and server
JP4073931B2 (ja) 端末、通信装置、通信確立方法および認証方法
US8998719B1 (en) Network-enabled game controller
JP2007509540A (ja) 分散型外部ゲートウェイプロトコル
JP2009153724A (ja) ネットワークゲームシステム
JP5633694B2 (ja) 中継サーバ及び中継通信システム
JP4561626B2 (ja) 情報処理装置およびその制御方法ならびにコンピュータプログラム

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060718

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080324

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080811

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081010

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090525