(57)【要約】【課題】チャット・ソフトにおいて、活発に発言を行うアバターと、そうでないアバターとを視覚的に判別できる表示手段を提供することにある。【解決手段】サーバは発言の新旧・多少に応じて、各アバターに対してスコアをつける。そのスコアを端末に送る。サーバから送信されたスコアを受信した端末は、スコアの高いアバターを、自身の操作者に見えやすいと思われる場所に配置することで、操作者がアバター間の序列を一見で把握できるようにする。【選択図】図２
2009181457.tif 000002
【特許請求の範囲】
【請求項１】
表示モジュールと、演算モジュールと、を含み、通信モジュールを介して接続されたサーバが開設するチャットルームの参加者をアバターで表示するチャット・ソフトウェアであって、
前記サーバが送信するスコアを前記通信モジュールが受信し、
前記通信モジュールが受信した前記スコアに基づき、前記演算モジュールが前記チャットルームの参加者の表示位置を決定し、
前記表示位置に基づき前記表示モジュールが前記アバターを接続された表示装置に出力することを特徴とするチャット・ソフトウェア。
【請求項２】
請求項１記載のチャット・ソフトウェアにおいて、前記サーバから発言主のユーザＩＤ及び発言についてのテキストデータが格納されたチャットデータが送信されると、
前記通信モジュールが前記チャットデータを受信し、
前記通信モジュールが受信した前記チャットデータについて、前記演算モジュールが表示位置情報及び前記チャットデータのユーザＩＤ、及び複数の吹き出し間での優劣を決定する吹き出し優先順位を格納した吹き出しオブジェクトを作成し、
前記吹き出しオブジェクトに格納された前記表示位置情報に基づき、前記表示モジュールは前記吹き出しオブジェクトに関する吹き出しを前記表示装置に出力することを特徴とするチャット・ソフトウェア。
【請求項３】
請求項２記載のチャット・ソフトウェアにおいて、
前記吹き出しオブジェクトが複数存在するときに、前記演算モジュールが吹き出し間の衝突判定を行い、複数の前記吹き出しオブジェクトに格納された前記表示位置情報を更新し、
更新後の前記表示位置情報に従い、前記表示モジュールは前記表示装置に前記複数の吹き出しオブジェクトに関する吹き出しを出力することを特徴とするチャット・ソフトウェア。
【請求項４】
請求項３記載のチャット・ソフトウェアにおいて、
前記吹き出しオブジェクトが複数存在するときに、前記演算モジュールは吹き出し間の衝突判定を行う際、前記吹き出し優先順位で優先度の劣る吹き出しオブジェクトの前記表示位置情報のみを更新することを特徴とするチャット・ソフトウェア。
【請求項５】
請求項２記載のチャット・ソフトウェアにおいて、前記吹き出しオブジェクトの吹き出し優先順位の値が小さいほど前記吹き出し優先順位の優先度が高いことを特徴とするチャット・ソフトウェア。
【請求項６】
請求項５記載のチャット・ソフトウェアにおいて、前記通信モジュールが前記チャットデータを受信した際、前記演算モジュールが既に存在する前記吹き出しオブジェクトの吹き出し優先順位の値を１増分することを特徴とするチャット・ソフトウェア。
【請求項７】
請求項２記載のチャット・ソフトウェアにおいて、前記吹き出しオブジェクトの吹き出し優先順位の値が大きいほど前記吹き出し優先順位の優先度が高いことを特徴とするチャット・ソフトウェア。
【請求項８】
請求項７記載のチャット・ソフトウェアにおいて、前記通信モジュールが前記チャットデータを受信した際、前記演算モジュールが既に存在する前記吹き出しオブジェクトの吹き出し優先順位の値を１減算することを特徴とするチャット・ソフトウェア。
【請求項９】
表示モジュールと、演算モジュールと、を含み、通信モジュールを介して接続されたサーバが開設するチャットルームの参加者をアバターで表示し、前記アバターに対応するアバターオブジェクトで前記アバターの現在表示位置及び目標移動位置を管理するチャット・ソフトウェアであって、
前記サーバが送信するスコアを前記通信モジュールが受信し、
前記通信モジュールが受信した前記スコアに基づき、前記演算モジュールが前記チャットルームの参加者の前記アバターの前記目標移動位置を決定し、前記アバターに対応した前記アバターオブジェクトに決定した前記目標移動位置を記録し、
前記アバターに対応する前記アバターオブジェクトの前記現在表示位置と前記目標移動位置とが相違すると、前記演算モジュールが更新表示位置を導出し、導出した前記更新表示位置を対応した前記アバターオブジェクトの現在表示位置として記録し、
前記更新表示位置に基づき、前記表示モジュールが接続された表示装置に前記アバターを出力することを特徴とするチャット・ソフトウェア。
【請求項１０】
請求項９記載のチャット・ソフトウェアにおいて、前記サーバから発言主のユーザＩＤ及び発言についてのテキストデータが格納されたチャットデータが送信されると、
前記通信モジュールが前記チャットデータを受信し、
前記通信モジュールが受信した前記チャットデータについて、前記演算モジュールが表示位置情報及び前記チャットデータのユーザＩＤ、及び複数の吹き出し間での優劣を決定する吹き出し優先順位を格納した吹き出しオブジェクトを作成し、
前記吹き出しオブジェクトに格納された前記表示位置情報に基づき、前記表示モジュールは前記表示装置に前記吹き出しオブジェクトに関する吹き出しを出力することを特徴とするチャット・ソフトウェア。
【請求項１１】
請求項１０記載のチャット・ソフトウェアにおいて、前記アバターオブジェクトは更にユーザＩＤを記録し、
前記吹き出しオブジェクトの前記ユーザＩＤ及び前記アバターオブジェクトの前記ユーザＩＤを比較し前記吹き出しオブジェクトの前記ユーザＩＤと前記アバターオブジェクトの前記ユーザＩＤが同じ場合には、前記演算モジュールが前記アバターオブジェクトに対応する前記アバターと前記吹き出しオブジェクトに対応する前記吹き出しの間に吹き出し線を描画するための吹き出し線描画データを作成し、
前記演算モジュールは前記吹き出し線描画データを前記表示モジュールに送信し、
前記吹き出し線描画データに基づき前記表示モジュールが接続された表示装置に前記吹き出し線を出力することを特徴とするチャット・ソフトウェア。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は２以上の参加者が同時アクセス可能な集合型チャット・ソフトウェアの表示方法、特に参加者の端末から入力されたテキストデータの表示方法に関する。
【背景技術】
【０００２】
ネットワーク上に設置されたサーバ等を介して複数の端末間で情報（主にテキスト情報）の交換を行うチャット・ソフトウェア（以下チャット・ソフト）は一般的なサービスとして定着している。また、実装形態としては、チャットだけでの実装でなく、ＭＭＯＲＰＧ（大規模多人数ロールプレイングゲーム）や動画サービスといった大規模な集客が望めるサービスに付随する形で実装されることも多い。
【０００３】
チャット・ソフトにおいては、参加者の発言が直感的に理解されるように表示されることが望ましい。テキストのみを表示するチャット・ソフトでは、発言の順にテキストが並べられ、スクロール処理で表示を行う方法が一般的であった。しかし、エンターテイメント性を増すために、吹き出しを用いてアバター（Ａｖａｔａｒ）がテキスト内容を発言するかのように表示する方法も用いられている。
【０００４】
上述した、他のサービスに付随した形でのチャット・ソフトの実装に関しては、その集客力の大きさゆえ、従来のチャット・ソフトでは対応できない新しい問題が生じることも多い。このようなアバターによる直感的な表示方法の先行技術としては以下のようなものがあげられる。
【０００５】
特開２００１−３５１１２５号公報（特許文献１）では、複数のアバターでの発言の優先度の優劣を判定し、優先度の低い発言の吹き出しを移動させる技術が開示されている。この優先度は発言の先後によって決定される。
【０００６】
また、特開２００２−１８３７６２号公報（特許文献２）では、同時に表示されるキャラクタ（本明細書のアバターに相当）を制限することで、キャラクタ及び発言の重なりを防止し、処理速度の低下を防止する技術が開示されている。
【特許文献１】特開２００１−３５１１２５号公報
【特許文献２】特開２００２−１８３７６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、特開２００１−３５１１２５号公報の処理では、チャット・ソフトだけでの実装では問題ないが、チャットの参加人数によって大きな制限を受ける。すなわち、多数のアバター及び複数の吹き出しが存在する場合に、吹き出しの移動箇所を探すことが困難になる。
【０００８】
また、特開２００２−１８３７６２号公報の処理では、表示対象を操作者と特定の関係を有するものに制限していることから、表示対象から外れる他のキャラクタの発言をどのように処理するかという視点が欠けている。
【０００９】
本発明の目的は、活発に発言を行う操作者のアバターと、そうでない操作者のアバターとを視覚的に判別できる表示手段を提供することにある。
【００１０】
本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次の通りである。
【００１２】
本発明の代表的な実施の形態に関わるチャット・ソフトウェアは、表示モジュールと、演算モジュールと、を含み、通信モジュールを介して接続されたサーバが開設するチャットルームの参加者をアバターで表示するものであって、サーバが送信するスコアを通信モジュールが受信し、通信モジュールが受信したスコアに基づき、演算モジュールがチャットルームの参加者の表示位置を決定し、この表示位置に基づき表示モジュールが端末に接続された表示装置にアバターを出力することを特徴とする。
【００１３】
このチャット・ソフトウェアにおいて、サーバから発言主のユーザＩＤ及び発言についてのテキストデータが格納されたチャットデータが送信されると、通信モジュールがチャットデータを受信し、通信モジュールが受信したチャットデータについて、演算モジュールが表示位置情報及びチャットデータのユーザＩＤ、及び複数の吹き出し間での優劣を決定する吹き出し優先順位を格納した吹き出しオブジェクトを作成し、この吹き出しオブジェクトに格納された前記表示位置情報に基づき、表示モジュールは端末に接続された表示装置に吹き出しオブジェクトに関する吹き出しを出力することを特徴としても良い。
【００１４】
このチャット・ソフトウェアにおいて、吹き出しオブジェクトが複数存在するときに、演算モジュールが吹き出し間の衝突判定を行い、複数の吹き出しオブジェクトに格納された表示位置情報を更新し、更新後の表示位置情報に従い、表示モジュールは端末に接続された表示装置に複数の吹き出しオブジェクトに関する吹き出しを出力することを特徴としても良い。
【００１５】
このチャット・ソフトウェアにおいて、吹き出しオブジェクトが複数存在するときに、演算モジュールは吹き出し間の衝突判定を行う際、吹き出し優先順位で優先度の劣る吹き出しオブジェクトの表示位置情報のみを更新することを特徴としても良い。
【００１６】
このチャット・ソフトウェアにおいて、吹き出しオブジェクトの吹き出し優先順位の値が小さいほど吹き出し優先順位の優先度が高いことを特徴としても良い。
【００１７】
このチャット・ソフトウェアにおいて、通信モジュールがチャットデータを受信した際、演算モジュールが既に存在する吹き出しオブジェクトの吹き出し優先順位の値を１増分することを特徴としても良い。
【００１８】
このチャット・ソフトウェアにおいて、吹き出しオブジェクトの吹き出し優先順位の値が大きいほど吹き出し優先順位の優先度が高いことを特徴としても良く、通信モジュールがチャットデータを受信した際、演算モジュールが既に存在する吹き出しオブジェクトの吹き出し優先順位の値を１減算することを特徴としても良い。
【００１９】
本発明の代表的な実施の形態に関わるチャット・ソフトウェアは、表示モジュールと、演算モジュールと、を含み、通信モジュールを介して接続されたサーバが開設するチャットルームの参加者をアバターで表示し、アバターに対応するアバターオブジェクトで前記アバターの現在表示位置及び目標移動位置を管理し、サーバが送信するスコアを通信モジュールが受信し、通信モジュールが受信したスコアに基づき、演算モジュールがチャットルームの参加者のアバターの目標移動位置を決定し、アバターに対応したアバターオブジェクトに決定した目標移動位置を記録し、アバターに対応するアバターオブジェクトの現在表示位置と目標移動位置とが相違すると、演算モジュールが更新表示位置を導出し、導出した更新表示位置を対応したアバターオブジェクトの現在表示位置として記録し、更新表示位置に基づき、表示モジュールが接続された表示装置にアバターを出力することを特徴とする。
【００２０】
このチャット・ソフトウェアにおいて、サーバから発言主のユーザＩＤ及び発言についてのテキストデータが格納されたチャットデータが送信されると、通信モジュールが前記チャットデータを受信し、通信モジュールが受信したチャットデータについて、演算モジュールが表示位置情報及びチャットデータのユーザＩＤ、及び複数の吹き出し間での優劣を決定する吹き出し優先順位を格納した吹き出しオブジェクトを作成し、吹き出しオブジェクトに格納された表示位置情報に基づき、表示モジュールは表示装置に吹き出しオブジェクトに関する吹き出しを出力することを特徴としても良い。
【００２１】
このチャット・ソフトウェアにおいて、アバターオブジェクトは更にユーザＩＤを記録し、吹き出しオブジェクトのユーザＩＤ及びアバターオブジェクトのユーザＩＤを比較し吹き出しオブジェクトのユーザＩＤとアバターオブジェクトのユーザＩＤが同じ場合には、演算モジュールがアバターオブジェクトに対応するアバターと吹き出しオブジェクトに対応する吹き出しの間に吹き出し線を描画するための吹き出し線描画データを作成し、演算モジュールは吹き出し線描画データを表示モジュールに送信し、吹き出し線描画データに基づき表示モジュールが接続された表示装置に吹き出し線を出力することを特徴としても良い。
【発明の効果】
【００２２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。
【００２３】
本発明の代表的な実施の形態に関わるチャット・ソフトの表示方法では、活発に発言するアバターほど、画面の目立つ位置を占めることができ、どの発言者（ここではアバターを操作するユーザ）が現在の話題に興味があるのかを分かりやすく表示することが可能となる。
【００２４】
また、本発明の代表的な実施の形態に関わるチャット・ソフトの表示方法では、アバターが移動するとき、それまでいたアバターとの間でランキング付けのような関係が生まれるため、発言を促しやすくなる効果が期待できる。これにより、チャットの活性化が期待できる。
【発明を実施するための最良の形態】
【００２５】
以下、図面を用いて本発明の実施の形態を説明する。
【００２６】
（第１の実施の形態）
図１はこの実施の形態で想定するハードウェア環境を示した概念図である。
【００２７】
本発明では、サーバ１００と端末２００がネットワーク１を介して接続される。ネットワーク１には端末２００以外に他の端末２０１、２０２も接続され、同一のサーバ１００を利用する。
【００２８】
本発明においては、ネットワーク１は主にインターネットを想定しているが、必ずしもこれにとらわれる必要は無い。携帯電話機向けのサービスのように、特定企業が所有するクローズド環境のネットワークでも、直接的または間接的に端末がサーバ１００に接続できれば適用可能である。
【００２９】
サーバ１００は端末２００ないし２０２に対し、いわゆるチャットルームを提供するためのサーバである。
【００３０】
端末２００ないし２０２は、チャットルームを利用するユーザ（以下操作者）が操作する端末である。これらの端末は、表示装置及び入力装置を有する。これらの端末はネットワーク１に接続され、ネットワーク１経由でサーバ１００が提供するチャットルームを利用することが可能となっている。
【００３１】
なお、サーバ１００及び端末２００ないし２０２のハードウェア構成は本発明に特化したものではないのでここでは省略する。
【００３２】
図２は各端末の構成を表す模式図である。
【００３３】
各端末は大まかに分けると表示モジュール１０、演算モジュール２０、記憶モジュール３０、通信モジュール４０、表示装置５０、入力装置６０より構成される。
【００３４】
本発明における表示モジュール１０及び演算モジュール２０は主に端末のＣＰＵ（中央処理装置）で処理することを前提としたソフトウェアによるモジュールである（チャット・ソフトウェア）。一方、記憶モジュール３０及び通信モジュール４０はハードウェア及びそれを駆動するためのファームウェアからなるモジュールである。そして表示装置５０及び入力装置６０はハードウェアである。
【００３５】
表示モジュール１０は更にアバター着替表示モジュール１１及び台詞枠表示モジュール１２を含んで構成される。他のアプリケーション・ソフトウェアと協働若しくは同時に動作するときには端末のＯＳ（オペレーティングシステム）が画像データの合成を行うが、この際の合成対象となるデータを表示モジュール１０は生成し表示する。
【００３６】
アバター着替表示モジュール１１はアバターの外見などに関するキャラクタデータ（後述するアバターのグラフィックパーツデータ３１）から、表示装置５０で表示するためのグラフィックデータを作成するソフトウェアモジュールである。ここで合成されるアバターは、操作者のものだけでなく、同じチャットルームに入る他のアバターに関するものも含まれる。
【００３７】
台詞枠表示モジュール１２はネットワーク１から送信されたチャットデータに含まれるテキストデータに基づき、台詞枠（いわゆる吹き出し。以降台詞枠と吹き出しは同じ意味）を作成する。また作成した台詞枠の内側に入力されたテキストデータに関わるテキストを表示する。この、台詞枠の作成及びテキストの表示は操作者の者だけでなく、同じチャットルームに入る他のアバターに関するものも含まれる。
【００３８】
さらに、台詞枠表示モジュール１２はチャットデータに含まれるユーザＩＤを参照し、台詞枠と対応するアバターとの間に「吹き出し線」を描画する。アバターが移動する際には、この吹き出し線の再描画も台詞枠表示モジュール１２は行う。
【００３９】
これらのアバター着替表示モジュール１１及び台詞枠表示モジュール１２の出力結果を合成して表示モジュール１０は表示装置５０にチャット画面を出力する。この際の出力が図３である。
【００４０】
図３は、表示装置５０の表示画面５１上にアバター１０００−１ないし１０００−６及び吹き出し２０００−１ないし２０００−３と２０００−ｎｅｗが表示されている。本実施の形態では、アバター１０００−１ないし１０００−６はアバター配置領域１００１上に整列して配置される。
【００４１】
アバター１０００は各端末の操作者の「化身」としてのアバター（Ａｖａｔａｒ）を表すキャラクタである。アバター１０００は顔の形や髪型、服装と言ったキャラクタデータから構成された外観を持っている。各端末の操作者は自身の操作するアバター１０００の外見を逐次変更することも可能である。
【００４２】
アバター配置領域１００１は表示画面５１下端に設けられた、アバター１０００を配置する領域である。図上では１段で表しているが、チャットルームの参加者数が増えたときには２段、３段と増やしても問題は無い。
【００４３】
吹き出し２０００は各端末から送られてくるチャットデータのテキストを表示するための表示領域である。簡略化のために図上ではテキストは記載していないが、本来はこの吹き出しの中にテキストが表示される。この吹き出し２０００は新しいチャットデータが入力されるごとにアバター配置領域１００１近傍に発生する。この新しく発生した吹き出し２０００（以下、最新の吹き出しを吹き出し２０００―ｎｅｗと述べる）と従来存在した吹き出し２０００との衝突判定を行い、これまで存在した吹き出し２０００を表示画面５１上方に移動させることによって、直感的に理解できるチャット画面表示を可能にする。
【００４４】
なお、この図では、吹き出し２０００は四隅が丸められた長方形であるが、楕円形等の形状であっても良い。
【００４５】
表示画面５１のその他の領域には、他のサービスに関する情報が表示されても良い。
【００４６】
図２の説明に戻る。
【００４７】
演算モジュール２０は各種の入力処理、演算処理を行うモジュールである。この演算モジュール２０には、アバター移動モジュール２１及び台詞枠移動モジュール２２が含まれる。
【００４８】
アバター移動モジュール２１は図３における画面下端のどの位置にどのアバターを配置するかを決定するモジュールである。なお、アバターの配置優先順位はサーバ１００から送信されるスコアに基づきアバター移動モジュール２１が決定する。これについては後述する。
【００４９】
また、台詞枠移動モジュール２２はテキストの入力または時間経過に基づき、台詞枠および該台詞枠に表示されたテキストの移動を行うモジュールである。この台詞枠の管理に、台詞枠移動モジュール２２は後述する吹き出しオブジェクト（図１６）を生成し、それに基づき台詞枠の管理を行う。
【００５０】
記憶モジュール３０は表示モジュール１０及び演算モジュール２０が用いるデータを恒常的もしくは一時的に記憶するためのハードウェア及びファームウェアからなるモジュールである。本実施の形態では、アバター着替表示モジュール１１が用いるアバターのグラフィックパーツデータ３１などを記憶する。
【００５１】
通信モジュール４０はネットワーク１を介してサーバ１００とチャットデータの送受信を行うハードウェア及びファームウェアからなるモジュールである。
【００５２】
表示装置５０は、表示モジュール１０及び他のアプリケーション・ソフトウェアの出力する画像データを出力するための出力デバイスである。
【００５３】
入力装置６０は、該端末の操作者がチャットのテキストデータを入力するためのキーボード、音声入力装置等である。
【００５４】
次に、チャットルームを提供するサーバ１００の構成に付いて説明する。
【００５５】
図４はサーバ１００の構成を表す模式図である。
【００５６】
サーバ１００は大きく分けるとチャットサーバソフトウェア７０、記憶モジュール８０、通信モジュール９０より構成される。
【００５７】
チャットサーバソフトウェア７０はチャットルームを管理するサーバ側のソフトウェアである。既述の通り、端末側ではアバターのグラフィックパーツデータ３１などを必要とするが、機能説明にのみ限定するために、ここで述べるチャットサーバソフトウェア７０についてはその配布までは考えていない。そのような機能を実装するかは設計事項である。
【００５８】
チャットサーバソフトウェア７０は及びチャット発言送受信モジュール７１、並べ替えスコア作成及び並べ替え検知モジュール７２を含む形で構成される。
【００５９】
チャット発言送受信モジュール７１は端末２００から送信されるチャットデータの受信、及び並べ替えスコア作成及び並べ替え検知モジュール７２で生成される並べ替えスコアと各端末に配信されるチャットデータを送信するモジュールである。ほかにも認証等のチャットルームへの入室を認めるか判断する認証モジュールや、チャットサーバソフトウェアとしての基本機能であるチャットルームの管理機能（単数もしくは複数のチャットルームの管理）及びチャットルームに入室している操作者からのチャットデータを再送信するモジュールなども含むが、これらは一般的なものであるので説明は省略する。
【００６０】
記憶モジュール８０は端末２００ないし２０２から送信されるチャットデータや、並べ替えスコア作成及び並べ替え検知モジュール７２が作成するスコアの保存を行う。また、記憶モジュール８０には、並べ替えスコア作成及び並べ替え検知モジュール７２がスコアを作成する際に参考にする発言ログ８１もここに保存される。
【００６１】
発言ログ８１はチャット発言送受信モジュール７１によって入出力されるデータのログである。
【００６２】
通信モジュール９０はネットワーク１を介して端末２００ないし２０２とチャットデータの送受信を行うハードウェア及びファームウェアからなるモジュールである。
【００６３】
これらのサーバ１００と端末２００ないし２０２との間でチャットデータをやり取りし、チャット環境を構築する。
【００６４】
次に、サーバ１００が開設しているチャットルームに端末２００で操作者が操作するアバターが入出する際の手順について、図５を用いて説明する。なお、図上では端末２００がチャットルームに参加することを想定している。
【００６５】
図５は端末２００がサーバ１００の開設するチャットルームに参加する際のシーケンスチャートである。
【００６６】
サーバ１００が開設しているチャットルームに参加を希望する端末２００の操作者は、チャット・ソフトを起動し、チャットルームへの入室要求をサーバ１００に対して発行する（ステップＳ３０１）。この際、端末２００で動作するチャット・ソフトのバージョン情報なども送信される。
【００６７】
チャットルームへの入室要求を受け取ったサーバ１００は入室の可否の確認を行う（ステップＳ３０２）。ここでは端末操作者のサービス提供代金の入金確認など一般的なことを行うに過ぎないため、詳細は省略する。
【００６８】
チャットルームの入出を許可した場合、ステップＳ３０１で送信されたチャット・ソフトのバージョン情報からチャット・ソフトが最新のものであるか確認する（ステップＳ３０３）。最新のものでなければ、サーバ１００は最新のプログラム、データを端末２００に送信する（ステップＳ３０４）。これにより、端末間相互のバージョンの相違という問題は解消される。
【００６９】
次に、バージョンの新旧に関わらず、端末２００が入ろうとしているチャットルームの現在の参加者のアバター共通情報をサーバ１００が端末２００に送信する（ステップＳ３０５）。このアバター共通情報は演算モジュール２０によって記憶モジュール３０に記録される。このアバター共通情報を用いて発言者が管理者か否かを演算モジュール２０は判別する。なお、このアバター共通情報は図７のアバター共通情報と同じであるのでその構成は後述する。
【００７０】
サーバ１００の並べ替えスコア作成及び並べ替え検知モジュール７２は、現在有しているアバター間の表示の優劣を表すスコアを端末２００に送信する（ステップＳ３０６）。この送信されたスコアに基づき、端末２００側が表示の際のアバター１０００の並び順を決定する。
【００７１】
さらに、サーバ１００の並べ替えスコア作成及び並べ替え検知モジュール７２は、現在チャットルームに参加しているアバターの外見等を定めるデータを端末２００に送信する（ステップＳ３０７）。これにより、端末２００のアバター着替表示モジュール１１では表示する各アバターの表示用データを作成する。
【００７２】
その後、作成した表示位置及び表示用データを用いて、端末２００はアバター１０００の表示を行う（ステップＳ３０８）。これにより、チャットルームへの入室処理が完了する。並び順などの仔細の表示処理については図１０及びその説明にゆだねる。
【００７３】
なお、ステップＳ３０３のバージョン情報の確認及びステップＳ３０４のプログラム・データの最新版への更新処理はチャットルーム入室時でなくチャット・ソフト起動時に行うことでプログラム及びデータの整合を図ることも可能である。
【００７４】
次に、図６を用いて、チャットルーム入室後の端末２００の操作者の発言がどのように処理されるかを説明する。図６はチャットルームに参加した端末２００の操作者が発言する際のシーケンスチャートである。なお、この図で「各端末」とされているのは、発言主である端末２００も含めたチャットルームの参加端末の意である。
【００７５】
まず端末２００の操作者は、入力装置６０を用いて、チャットデータのテキストを入力し、サーバ１００に対してチャットデータを送信する（ステップＳ３１１）。
【００７６】
なお、図７は、このステップＳ３１１で送信されるチャットデータのデータ構成を表す概念図である。このチャットデータは、発言主たるアバターの属性を表すアバター共通情報と、該チャットデータの属性を表す汎用チャット情報の２つを含む形で構成される。
【００７７】
アバター共通情報はユーザＩＤと発言優先順位を含む。アバター共通情報は、ステップＳ３０５で送られるものと同じである。
【００７８】
ユーザＩＤは発言主であるアバターが持つユーザＩＤを表すパラメータである。また発言優先順位は、アバターが管理者などで他のチャットルームの参加者より優先される場合、それを識別するための特殊な優先順位を指標するパラメータである。
【００７９】
汎用チャット情報はチャットタイプとチャット文字列を含む。なお、チャット文字列は送信されるデータの種別によって変更される可能性がある例示のデータである。
【００８０】
チャットタイプは該チャットデータに含まれるデータの種別を表すパラメータである。
【００８１】
チャット文字列はチャットデータに添付される文字列自身を表すパラメータ（データエンティティ）である。更にサブパラメータとして該データのデータ種別（ｔｙｐｅ）やデータ長（Ｓｉｚｅ）が指定されている。
【００８２】
このような形式で、端末２００からサーバ１００にチャットデータが送信される。
【００８３】
チャットデータを受領したサーバ１００のチャット発言送受信モジュール７１は、チャットルームに参加している各端末に対して受け取ったチャットデータを適宜転送する（ステップＳ３１２）。この際、チャット発言送受信モジュール７１が転送方法としてマルチキャスト通信を行うか、個別に送信するかは設計事項である。また、発言等の内容に関するフィルタで、再送信を行わない決定をしても良い。また、データを削除して、テキストが存在しないチャットデータ、あるいは一部を伏せ字としたチャットデータを送信しても良い。
【００８４】
再送信を行ったチャットデータに関して、チャット発言送受信モジュール７１は発言ログ８１を更新する（ステップＳ３１３）。これにより、発言ログ８１に記載された各アバターの優先順位が変更される可能性が出てくる。並べ替えスコア作成及び並べ替え検知モジュール７２はログ８１の更新の有無を定期的またはソフトウェア割り込みによって検知し、スコアの再集計を行う（ステップＳ３１４）。なお、上述したスコア再集計のタイミングは例示であり、設計事項である。
【００８５】
一方、転送されたチャットデータを受け取った各端末は、発言データの吹き出し２０００−ｎｅｗを作成し、吹き出し２０００−ｎｅｗ中にチャットデータのテキストを表示する（ステップＳ３１５）。これに伴い、既存の各吹き出しは、新しく作成した吹き出し２０００−ｎｅｗに押し出されるように移動する（ステップＳ３１６）。この移動の詳細については後述する。
【００８６】
次に図８を用いて、ステップＳ３１４のスコア集計について詳述する。
【００８７】
図８はスコア集計についてのフローチャートである。
【００８８】
まず、スコア集計の開始のトリガーであるが、ステップＳ３１３の発言ログの更新や、一定周期ごとのタイマ割り込みなどが考えられる。これらのスコア集計の開始条件を満たすと、並べ替えスコア作成及び並べ替え検知モジュール７２は発言ログ８１を取得し、スコア集計の参照対象とする（ステップＳ３２１）。
【００８９】
図９はこのステップＳ３２１で読み出される発言ログ８１のデータ構成を表す概念図である。この発言ログ８１の１項目（タプル）は時間、ユーザＩＤ、データ量の３つの属性から構成されている。
【００９０】
時間は、端末から送信されたチャットデータを再送信した時刻を表す。なお時間は人が使用する標準時間であっても、サーバ上のサーバソフトウェア７０起動後からの相対時間であっても良い。ここでは相対時間で表現している。
【００９１】
ユーザＩＤは発言者たる端末上のチャット・ソフトに記録された操作者のユーザＩＤである。既述の通り、ステップＳ３１１で端末から送信されるチャットデータのユーザＩＤを抽出して、この属性に記録される。
【００９２】
データ量は転送したチャットデータのデータ長を記録する属性である。なお、データ長のみでなく、チャットデータのデータエンティティ自体を保存しても良い。
【００９３】
以下、図８の説明に戻る。
【００９４】
その後、取得した発言ログ８１の中で評価対象項目を特定する（ステップＳ３２２）。本実施の形態で評価対象とは、評価時点から遡って一定の時間内になされた発言ログ８１の各タプルをいう。ここで評価対象からもれたログの項目については以下では評価の対象として扱われない。
【００９５】
評価対象項目が特定した場合には、並べ替えスコア作成及び並べ替え検知モジュール７２は現在チャットルームに入室している各アバターのスコアを計算する（ステップＳ３２３）。ここで、並べ替えスコア作成及び並べ替え検知モジュール７２は図９のユーザＩＤでアバターを特定する。
【００９６】
また、スコア計算に際しては、発言ログ８１のタプルごとの点は受領時点が新しいものほど点が高く、受領時点が古いものほど点を低くする。そして、アバターごとに、各タプルに割り当てられた点を累積し、アバター別のスコアを集計する。なお、各タプルに割り当てる点は設計事項である。
【００９７】
全てのアバターのスコア集計が終わったら（ステップＳ３２４：Ｙｅｓ）、アバター別のスコアを対比し、アバター間の優先順位を決定する（ステップＳ３２５）。集計前のアバター間の優先順位と集計後のアバター間の優先順位に変化があれば、アバターの位置変更が発生するので（ステップＳ３２５：Ｙｅｓ）、並べ替えスコア作成及び並べ替え検知モジュール７２はチャット発言送受信モジュール７１経由でスコアを各端末に送信する（ステップＳ３２６）。
【００９８】
なお、ここではステップＳ３２６で送信されるのは、入室中の全てのアバターのスコアを送信することを想定しているが、アバターの優劣に関する順位のみを送るようにしても良い。
【００９９】
この送信されたスコアを受領することで、各端末はアバター配置領域１００１に配置されるアバターの並び順を変更する。
【０１００】
次に、スコアを受信した端末側でどのような並び替え処理が行われるかを、図を用いて説明する。
【０１０１】
図３にも述べたように、各端末ではチャットルームに入室しているアバターをアバター配置領域１００１に並べて表示する。以下では、図８ステップＳ３２６で送信されるスコアを受領した端末のアバター移動モジュール２１での処理が説明の中心となる。
【０１０２】
図１０はスコア受領後のアバターの並び替えについて表すフローチャートである。
【０１０３】
まず通信モジュール４０経由でスコアを受領すると、アバター移動モジュール２１は現在表示中のアバターの並び順を確認する（ステップＳ３３１）。そして受領したスコアの優先順位との対比を行い、変更点を確認する（ステップＳ３３２）。
【０１０４】
変更点を確認すると、変更対象のアバター及びそれよりも受領したスコア中での優先順位の移動先を確認する（ステップＳ３３３）。ここで、移動先確定処理について説明する。
【０１０５】
図１１及び図１２はアバター配置領域上での配置優先順位の一例を表す図である。図１３は図１２の場合に表示するアバターが奇数のときの優先順位の付け方を表す図である。また、図１４は図１２の場合に配置優先順位が低位のアバターが発言した際のアバターの再配置の一例を表す図である。
【０１０６】
図１１の様に、左端（又は右端）の配置優先順位が高く、アバターの優先順位の高いものから直線的に並んでいるだけであれば、並び順について、特に考慮する必要は無い。
【０１０７】
しかし、図１２や図１３のようにアバター配置領域１００１中心に配置優先順位を高く設定した場合には必ずしも単純ではない。本図では、左右に関わらず配置優先第１位は配置優先第２位以下より優先順位が高く、また同一の配置優先順位であれば右のほうが高いものとする。
【０１０８】
このような場合、以下の問題が生じる。他のアバターの優先順位が上がることで右側配置優先第３位から左側配置優先第３位に変化することが考えられる。これをそのまま適用すると、画面の右端から左端にアバターを移動することが生じ、操作者の直感的な理解を妨げることと成る。
【０１０９】
そこで、一度右側、あるいは左側に配置されると、スコアの優先順位に関係なく、左右いずれかの判定しか行わないことで、操作者の直感理解を容易ならしめることを確保できるようにする。
【０１１０】
なお、左側優先第１位と右側優先第１位が隣接しているため効果としては限定的であるが、下位の配置優先順位から上位の配置優先順位に移動させる際にも上述の左右いずれかの配置優先順位のみで判定することも可能である。また下位から上位の配置優先順位の変更に際しては左右の判断を行わないことで、特定のアバターが左右いずれかに固定することを防ぐことも可能である。
【０１１１】
このように、サーバが作成するスコアの優先順位と、端末の表示におけるアバターの配置優先順位を切り離すことで、より自由度の高いチャット・ソフトの作成が可能となる。
【０１１２】
図１０の説明に戻る。
【０１１３】
上述のように各アバターの配置優先順位が決定すれば、アバター移動モジュール２１はアバター着替表示モジュール１１に対して、各アバターの配置優先順位を送信する。アバター着替表示モジュール１１はステップＳ３３３で決めた配置優先順位にアバターを再表示する（ステップＳ３３５）。合わせて、アバター移動モジュール２１はアバターの位置の変更によって生じる吹き出しとの対応関係に基づき吹き出し線（図３参照）の描画データを作成することで、そのアバターに対応した既に表示済みの吹き出しの吹き出し線の位置の付け替えを行う。この作成した吹き出し線の描画データをアバター着替表示モジュール１１に送信し、アバター着替表示モジュール１１は吹き出し線を描画する（ステップＳ３３６）。
【０１１４】
なお、ステップＳ３３５の再表示に際しては、アバターを新たな配置箇所に移動するようにアニメーションさせて表示させる様にしても良い。またこのときステップＳ３３５の吹き出し線もアバターと同様に移動させても良い。
【０１１５】
以上のように、スコア受領後にアバターの配置を変更することで、より優先順位の高いアバターを、画面のより目立つ位置に表示することが可能となる。本実施の形態では、アバターの優先順位は発言の新旧でスコア付けされているので、より積極的に発言を繰り返す操作者のアバターがアバター配置領域１００１の目立つ位置（図１１では左端、図１２ないし図１４では中心）に配置されることとなる。これにより、活発な発言を行うアバターと発言を行わないアバターを、画面上で簡単に区別することが可能となる。
【０１１６】
なお、一定のアバター数以上は表示しないこと、一定のスコアをあげていないアバターについては表示を省略すること、などの措置も本発明の射程に含める。
【０１１７】
次に図６のステップＳ３１２でサーバ１００から送信されたチャットデータを受けた各端末の動作について説明する。このチャットデータの送信を受けると、新たに吹き出しを作成し（図６ステップＳ３１５）、既存の吹き出しを移動させる処理（図６ステップＳ３１６）が必要である。したがって、それぞれについて分けて説明する。
【０１１８】
図１５は吹き出しを作成する処理を表すフローチャートである。
【０１１９】
まず、チャットデータを端末が受領すると、台詞枠移動モジュール２２は送信された該チャットデータから表示用のエンティティデータを抽出する（ステップＳ３４１）。図７の例では「チャット文字列」をチャットデータから抽出する。合わせて、そのデータの種別（図７ではチャット文字列のｔｙｐｅサブパラメータ）を抽出する。
【０１２０】
その後、台詞枠移動モジュール２２はステップＳ３４１で抽出した表示用のエンティティデータ及びデータ種別から表示に必要な表示領域のサイズを導出し、この表示領域が収まるように吹き出しの大きさを決定する（ステップＳ３４２）。この際、文字データであれば、改行の要否なども合わせて確認する。
【０１２１】
吹き出しの大きさが決定すれば、台詞枠移動モジュール２２はその吹き出しをどこに表示するかを決定する（ステップＳ３４３）。すなわち図７のユーザＩＤにより関係するアバターを探し、そのアバターの表示位置に対応した初期位置を表示箇所として決定する。
【０１２２】
表示位置が特定されれば、表示データ、表示領域及び表示位置のデータを参照して台詞枠移動モジュール２２は吹き出しオブジェクトを作成する（ステップＳ３４４）。ここで吹き出しオブジェクトとは吹き出しを管理するためのソフトウェア的な概念であり、既述の各データ（ユーザＩＤ、表示データ、表示領域及び表示位置のデータ）及びデータの優先順位を表す「吹き出し優先順位」データを内包する。この吹き出しオブジェクト単位で以降の吹き出し間の衝突判定などを行う。
【０１２３】
ここで吹き出し優先順位データは各吹き出しの上書き関係や、衝突判定時の判定の順序を決めるデータである。原則として、新しいものほどこの値が小さく、古いものほどこの値が大きい。なお、吹き出し優先順位データの初期値は０である。
【０１２４】
図１６はＸＭＬ形式で記載した、この作成された吹き出しオブジェクトのデータ構成を表す概念図である。この、吹き出しオブジェクトは、ユーザＩＤ  ｕｉｄ、吹き出し優先順位ｐｒｉｏｒｉｔｙ、吹き出しの高さｈｅｉｇｈｔ、吹き出しの幅ｗｉｄｔｈ、吹き出しの左上端表示位置（Ｘ座標）ｄｉｍｅｎｓｉｏｎ＿ｘ、吹き出しの左上端表示位置（Ｙ座標）ｄｉｍｅｎｓｉｏｎ＿ｙ、吹き出しの速度（Ｘ方向）ｖｅｌｏｃｉｔｙ＿ｘ、吹き出しの速度（Ｙ方向）ｖｅｌｏｃｉｔｙ＿ｙ、チャット文字列ｃｈａｔより構成される。
【０１２５】
ここでユーザＩＤ  ｕｉｄは、発言主となるアバターの操作者のユーザＩＤを格納するためのパラメータである。吹き出しオブジェクト作成後はオブジェクトの消滅までこの値が変化することは無い。
【０１２６】
吹き出し優先順位ｐｒｉｏｒｉｔｙは、吹き出しが作成されたときに０に設定される優先順位を表すパラメータである。本実施の形態では吹き出し優先順位ｐｒｉｏｒｉｔｙは小さい方を優先順位が高いものとして取り扱う。しかし、設計によっては吹き出し優先順位ｐｒｉｏｒｉｔｙの大きいものを優先順位が高いものとして取り扱っても良い。吹き出しオブジェクトが新しく作られるたびに、既に存在する吹き出しオブジェクトの吹き出し優先順位ｐｒｉｏｒｉｔｙは１増分される。
【０１２７】
吹き出しの高さｈｅｉｇｈｔは表示される吹き出しの高さ（Ｙ方向の長さ）を表すパラメータである。また、吹き出しの幅ｗｉｄｔｈは表示される吹き出しの横幅（Ｘ方向の長さ）を表すパラメータである。
【０１２８】
吹き出しの左上端表示位置（Ｘ座標）ｄｉｍｅｎｓｉｏｎ＿ｘ、吹き出しの左上端表示位置（Ｙ座標）ｄｉｍｅｎｓｉｏｎ＿ｙは吹き出しの表示の基準となる、吹き出しの左上の位置を表す座標である。
【０１２９】
吹き出しの速度（Ｘ方向）ｖｅｌｏｃｉｔｙ＿ｘ、吹き出しの速度（Ｙ方向）ｖｅｌｏｃｉｔｙ＿ｙは吹き出しの移動ベクトルを表す指標である。
【０１３０】
チャット文字列ｃｈａｔは吹き出し内に表示する文字列である。
【０１３１】
ここでは既述の吹き出し優先順位データのほか、以降で用いる吹き出しの移動速度（ｖｅｌｏｃｉｔｙ＿ｘ、ｖｅｌｏｃｉｔｙ＿ｙ）は初期値が０で設定される。また吹き出しの高さ及び吹き出しの幅はステップＳ３４２で求めたものが初期値となる。また、吹き出しの左上端表示位置（Ｘ座標）、吹き出しの左上端表示位置（Ｙ座標）はステップＳ３４３で求めた値が初期値となる。チャット文字列はステップＳ３４１で抽出したエンティティデータを初期値とする。また、吹き出しオブジェクトのユーザＩＤは該チャットデータのユーザＩＤをそのまま用いる。
【０１３２】
新しい吹き出しが作成されると、既存の吹き出しの吹き出し優先順位を変更する必要がある。そこで、既存の吹き出しオブジェクトの吹き出し優先順位ｐｒｉｏｒｉｔｙをそれぞれ１ずつ増加させる（ステップＳ３４５）。
【０１３３】
なお、上記では吹き出しオブジェクトの吹き出し優先順位ｐｒｉｏｒｉｔｙが小さいものほど優先順位が高い場合について説明した。しかし、吹き出し優先順位ｐｒｉｏｒｉｔｙの値が大きいものを優先順位が高いとする場合はステップＳ３４５の処理は減算処理になる。
【０１３４】
その後、台詞枠移動モジュール２２は既述の各データ（表示データ、表示領域及び表示位置のデータ）を台詞枠表示モジュール１２に送信する。台詞枠表示モジュール１２はそれを参照して新たな吹き出しを画面上に表示する（ステップＳ３４６）。
【０１３５】
以上により、端末は表示装置５０の表示画面５１上に新たな吹き出し２０００−ｎｅｗを画面に表示する。
【０１３６】
次に吹き出し間の衝突判定及び衝突時の吹き出しの移動について説明する。
【０１３７】
吹き出しの衝突判定は、一定周期あるいは新しい吹き出しが作成されるごとに行われる。
【０１３８】
図１７はこの衝突判定処理を表すフローチャートである。
【０１３９】
台詞枠移動モジュール２２は、衝突判定を行う吹き出しオブジェクトを特定する（ステップＳ３５１）。この際、新たな吹き出し２０００−ｎｅｗは移動の対象としては扱われない。最初、台詞枠移動モジュール２２は吹き出し優先順位データが１のものから衝突判定を行う。
【０１４０】
次に、ステップＳ３５１で特定した吹き出しオブジェクトよりも優先順位データの小さい（＝優先順位の高い）吹き出しオブジェクトを衝突判定の対象として選択する（ステップＳ３５２）。
【０１４１】
ステップＳ３５１で選んだ吹き出しオブジェクトとステップＳ３５２で選んだ吹き出しオブジェクトとの間で衝突が発生したかを判定する（ステップＳ３５３）。以下に、具体的な判定方法について述べる。
【０１４２】
ここではステップＳ３５１で選んだ吹き出しオブジェクトを吹き出しＡ、ステップＳ３５２で選んだ吹き出しオブジェクト吹き出しＢと称呼する。
【０１４３】
既述の通り、吹き出しオブジェクトには左上端のＸ座標、Ｙ座標及び吹き出しの幅（Ｗｉｄｔｈ）と高さ（Ｈｅｉｇｈｔ）が記録されている。以下、オブジェクトＡのＸ座標をＡＸ、Ｙ座標をＡＹ、幅をＡＷ、高さをＡＨとする。また、オブジェクトＢのＸ座標をＢＸ、Ｙ座標をＢＹ、幅をＢＷ、高さをＢＨとする。
【０１４４】
端末のＣＰＵが取り扱う衝突判定としては以下の式を一例としてあげる。
【０１４５】
ＢＸ＋ＢＷ−ＡＸ＞０      …式（１）
ＡＸ＋ＡＷ−ＢＸ＞０      …式（２）
ＢＹ＋ＢＨ−ＡＹ＞０      …式（３）
ＡＹ＋ＡＨ−ＢＹ＞０      …式（４）
これら全ての式を満たすとき２つの吹き出しは重なっている。またいずれか一つでも満たしていないときは、重ならない。
【０１４６】
衝突したと判定したときには（ステップＳ３５３：Ｙｅｓ）、吹き出しＡの移動量を計算する（ステップＳ３５４）。
【０１４７】
吹き出しの移動量を算出する際には、吹き出しの中心点を導出する。
【０１４８】
ＡのＸ座標の中心点：ＡＣＸ＝ＡＸ＋ＡＷ／２      …式（５）
ＢのＸ座標の中心点：ＢＣＸ＝ＢＸ＋ＢＷ／２      …式（６）
ＡＣＸ＞ＢＣＸのとき、Ｘ方向移動ベクトルＶＸをＢＸ＋ＢＷ−ＡＸにする。またＡＣＸ＜ＢＣＸの時はＶＸをＢＸ＋ＡＸ−ＡＷとする。Ｙ方向が重なっているときはＶＹ＝ＡＨ―ＢＹとする。
【０１４９】
図１８は、ステップＳ３５２の理解を図るための概念図である。
【０１５０】
この図では吹き出し優先順位６の吹き出しオブジェクトがステップＳ３５１で選ばれたとする。この場合、ステップＳ３５２からステップＳ３５４までの衝突判定処理までは、計６回行われる。また吹き出し優先順位７以下の吹き出しオブジェクトとの間では衝突判定は行わない。
【０１５１】
図１７の説明に戻る。
【０１５２】
吹き出しＡについて、吹き出しＡよりも優先順位の高い全ての吹き出しオブジェクトに対して衝突判定を行うと（ステップＳ３５５：Ｙｅｓ）、台詞枠移動モジュール２２は判定した全ての移動速度ベクトルを加算する（ステップＳ３５６）。この際、吹き出しＡの吹き出しオブジェクト内の移動速度（ｖｅｌｏｃｉｔｙ＿ｘ、ｖｅｌｏｃｉｔｙ＿ｙ）も加算する。
【０１５３】
これにより、一つの吹き出しオブジェクトの移動速度ベクトルの計算を終了する。
【０１５４】
その後、画面内に含まれる全ての吹き出しに対して同じ計算を行う。全ての吹き出しに対して上記計算が終了したら（ステップＳ３５７：Ｙｅｓ）、全ての吹き出しオブジェクトの移動速度ベクトルから新たな吹き出しオブジェクトの吹き出し配置位置を特定する（ステップＳ３５８）。この際衝突判定の周期が短いほど移動ベクトルの影響を小さくし、周期が長いほど移動ベクトルの影響を大きくするなどの計算方法が考えられる。この具体的な計算方法の選定は設計事項である。
【０１５５】
そして、全てのオブジェクトの新たな配置位置が決定すると、各データ（表示データ、表示領域及び表示位置のデータ）を台詞枠表示モジュール１２に送信する。台詞枠表示モジュール１２はそれを参照して新たな吹き出しを画面上に表示する（ステップＳ３５９）。なお、発言者が退出し、表示すべき吹き出しに関連するアバターが消滅した場合、それに関連する吹き出しを消滅させても良い。
【０１５６】
以上のように衝突判定を周期的に繰り返すことで、アニメーションのようにチャット画面の吹き出しを動かすことが可能となる。
【０１５７】
なお、一度作成された吹き出しオブジェクトは、画面の上端に達する（吹き出しの左上端のＹ座標が０以下になる）か、吹き出しが画面上端からスクロールアウトするか、吹き出しオブジェクト作成から一定時間経過することで台詞枠移動モジュール２２が削除する。
【０１５８】
このような構成により、チャット・ソフトの画面の娯楽性が向上する。
【０１５９】
（第２の実施の形態）
以下、本発明の第２の実施の形態について説明する。
【０１６０】
チャット・ソフトにおいても、サーバ管理者からの管理メッセージを表示したい場合がある。その際、第１の実施の形態では、管理メッセージも通常のユーザの発言のようにスクロールしていくと最終的には画面上方から消失することとなり、好ましくない。
【０１６１】
第２の実施の形態では、管理者発言については優先順位を上げて表示する方法を提供するものである。
【０１６２】
第１の実施の形態の図１５ステップＳ３４５では、必ず吹き出し優先順位を１加算していた。
【０１６３】
これに対し本実施の形態では、ステップＳ３４５の前に吹き出しオブジェクトのユーザＩＤを確認する。この吹き出しオブジェクトのユーザＩＤがチャット・ソフトに事前に設定された管理者のものであれば、１加算せずに０のままとする。そして、台詞枠移動モジュール２２は新たに作成された吹き出しオブジェクトの吹き出し優先順位データを１にする。
【０１６４】
このようにすることで、管理者の発言は絶えず、画面上に表示することが可能となる。
【０１６５】
（第３の実施の形態）
以下、本発明の第３の実施の形態について説明する。
【０１６６】
表示されるアバターを操作者から適宜変更可能であれば、チャット画面の娯楽性はより向上する。
【０１６７】
図１９はこの本発明の第３の実施の形態（アバターの着せ替え時）についてのフローチャートである。
【０１６８】
自身の操作するアバターの着せ替えを要求する操作者の端末はサーバに対して着せ替え要求を送信する（ステップＳ３６１）。ここで送信される着せ替え要求にはアバターの各パーツの識別用データが含まれている。
【０１６９】
着せ替えデータを受信したサーバ１００は受信した着せ替え要求を各端末に配信する（ステップＳ３６２）。
【０１７０】
着せ替え要求を受信した各端末の演算モジュール２０を経由して、アバター着替表示モジュール１１に送られる。ここで着せ替え内容を判断した後、アバター着替表示モジュール１１は、アバターのグラフィックデータパーツ３１からアバターのキャラクタを再構成する（ステップＳ３６３）。
【０１７１】
なお、図５のステップＳ３０４で、最新のデータが含まれていることが保証されているため、伝送路上のエラーの発生を除けば再要求の必要は無い。
【０１７２】
この際構成されたアバターを使って即時に表示装置５０の表示画面５１の表示を更新するか、それとも図１０のステップＳ３３５をまってアバターの更新を行うかは設計事項である。
【０１７３】
このようにすることで操作者は自身のアバターの外観を適宜更新することができ更にチャット・ソフトの娯楽性を向上することが可能になる。
【０１７４】
（第４の実施の形態）
以下、本発明の第４の実施の形態について説明する。
【０１７５】
上記の実施の形態ではアバターの位置の変更に際しては、単に並び順を変えるだけであった。これに対し、本実施の形態においてはアバターの移動に際して、アニメーションで経過時間に応じて移動させることで、より娯楽性を向上させている。
【０１７６】
具体的にはアバター移動モジュール２１によるアバターの管理にもオブジェクトを利用し、逐次変化する状況を管理する方法が挙げられる。
【０１７７】
アバター移動モジュール２１における、アバター管理に用いるオブジェクトのデータ構成について説明する。
【０１７８】
図２０は、本実施の形態のアバター管理に用いるオブジェクト（アバター管理用オブジェクト）のデータ構成をＸＭＬ形式で記載した概念図である。このアバター管理用オブジェクトはサーバ１００から現在動作中のチャット・ソフトで管理対象となっていないユーザＩＤが送信されてきた際、アバター移動モジュール２１が作成し管理を開始する。また、このオブジェクトはサーバ１００から送信されるスコア中に該当するユーザＩＤが存在しなくなった際に削除される。
【０１７９】
ユーザＩＤ  ｕｉｄは該アバターの操作者を識別する為のＩＤである。
【０１８０】
アバター現在位置（Ｘ座標）、アバター現在位置（Ｙ座標）はアバターの現在の位置を表すパラメータである。画面上の表示位置を表すパラメータを格納する。
【０１８１】
アバター目標移動位置（Ｘ座標）、アバター目標移動位置（Ｙ座標）はアバターの移動先の座標を表すパラメータである。
【０１８２】
なお、ここではアバター表示領域１００１が２段以上になっても良い様に、Ｙ座標が加えられているが、アバター表示領域１００１が必ず１段であるならＹ座標は省略しても良い。
【０１８３】
また、本実施の説明ではアバターオブジェクトでアバターの移動速度や加速度を管理していない。しかし、移動速度や加速度を経時的に変化させる場合には、それらを管理するパラメータを追加しても良い。
【０１８４】
次に、このアバターモジュールの管理とアバターの表示について図２１を用いて説明する。この図２１は第４の実施の形態の端末のスコア受領後の並び替えについて表すフローチャートであり、第1の実施の形態に関する図１０に相当するものである。したがって、図１０と同じ動作をするものの説明は簡単にする。
【０１８５】
スコアを受領するとアバター移動モジュール２１は現在表示中のアバターの並び順を確認する（ステップＳ３７１）。そして受領したスコアの優先順位との対比を行い、変更点を確認する（ステップＳ３７２）。これはステップＳ３３１、Ｓ３３２と同様である。
【０１８６】
これにより、新たに受け取ったスコアには記載されていないユーザＩＤに関する既存のオブジェクトや、スコア中に含まれる既存のオブジェクトと関連しないユーザＩＤも顕在化する。したがって、スコア中に含まれなくなったユーザＩＤに関するオブジェクトを削除し、新規のユーザＩＤについてはそれに関するアバターオブジェクトの新設を行う（ステップＳ３７３）。その後各アバターについて、移動先を特定する（ステップＳ３７４）。この際、ステップＳ３７３で新設されたもの以外のオブジェクト（＝既存のオブジェクト）についてはアバターオブジェクトのアバター現在位置（Ｘ座標）、アバター現在位置（Ｙ座標）に移動先の座標等を記載する。一方、ステップＳ３７３で新設されたアバターオブジェクトについては、ここでアバターの初期表示位置をアバター現在位置（Ｘ座標）、アバター現在位置（Ｙ座標）とアバター目標移動位置（Ｘ座標）、アバター目標移動位置（Ｙ座標）の双方に入力する。
【０１８７】
ステップＳ３７４の処理を全てのアバターオブジェクトに対して行う。全てのアバターオブジェクトの移動先の特定が終わったら（ステップＳ３７５：Ｙｅｓ）、次の描画フレームで表示するアバターの位置を特定する（ステップＳ３７６）。この次の描画フレームでの表示位置の特定は、アバター現在位置（Ｘ座標）とアバター目標移動位置（Ｘ座標）の値が異なるときにはアバター目標移動位置（Ｘ座標）に近づくようにアバター現在位置（Ｘ座標）を「加減算」することで行われる。Ｙ座標についても同様である。また、ここでアバター現在位置（Ｘ座標）にどれだけの値を「加減算」するか、「加減算」の値が一定か動的に変化するのかは設計事項である。
【０１８８】
全アバターオブジェクトの表示位置の特定が終わると（ステップＳ３７７：Ｙｅｓ）、アバター移動モジュール２１はアバター現在位置（Ｘ座標）、アバター現在位置（Ｙ座標）をアバター着替表示モジュール１１に送信する。アバター着替表示モジュール１１はこれを受けて、次のフレーム描画時にアバターの表示及び吹き出し線の付け替えを行う（ステップＳ３７８、ステップＳ３７９）。これは図１０のステップＳ３３５及びステップＳ３３６に対応する処理である。
【０１８９】
そして全てのアバターオブジェクトのアバター現在位置（Ｘ座標）とアバター目標移動位置（Ｘ座標）、アバター現在位置（Ｙ座標）とアバター目標移動位置（Ｙ座標）が一致したら（ステップＳ３８０：Ｙｅｓ）、アバターの並び替え処理を終了する。一方、一致していない場合には（ステップＳ３８０：Ｎｏ）、アバターの表示位置の特定及びアバターの表示、吹き出し線の付け替えの処理を一致するまで繰り返す。
【０１９０】
以上のようにすることでアバターの表示位置の変更を動的に行うことができ、チャット・ソフトの娯楽性が向上する。
【０１９１】
なお、図２１の処理が完了するには、ある程度の時間の経過が必要である場合がある。この間に新たなスコアがサーバ１００から送信されてくることも考えられるが、その際には、途中までの処理を中断し、再度ステップＳ３７１から処理を開始すればよい。
【０１９２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能であることは言うまでもない。
【産業上の利用可能性】
【０１９３】
既述の通り、チャット・ソフトでの利用のほか、ＭＭＯＲＰＧ（大規模多人数ロールプレイングゲーム）や動画サービスといった参加者の多いソフトウェアに対しても適用可能である。
【図面の簡単な説明】
【０１９４】
【図１】本発明におけるハードウェア環境を示した概念図である。
【図２】本発明における各端末の構成を表す模式図である。
【図３】本発明における表示画面上のアバターの配置を表す図である。
【図４】サーバの構成を表す模式図である。
【図５】端末がサーバの開設するチャットルームに参加する際のシーケンスチャートである。
【図６】チャットルームに参加した端末の操作者がチャットで発言する際のシーケンスチャートである。
【図７】送信されるチャットデータのデータ構成を表す概念図である。
【図８】サーバのスコア集計についてのフローチャートである。
【図９】発言ログのデータ構成を表す概念図である。
【図１０】第１の実施の形態の端末のスコア受領後の並び替えについて表すフローチャートである。
【図１１】アバター配置領域上での配置優先順位の一例を表す図である。
【図１２】アバター配置領域上での配置優先順位の別の一例を表す図である。
【図１３】図１２の場合に表示するアバターが奇数のときの優先順位の付け方を表す図である。
【図１４】図１２の場合に配置優先順位が低位のアバターが発言した際のアバターの再配置の一例を表す図である。
【図１５】吹き出しを作成する処理を表すフローチャートである。
【図１６】吹き出しオブジェクトのデータ構成を表す概念図である。
【図１７】衝突判定処理を表すフローチャートである。
【図１８】ステップＳ３５２の理解を図るための概念図である。
【図１９】第３の実施の形態（アバターの着せ替え時）についてのフローチャートである。
【図２０】第４の実施の形態のアバター管理用オブジェクトのデータ構成をＸＭＬ形式で記載した概念図である。
【図２１】第４の実施の形態のアバター配置領域上での配置優先順位の並び替えの一例を表す図である。
【符号の説明】
【０１９５】
１…ネットワーク、
１０…表示モジュール、
１１…アバター着替表示モジュール、１２…台詞枠表示モジュール、
２０…演算モジュール、２１…アバター移動モジュール、
２２…台詞枠移動モジュール、３０…記憶モジュール、
３１…アバターのグラフィックパーツデータ、４０…通信モジュール、
５０…表示装置、６０…入力装置、
７０…チャットサーバソフトウェア、７１…チャット発言送受信モジュール、
７２…並べ替えスコア作成及び並べ替え検知モジュール、
８０…記憶モジュール、８１…発言ログ、９０…通信モジュール、
１００…サーバ、２００、２０１、２０２…端末、
１０００−１、２、３、４、５、６…アバター、１００１…アバター表示領域、
２０００−１、２、３、ｎｅｗ…吹き出し。
【図１】
2009181457.tif 000003
【図２】
2009181457.tif 000004
【図３】
2009181457.tif 000005
【図４】
2009181457.tif 000006
【図５】
2009181457.tif 000007
【図６】
2009181457.tif 000008
【図７】
2009181457.tif 000009
【図８】
2009181457.tif 000010
【図９】
2009181457.tif 000011
【図１０】
2009181457.tif 000012
【図１１】
2009181457.tif 000013
【図１２】
2009181457.tif 000014
【図１３】
2009181457.tif 000015
【図１４】
2009181457.tif 000016
【図１５】
2009181457.tif 000017
【図１６】
2009181457.tif 000018
【図１７】
2009181457.tif 000019
【図１８】
2009181457.tif 000020
【図１９】
2009181457.tif 000021
【図２０】
2009181457.tif 000022
【図２１】
2009181457.tif 000023