(57)【特許請求の範囲】
【請求項１】
少なくとも１つの他の同じような玩具と対話するようにされた玩具であって、
プロセッサと、
前記プロセッサに結合されたメモリと、
を備え、前記プロセッサが、
第１の玩具が行うべき行動を表す出力信号を生成する手段と、
少なくとも１つの第２の玩具が受信するための、前記第１の玩具が行動を終える前に前記第２の玩具が行動を起こすようにするためのトリガ信号を、前記第１の玩具が行動している間に生成する手段と、
を備える、
ことを特徴とする玩具。
【請求項２】
前記トリガ信号が、前記玩具が自身の行動を開始した後に、又は前記玩具が自身の行動を終える前に、所定の時間間隔で生成される、
ことを特徴とする請求項１に記載の玩具。
【請求項３】
ユーザが前記所定の時間間隔の目安を入力できるようにする入力部をさらに備える、
ことを特徴とする請求項２に記載の玩具。
【請求項４】
前記所定の時間間隔が、１秒未満、又は１／２秒未満、又は１／４秒未満である、
ことを特徴とする請求項２又は請求項３に記載の玩具。
【請求項５】
前記行動が、音を発すること、光を発すること、及び動きのうちの少なくとも１つである、
ことを特徴とする請求項１から請求項４のいずれかに記載の玩具。
【請求項６】
前記少なくとも１つの他のこのような玩具と無線で通信するようにされた無線通信モジュールをさらに備える、
ことを特徴とする請求項１から請求項５のいずれかに記載の玩具。
【請求項７】
前記無線通信モジュールが、トリガ信号、対話に関する情報、及び玩具に関する情報のうちの少なくとも１つを送信し、前記対話に関する情報が、玩具が出力する行動、行動の持続時間、及び少なくとも１つの他の玩具がとるべき行動のうちの少なくとも１つを含む、
ことを特徴とする請求項６に記載の玩具。
【請求項８】
前記メモリが、前記対話に関する情報を記憶するようになっている、
ことを特徴とする請求項１から請求項７のいずれかに記載の玩具。
【請求項９】
前記プロセッサは、前記対話を疑似ランダムに決定するようになっている、
ことを特徴とする請求項１から請求項８のいずれかに記載の玩具。
【請求項１０】
前記対話が、会話、音声対話、対人対話、教育的対話、演奏、及びゲームプレイのうちの少なくとも１つである、
ことを特徴とする請求項１から請求項９のいずれかに記載の玩具。
【請求項１１】
前記トリガ信号を使用してグループの行動を同期させる、
ことを特徴とする請求項１０に記載の玩具。
【請求項１２】
別のこのような玩具からトリガ信号を受け取る手段をさらに備え、前記トリガ信号を使用して行動を開始する時点を決定する、
ことを特徴とする請求項１から請求項１１のいずれかに記載の玩具。
【請求項１３】
前記玩具が、人形、ゲームボード、乗り物、及び軍事資産のうちの１つである、
ことを特徴とする請求項１から請求項１２のいずれかに記載の玩具。
【請求項１４】
少なくとも１つの他の同じような玩具と対話するようにされた玩具で使用するためのコンピュータ可読メモリであって、
第１の玩具が行うべき行動を表す出力信号を生成するステップと、
少なくとも１つの第２の玩具において受信して、前記第１の玩具が自身の行動を終える前に前記第２の玩具が行動を起こすようにするためのトリガ信号を、前記第１の玩具が行動している間に生成するステップと、
を前記玩具のプロセッサに実行させるプログラムを記憶したことを特徴とするコンピュータ可読メモリ。
【請求項１５】
前記プログラムが、前記玩具が自身の行動を開始した後に、又は前記玩具が自身の行動を終える前に、所定の時間間隔で前記トリガ信号を生成するステップをさらに前記玩具のプロセッサに実行させる、
ことを特徴とする請求項１４に記載のコンピュータ可読メモリ。
【請求項１６】
前記プログラムが、ユーザが前記所定の時間間隔の目安を入力できるようにするステップをさらに前記玩具のプロセッサに実行させる、
ことを特徴とする請求項１５に記載のコンピュータ可読メモリ。
【請求項１７】
前記所定の時間間隔が、１秒未満、又は１／２秒未満、又は１／４秒未満である、
ことを特徴とする請求項１５又は請求項１６に記載のコンピュータ可読メモリ。
【請求項１８】
前記行動が、音を発すること、光を発すること、及び動きのうちの少なくとも１つである、
ことを特徴とする請求項１４から請求項１６のいずれかに記載のコンピュータ可読メモリ。
【請求項１９】
玩具と少なくとも１つの他の同じような玩具との間の対話の方法であって、
前記玩具のプロセッサが、第１の玩具が行うべき行動を表す出力信号を生成するステップと、
前記玩具のプロセッサが、少なくとも１つの第２の玩具が受信するための、前記第１の玩具が行動を終える前に前記第２の玩具が行動を起こすようにするためのトリガ信号を、前記第１の玩具が行動している間に生成するステップと、
を含む、
ことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は玩具に関する。特に、限定的な意味ではないが、本発明は互いに対話する人形などの玩具に関する。
【背景技術】
【０００２】
組込み型コンピュータ及びマイクロプロセッサは、子供用玩具を進歩させてきた。これらは教育用玩具において最も広く使用されてきたが、対話型玩具においても使用されてきた。ＡｃｔｉＭａｔｅｓ（登録商標）Ｂａｒｎｅｙ（登録商標）は、子供からの適切な発声による対話に応答するとともにビデオに合わせて歌うことができる対話型玩具の一例である。
【０００３】
本明細書にはＰＣＴ特許出願ＷＯ２００６／１１４６２５号が引用により組み入れられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＰＣＴ特許出願ＷＯ２００６／１１４６２５号
【発明の概要】
【課題を解決するための手段】
【０００５】
同期
本発明の第１の態様によれば、少なくとも１つの他の同じような玩具と対話するようになっている玩具が提供され、この玩具は、プロセッサと、このプロセッサに結合されたメモリとを備え、前記プロセッサは、行うべき行動を表す出力信号を生成する手段と、少なくとも１つの他のこのような玩具における受信のための、前記玩具が自身の行動を終える前に前記少なくとも１つの他のこのような玩具が行動を起こすようにするためのトリガ信号を生成する手段とを含む。前記玩具が自身の行動を終える前に別のこのような玩具が行動を起こすようにするためのトリガ信号を生成する手段を提供することにより、より多才な、具体的にはより本物そっくりな対話を実現することができる。
【０００６】
より本物そっくりな対話のためには、前記玩具が自身の行動を開始した後に所定の時間間隔で前記トリガ信号が生成されることが好ましい。前記トリガ信号は、前記玩具が自身の行動を終える前に所定の時間間隔で生成されることが好ましい。
【０００７】
使い勝手を良くするために、玩具は、ユーザが前記所定の時間間隔の目安を入力できるようにする入力部を備えることが好ましい。
【０００８】
同期化を容易にするために、所定の時間間隔は、１秒未満、又は１／２秒未満、又は１／４秒未満であることが好ましく、実質的に０秒であることがより好ましい。０秒の時間間隔を有することにより、玩具の行動が効果的に同期する。
【０００９】
行動は、音を発すること、光を発すること、及び動きのうちの少なくとも１つであることが好ましい。
【００１０】
通信を効率良くするために、玩具は、前記少なくとも１つの他のこのような玩具と無線で通信するようにされた無線通信モジュールをさらに備えることが好ましい。この無線通信モジュールは、トリガ信号、対話に関する情報、及び玩具に関する情報のうちの少なくとも１つを送信することがより好ましい。
【００１１】
前記対話に関する情報は、玩具が出力する行動、行動の持続時間、及び少なくとも１つの他の玩具がとるべき行動のうちの少なくとも１つを含むことが好ましい。
【００１２】
メモリは、所定の対話を記憶するようになっていることが好ましい。
【００１３】
プロセッサは、前記対話を疑似ランダムに決定するようになっていることが好ましい。
【００１４】
より本物そっくりな対話のためには、前記玩具が生きているかのように対話するようになっていることが好ましい。前記対話は、会話、音声対話、対人対話、教育的対話、演奏、及びゲームプレイのうちの少なくとも１つであることが好ましい。前記玩具は、このような玩具のグループ内のメンバーとして対話するようになっていることが好ましい。前記グループは、音楽バンド、車のグループ、又は軍事資産のグループのうちの１つを表すことがより好ましい。前記トリガ信号を使用してグループの行動を同期させることがさらに好ましい。
【００１５】
玩具は、別のこのような玩具からトリガ信号を受け取る手段をさらに備え、前記トリガ信号を使用して行動を開始する時点を決定することが好ましい。
【００１６】
前記玩具は、人形、ゲーム盤、乗り物、及び軍事資産のうちの１つであることが好ましい。
【００１７】
本発明のさらなる態様によれば、少なくとも１つの他の同じような玩具と対話するようになっている玩具で使用するためのコンピュータ可読メモリが提供され、該メモリは、行うべき行動を表す出力信号を生成するためのコードと、少なくとも１つの他のこのような玩具において受信して、前記玩具が自身の行動を終える前に前記少なくとも１つの他のこのような玩具が行動を起こすようにするためのトリガ信号を生成するためのコードとを含む命令セットを含む。本明細書で使用するコンピュータ可読メモリという用語は、コンピュータプログラム製品という用語を含む。
【００１８】
コンピュータ可読メモリは、前記玩具が自身の行動を開始した後に所定の時間間隔で前記トリガ信号を生成するためのコードをさらに含むことが好ましい。
【００１９】
コンピュータ可読メモリは、前記玩具が自身の行動を終える前に所定の時間間隔で前記トリガ信号を生成するためのコードをさらに含むことが好ましい。
【００２０】
コンピュータ可読メモリは、ユーザが前記所定の時間間隔の目安を入力できるようにするためのコードをさらに含むことが好ましい。
【００２１】
前記所定の時間間隔は、１秒未満、又は１／２秒未満、又は１／４秒未満であることが好ましく、実質的に０秒であることが好ましい。
【００２２】
前記行動は、音を発すること、光を発すること、及び動きのうちの少なくとも１つであることが好ましい。
【００２３】
オーサリングツール
本発明のさらなる態様によれば、玩具のテーマ別データを作成するためのオーサリングツールが提供され、該オーサリングツールは、特定のテーマに関連するコンテンツを受信する手段と、前記コンテンツを処理して前記特定のテーマ内で前記玩具を動作させるための命令セットを生成する手段と、前記命令セットを出力する手段とを含む。玩具を動作させるための命令セットを生成する手段を提供することにより、テーマ別の命令を生成するプロセスを実質的により効率化することができる。
【００２４】
コンテンツを受信する効率性のために、前記受信手段は、特定のテーマに関連するスクリプトデータ及び前記玩具の性格を定義する表現データの両方を別個に含むコンテンツを受信するようになっていることが好ましい。前記受信手段は、コンテンツを別の部分の形で受信するようになっていることが好ましい。
【００２５】
処理の効率性のために、オーサリングツールは、個々の表現データ部分に一意のＩＤ番号を割り当てる手段をさらに含むことが好ましい。前記処理手段は、前記命令セットにおいて前記表現データ部分への参照として前記一意のＩＤ番号を利用するようになっていることが好ましい。
【００２６】
前記表現データは、テーマ名、玩具の名前、及び玩具が対話するために使用する文のうちの少なくとも１つを含むことが好ましい。
【００２７】
前記スクリプトデータは、テーマ内で対話できる玩具の数、対話方法、テーマ関連パラメータ、及び玩具関連パラメータのうちの少なくとも１つを含むことが好ましい。
【００２８】
処理の効率性のために、オーサリングツールは、特定のテーマに関連する前記スクリプトデータ及び表現データを共に配列の形で記憶する手段をさらに含むことが好ましい。前記処理手段は、前記配列から前記命令セットを生成するようになっていることがさらに好ましい。
【００２９】
処理の効率性のために、前記処理手段は、表現データの少なくとも一部を含む少なくとも１つのリストをコンパイルする手段を含むことが好ましい。前記リストコンパイル手段は、前記特定のテーマ内で玩具ごとにそれぞれのリストをコンパイルするようになっていることがさらに好ましい。
【００３０】
表現データはシンボルデータであることが好ましい。本明細書で使用するシンボルデータは、書かれた形の単語、音楽又は行動を意味する。
【００３１】
オーサリングツールは、シンボルデータの上演(enacted)データバージョンを記録する記録手段をさらに含むことが好ましい。本明細書で使用する上演データとは、上演される形の単語、音楽又は行動を意味するものである。
【００３２】
オーサリングツールは、関係者に上演データの必要な部分を生成するように促す手段を含むことが好ましい。
【００３３】
前記プロセッサは、シンボルデータと上演データとの間のルックアップテーブルを生成するようになっていることが好ましい。
【００３４】
前記処理手段は、表現データを出力するようになっていることが好ましい。前記処理手段はさらに、表現データ及び命令セットを別個に出力するようになっていることがさらに好ましい。
【００３５】
前記処理手段は、玩具の基本機能を制御するための基本命令セットと、基本命令セットがテーマ内で玩具を制御するためのテーマ別命令セットとを含む命令セットを生成するようになっていることが好ましい。前記プロセッサは、前記基本命令セット及び前記テーマ別命令セットを共に組み合わせるようになっていることがさらに好ましい。
【００３６】
オーサリングツールは、コンパイラをさらに含むことが好ましい。前記プロセッサは、前記基本命令セット及び前記テーマ別命令セットをコンパイルするようになっていることがさらに好ましい。
【００３７】
前記プロセッサは、前記命令セットをコンピュータ可読コードに変換するようになっている符号化エンジンを含むことが好ましい。
【００３８】
オーサリングツールの出力は、本明細書で説明するような会話エンジンで使用されるようになっていることが好ましい。
【００３９】
玩具は、本明細書で説明するような玩具であることが好ましい。
【００４０】
本発明の第２の態様によれば、玩具のテーマ別データを作成するオーサリングツールのためのユーザインターフェイスが提供され、該ユーザインターフェイスは、各々がテーマに関連する特定のコンテンツのサブセットの入力に対応する入力ウィンドウのセットをユーザに提供する手段と、テーマ別データの出力を開始する手段とを含む。
【００４１】
前記コンテンツのサブセットは、テーマ関連データ、玩具関連データ及びコンテキスト関連データのうちの少なくとも１つを含むことが好ましい。
【００４２】
コンテキスト関連データは、玩具が対話するために使用する文、対話方法、テーマ関連パラメータ及び玩具関連パラメータのうちの少なくとも１つを含むことが好ましい。
【００４３】
受信手段は、テーマ全体又はテーマの本質的部分を含むコンテンツを１つの動作で受信するようになっていることが好ましい。コンテンツはフォーマット済みファイルの形であることがより好ましい。フォーマット済みファイルはテキストファイルであることがさらに好ましい。
【００４４】
処理手段は、前記フォーマット済みファイルのコンテンツのみを使用して命令セットを生成することが好ましい。
【００４５】
前記玩具関連パラメータは、次の対話する玩具を選択するための予め定めたルールに関する情報を含むことが好ましい。
【００４６】
前記対話方法は、タイミング関連パラメータを含むことが好ましい。前記タイミング関連パラメータは、次の玩具がいつ対話を行うかを決定することがより好ましい。前記タイミング関連パラメータは、現在の玩具の対話の開始から次の玩具の対話の開始までの時間遅延、及び次の玩具の対話の開始から現在の玩具の対話の終了前までの時間遅延の一方を含むことがさらに好ましい。
【００４７】
オーサリングツールは、ゲームに関するコンテンツを受信する手段をさらに含むことが好ましい。前記ゲームに関するコンテンツは、ゲームを実行できるようにするロジックを含むことがより好ましい。
【００４８】
オーサリングツールは、本明細書で説明するような対話方法のいずれかを実施するようになっていることが好ましい。
【００４９】
本発明の第３の態様によれば、玩具のテーマ別データを生成するためのシステムが提供され、該システムは、テーマ別データにアクセスし、これを作成及び編集するオーサリングツールと、前記テーマ別データを記憶するためのデータベースを含むサーバとを備え、オーサリングツールは、インターネットを介してテーマ別データにアクセスするようになっている。
【００５０】
オーサリングツールは、テーマ別データを処理して配列するようになっており、前記データベースは、前記テーマ別データを前記配列の形で記憶するようになっていることが好ましい。
【００５１】
オーサリングツールは、本明細書で説明するようなオーサリングツールであることが好ましい。
【００５２】
オーサリングツールは、ユーザインターフェイスをさらに含むことが好ましい。ユーザインターフェイスは、本明細書で説明するようなインターフェイスであることがさらに好ましい。
【００５３】
ＵＳＢ通信ドングル
本発明のさらなる態様によれば、本明細書で説明するような少なくとも１つの玩具とコンピュータの間に無線通信を提供する装置が提供され、該装置は、装置をコンピュータに接続するための通信ポートと、コンピュータと前記又は各玩具との間にネットワークを確立する手段とを含み、コンピュータが別のこのような玩具であるかのように前記又は各玩具と通信できるようにする装置を提供する。
【００５４】
前記装置は、コンピュータを仮想玩具として機能できるようにすることが好ましい。
【００５５】
前記通信ポートはＵＳＢ通信ポートであることが好ましい。
【００５６】
前記ネットワークは無線であることが好ましい。
【００５７】
本発明のさらに別の態様によれば、本明細書で説明するような少なくとも１つの玩具と、各々が本明細書で説明するような無線通信を行う装置を有する少なくとも１つのコンピュータとを備えたシステムが提供され、前記コンピュータと装置とを組み合わせることにより本明細書で説明するような玩具であるかのように機能する。
【００５８】
前記コンピュータは、仮想玩具を提供するようになっている視覚及び音声出力を含むことが好ましい。仮想玩具は、アバターであることがさらに好ましい。
【００５９】
コントローラ人形
本発明のさらに別の態様によれば、プロセッサと、該プロセッサに結合されたメモリと、前記プロセッサに結合された出力部と、少なくとも１つのさらなるこのような玩具とのネットワーク接続を確立する手段とを含む玩具が提供され、プロセッサは、ネットワーク接続が確立された各玩具の出力を制御する手段を含む。
【００６０】
前記制御手段は、ネットワーク接続が確立された各玩具の複数の出力（好ましくは全ての出力）を制御する命令をネットワーク接続を介して送信するようになっていることが好ましい。
【００６１】
前記ネットワーク接続が、パーソナルエリアネットワークの一部を形成することが好ましい。
【００６２】
前記メモリは、データの少なくとも１つのグループを記憶するようになっており、個々の前記少なくとも１つのグループは特定のテーマを表すことが好ましい。
【００６３】
玩具は、前記メモリに記憶された少なくとも１つのテーマを決定する手段をさらに含むことが好ましい。
【００６４】
前記玩具は、別の玩具との接続を、前記メモリに記憶された少なくとも１つのテーマが両玩具において同じである場合にのみ確立するようになっていることが好ましい。
【００６５】
前記制御手段は、制御メッセージを送信／受信して個々の前記玩具の出力を制御するようになっていることが好ましく、制御メッセージは、対象の玩具のＩＤ及びコマンドセグメントを含むことが好ましく、発信元玩具のＩＤ及び／又はメッセージＩＤをさらに含むことがより好ましい。
【００６６】
前記制御メッセージは、参照データベースにアクセスしてタスクを実行する命令を含むことが好ましい。
【００６７】
プロセッサは、前記送信／受信された制御メッセージの確認応答を送信／受信する手段を含むことが好ましく、前記送信／受信手段は、確認応答を受信しない場合に制御メッセージを再送するよう要求するようになっていることが好ましい。
【００６８】
前記送信／受信手段は、このような玩具が制御メッセージに基づいて出力を生成するのに掛かるであろう時間に関連するパラメータを送信するようになっていることが好ましく、発信元玩具は、さらなる制御メッセージを送信するまで前記パラメータに関連する時間の間待機することが好ましい（このような玩具がこのような出力を生成するのに掛かる時間は、例えば玩具のテーマ又はサブテーマにより様々であってもよい）。
【００６９】
プロセッサが、再送信制御メッセージの数をカウントする手段を含み、これにより前記制御メッセージの確認応答を行わない前記玩具との通信が、１，０００〜２，０００回、２，０００〜５，０００回、５，０００〜１０，０００回又はそれ以上の試行後に停止されることが好ましい。
【００７０】
前記プロセッサは、前記玩具間の会話を構築するようになっている会話エンジンをさらに含むことが好ましい。
【００７１】
さらなるこのような玩具は、最初のこのような玩具と同一又は実質的に同一であることが好ましい。従って、「スポークハブ」構成は不要である。
【００７２】
前記ネットワークを確立する手段はネットワークコントローラであることが好ましく、Ｚｉｇｂｅｅ（登録商標）プロトコルを利用するネットワークコントローラであることが好ましい。
【００７３】
パラメータ記憶
玩具は、別のこのような玩具と対話するようになっており、前記プロセッサは、前記対話に関連する少なくとも１つの変数を定義する手段と、前記変数をメモリに記憶する手段と、前記変数を使用して前記玩具の（対話型）出力を制御する手段とを含むことが好ましい。
【００７４】
本発明のさらに別の態様によれば、別のこのような玩具と対話するようになっている玩具が提供され、該玩具は、プロセッサと、該プロセッサに結合されたメモリと、前記プロセッサに結合された出力部とを備え、前記プロセッサは、前記対話に関連する少なくとも１つの変数を定義する手段と、前記変数をメモリに記憶する手段と、前記玩具の（対話型）出力に関連して変数を使用する手段とを含む（この結果より効率的に対話の経過を追い続けることが好ましい）。
【００７５】
前記変数を複数回（より好ましくは数えきれないほど）使用して出力を制御することが好ましい。
【００７６】
前記変数を使用して、前記対話の回数、種類又は性質を決定することが好ましく、前記変数が前記対話であることが好ましい。
【００７７】
前記変数は、ランダムに又は疑似ランダム的に選択され、前記ランダム選択は重み付けにより影響されることが好ましい。
【００７８】
玩具は、対話を生成する手段をさらに含むことが好ましい。対話を生成する手段は、記憶パラメータに基づいて対話を生成するようになっていることが好ましい。
【００７９】
記憶手段は、各変数を玩具と関連づけることが好ましい。
【００８０】
記憶手段は、玩具内に位置するメモリであることが好ましい。
【００８１】
変数を使用する手段は、記憶手段から変数にアクセスするようになっていることが好ましい。
【００８２】
前記対話は、玩具間の通信であることが好ましい。
【００８３】
前記変数は、発話で利用される単語又は語句であることが好ましい。
【００８４】
性格の表現及びテーマのスクリプト記述
前記プロセッサは、前記メモリにテーマ別データを記憶するようになっており、前記テーマはスクリプトデータ及び表現データを含み、前記表現データが前記玩具の性格を定義することが好ましい。
【００８５】
本発明のさらに別の態様によれば、プロセッサと、該プロセッサに結合されたメモリと、前記プロセッサに結合された出力部とを備えた玩具が提供され、前記プロセッサは、前記メモリにテーマ別データを記憶するようになっており、前記テーマはスクリプトデータ及び表現データを含み、前記表現データが玩具の性格を定義する（この結果、複数のテーマ別の玩具の性格がより効率的に提供されることが好ましい）。
【００８６】
玩具は、少なくとも１つの他の同様の玩具と対話するようになっており、前記スクリプトデータが個々のこのような玩具により共有され、前記表現データが個々のこのような玩具間で異なることが好ましい。
【００８７】
前記スクリプトデータは、前記表現データとは無関係であることが好ましい。
【００８８】
プロセッサは、別のこのような玩具に制御メッセージとしてスクリプトデータを出力するようになっており、制御メッセージに個々の表現データで応答するようになっていることが好ましい。
【００８９】
スクリプトデータは、各玩具ごとに同じものであり、各玩具の出力を制御することが好ましい。
【００９０】
プロセッサは、スクリプトデータを利用して表現データを参照するようになっていることが好ましく、表現データは、異なるコンテンツを使用して同じ情報を通信することが好ましい。
【００９１】
玩具の性格は、通信のコンテンツにより定義されることが好ましい。
【００９２】
人形の選択
プロセッサは、対話するための玩具を予め定めたルールに基づいて選択する手段を含むことが好ましい。
【００９３】
本発明のさらに別の態様によれば、他のこのような玩具と対話するようになっている玩具が提供され、該玩具は、プロセッサと、該プロセッサに結合されたメモリと、前記プロセッサに結合された出力部とを備え、前記プロセッサは、対話する玩具を予め定めたルールに基づいて選択する手段を含み、前記選択される玩具は発信元玩具であってもよい。
【００９４】
前記選択手段は、次の対話する玩具を選択するようになっていることが好ましい。
【００９５】
前記予め定めたルールは、直接選択、ランダム選択、及び現在の対話玩具を選択して再び対話することを含むことが好ましい。
【００９６】
プロセッサは、選択された玩具のＩＤ及び好ましくは発信元玩具のＩＤを含む制御メッセージを出力するようになっていることが好ましい。
【００９７】
前記対話は通信を含むことが好ましく、該通信は発話及び指示を含むことが好ましい。
【００９８】
ゲームのプレイ
玩具は、他の同様の玩具とゲームをプレイすることに適した生きているものの形をとり、前記プロセッサはゲームエンジンを含み、該ゲームエンジンは、前記玩具が生きているかのようにゲームをプレイ可能にするようになっていることが好ましい。
【００９９】
本発明のさらに別の態様によれば、他の同様の玩具とゲームをプレイすることに適した生命があるものの形をした玩具が提供され、該玩具は、プロセッサと、該プロセッサに結合されたメモリと、前記プロセッサに結合された出力部とを含み、前記プロセッサは、個々の前記玩具を関連する生きているものであるかのようにゲームできるようにするゲームエンジンを含む。
【０１００】
前記ゲームエンジンは、人間のゲームを可能にするようになっていることが好ましい。
【０１０１】
前記人間のゲームは、ゲーム機器でプレイされることが好ましい。
【０１０２】
前記ゲームエンジンは、人間がゲーム機器を調整してゲームをプレイできるようにする命令を出力するようになっていることが好ましい。
【０１０３】
前記玩具は、少なくとも１つのさらなるこのような玩具と通信する手段をさらに含むことが好ましい。
【０１０４】
前記ゲームエンジンはさらに、ルールに基づいたゲームをプレイするようになっていることが好ましい。
【０１０５】
前記ゲームエンジンは、前記メモリにゲームに関する情報を記憶するようになっていることが好ましい。
【０１０６】
前記情報はゲームのルールを含むことが好ましい。
【０１０７】
前記情報は、少なくとも１つのプレイボードのレイアウトをさらに含むことが好ましい。
【０１０８】
前記ゲームエンジンは、仮想サイコロになっている乱数発生器を含むことが好ましい。
【０１０９】
ゲームエンジンは、ゲームに関する外部入力を受信する手段を含むことが好ましい。
【０１１０】
前記外部入力は、ゲームの駒に関連付けられることが好ましい。
【０１１１】
前記外部入力は、プレイボード内の少なくとも１つのセンサであることが好ましい。
【０１１２】
前記外部入力は、玩具のユーザが使用するようになっているスイッチであることが好ましい。
【０１１３】
前記ルールに基づくゲームは、ヘビとはしご及びルードを含むことが好ましい。
【０１１４】
前記出力は変換器であることが好ましい。前記変換器はスピーカであることが好ましい。前記変換器はアクチュエータであることが好ましい。
【０１１５】
本発明のさらに別の態様によれば、複数のこのような玩具を含む組み合わせが提供される。
【０１１６】
前記複数の玩具の各々の１つが他の前記玩具を制御する手段を含むことにより、１つの玩具のみが他の前記玩具を同時に制御することが好ましい。
【０１１７】
前記メモリは、ゲームの状態に関連する情報を記憶するようになっていることが好ましい。ゲーム状態は、プレイボードのレイアウト、プレイボード上の少なくとも１つのカウンタの位置、玩具及び／又はユーザの全てに関するプレイの順序の少なくとも１つであってもよい。
【０１１８】
人形固有のダウンロード
本発明のさらに別の態様によれば、複数の玩具にテーマ別データを提供する装置が提供され、該装置は、各々が複数のサブテーマを含む前記テーマ別データを記憶する手段と、特定の玩具を識別する手段と、特定の玩具に基づいてサブテーマを選択する手段と、前記玩具に対して前記特定のサブテーマを出力する手段とを含む（この結果、テーマ別ダウンロードへのアクセスがより効率的に達成されることが好ましい）。
【０１１９】
玩具は、複数の異なるテーマを記憶する手段をさらに含むことが好ましい。
【０１２０】
玩具は、ユーザが複数のテーマのうちの１つを選択できるようにする手段をさらに含むことが好ましい。
【０１２１】
前記特定の玩具を特定する手段は、前記玩具の一意の識別番号を使用することが好ましい。
【０１２２】
玩具は、前記玩具に関連するパラメータに基づいて個々の前記サブテーマを暗号化する手段をさらに含むことが好ましい。前記パラメータは玩具の一意の識別番号であることが好ましい。
【０１２３】
装置は、プロセッサと、テーマ別データを記憶するとともに特定の玩具を識別する関連メモリとを含むことが好ましい。
【０１２４】
装置は、玩具にサブテーマを出力するための接続部をさらに含むことが好ましい。接続部は、インターネット及びＵＳＢケーブルを含むことが好ましい。
【０１２５】
会話エンジン
本発明のさらに別の態様によれば、玩具などの装置のための会話エンジンが提供され、該会話エンジンは、会話のテーマを選択し、複数の起点から起点をランダムに選択し、変数に基づいて語句をランダムに選択し、変数に基づいて次の発話者をランダムに選択する手段を含む。
【０１２６】
前記語句選択はさらに、重み付けに基づくことが好ましい。
【０１２７】
玩具は、会話エンジンを組み込むことが好ましい。
【０１２８】
玩具又は会話エンジンは、ユーザから入力データを受信するようになっていることが好ましい。
【０１２９】
玩具又は会話エンジンは、ユーザにデータを出力するようになっていることが好ましい。
【０１３０】
会話エンジンはさらに、ユーザからの入力データをランダム選択処理の形で利用するようになっていることが好ましい。
【０１３１】
会話エンジンは、選択動作を実行するようになっているプロセッサを含むことが好ましい。
【０１３２】
玩具又は会話エンジンは、会話をリアルタイムに構築するようになっていることが好ましい。
【０１３３】
玩具又は会話エンジンは、会話を前処理するようになっていることが好ましい。玩具又は会話エンジンはさらに、前処理済みの会話を出力するようになっていることが好ましい。
【０１３４】
玩具又は会話エンジンは、会話を構築する際に、確立されたネットワーク内に存在する他の玩具のパラメータを変数として利用するようになっていることが好ましい。
【０１３５】
玩具又は会話エンジンは、重み付けに基づいてデータを出力するようになっていることが好ましい。
【０１３６】
玩具は、複数組のテーマ別データを記憶するようになっていることが好ましい。玩具はさらに、１つの会話中に複数組のテーマ別データのうちの少なくとも２つを利用するようになっていることが好ましい。
【０１３７】
玩具は、好ましくは２、３、４又はそれ以上の複数の他のこのような玩具とネットワークを確立できるようになっていることが好ましい。
【０１３８】
玩具は、生きているようになっていることが好ましい。
【０１３９】
玩具は、他のこのような玩具と通信するようになっており、前記通信は、発話、行動及びジェスチャを含むことが好ましい。
【０１４０】
玩具又は会話エンジンは、以下の特徴の１つ、いくつか、又は全てをいずれかの組合せで有することが好ましい。
・子供が玩具と対話式に遊ぶことができる
・オンザフライで構築される会話
・会話を開始する前に会話が前処理される
・会話がネットワーク内に存在する人形に基づく
・会話がネットワーク内に存在する人形の種類に基づく
・会話の長さ及び方向性の制御に使用される重み付け
・会話の半ばでテーマを切り替える能力
・２、３又はそれ以上の玩具
・玩具は生きているもの／人間／人形である
・対話は通信を含み、通信は広い意味で定められる
【０１４１】
要約すると、本発明は特に以下の発明に言及するものである。
・オーサリングツール〜玩具が読み込み可能なプログラムコードにコンパイルされる会話データを入力する機能を提供する。
・ＵＳＢ通信ドングル〜玩具とＰＣとの間の通信を可能にする装置を提供する。
・コントローラ人形〜３以上の人形であり、単一のコントローラとして最初に電源が入った人形を使用して制御が行われる。
・性格の表現〜人形の性格要素に基づいて、同じテーマが異なる表現を有する。
・テーマのスクリプト作成〜テーマは、ダウンロード可能な表現の組合せであり、スクリプト／スクリプト及び表現は、異なるテーマごとに不可欠な／異なるスクリプトである。
・パラメータ記憶〜現在の会話に関する情報を記憶する能力、例えば、「私の犬はＦｌｕｆｆｙと言います」という語句では、人形がその会話内の情報（ペット＝「犬」及びペットの名前＝「ｆｌｕｆｆｙ」）を後で使用するために記憶する。
・人形固有のダウンロード〜ウェブサイトダウンロードのみが、特定の性格に関する特定の言語を表現として有し、性格に従って表現がダウンロードされる。
・会話の構造〜人形は、関連する発話で応答するか、別の人形を選択して話しかけるか、或いは自分自身について何かを発表するかのいずれかを選択する。
・人形の選択〜コントローラは、次にどの人形が発話するかをランダムに決定し、ランダムに選択するものの、人形は２回続けて発話することができず、或いは特定の人形を名前で選択することもできない。
・ゲームのプレイ〜人形は人間のようにゲームをプレイする。
【０１４２】
本発明は、データ処理装置で実行された場合、構成要素の段階のいずれか又は全てを含む本明細書で説明する方法のいずれかを実行するようになっているコンピュータプログラム及びソフトウェアコードを含むコンピュータプログラム製品も提供する。
【０１４３】
本発明は、データ処理装置で実行された場合、本明細書で説明する装置の特徴のいずれかを含むコンピュータプログラム及びソフトウェアコードを含むコンピュータプログラム製品も提供する。
【０１４４】
本発明は、本明細書で説明する方法のいずれかを実行し及び／又は本明細書で説明する装置の特徴のいずれかを具体化するコンピュータプログラム及びコンピュータプログラムをサポートするオペレーティングシステムを有するコンピュータプログラム製品も提供する。
【０１４５】
本発明は、上述したようなコンピュータプログラムを記憶したコンピュータ可読媒体も提供する。
【０１４６】
本発明は、上述したようなコンピュータプログラムを保持する信号及びこのような信号を送信する方法も提供する。
【０１４７】
本発明は、実質的に添付図面を参照しながら本明細書で説明するような方法及び／又は装置にまで及ぶ。
【０１４８】
装置及び方法の特徴は適宜入れ替えることができ、また互いに独立して提供することができる。本発明の１つの態様におけるあらゆる特徴を、本発明の他の態様にあらゆる適当な組合せで適用することができ、同様に１つの本発明におけるあらゆる特徴を、本発明の他の態様にあらゆる適当な組合せで適用することができる。例えば、方法の態様を装置の態様に適用することができ、この逆もまた可能である。この場合も、例えば「コントローラ人形」のあらゆる特徴を「パラメータ記憶」のあらゆる特徴に適用することができる。
【０１４９】
さらに、ハードウェアで実行される特徴をソフトウェアで実行することができ、この逆もまた可能である。本明細書におけるソフトウェア及びハードウェアの特徴へのあらゆる言及については、以上に従って解釈すべきである。
【０１５０】
本明細書では、「〜する手段」に機能をプラスした用語の使用は、この機能を実行するようになっている適当なハードウェアコンポーネント（例えば、プロセッサ及び／又はメモリ）と置き換えることができる。
【０１５１】
以下、ほんの一例として、本発明の様々な実施形態について添付図面を参照しながら説明する。
【図面の簡単な説明】
【０１５２】
【図１】３種類の人形を示す図である。
【図２】人形の概略図である。
【図３】スレーブ玩具を含むコントローラ玩具の概略図である。
【図４】人形にテーマ／サブテーマをダウンロードできる、ウェブサイトに接続された人形の概略図である。
【図５】ゲームをプレイするようになっている人形の概略図である。
【図６】ゲームをプレイする処理のフロー図である。
【図７】代替実施形態の概略図である。
【図８】プロセッサ及び関連する電子機器の回路図の実施形態である。
【図９】プロセッサ及び関連する電子機器の回路図の代替実施形態である。
【図１０】オーサリングツールサーバと通信しているユーザＰＣを示す図である。
【図１１】オーサリングツール及び関連システムの概要を示す図である。
【図１２ａ】会話デザイナーウィンドウを示す図である。
【図１２ｂ】テーマ生成ウィンドウを示す図である。
【図１２ｃ】データ入力したテーマ生成ウィンドウを示す図である。
【図１２ｄ】テーマ生成ウィンドウの代替の実施形態を示す図である。
【図１２ｅ】テキストファイルインポート機能のフロー図である。
【図１３ａ】人形追加ウィンドウを示す図である。
【図１３ｂ】人形作成ウィンドウを示す図である。
【図１４】人形コンテキストウィンドウを示す図である。
【図１５ａ】会話入力ウィンドウを示す図である。
【図１５ｂ】会話入力ウィンドウの代替の実施形態示す図である。
【図１６】複数の人形と通信しているＵＳＢドングルを示す図である。
【図１７ａ】２体の人形及び行動のタイムラインの概略図である。
【図１７ｂ】別の人形をトリガするための様々なタイミング例を示す図である。
【図１７ｃ】別の人形をトリガするための様々なタイミング例を示す図である。
【図１７ｄ】別の人形をトリガするための様々なタイミング例を示す図である。
【発明を実施するための形態】
【０１５３】
図１は３種類の人形を示す図であり、１０はテニスをしている人形、２０はバレリーナ人形、３０は犬の散歩中を示す一般的な人形、及び４０は戦車の形をした玩具である。一般に、玩具は生きているように見えるようになっており、特に戦車などの場合は、人間のように又は人間が制御しているように見えるようになっている。図示の４つの玩具は、テーマ別玩具の種類の例である。玩具は、テーマ内の他のこのような玩具と無線で通信するようになっている。
【０１５４】
以下の説明は、他のこのような玩具と通信できるようにされた人形などの玩具に関するものであり、人形は、人形間で発話を調整するようになっている。別の実施形態では、玩具は戦車又は別のこのような車両であり、この場合も、人形間の発話の代わりに戦車が他のこのような戦車と無線で通信して戦車の挙動を調整するようになっている。
【０１５５】
図２は人形の概略図を示しており、人形が通信を行って他のこのようなタスクを実行できるようにするために必要なハードウェアコンポーネントを含む。図２に示すように、人形１００は、無線モジュール１０４を含むプロセッサ１０２を含む。プロセッサは、メモリ１０６、ＲＯＭ１０８及びＲＡＭ１１０と通信している。ＩＲ／ＲＦ送信機／受信機がプロセッサ／無線モジュールに接続され、他のこのような人形との間で信号を送信／受信できるようにされる。人形はスピーカ１１４にも接続される。ＵＳＢコントローラ１１６を使用してメモリ１０６を更新し、充電器回路１１８を介して電池１２０の充電も行う。或いは、人形は、充電式電池ではなく交換式電池を使用するようにされる。
【０１５６】
メモリ１０６は、人形が行うことができる会話に関する情報を記憶し、プロセッサが発話をコンパイルしているときにプロセッサによりアクセスされる。ＲＯＭ１０８を使用して、人形の名前及びＩＤ番号などの人形に関する恒久的情報を記憶する。この情報は、人形のネットワークを設定するときの初期化手順において使用される。ＲＡＭ１１０は、現在の会話に関する情報を記憶し、例えばすでに使用された語句に関する情報を記憶することにより現実的な会話を作成するために使用される。
【０１５７】
個々の人形１００は、メモリ１０６内に、人形の名前を含むデータセット及び会話中に定義されるその他の変数、会話を作成する命令セット、及び音声データセットを含む。会話中に定義される変数は、コントローラ人形にのみ記憶される。
【０１５８】
１つの実施形態では、プロセッサが、関連する（ＳＤカードなどの）メモリインターフェイスを伴ってＭＰ３復号で使用されるような形をとる。この実施形態は、かなりの量の処理能力（及びハードウェアベースの圧縮技術）を提供し、従って人形間の長く詳細な会話を可能にする。
【０１５９】
コントローラ人形
図３でわかるように、コントローラユニット２００がいくつかのスレーブユニット（２０２）と通信している。コントローラは、会話エンジン２０４と、発話コンパイラ２０６と、発話データベース２０８と、スピーカ（変換器）２１０と、スレーブユニットからデータを送信及び受信できる送信機／受信機２１２とを含む。会話エンジンは、ランダム発話セレクタ２１４と、パラメータ記憶メモリ２１６と、発話者セレクタ２１８とを含む。スレーブユニットは、コントローラユニットの全ての構成要素を有しており、図３ではスレーブユニットの構成要素の全てを示しているわけではない。
【０１６０】
最初に電源が入るユニットがコントローラユニットとなるように初期化される。ユニットに電源が入ると、このユニットが既存のネットワークを検索し、ネットワークが存在しなければ、ネットワークを作成して他のユニットがネットワークに参加するのを待つ。さらなるユニットがオンになると、これらがネットワークに参加し、スレーブユニットとして初期化される。コントローラユニットは、両方の新しいユニットからの、ネットワークの詳細及び会話開始メッセージを求めることを示す通信を待つ。スレーブユニットは、ネットワークに参加すると、コントローラユニットからの命令を待つ。ユニット（玩具／人形）は、全てがコントローラユニットにも又はスレーブユニットにもなることができる限り全て同じものであることを理解されたい。
【０１６１】
ユニットは、「動物園」、「スポーツ」、「ギャングスタ」又は「ファッション」などのテーマ内で通信するようになっている。テーマにより、ユニットは、考えられる会話の話題全てに関する情報についての極めて大規模なデータベースを必要せずに詳細な会話を行えるようになる。ユーザは、テーマ／サブテーマをウェブサイトからユニットにダウンロードすることができる。
【０１６２】
以下のプロセスを使用して玩具のネットワークを開始する。
・人形がオンになったときに、参加する既存のネットワークが存在するかどうかを判定するためのチェックを行う〜これは送／受信機２１２を使用して遂行される。
・利用可能なネットワークが存在しない場合、この人形がコントローラになって自動的にネットワークを設定する〜必要な場合、無線モジュール１０４がネットワークを作成するようになっている。
・オンになった個々の後続の人形が、メモリに記憶した人形ＩＤ番号及びテーマ／複数のテーマＩＤ番号を送信する〜情報は送信機２１２により送信される。
・コントローラがテーマ／複数のテーマをチェックして、コントローラと同じ参加するテーマ／複数のテーマを有する人形のみを許可する〜コントローラユニットが、送信データとメモリに記憶されたデータとの比較を行う。
・２又はそれ以上の人形がネットワークに参加すると、会話を開始することが可能となる。
・ユーザがボタンを押すことなどにより会話を開始し、コントローラが、他の人形に何を発言すべきかを指示する会話を開始する。
・ユーザは、いつでも再びボタンを押して会話を停止することができる。
【０１６３】
コントローラユニットは会話を生成するプログラムを実行し、その後どのオーディオファイルにアクセスすべきかを知らせる情報をスレーブユニットへ送信する（このオーディオファイルは個々の性格型によって異なってもよいが、オーディオファイルの各々への参照はユニットごとに同じものである）。コントローラユニットは、スレーブユニットのメモリからアクセスするための単語／語句の識別子を送信する。スレーブユニットは、使用する語句及びこの語句を発言するのに要する予想される時間長を確認するメッセージを送信することにより、メッセージの受信についての確認応答を行う。次に、スレーブユニットは、会話コンパイラを使用して単語／語句をコンパイルし、その後スピーカを使用して語句を発言する。スレーブユニットは、語句を発言し終わると、文が終了し会話を続けることができる旨の信号をコントローラユニットへ送信する。
【０１６４】
その後、コントローラユニットが同じ方法で次の発話者に指示を行い、会話が終わるまでこれを継続する。会話構造に関するさらなる詳細を以下に示す。
【０１６５】
通信プロトコル
玩具は通信プロトコルを使用して通信し、メッセージのフォーマットは以下の通りである。
［ＭｅｓｓａｇｅＩＤ，ＳｅｎｄｉｎｇＴｏｙ＿ＩＤ，ＲｅｃｅｉｖｉｎｇＴｏｙ＿ＩＤ，ＭｅｓｓａｇｅＴｙｐｅ，Ｐａｒａｍｅｔｅｒｓ］
【０１６６】
ＭｅｓｓａｇｅＩＤとは、メッセージを識別する一意の番号のことである。制御玩具から送信される個々のメッセージは一意の識別番号を有する。
【０１６７】
ＳｅｎｄｉｎｇＴｏｙ＿ＩＤは、メッセージを送信する玩具を示す。
【０１６８】
ＲｅｃｅｉｖｉｎｇＴｏｙ＿ＩＤは、メッセージを受信する玩具を示す。
【０１６９】
ＭｅｓｓａｇｅＴｙｐｅは、ＳＴＡＲＴ、ＳＴＯＰ、ＳＡＹなどのメッセージの種類を示す。
【０１７０】
パラメータとは、メッセージタイプに関する他のあらゆる必要な情報のことである。ＳＡＹメッセージのみが、話される（単複の）語句を識別するパラメータを有する。
【０１７１】
従って、メッセージの範囲は以下を含む。
［ＭｅｓｓａｇｅＩＤ，ＳｅｎｄｉｎｇＴｏｙ＿ＩＤ，ＲｅｃｅｉｖｉｎｇＴｏｙ＿ＩＤ，ＳＴＡＲＴ］
［ＭｅｓｓａｇｅＩＤ，ＳｅｎｄｉｎｇＴｏｙ＿ＩＤ，ＲｅｃｅｉｖｉｎｇＴｏｙ＿ＩＤ，ＳＴＯＰ］
［ＭｅｓｓａｇｅＩＤ，ＳｅｎｄｉｎｇＴｏｙ＿ＩＤ，ＲｅｃｅｉｖｉｎｇＴｏｙ＿ＩＤ，ＳＡＹ，ＰｈｒａｓｅＩＤ］
【０１７２】
これらのメッセージの各々は、以下の形の確認応答を生成する。
［ＭｅｓｓａｇｅＩＤ，ＳｅｎｄｉｎｇＴｏｙ＿ＩＤ，ＲｅｃｅｉｖｉｎｇＴｏｙ＿ＩＤ，Ａｃｋ，Ｐａｒａｍｅｔｅｒ］
【０１７３】
パラメータは、ＳＡＹメッセージへの確認応答のみに使用され、語句の持続時間を指定する。コントローラユニットは、語句パラメータの持続時間を使用して、次のメッセージを送信するまで適当な時間長の間待機する。
【０１７４】
従って、玩具１が玩具２と通信していると仮定した場合、各メッセージの通常のイベントのシーケンスは以下の通りになる。
［ＭｅｓｓａｇｅＩＤ，１，２，ＳＴＡＲＴ］［ＭｅｓｓａｇｅＩＤ，２，１，ＡＣＫ］［ＭｅｓｓａｇｅＩＤ，１，２，ＳＡＹ，ＰｈｒａｓｅＩＤ］［ＭｅｓｓａｇｅＩＤ，２，１，ＡＣＫ，ＤＵＲＡＴＩＯＮ］
［ＭｅｓｓａｇｅＩＤ，１，２，ＳＴＯＰ］［ＭｅｓｓａｇｅＩＤ，２，１，ＡＣＫ］
【０１７５】
ＳＴＡＲＴコマンドは、受信側玩具にさらなる到来メッセージの受信を予想するように指示する。次に、コントローラ人形が、スレーブ玩具が使用する必要がある語句のｐｈｒａｓｅＩＤを含む少なくとも１つのメッセージを送信する。個々のｐｈｒａｓｅＩＤがスレーブ玩具へ別個に送信され、従ってこの種の複数のメッセージを送信して文章全体を構築することができる。ＳＴＯＰコマンドを使用して、このシーケンスにこれ以上のメッセージが存在しない旨をスレーブ玩具に指示する。
【０１７６】
スレーブ玩具は、メッセージを受信すると、メッセージの受信を確認応答するメッセージをコントローラへ送信する。コントローラは、ＳＴＡＲＴ及びＳＴＯＰの確認応答に対しては直ちに会話プログラムを続行するが、ＳＡＹコマンドについては、コントローラ人形は、ＳＡＹの確認応答に対応するＤＵＲＡＴＩＯＮと等しい遅延後に続行する。確認応答が受信されない場合、確認応答が受信されるまでメッセージが再送される。この再送は何回も行われ、その時点で人形がリセットされて会話が停止し、例えば、メッセージは１０００〜２０００回、２０００〜５０００回、５０００〜１０，０００回又はそれ以上再送される。
【０１７７】
個々の語句の最後には「語句終了フラグ」も添付されて、いつ語句が終わったかをスレーブユニットに通知する。この時点で、スレーブユニットは、発話が終了したことを示すメッセージをコントローラへ送信する。コントローラは、メッセージを受信すると次のユニットに発話するように指示するが、次の発話者はコントローラであっても、又は別のスレーブユニットであってもよい。
【０１７８】
コントローラ玩具が戦車である場合、発話を指示する代わりに、スレーブユニットに通信される命令は、スレーブユニット戦車が動くべきであるという指図の形をとる。従って、ＰｈｒａｓｅＩＤは、ｍｏｖｅｍｅｎｔＩＤに置き換えられる。このようにして、コントローラ戦車が戦闘などのシミュレーションを行うことになる。玩具の戦車には、これらが協調して動くことができるように、ネットワーク内に他の玩具の戦車を位置決めする手段が設けられる。この手段は、玩具が通信している位置センサを有するプレイボード、又はカメラ、トランスポンダなどの他の位置決め手段の形をとることができる。
【０１７９】
代替の実施形態では、個々の人形が自身の行動を制御し、すなわち個々の人形が会話を生成するためのプログラムを実行する。従って、ネットワーク内の個々の人形が効果的にコントローラ人形となる。この例では、個々の人形がその他の人形に、その他の人形が到達したプログラム内の地点に関する情報を送信する。これにより次に発話する予定の人形が、プログラムを現在の地点から実行できるようになる。また、現在のコントローラ人形が設定した変数に関する情報が他の関連する人形全てに送信され、例えばこの変数がグローバル変数である場合、これが他の人形全てに送信される。ネットワーク内の個々の人形がコントローラ人形になれるようにすることにより、ネットワークのロバスト性を高めることができる。これは、現在のコントローラ人形さえも含むあらゆる人形をネットワークから除外することができ、残りの人形がいなくなった人形の分まで対処することができるという事実によるものである。
【０１８０】
同期
別の実施形態では、玩具が他の同じような玩具とより本物そっくりに対話するようにされる。この人形、乗り物などの形をした玩具は、これらがまるで生きているかのように対話できるようにする対話エンジンを備える。この対話エンジンは、玩具が同時に、すなわち個々の玩具が行動を終えてから別の玩具が別の行動を開始できるようにする必要なく行動を出力できるようにする。この対話エンジンは本明細書で説明する会話エンジンに類似するが、対話エンジンは、会話エンジンに加え或いはこれとは別に発話以外の動きなどの行動の出力を取り扱うことができる。
【０１８１】
図１７ａは、２体の人形Ａ及びＢ１７５０の概略図であり、人形の行動を同期させるために利用できる様々なタイミングを示すタイムラインを図１７ｂ、図１７ｃ及び図１７ｄに示す。人形Ａ及びＢは基本的に両方とも同じものであり、プロセッサ１７００と、プロセッサに結合されたメモリ１７０２と、プロセッサに結合された変換器１７０４と、無線通信モジュール１７０６とを含む。メモリ１７０２は、会話又は軍事演習などの予想される人形間の対話に関する情報を記憶する。対話エンジン１７０８は、プロセッサに結合されて対話を構築できるようにする。プロセッサ１７００は、記憶された情報を利用して２又はそれ以上の人形間の対話を構築するようにされる。プロセッサ１７００の出力部は、プロセッサが選択した行動を表す信号を出力し、これが変換器１７０４へ転送されて出力を適当な行動に変換する。
【０１８２】
プロセッサ１７００はまた、ネットワーク内の他の人形へ無線通信モジュール１７０６を介して無線で通信されるトリガ信号を生成するようにもなっている。このトリガ信号は、現在の人形が自身の行動を終える前のあらゆる時点において送信することができる。これにより、ネットワーク内の人形を自身の出力に対して同期できるようにすることができる。
【０１８３】
図１７ｂ、図１７ｃ及び図１７ｄで分かるように、使用できる同期には以下の３種類がある。
・行動の開始から時間を計った同期
・玩具が現在の行動を開始してから或る時間間隔後に次の玩具をトリガする。この例では、人形Ａが語句１を発言し始めてからｘ秒後に人形Ｂが語句２を発言するようにトリガする。
・例えば、この同期の形を使用して、人形Ｂが人形Ａの発言に「飽きて」きたという理由で人形Ａの言葉を遮るようにすることができる。
・行動間の時間間隔がゼロの同期
・玩具が現在の行動を開始した直後に玩具をトリガする。この例では、人形Ａが語句３を発言し始めた０秒後に人形Ｂが語句４を発言するようにトリガする。
・例えば、この同期の形を使用して、複数の人形が音楽バンドにいるかのように対話できるようにし、バンドの全てのメンバーが同時に演奏を開始するようにすることができる。
・行動の終了から時間を計った同期
・玩具が現在の行動を終了する前の或る時間間隔に次の玩具をトリガする。この例では、人形Ａが語句５を終えるｙ秒前に人形Ｂが語句６を発言するようにトリガする。
・例えば、この同期の形を使用して、人形Ａが発言を終える前に人形Ｂが人形Ａのジョークに対して「笑い」始めるようにすることができる。
【０１８４】
次の玩具へ送られるトリガ信号は、現在の対話に関する情報、及びこの玩具自体に関する情報を含むことができる。例えば、単一のコントローラ人形が対話全体を制御している場合、トリガ信号によってスレーブ人形が何らかの行動を出力することを要求する。一方で、個々の人形が自身の出力を制御している場合、トリガ信号によって次に出力すべきことを対話内にどこで処理し始めるべきかを次の人形に知らせる。また、トリガ信号は、設定されているパラメータを含むこともでき、例えば人形が自身のペットの名前をランダムに選択した場合、この名前を全ての人形に回して、これらが会話の構築においてこの情報を使用できるようにする。最後に、トリガ信号はタイミングに関する情報を含むこともでき、例えば、次の人形が行動しなければならない場合にはトリガ信号は送られず、現在の人形の行動の開始時に、次の人形がいつ開始すべきかを示す情報を与える。
【０１８５】
会話、演奏、ゲームプレイなどの対話は、予め決めておいてもよいし、或いは次に何の行動を出力するかについての疑似ランダム選択に応じて変化してもよい。いずれにせよ、玩具は生きているかのように対話するようになっている。あらゆる玩具があらゆる時点で行動をとる能力により、全ての行動が順番に行われるよりも本物そっくりの対話が実現される。玩具は、玩具に対話をダウンロードできるようにするポートなどの入力部も備える。対話は、本明細書で説明するようにテーマの形をとる。
【０１８６】
同期により、人形がグループのメンバーであるかのように振る舞えるようにすることができる。例えば、数多くの人形がバンドに入っているかのように振る舞うことができる。この例では、最初の人形が曲の一部を開始して、他の人形の各々がその曲の一部の異なるパートを演奏し、すなわちある者はリードシンガー、ある者はドラマー、ある者はギター、そしてある者はベースギターの役を演じる。人形は個々の他の人形に、曲の自分たちの部分の演奏を直ちに開始するように信号を送信し、これにより完全な曲の一部を創造する。同期の維持問題を避けるために、曲をフレーズに分割し、個々のフレーズの最後で制御及びタイミングを交渉することができる。
【０１８７】
同じようにして、戦車、兵士などを有する２又はそれ以上の軍隊（すなわち軍事資産）に玩具をグループ分けすることができる。個々の軍隊はユニットとして機能し、玩具の１つがユニットとして動くように他の玩具をトリガすることができる。この動きは、上述の方法を使用して同期される。
【０１８８】
グループ化した行動の別の例に車を競わせることがあり、この場合玩具の１つが一群の車の行動を決定して自動車レースをシミュレートする。或いは、ユーザが車の１台またはそれ以上を遠隔で制御し、予め定めた他の周囲の車の行動セットを開始することができる。ここでも、同期方法を使用して車の行動を制御し、これらが順番にではなく同時に動くようにする。
【０１８９】
別の例では、グループ内の人形の１つが、チェスボード、ルードボード、ヘビとはしごボードなどになるようにされる。ボードは、ゲームの駒の位置を分かるようにするセンサを備え、このようにしてボードは、ゲームをプレイするステージ及びゲームの駒が正しい位置にあるかどうかに関する情報を出力することにより、他の人形及び子供と対話することができる。
【０１９０】
さらなる例では、人形が、有名な劇又はキリスト降誕などの有名な宗教シーンを演じるようにされる。このようにして、子供たちに楽しませながら教育的経験を与えることができる。
【０１９１】
グループ化した行動のその他の例は教育環境で使用される。例えば、一群の人形にいずれかの教科を教え込み、これにより１つの人形が先生になって質問を尋ね、これにその他の人形が全て同時に答えることで子供の学習を促す。
【０１９２】
会話の構築
会話エンジンは、会話をオンザフライで構築する。或いは、会話を開始する前に会話全体を構築してその後メモリに記憶し、その後事実上終了まで会話が実行される。しかしながら、いずれにしても、構築される会話は特定のランダム選択に基づくことになる。
【０１９３】
会話はネットワーク内に存在するユニットに基づき、従って存在するユニット数及び存在するユニットの種類が制御変数として使用される。玩具が人形である場合には「わーい動物園に来たよ、さあどうしよう」のように、個々の会話の最初の部分が固定される。しかしながら、複数の開始語句が存在する。その時点以降、会話はその後ランダムに選択されることになる。コントローラユニットは、発話する最初のユニットを選択し、その後開始語句のいずれかにランダムに分岐させる。
【０１９４】
システムは、以下のようないくつかの異なる種類のコマンドを含む命令セットを使用できるようにされる。
・変数の定義及び変数設定
・コンテキスト参照及びスイッチング
・条件付きフロー制御
・無条件フロー制御
・発話語句
【０１９５】
会話の流れを制御するために多くの命令文が定義され、これらは以下の通りである。
ＳＥＬＥＣＴ  ＮＥＸＴ〜次の発話するユニットを選択する。この命令文には数多くの変形が存在し、これについて以下でさらに詳細に説明する。
ＳＷＩＴＣＨ〜次のユニットに切り替える。
ｓｗｉｔｃｈ  ｓｐｅａｋｅｒ〜発話者ポインタを別の発話者に移動させる。
ｓｗｉｔｃｈ  ｆｉｎｉｓｈ〜この命令文を使用して会話を終える。
ＳＡＹ〜ユニットに何かを発言するように指示する。
ＳＥＴ〜この命令文を使用して、「ＳＥＴ  ｐｅｔ（［１，ｄｏｇ］）などの変数を設定する。ＳＥＴ文を使用して現在の発話者の変数を設定し、或いはこれを使用してグローバル変数を設定することができる。
ＴＥＳＴ〜この命令文を使用して、例えば変数が設定されたかどうか、又は分岐が使用されたかどうかをテストする。ＴＥＳＴが真の場合、フラグが設定される。ＴＥＳＴ命令文には２つの形がある。
ＴＥＳＴ  ＥＱ〜この命令文は、２つの表現が等しいかどうかをテストして等しければ肯定的なフラグを作成し、例えば「ＴＥＳＴ  ＥＱ＆ＭＥ．ＰＥＴ＆ＵＮＤＥＦ」は、現在の発話者のペットの変数が未定義かどうかをテストして未定義であれば肯定的なフラグを作成する。
ＴＥＳＴ  ＮＥ〜この命令文は、２つの表現が等しいかどうかをテストして等しくなければ肯定的なフラグを作成する。
ＢＲＡＮＣＨ〜この命令文を使用して別の会話のセクションに分岐する。例えば、「ＢＲＡＮＣＨ  ｇｏｒｉｌｌａｓ：」は、「Ｇｏｒｉｌｌａｓ」のラベルを付けられたテーマのセクションである、「Ｚｏｏ（動物園）」というテーマのゴリラセクションに分岐する。この命令文は無条件文であり、プログラムが分岐文に至ったときには常に使用される。
ＢＲＡＮＣＨ＿Ｆ〜ＴＥＳＴからのフラグに基づいて条件付きで分岐する。従って、ＴＥＳＴ文から作成されたフラグが肯定的であるときにのみ、分岐文が使用される。
ＣＨＯＯＳＥ〜この命令文により、コントローラが進む先のラベルをランダムに選択できるようになる。この命令文は、重み付けを使用してラベルへ進む確率を制御できるという点でＳＥＴ文と類似している。
ＣＨＯＯＳＥ＿Ｆ〜ＴＥＳＴからのフラグに基づいて条件付きで選択を行う。
【０１９６】
ストレージ要件を削減するために、オーディオファイルはトリミングした形で記憶され、すなわち個々の音声セグメントの前後には沈黙が存在しない。より実際的な発話を作成するために、トリミングしたオーディオファイルの後に置くことができる、長さの異なるいくつかの沈黙オーディオファイルが個々の語句又は単語の間に提供される。これらのオーディオファイルは、ＳＡＹ文により他のオーディオファイルのいずれかと同様に参照される。
【０１９７】
ＳＥＴ文により変数を定義して人形の各々に関連するパラメータを記憶することができ、これについて以下でさらに詳細に説明する。定義できる変数には２つの形がある。
・ローカル変数〜これらは、個々の玩具／人形に関連する変数である。ローカル変数は、個々の人形のデータセット内で作成される。人形変数は、ＤＥＦＩＮＥ  ＶＡＲＩＡＢＬＥ＿ＮＡＭＥ文により作成される。
・グローバル変数〜これらは、「テーマ」に関連する変数であり、個々の人形とは関連性がない。グローバル変数は、ＤＥＦＩＮＥ  Ｇ＿ＶＡＲＩＡＢＬＥ＿ＮＡＭＥ文により作成される。
【０１９８】
テーマ内で定義される変数は、会話中に値が割り当てられるまで、割り当てられた値を有していない。
【０１９９】
変数への値の設定
会話中、定義された変数に値を設定することが必要となる。これはＳＥＴ文で遂行される。以下のように、ＳＥＴ文は、値のセットからランダムに取り出した値で変数を設定できるようにするランダム特徴で構成される。
ＳＥＴ  ＶＡＲＩＡＢＬＥ＿ＮＡＭＥ（［ｗ１，ｖａｌｕｅ１］，［ｗ２，ｖａｌｕｅ２］，．．．．．．．．．．，［ｗｎ，ｖａｌｕｅｎ］）
【０２００】
この命令文の動作は、ＶＡＲＩＡＢＬＥ＿ＮＡＭＥの値を乱数の結果に基づいてｖａｌｕｅ１，ｖａｌｕｅ２，．．．．．．．．．．，ｖａｌｕｅｎのうちの１つに設定することである。どの値が選択されるかの確率は、重み付けｗ１、ｗ２、．．．、ｗｎに基づく。
【０２０１】
例えば、
ＳＥＴ  ＣＯＬＯＵＲ（［１，ｒｅｄ］，［１，ｂｌｕｅ］，［１，ｇｒｅｅｎ］）
という命令文の場合、変数ＣＯＬＯＵＲを等しい確率で赤色、青色又は緑色に設定することになる。人形の変数は、現在の人形との関連において設定される。
【０２０２】
また、ＴＥＳＴ文がｃｏｎｄｉｔｉｏｎ＿ｆｌａｇの状態を作成した場合に限り、ＳＥＴ＿Ｆ文を使用して変数を設定する。この場合、ｃｏｎｄｉｔｉｏｎ＿ｆｌａｇがアクティブな場合かつこの場合に限り変数が設定される。
【０２０３】
コンテキスト参照及び切り替え
ポインタを使用して発話者に関する情報を記憶するとともに、コントローラ人形が他の人形を参照できるようにする。会話を構築する場合、これらを使用して理にかなった会話を作成し、以下が使用するポインタである。
前の発話者（ＰＲＥＶ）＝前の発話者のＩＤ番号
現在の発話者（ＭＥ）＝現在の玩具のＩＤ番号
次の発話者（ＮＥＸＴ）＝選択された次の発話者のＩＤ番号
【０２０４】
人形の会話エンジンの重要な特徴は、どの人形が現在の発話者であるかというコンテキストである。このコンテキストは、現在の人形がアクセスした変数を参照する。前の人形、次の人形、現在の人形の変数のみがアクセスに利用可能である。上記で定義したように、コンテキストの概念は３つの参照ポインタにより処理される。
【０２０５】
コンテキストの制御は、ＳＥＬＥＣＴコマンド及びＳＷＩＴＣＨコマンドの使用により遂行される。ＳＥＬＥＣＴコマンドのいくつかの変形が存在する。これらは以下の通りである。
・ＳＥＬＥＣＴ  ＮＯＴＭＥ〜これは、ランダムに選択された人形のグループの現在の人形以外のいずれかとなるように次の発話者を選択する。
・ＳＥＬＥＣＴ  ＮＥＸＴ〜これは、ランダムに選択された人形のグループのいずれかとなるように次の発話者を選択する。
・ＳＥＬＥＣＴ  ＰＲＥＶ〜これは、前の発話者と同じになるように次の発話者を選択する。
・ＳＥＬＥＣＴ  ＮＡＭＥ〜これは、名前ＮＡＭＥを有する人形を次の発話者となるように選択する。このＳＥＬＥＣＴコマンドの変形は、台本通りの会話のためのものである。
【０２０６】
その後、コンテキストはＳＷＩＴＣＨコマンドの使用により変更される。ＳＷＩＴＣＨコマンドには２つの変形が存在する。
・ＳＷＩＴＣＨ  ＳＰＥＡＫＥＲ  ｌａｂｅｌ〜これは、発話者のコンテキスト及び分岐をラベルが指定する命令に切り替える。コンテキストを切り替えると、前の発話者（ＰＲＥＶ）は現在の発話者（ＭＥ）に等しくなり、現在の発話者（ＭＥ）は次の発話者（ＮＥＸＴ）に等しくなり、次の発話者（ＮＥＸＴ）は未定義となる。
・ＳＷＩＴＣＨ  ＦＩＮＩＳＨ〜これは、会話を終了するために使用するコマンドである。
【０２０７】
条件付きフロー制御
時として、会話中、フローが様々な変数の値に左右される。これは、以下のコマンドで遂行される。
・ＴＥＳＴ  ＥＱ  ｖａｌｕｅ１  ｖａｌｕｅ２〜これは、ｖａｌｕｅ１がｖａｌｕｅ２に等しい場合にｃｏｎｄｉｔｉｏｎ＿ｆｌａｇを設定する。
・ＴＥＳＴ  ＮＥ  ｖａｌｕｅ１  ｖａｌｕｅ２−これは、ｖａｌｕｅ１がｖａｌｕｅ２に等しくない場合にｃｏｎｄｉｔｉｏｎｆｌａｇを設定する。
・＆ＣＯＮＴＥＸＴ．ＶＡＲＩＡＢＬＥ＿ＮＡＭＥ参照を使用することにより、ｖａｌｕｅ１及び／又はｖａｌｕｅ２によって変数を参照することができる。例えば、ＴＥＳＴ  ＥＱ＆ＭＥ．ＮＡＭＥ＆ＰＲＥＶ．ＮＡＭＥという命令は、現在の発話者（ＭＥ）の名前が前の発話者（ＰＲＥＶ）の名前と同じ場合にｃｏｎｄｉｔｉｏｎ＿ｆｌａｇを設定する。
・ＢＲＡＮＣＨ＿Ｆ  ｌａｂｅｌ〜これは、ｃｏｎｄｉｔｉｏｎ＿ｆｌａｇが設定されている場合にはラベルが指定する命令に分岐し、そうでない場合には次の命令を使用する。
・ＣＨＯＯＳＥ＿Ｆ（［ｗ１，ｌａｂｅｌ１］，［ｗ２，ｌａｂｅｌ２］，．．．．．．．．．，［ｗｎ，ｌａｂｅｌｎ］）〜これは、ｃｏｎｄｉｔｉｏｎ＿ｆｌａｇが設定されている場合には重み付けｗ１，ｗ２，．．．，ｗｎを使用してランダム選択に基づいてｌａｂｅｌ１，ｌａｂｅｌ２，．．．ｌａｂｅｌｎが指定する命令に分岐し、そうでない場合には次の命令を使用する。
【０２０８】
人形が別の人形に関する変数の知識を必要とする度に、ＴＥＳＴ文を使用して、変数が未定義であるか、又は特定の値であるかの問い合わせを行う。その後、これをフロー制御に使用することができ、例えば、ＰＥＴという変数が未定義の場合、人形はどのような種類のペットを飼っているかを他の人形に尋ね、変数が設定されている場合にはペットが何色かなどを他の人形に尋ねる。
【０２０９】
無条件フロー制御
時として、命令のフローを無条件で変更できることが必要となる。この場合、ＴＥＳＴ文は使用されずにＢＲＡＮＣＨ又はＣＨＯＯＳＥ文が常に実行される。これは、以下の命令文を使用して遂行される。
・ＢＲＡＮＣＨ  ｌａｂｅｌ〜これは、ラベルが指定する命令に無条件で分岐する。
・ＣＨＯＯＳＥ（［ｗ１，ｌａｂｅｌ１］［ｗ２，ｌａｂｅｌ２］［ｗｎ，ｌａｂｅｌｎ］）〜これは、重み付けｗ１，ｗ２，．．．，ｗｎを使用してランダム選択に基づいてｌａｂｅｌ１、ｌａｂｅｌ２、．．．、ｌａｂｅｌｎが指定する命令に分岐する。
【０２１０】
発話語句
会話エンジンの重要な部分は語句の発話である。これは、以下の命令文で遂行される。
ＳＡＹ（ｐｈｒａｓｅ１，ｐｈｒａｓｅ２，．．．，ｐｈｒａｓｅｎ）コマンド。
このコマンドは、現在の発話者（ＭＥ）である人形に語句ｐｈｒａｓｅ１，ｐｈｒａｓｅ２，．．．，ｐｈｒａｓｅｎを発声させる。
【０２１１】
スクリプト例
以下は短いスクリプトの例である。
ＤＥＦＩＮＥ  ＣＯＬＯＵＲ
ＤＥＦＩＮＥ  ＧＡＲＭＥＮＴ
Ｌｏｏｐ：
ＳＥＴ  ＣＯＬＯＵＲ（［１，ｒｅｄ］，［１，ｂｌｕｅ］，［１，ｇｒｅｅｎ］）
ＳＥＴ  ＧＡＲＭＥＮＴ（［１，ｄｒｅｓｓ］，［１，ｂｌｏｕｓｅ］，［１，ｈａｔ］）
ＳＡＹ（ｈｅｌｌｏ  ｍｙ  ｎａｍｅ  ｉｓ，  ＆ＭＥ．ＮＡＭＥ，  ａｎｄ  Ｉ  ｈａｖｅ  ａ，  ＆ＭＥ．ＣＯＬＯＵＲ，  ＆ＭＥ．ＧＡＲＭＥＮＴ）
ＳＥＬＥＣＴ  ＮＯＴＭＥ
ＳＷＩＴＣＨ  ＳＰＥＡＫＥＲ  Ｌｏｏｐ
【０２１２】
この例では、３色のうちの１色を選んで３着の衣類のうちの１着に合わせることにより、存在する各人形ごとに９つの異なる事柄を発言することができる。
【０２１３】
会話は、多重分岐を使用して構築される。個々の分岐は、テーマに関する異なる会話の領域である。例えば、「Ｚｏｏ（動物園）」というテーマでは、利用可能な分岐は「Ｇｏｒｉｌｌａｓ（ゴリラ）」、「Ｒｅｐｔｉｌｅｓ（爬虫類）」及び「Ｉｃｅ  ｃｒｅａｍ（アイスクリーム）」である。個々の分岐はこれらに関連する語句／単語を有し、その後選択肢からランダムに選択される。人形の応答は、分岐、人形の性格型、及び考えられる応答の重み付けに依存する。
【０２１４】
例えば、選ぶべき次の分岐を決定することが選択に必要な場合、２体（又はそれ以上）の人形が同じ行く場所を続けて選択するまで会話が続く。これにより、選ぶべき分岐を選択する前に合意が必要となるので、より現実的な会話が行われる。
【０２１５】
コントローラ人形が別の選ぶべき分岐を選択できるセクションに達するまで分岐内で会話が続く。この時点で、選ぶべき分岐に関して別の決定が行われる。会話の長さを制限するために、使用されていなかった分岐のみを選択に利用することができる。
【０２１６】
分岐、語句、単語又は次の発話者などの、ランダムに選択できる個々の変数に重み付けが加えられる。語句／単語又は分岐などがランダムに選択される場合、これらの語句／単語の分岐などが選択される確率が重み付けにより変化する。例えば、全ての語句の重み付けが１の場合、これらは全て同じ選択される確率を有する。よりリアルな会話を作成するように重み付けを調整することができる。「今日、私は自転車から落ちた」などの語句は、「今朝、私は朝食を食べた」という語句よりも生じる可能性がはるかに低い。この結果、後者の語句は、前者よりもはるかに大きな重み付けを有するようになる。従って、会話エンジンの結果、ユニットはほんの時たましか「今日、私は自転車から落ちた」と言わないようになる。
【０２１７】
さらなる例では、使用する重み付けを前の人形に優先させることができ、従って２つの人形間のミニ会話を誘導することになる。
【０２１８】
会話の長さを制限するために、テーマの任意の１つの分岐の時間が制御される。これを別の重み付けパラメータとして使用して、例えば１つの分岐で費やされる時間を短縮し、別の分岐で費やされる時間を増やすことができる。これは、無限に続く可能性なく会話の最後に到達させるのに役立つ。
【０２１９】
会話の長さはランダムであってもよいが、場合によっては全ての変数が設定されるまで会話が続く。例えば、ＰＥＴというテーマでは、全ての人形のペットが完全に説明されるまで会話が続く。これは、全ての変数が定義されているかどうかを判定するチェックを行うことにより遂行され、すべて定義済みである場合に限り会話を最後まで許可するものである。
【０２２０】
現在の発話者のみが前の発話者及び次の発話者というコンテキストを有するので、いつ全ての人形の変数が設定されたかを判定することがいつでも可能なわけではない。従って、別の例では、現在のコンテキストにおける３つの人形全て、すなわち、現在の人形、前の人形及び次の人形に関して全ての変数が設定されるまで会話が続く。或いは、続けて２又はそれ以上の組の人形に関して全ての変数が判明するまで会話が続く。
【０２２１】
会話エンジンは、複数の人形、及び２体のジェーンという人形などの同じ種類の潜在的に複数の人形に対処することができる。ネットワークが初期化された場合、ネットワークに参加する個々の人形にネットワークノードが関連付けられる。この結果、システムは、人形の名前ではなく関連するネットワークノードを使用して人形を参照する。これにより、同じ名前の複数の人形をエラーなく参照できるようになる。
【０２２２】
予め会話の全体を決定し、その後人形に直接ダウンロードすることもできる。例えば、シンプソン一家（登録商標）のエピソードをシンプソン一家（登録商標）の人形のグループにダウンロードすることができる。人間が会話を生成し、或いは会話エンジンが会話を生成して後から人間が編集できるので、会話を予め決定することにより、人形が特にリアルな会話を行えるようになる。予め決定される会話を作成する際には同じ命令が使用されるが、起動されるたびに会話が同じになるようにランダム要素は除去される。
【０２２３】
上記の会話エンジンを独立して使用して会話を生成することができる。例えば、漫画などのテレビ番組を書く自動スクリプトに上記の会話エンジンを使用することができる。
【０２２４】
１つの特定の実施形態では、テーマを生成するためにテーマをスクリプトで記述し、その後コンパイラを使用してスクリプトをコンパイルする。実行時エラーチェックを行って、テーマが終わりの無い会話又はその他のエラーを生成しないことを確実にし、その後サニティチェックを行って会話が全く無意味なものでないことを確実にする。その後、オーディオファイルが録音されると、テーマを玩具にダウンロードすることができる。以下でより詳細に説明する代替の実施形態では、テーマスクリプトの生成を容易にするオーサリングツールが提供される。しかしながら、依然としてテーマ内の会話の基本原理が適用される。例えば、両実施形態には、何を発言するかを選択する同じ方法が存在する。
【０２２５】
人形の選択
図３に示すように、会話エンジンは発話者セレクタ２１８を有する。発話者セレクタは、次の発話する玩具を選択する。次の発話する玩具を選択するには、ネットワーク内の玩具のいずれかをランダムに選択する、玩具を名前（ＩＤ番号）で選択する、及び現在の発話者を選択してもう一度発話させるという３つの可能性がある。従って、次の発話者を選択する第１のプロセスは、上記の３つの可能性のいずれを使用すべきかをランダムに選択することである。次の発話者を名前で選択する場合、その玩具がネットワーク内に存在するかどうかを判定するためのチェックを行う必要がある。
【０２２６】
上述したように、ｓｅｌｅｃｔ文が次に誰が発話するかを選択する。次の発話者を決定する場合、選択肢としては、関連する発話で応答すること、別の人形を選択して話しかけること、或いは現在の発話者に関して何かを知らせることがある。
【０２２７】
発話者セレクタ２１８内でＳＥＬＥＣＴ文を使用して、次の発話者のランダム選択を開始する。或いは、ＳＥＬＥＣＴ文が論理を使用して次の発話者への参照を決定することができる。例えば、発話するように選択された次の人形がジェーンである場合、現在の発話者が「ジェーン、あなたの好きなペットは何？」と尋ねることができる。ジェーンが次の発話者として設定されているので、ジェーンから回答が来ることになる。以下の例でわかるように、特定のパラメータが解らなくても＆文を使用して次の発話者、又は他のいずれかの一般的パラメータを参照することができる。例えば、＆ＮＥＸＴ．ＮＡＭＥは次の発話者の変数ＮＡＭＥを参照するものであるが、これを使用して次の発話者の名前を発言することができる。
【０２２８】
人形が続けて２回発話することはできないなどのさらなる選択肢が利用可能であり、従って、例えばジェーンが犬を飼っていると発表した場合、その直後にジェーンが発話するように選択されることはない。
【０２２９】
次の発話する人形を選択するために同様の方法がオーサリングツールにより利用され、これについて以下でさらに詳細に説明する。
【０２３０】
パラメータ記憶
パラメータ記憶メモリ２１６は、現在の会話に関する情報を記憶する。記憶された情報は、すでに使用された語句、使用された変数、フロー制御変数、及びネットワーク内に存在する人形などのその他のこのような情報を含む。情報は、コントローラ人形内にのみ記憶される。スレーブユニットは、次の発言事項に関する情報のみを受信する。
【０２３１】
会話において使用された変数は、後程会話内で参照できるように記憶される。変数は、人形を記述する情報であり、これを使用して性格を差別化する。
「私の犬はＦｌｕｆｆｙという」という語句から記憶される情報は、犬及びＦｌｕｆｆｙという情報である。この変数を使用して、人形が飼っているペットの種類を設定することができる。人形が特定の変数のサブセットのみを有することができるように変数を設定することができる。例えば、女の子の人形がヘビをペットとして有することはあり得ない。
【０２３２】
フロー制御変数を使用して、すでに使用された分岐に関する情報を記憶する。例えば、動物園にいる場合にはゴリラを見に行くように分岐を進めることができる。この情報を記憶して、会話が動物園に戻らないようにする。
【０２３３】
或いは、すでに使用された語句を記憶して、会話が永遠に続かないようにする。１回の会話内で特定の単語／語句を使用できる回数に限界値を設定することができ、この限界値は１回、２回、３回又はそれ以上であってもよい。これにより、会話が過度に反復的にならないことを確実にする。
【０２３４】
パラメータ記憶メモリ内に設定及び記憶できるグローバル変数も存在する。グローバル変数の例には、ネットワーク内の人形の全てに影響を与えるあらゆるものがあり、例えば「外は雨が降っている」であり、又は会話内で人形がずっと居た場所である。グローバル変数には、人形のコンテキストとは無関係にアクセスできるので、テーマ内のどの時点においてもこれを使用することができる。
【０２３５】
テーマ／人形に関する属性を記憶するために、パラメータもオーサリングツールを使用して定義され、これについて以下でさらに詳細に説明する。手短に言えば、テーマ属性／グローバル変数はテーマ全体に関連するパラメータを記憶し、あらゆる人形がいつでもこれにアクセスすることができ、人形属性／ローカル変数は個々の人形に関連するパラメータを記憶し、前の人形／現在の人形／次の人形のみがこれにアクセスすることができる。
【０２３６】
人形固有のダウンロード
図４は、人形がメモリに記憶されたテーマを変更又は更新できるプロセスの概略図である。人形３００は、人形の識別に使用されるＩＤ番号３０２を含む。人形は、ＵＳＢ接続を介してＰＣ３０４に接続され、ＰＣは、標準的な接続方式を介してインターネット３０６に接続されている。インターネットは、ダウンロード可能なテーマ３１０を含むウェブサイト３０８にＰＣを接続することができる。テーマは、接続された人形によって変わるという理由で、ユーザが選択できないサブテーマ３１２を含む。例えば、人形のＩＤ番号を使用して識別されたジャックという人形にはジルのサブテーマは提示されない。テーマは、全ての性格型に対して一般的なものである。サブテーマは、テーマの表現が異なるとともに人形の性格型に依存する点を除き、メインテーマと同一である。従って、オーディオファイルは、異なる声、（同じ意味の）異なる言い回しなど、サブテーマごとに異なる。
【０２３７】
或いは、人形にダウンロードされる最初の性格を使用して、後からダウンロードされた性格を最初の種類と同じになるように制限することができる。例えば、人形がジャックと設定された場合、ウェブサイトは、この人形が接続されたときにジャックのサブテーマを認識し、ユーザにジャックのサブテーマのみを提示する。ウェブサイトは、人形の名前変数、すなわちジャックにアクセスしてこれをサブテーマの名前リストと比較することによりサブテーマを認識する。
【０２３８】
ダウンロードしたサブテーマは、「動物園」などの選択されたテーマのスクリプト、関連する性格型、人形が会話を発声できるようにする対応するオーディオファイル、及びネットワーク内の人形が全て同じテーマを有することを確実にするために使用されるテーマＩＤを含む。
【０２３９】
ＰＣ３０４は、テーマを効率的な態様でダウンロードできるように、人形３００とウェブサイト３１０との間をインターフェイス接続するようになっている。さらに、テーマは人形にのみ記憶され、従ってテーマを必要とする個々の人形はウェブサイトに接続される必要がある。従って、１人のユーザが２つの人形を有し、個々の人形に同じテーマを求める場合、ユーザは個々の人形をウェブサイトに接続して適当なサブテーマをダウンロードする必要がある。
【０２４０】
これとは別に、人形は常に複数のテーマを記憶することができる。人形は、同時に１つのテーマを使用して通信するが、このテーマはコントローラによりいつでも変更することができる。従って、人形は「スポーツ」というテーマを使用して、その後「動物園」というテーマの使用に進むことができる。これにより、会話をより長く継続させることができ、人形の使い勝手を拡張するさらなる組み合わせが与えられる。
【０２４１】
人形は全て、他の人形と同じテーマを有していないときに手短に通信できるようにデフォルトテーマを有する。デフォルトテーマは２、３の基本的な語句を含み、ユーザをウェブサイトに接続してテーマをダウンロードするように導くことができる。
【０２４２】
テーマが安全であることを確実にするために、人形にダウンロードが行われる前に人形の一意のＩＤ番号を使用してデータを暗号化することができる。その後、個々の人形の一意のＩＤ番号を使用してテーマ内のデータを復号化することができる。これを使用して、全ての人形がウェブサイトに接続してテーマをダウンロードすることを確実にすることができる。例えば、個々のジェーンという人形が同じサブテーマを使用したいと思っても、データは特定の人形ごとに別様に符号化されており、従ってこの特定の人形以外にとっては事実上役に立たないものである。
【０２４３】
性格の表現及びテーマのスクリプト記述
前述したように、個々の異なるテーマは、異なる性格を表現できるようにする様々なサブテーマを有する。テーマごとのスクリプトは異なるものであり、これを使用してこのテーマに従う様々な会話を生成する。しかしながら、全てのテーマ内の個々のサブテーマは、会話を生成するための同じスクリプトを有するが、サブテーマ内で使用される言語は異なる。これにより、同じテーマに関して複数の性格を利用できるようにすることができる。
【０２４４】
会話の可変性を増加させるために、同じ質問を尋ねるための複数のランダム選択法が存在する。従って、例えば、単純な質問をする複数の方法が存在し、これは、例えば「次は何をしましょうか」、「次は何をするんだい」、「次は何ですか」のようにテーマ／サブテーマに依存するものであってもよい。個々のサブテーマは、同じ物事を意味するために使用する異なる表現を有することができる。例えば、１つのサブテーマでは「こんにちは、お元気ですか？」と言うことができ、別のテーマでは「やあ、調子はどうだい？」と言う。事実上語句の意味は同じものであるが、表現、従って性格が異なる。このようにして、変化に富んだ面白い会話を作成するために、各テーマがあらゆる数のサブテーマを有することができる。このようにして、ユーザ体験が高められるとともに大量のメモリを必要としないより多様なゲームプレイが可能となる。
【０２４５】
性格の特徴は、同一のテーマに起因することができる。従って、同じテーマのジャックバージョンとジルバージョンとを有することが可能である。ジャックバージョンはサブテーマであり、ジルバージョンもサブテーマである。
【０２４６】
人形の名前、すなわちジェーンが性格型と関連しているので、ジェーンという人形により表される性格は全てのテーマについて同じであり、テーマのコンテンツのみが変化する。これにより、人形は一定のままであることができ、異なる状況でも人形が同じ様に反応できるようになる。
【０２４７】
或いは、人形がウェブサイトにより最初に初期化されるときの人形の名前及び人形の性格を人形のユーザが選択することもできる。これにより、ユーザが人形との関わりをより深めることができる。このとき人形の名前及び性格型が人形内のメモリに記憶され、個々の属性がＩＤと関連付けられ、これが例えばさらなるサブテーマをダウンロードする際に使用される。
【０２４８】
ダウンロード可能なテーマは、表現とスクリプトとの組合せであり、会話の種類を決定付けるものである。
【０２４９】
人形の美的価値観(aesthetics)及び語彙を、ターゲットオーディエンスに応じた年齢となるようにカスタマイズすることもできる。様々なテーマは、年齢に応じた等級を有することができる。これにより、例えば１０代の市場向けにはヒップホップをテーマにした人形が可能となる。
【０２５０】
さらに、別の人形セット（これは単一の人形であってもよい）のみが使用できる語句を提供することができる。この語句が選択された場合、現在の人形が使用できることを確実にするためのチェックが行われる。この人形がこの語句を使用できない場合には別の語句が選択される。
【０２５１】
同様に、命令の部分を別の人形セットのみに制限して、会話にさらなるランダム性を導入することができる。
【０２５２】
或いは、玩具が戦車又は他のこのような玩具の形をとる。この場合の玩具の性格の表現は、会話とは対照的に動きの形をとる。例えば、１つの玩具の戦車が「防御的」性格を有し、別の玩具の戦車が「攻撃的」性格を有することもできる。
【０２５３】
オーサリングツール
オーサリングツールとは、複数の人形に対して様々な会話テーマを作成するために使用できるアプリケーションのことである。上述したような会話は、会話が従うことができる可能性のある分岐が多数であるため、作成にかなりの量の時間が必要とされる。従って、プロセスをより効率化するために、オーサリングツールを提供してこのプロセスを支援する。クライアントアプリケーションは、図１０に示すようなＰＣ１０００又はラップトップ１００２などのパーソナルコンピュータなどで実行されるが、複数のユーザが同じテーマに取り組めるように、或いは単一のユーザが異なる場所から同じテーマに取り組めるように、データはサーバ１００４上に記憶される。サーバ上では、データベースをクライアントアプリケーションとインターフェイス接続するためのウェブサービスが行われる。クライアントアプリケーションは、インターネット３０６を介してサーバ１００４と通信する。クライアントアプリケーションはウェブサービス、ひいてはデータベースへの要求をＸＭＬを使用してフォーマット化し、ＳＯＡＰプロトコルを使用してデータを送信する。
【０２５４】
オーサリングツールの概要
図１１は、オーサリングツールの概要を示す図である。テーマ開発者が玩具のために単純かつ効率的にテーマを出力できるようにするためにユーザインターフェイス１１００が設けられる。設けられたユーザインターフェイスを使用して、開発者は以下のステップに従う。
１.  テーマ生成エンジン１１０２を使用してテーマを作成
２.  玩具生成エンジン１１０４を使用してこのテーマに合わせた玩具を作成
３.  コンテキスト入力ウィンドウ１１０６を使用して個々の玩具ごとに複数のコンテキストを作成
４.  コード生成エンジン１１０８を使用して命令（「Ｃ」コード）を出力
５.  辞書生成エンジン１１１０を使用して個々の人形ごとに記録すべき語句の「辞書」を出力
６．  必要であれば、ＰＣでテーマをテストする際に使用するシミュレーションエンジン１１１１を使用してシミュレーションとしてテーマを出力
【０２５５】
本明細書で使用する場合、用語コンテキストは、例えばテーマ別会話内の個々の位置ごとに、人形が何を発言するか、またどの人形が次に発話するかを決定する少なくとも１つのコンテキストが存在するように、テーマデータ内のコンテンツのサブセットを意味する。コンテキストは、テーマ／人形の属性を設定することもできる。
【０２５６】
コード生成エンジン及び辞書生成エンジン１１１０を使用して命令及び「辞書」がそれぞれ出力されると、記録手段を使用して語句が記録され、レコーダ１１１２を使用してオーディオファイルが作成され保存される。レコーダは、特定の作成中のテーマに必要な表現データの各々を生成するように関係者に促す。その後レコーダは、適当な表現データに対応するＩＤ番号を個々のオーディオファイルに割り当てる。使用時には、玩具のプロセッサが操作するコードにより、適当なＩＤ番号を使用してオーディオファイルが参照され、玩具のスピーカを使用して出力される。
【０２５７】
基本命令セット１１１４（玩具のプロセッサ用ファームウェア）が（コード生成エンジン１１０８により生成される）テーマ別命令セットと組み合わされ、テーマに従って玩具を動作させるために、コンパイラ１１１６を使用して玩具のプロセッサが使用するバイナリファイルにコンパイルされる。上述した先の実施形態では、基本の命令／ファームウェアのセットが玩具のプロセッサメモリに位置し、テーマが変更又は更新されるたびにテーマ別命令セット及びオーディオファイルのみが人形にダウンロードされた。
【０２５８】
命令がコンパイルされると、コンバイナエンジン１１２０を使用してこれらをオーディオファイルと共にバンドルし、個々の人形にダウンロードできるようにする（個々の人形は同じテーマ別命令を含む個別のダウンロードを有するが、これには個別のオーディオファイルが含まれる）。
【０２５９】
オーサリングツールは、テーマを記憶したサーバ１００４及びデータベース１１２２へのアクセス権を有する。テーマは、テーマ開発者により確定されたかどうかに応じて異なるフォーマットで記憶される。未確定のテーマは、オーサリングツールが情報に容易にアクセスできるように記憶され、これは、テーマ名、玩具名、コンテキストなどの参照事項を含むデータベースの形をとる。テーマ開発者がテーマを確定させると、テーマは、未確定フォーマットに加え上述したような命令セットとしても記憶される。これにより、確定したテーマを修正するとともに、先に確定したテーマに基づいて新しいテーマを作成できるようになる。玩具のユーザが自分の玩具／人形１１２６にテーマ別データをダウンロードできるようにするウェブサイト１１２４が提供される。
【０２６０】
オーサリングツールは、上述したようなものを含むいくつかの機能を有する。
１）これを使用して、フォーマット済みのテキストファイルから会話をインポートすることができる。
２）これを使用して、テーマ生成エンジン１１０２を使用して複数の人形のためのテーマ別会話を作成及び編集することができる。
３）これを使用して、シミュレーションエンジン１１１１を使用して会話プロセスをシミュレートし、結果として得られるテーマ別会話のテキスト出力を作成することができる。
４）これを使用して、辞書生成エンジン１１１０を使用して個々の人形に関する記録すべき全ての語句のリストをまとめることができる。
５）これを使用して、コード生成エンジン１１０８を用いて「Ｃ」コード出力（命令セット）を作成することができ、その後これをコンパイルして修正済みプロセッサファームウェアとリンクさせ、ダウンロードの準備が整っている個々の人形のためにバイナリデータファイルを作成することができる。
【０２６１】
会話データの入力
オーサリングツールのアプリケーションユーザインターフェイスを図１２ａ〜図１５に示す。個々のインターフェイスのウィンドウは、入力ウィンドウとインターフェイス接続するか、或いは次のインターフェイスウィンドウへ進むかのいずれかを行うための数多くのナビゲーションボタンを有する。ユーザインターフェイスは、プロセッサ１１５０及び関連メモリ１１５２を利用してテーマ開発者にユーザインターフェイスの様々な態様を表示し、受信機１１５３を利用してユーザが入力したコンテンツを受信する。プロセッサ１１５０及びメモリ１１５２は、ＰＣ１０００又はラップトップ１００２内に位置する。本明細書で使用する場合、用語コンテンツは、スクリプトデータ、表現データ、テーマデータ、人形データ及びユーザがオーサリングツールに入力できる他のあらゆるデータ型を意味する。
【０２６２】
図１２ａは、第１のインターフェイスウィンドウであり、以下の選択肢を有する。
テーマの追加（１１００）：これは新しいテーマを作成するために使用され、通常は使用される最初の選択肢である。図１２ｂ及び１２ｃに示すように、以下の入力を必要とするテーマフォームを立ち上げる。
名前：テーマの名前。これは、ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇのためのプレースホルダである。
人形の数：このテーマ内でサポートされる人形の総数
説明:テーマの説明
テーマ属性:位置などの、テーマのグローバル属性
人形属性：気分などの、人形のローカル属性
【０２６３】
これらの入力は、上述したような会話の構築で必要とされる入力と同等のものである。オーサリングツールの実施形態を参照しながら説明したように、テーマ及び人形属性は、上述のようにそれぞれグローバル変数及びローカル変数と同等のものである。しかしながら、オーサリングツールは、構造化された様々な入力ウィンドウをテーマ開発者に提供して情報を効率よく入力できるようにする。
【０２６４】
さらに詳細には、テーマ属性は、名前及び任意に値から成る。値は、ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇのためのプレースホルダであってもよい。以下で説明するように、ｓｐｏｋｅｒ＿ｔｅｘｔ＿ｓｔｒｉｎｇは、テーマが確定した後に作成される。ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇとは、会話中にアクセスできるサウンドファイルのことである。例えば、テーマが動物園内に位置するとした場合、考えられるテーマ属性は、位置＝「動物園」であり、人形がこれを使用して、例えば「やあ、動物園は本当に楽しいな」と言うことができ、この場合「動物園」という単語は、「位置」というテーマ属性を使用してアクセスされたものである。
【０２６５】
人形属性は、特定のテーマにおける個々の人形が属性に値を必要とするときにインターフェイスウィンドウ内に作成される。例えば、属性の設定が「気分」である場合、個々の人形のこの属性に「楽しい」「悲しい」、「怒っている」などの値が与えられる。会話中、会話エンジンは、人形属性（ローカル変数）のいずれかにアクセスしてその属性を会話で使用することができる。
編集（１２０２）:これは既存のテーマを編集するために使用される。例えば、テーマＡｌｏｎ＃１（１２０６）を選択して編集を押すことにより、ユーザがＡｌｏｎ＃１のテーマの詳細を編集できるようになる。
除去（１２０４）：これは選択したテーマを削除するために使用される。
【０２６６】
図１２ａは、３つのテーマ１２０８、１２０８及び１２１０が作成された後のウィンドウを示している。個々のテーマがテーマの詳細の概要を示しており、これにはテーマの短い説明、テーマに関連する人形の数及びそのＩＤ番号が含まれていることがわかる。テーマのフォームに入力された情報は、その後出力命令を生成する際に検索するためにサーバ１００４内のデータベース１１２２に記憶される。
【０２６７】
テーマが作成されると、ユーザは次のウィンドウへ進んでテーマ内の人形を作成する。図１３ａは人形生成ウィンドウを示しており、ユーザが「人形追加」ボタン１３００を押すと、図１３ｂに示すウィンドウが表示される。このウィンドウを使用することにより、人形を作成し、名前をつけ、短い説明を付けることができるようになる。
【０２６８】
図１３ａ及び図１３ｂに示すウィンドウを使用して、必要なだけの人形を作成することができる。しかしながら、作成できる人形の数は、その特定のテーマに関して前もって決定した人形の最大数により制限される。これらの同じウィンドウを使用して既存の人形を編集することも可能である。このようにして個々の人形を作成することによりサブテーマが生成される。上述したように、サブテーマは個々の特定の人形のテーマである。例えば、会話を記録するために使用する音声は玩具ごとに異なり、コンテキストデータも異なる。この場合も、人形のフォームに入力された情報が、その後出力命令を生成する際に検索するためにサーバ１００４内のデータベース１１２２に記憶される。
【０２６９】
図１４は、テーマ内の個々の人形に対して異なるコンテキストを入力するコンテキスト定義ウィンドウを示している。図１４に示すように、位置１００に２つのコンテキスト１４００及び１４０２が定義されており、１つはＤｏｌｌ＃１のためのものであり、１つはＤｏｌｌ＃２のためのものである。従って、会話内で位置１００がアクセスを受けた場合、上述したような方法により人形が選択され、対応するコンテキストがアクセスを受ける。個々のコンテキストは、人形が何を発言すべきか、及び次にどの人形が発話すべきかに関する情報を保持する。この結果、会話を作成するための構造をテーマ開発者に提供することにより、上述したような会話構築のプロセスが容易化される。テーマ開発者は、もはやテーマ自体をコード化する必要はなく、むしろオーサリングツールが、テーマ開発者の入力に応じて必要なコードを生成する。
【０２７０】
図１５は、テーマ内の個々の位置のためのコンテキスト生成ウィンドウを示す。図１５に示す例では、これは位置１００及びＤｏｌｌ＃１のためのコンテキストである。個々のコンテキストは以下の情報を必要とする。
・Ｐｏｓｉｔｉｏｎ（１５００）〜図１４に示すコンテキスト定義ウィンドウ内で新しいコンテキストが作成される際にオーサリングツールにより自動的に作成されるこの位置を表記するテキスト文字列。これは個々のコンテキスト行にとって便利なラベルである。これはいずれのテキストであってもよいが、デフォルトはコンテキスト行に１００から始めて順に番号を付ける。テキストラベルの使用目的は、会話を作成及び編集している間に明暸さを助長することである。「Ｃ」コードの出力が必要な場合、全ての位置ラベルが、コンテキスト位置に対応するｙｏｕｍｅ＿ｃｏｎｖｅｒｓａｔｉｏｎ＿ｓｔｒｕｃｔ＿ｔ構造（この及び本明細書で説明するその他の構造に利用されるＣコード命名規則）の配列の形のインデックスに変換される。
・Ｓｔａｔｅｍｅｎｔ（１５０２）〜人形が発言できる文のリストであり、ランダム選択プロセスで使用する重み付けを伴う。文は、ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇｓである語句のリストを含む。これは、会話内のこのコンテキストポイントにおいて特定の人形が発言できる文のリストである。個々の文は角括弧で囲まれ、個々の文をコンマで分離し（例えば［ｓｔａｔｅｍｅｎｔ１］，［ｓｔａｔｅｍｅｎｔ２］，［ｓｔａｔｅｍｅｎｔ３］）、又は図１５に示すようにコンテキスト入力ウィンドウの別々の行に入力することができる。文は、ランダム選択用の重み付け及び語句のリストから成る。この場合の重み付けは、ＳＥＴ制御、ＢＲＡＮＣＨ制御又はＣＨＯＯＳＥ制御などの条件付きフロー制御を参照しながら上述したような重み付けと同様の態様で機能する。個々の語句は、明示的なｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇ、又はテーマ属性又は人形属性への参照のいずれかであり、例えば、文はテーマの位置又は人形の気分を参照することができる。明示的ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇｓは、（「こんにちは、お元気ですか」などの）２重引用符内のテキストとして定義される。参照は以下の形を取る
○  ｔｈｅｍｅ．ａｔｔｒｉｂｕｔｅ  テーマ／グローバル属性に関する
○  ｍｅ．ａｔｔｒｉｂｕｔｅ  現在の発話者人形属性に関する
○  ｐｒｅｖ．ａｔｔｒｉｂｕｔｅ  前の発話者人形属性に関する
○  ｎｅｘｔ．ａｔｔｒｉｂｕｔｅ  次の発話者人形属性に関する
○  ｎａｍｅ．ａｔｔｒｉｂｕｔｅ  名前の付いた人形／ローカル属性に関する
以下は、Ｓｔａｔｅｍｅｎｔｓフィールドへの有効な入力例である。
○  ブランク〜これは、この時点でこの人形による発言が存在しないことを意味する。
○  ［１，“ｈｅｌｌｏ  ｈｏｗ  ａｒｅ  ｙｏｕ”］〜この時点で「今日は、お元気ですか」と特定された１つの文のみがこの人形により話される。
○  ［１，“ｈｅｌｌｏ”，ｐｒｅｖ．ｎａｍｅ、ｈｏｗ  ａｒｅ  ｙｏｕ］〜この時点で「今日は」の次に前の発話者名、その後「お元気ですか」がこの人形により話される。
○  ［１，“ｈｅｌｌｏ”］［１，“ｈｉ”］〜等しい重み付けの２つの文。ｄｅｆａｕｌｔ＿ｓａｙ＿ｐｒｏｃｅｄｕｒｅが使用された場合、この時点で５０％の時間は「今日は」がこの人形により発言され、残りの５０％の時間は「やあ」が発言される。
○  ［３，“ｈｅｌｌｏ”］［１，“ｈｏｗｄｙ”］−等しくない重み付けの２つの文。ｄｅｆａｕｌｔ＿ｓａｙ＿ｐｒｏｃｅｄｕｒｅが使用された場合、この時点で７５％の時間は「今日は」がこの人形により発言され、残りの２５％の時間は「よう」が発言される。
・Ｓａｙ（１５０４）〜発言するために使用される手順。ブランクにした場合、ｄｅｆａｕｌｔ＿ｓａｙ＿ｐｒｏｃｅｄｕｒｅが使用される。ｄｅｆａｕｌｔ＿ｓａｙ＿ｐｒｏｃｅｄｕｒｅは、重み付けを使用して利用可能な文の１つをランダムに選択する。或いは、ドロップダウンリストを使用して、異なる言動を提供するあらゆる利用可能な用意されたｓａｙ手順を選択することができる。ドロップダウンリスト内に上述したようなｓａｙ手順を提供することができる。最終的に、特別な動作が必要な場合、必要なｓａｙ手順の「Ｃ」コードをここに入力することができる。
・Ｔｒａｎｓｉｔｉｏｎ（１５０６）〜次の人形を選択するために使用される手順。ＮＯＴＭＥ、ＡＮＹ、ＭＥ、ＰＲＥＶ、ＦＩＮＩＳＨを含む上述の手順のいずれであってもよく、或いは人形の名前の１つ又は何らかの「Ｃ」コードをここに入力することができる。
ブランクにした場合、ＮＯＴＭＥ  ｔｒａｎｓｉｔｉｏｎであるｄｅｆａｕｌｔ＿ｔｒａｎｓｉｔｉｏｎ＿ｐｒｏｃｅｄｕｒｅが使用される。これとは別に、利用可能なｔｒａｎｓｉｔｉｏｎ手順のプルダウンリストが存在する。このリストは、以下の用意されたｔｒａｎｓｉｔｉｏｎで構成され、（各々について詳細に上述したような）ドロップダウンメニューを介してオーサリングツール内でアクセスされる。
○  ＮＯＴＭＥ  現在の発話者を除くいずれかの人形をランダムに選択する。
○  ＡＮＹ  いずれかの人形をランダムに選択する。
○  ＭＥ  現在の発話者を選択する。
○  ＰＲＥＶ  前の発話者を選択する。
○  Ｄｏｌｌ’ｓ  ｎａｍｅ  この人形を選択する。
また、特別なｔｒａｎｓｉｔｉｏｎ動作が必要な場合、必要なｔｒａｎｓｉｔｉｏｎ手順の「Ｃ」コードをここに入力することができる。
・Ｎｅｘｔ（１５０８）〜ランダム選択プロセスにおいて使用される次にどこへ行くかについての分岐選択のリストであり、重み付けを伴う。これは、次のコンテキスト位置のための分岐選択のリストである。個々の分岐選択は角括弧で囲まれ、コンマで区切られる。
分岐選択自体は位置ラベルのリストから成り、ランダム選択のための重み付けを伴う。上述したようなＢＲＡＮＣＨコマンドとフォーマットが類似する。以下は、（各々について詳細に上述したような）このフィールドへの有効な入力例である。
○  ［（１，ｌａｂｅｌ１），（１，ｌａｂｅｌ２）］〜等しい重み付けの２つのラベルの選択を含む１つの分岐選択。
○  ［（１，ｌａｂｅｌ１），（１，ｌａｂｅｌ２）］！［（２，ｌａｂｅｌ３），（３，ｌａｂｅｌ４）］〜２つの分岐選択、最初の方は等しい重み付けの２つのラベルの選択を含み、後の方は重み付け２及び３の２つのラベルの選択を含む。
・Ｂｒａｎｃｈ（１５１０）〜分岐に影響を与えるために使用される手順、フォーマットは、会話構造を参照しながら上述したものと同じである。そうでなければ、何らかの「Ｃ」コードをここに入力することができる。このフィールドは、分岐手順を指定して分岐選択を処理するために使用される。ブランクにした場合、ｄｅｆａｕｌｔ＿ｂｒａｎｃｈ＿ｐｒｏｃｅｄｕｒｅが使用される。ｄｅｆａｕｌｔ＿ｂｒａｎｃｈ＿ｐｒｏｃｅｄｕｒｅは、Ｎｅｘｔリスト内の最初の分岐選択を使用し、与えられた重み付けを使用してラベルの１つをランダムに選択する。その後、コンテキストは、その位置ラベルとして選択されたラベルを有するコンテキスト行に変更される。これとは別に、利用可能な用意された分岐手順のプルダウンリストが存在する。このドロップダウンリスト内に上述したような分岐手順を提供することができる。
・Ａｔｔｒｉｂｕｔｅｓ（１５１２）〜属性、ｓｅＭｌａｇ、及びランダム選択のための値及び重み付けのリスト。このフィールドは、このコンテキストポイントにおいて値で設定を行うためのいずれかの属性を指定するために使用され、すなわちテーマ開発者は、「気分」という人形属性をハッピーに設定することができる。ブランクにした場合、属性は設定されない。設定される個々の属性は、角括弧で囲まれ、コンマで区切られる。角括弧内では、属性が指定された後に、属性を一旦設定すべきか、又はリセットすることができるかを指定するｓｅｔ＿ｆｌａｇが続き、その後ランダム選択のための値及び重み付けのリストが続く。属性フィールドは、上述したようなＳＥＴコマンドの同等物である。以下は、属性フィールドへの有効な入力である。
○  ブランク  属性は設定されない。
○  ［ｍｅ．ａｔｔｒｉｂｕｔｅ１，ｓｅｔ，（１，“ｈｅｌｌｏ”）］  １つの属性が設定され、未だ設定されていない場合、ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇ“ｈｅｌｌｏ”の値に「ハロー」が設定される。
○  ［ｍｅ．ａｔｔｒｉｂｕｔｅ１，ｒｅｓｅｔ，（１，“ｈｅｌｌｏ”）（１，“ｈｉ”）］，［ｍｅ．ａｔｔｒｉｂｕｔｅ２，ｓｅｔ，（１，“ｐｅｔｅｒ”）（１，“ｐａｕｌ”）］
２つの属性が設定される。最初の属性は、すでに設定されていたとしても「ハロー」又は「ハイ」に設定される。次の属性は、未だ設定されていていない場合に「ピーター」又は「ポール」に設定される。
・Ｓｅｔ（１５１４）〜属性値の設定に影響を与えるために使用される手順。ブランクにした場合、ｄｅｆａｕｌｔ＿ｓｅｔ＿ｐｒｏｃｅｄｕｒｅが使用される。ｄｅｆａｕｌｔ＿ｓｅｔ＿ｐｒｏｃｅｄｕｒｅは、ｓｅｔ＿ｆｌａｇを考慮して個々の指定された属性を適当な値の選択に設定する。「ｓｅｔ」のｓｅｔ＿ｆｌａｇは、まだ設定されていない場合に限り属性を設定できることを意味する。「ｒｅｓｅｔ」のｓｅｔ＿ｆｌａｇは、属性を何度でもリセットできることを意味する。これとは別に、利用可能な用意されたｓｅｔ手順のプルダウンリストが存在する。最終的に、何らかの特別なカスタム設定した動作が必要な場合、必要なｓｅｔ手順の「Ｃ」コードをここに入力することができる。
【０２７１】
上述したように、Ｓｔａｔｅｍｅｎｔｓ、Ｓａｙ、Ｔｒａｎｓｉｔｉｏｎ、Ｎｅｘｔ、Ｂｒａｎｃｈ、Ａｔｔｒｉｂｕｔｅｓ、及びＳｅｔのフィールドが個々の人形ごとに反復される。Ｓａｙ、Ｔｒａｎｓｉｔｉｏｎ、Ｎｅｘｔ及びＢｒａｎｃｈのフィールドは全て、玩具／人形間の対話方法に寄与するパラメータであり、これらの全ては会話構造を参照しながら上述したようなコマンドと同等である。
【０２７２】
図１５ｂは、コンテキスト生成ウィンドウの代替の実施形態を示している。領域１５５０に示すように、次の人形がいつ発言するかをユーザが決定できるようにするよう設定できる追加パラメータが存在する。これらのオプションは、後続、開始からの時間を計る、終了からの時間を計る、の３つである。後続パラメータは、発話している人形に続けて、すなわち重ならず交互に会話を継続できるようにする。開始からの時間を計るパラメータは、ユーザに、人形が発話を開始してから次の人形が発話を開始するまでの時間間隔を入力できるようにする。これによって２体の人形が同時に発話できるようになり、例えば複数の人形がジョークに反応して同時に笑うことができる。終了からの時間を計るパラメータは、開始からの時間を計るパラメータと類似しているが、ユーザが、次の人形が現在の人形の発話の終了前に発話を開始するための時間間隔を入力する点が異なる。この機能により、より本物そっくりの会話を構築できるようになる。
【０２７３】
会話が完了するまで、Ｃｏｎｔｅｘｔオプションを繰り返し使用して、会話にコンテキスト行を追加する。
【０２７４】
個々の人形及び個々のコンテキストの定義を含め、テーマが完了すると、オーサリングツールはセーブ機能を提供する。このオプションは会話を保存するために使用され、一例として以下のディレクトリを作成する。
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ〜個々の人形ごと
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ＼ａｕｄｉｏ〜個々の人形ごと
【０２７５】
従って、１つのテーマに必要なファイルは、全てマスターディレクトリフォルダ「ｔｈｅｍｅ＿ｎａｍｅ」内に保存される。個々の人形ごとにサブフォルダを作成して、個々の人形のダウンロードを効率的に管理できるようにする。最終的に、個々の人形のサブフォルダは、この人形に必要なオーディオファイルを記憶するためのフォルダを有する。
【０２７６】
このオプションは以下のファイルも作成する。
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｔｈｅｍｅ．ｔｘｔ〜テキストファイルとしてテーマデータを含む。
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ＼ｄｏｌｌ．ｔｘｔ〜テキストファイルとして人形データを含む。
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ＼ａｕｄｉｏ＼Ａ００００１．ｗａｖ
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ＼ａｕｄｉｏ＼Ａ００００２．ｗａｖ
．．．
．．．
．．．
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ＼ａｕｄｉｏ＼Ａ０００１０．ｗａｖ
．．．
．．．
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ＼ａｕｄｉｏ＼Ａｎｎｎｎｎ．ｗａｖ
【０２７７】
作成されるｗａｖファイルは、個々の人形ごとにテーマ内で定義されるｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇｓの各々のプレースホルダである。ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇｓには、Ａ００００１．ｗａｖから開始する順番でＡ００００ｎ．ｗａｖというファイル名が割り当てられる。ファイル名の中で使用されるｎは、「Ｃ」コードの出力が必要な場合の語句のインデックスとしても使用される。１つの例では、レコーダ（１１１２）が、必要なｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇを上演させるように関係者を促し、その後、次のｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇで関係者を促す前に正しいファイル名でファイルを自動的に保存する。
【０２７８】
また、オーサリングツールは、会話に対応する「Ｃ」コードを生成するようになっている。「Ｃ」コードの大部分は予め定義され（基本命令セット）、玩具／人形のプロセッサのためのオペレーティングシステムとして機能する。会話に対応する「Ｃ」コード（テーマ別命令セット）が出力されると、予め定義された「Ｃ」コードと組み合わされ（図１１を参照）、その後これがコンパイルされて人形又はＰＣ内のプロセッサを操作するのに適したバイナリファイルが作成される。新しいテーマが作成されるたびに人形にオペレーティングシステム／ファームウェアを組み込むことにより、必要なときにいつでも人形の機能を単純かつ効率的に変更できるようになる。
【０２７９】
２種類の「Ｃ」コードを出力することができる。
１．ウィンドウ用「Ｃ」コード〜この「Ｃ」コードは以下の形で保存することができる。
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｔｈｅｍｅ＿ｓｉｍｕｌａｔｉｏｎ．ｃ、及び
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｔｈｅｍｅ＿ｓｉｍｕｌａｔｉｏｎ．ｈ
後でこのコードをコンパイルしてウィンドウベースの会話シミュレーションエンジンとリンクさせることができる。結果的に得られるアプリケーションを、ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｓｉｍｕｌａｔｉｏｎ．ｅｘｅの形で保存することができる。シミュレータにより、ユーザがどの人形を現在の及びアクティブな人形と考えるべきかを指定できるようになる。その後、シミュレータは、実際の人形で行われそうな形で会話例をシミュレートする。シミュレータは、アクティブな人形の１つを現在の発話者となるようにランダムに選択し、この人形の最初のコンテキスト行を処理する。その後、個々の新しい行を順に実行して、どの人形が発話しているか、及びこれらが何を発言しているかを出力する。シミュレータは、会話が終わるまで継続する。
２．プロセッサ用「Ｃ」コード〜後でこのコードをコンパイルし、修正済みのプレイヤとリンクさせて個々の人形ごとのバイナリデータファイルを生成することができる。これらの「Ｃ」コードファイルは、個々の人形ごとに以下の形で保存することができる。
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌｎａｍｅ＼ｙｏｕｍｅ＿ｃｈａｔ．ｃ、及び、
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌｎａｍｅ＼ｙｏｕｍｅ＿ｃｈａｔ．ｈ
結果的に得られるバイナリデータファイルを以下の形で保存することができる。
：ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ＼ｐｌａｙｅｒ．ｓｂ．
【０２８０】
バイナリデータファイルは、個々の人形において会話を実行するために必要な情報セット全体を含む。このバイナリデータファイルはプロセッサ用ファームウェアを含むので、ファームウェアを更新する追加のプロセスを必要とせずに、人形の機能に追加の特徴を組み入れることができる。
【０２８１】
人形用のｗａｖファイルとして正しい語句を記録するために、図１１に示すように、個々の人形ごとに全ての異なる語句（ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇｓ）のリストを作成し、辞書生成エンジン１１１０を使用して出力し、これが個々の人形にとって必要な語句の辞書となる。辞書生成エンジン１１１０は、サーバ１００４内のデータベース１１２２と通信し、データベース内に記憶されたテーマに関する情報に基づいてリストをコンパイルする。この辞書は、事実上、表現／文と、この表現／文に割り当てられたＩＤ番号との間のルックアップテーブルである。
【０２８２】
個々の人形が使用する語句は、個々のコンテキスト行のＳｔａｔｅｍｅｎｔｓフィールド及びＡｔｔｒｉｂｕｔｅｓフィールド内で定義される。これらは明示的に定義されたｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇｓであってもよく、或いはカスタム属性への参照であってもよい。明示的なｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇが定義されるときには常に、Ａ００００１．ｗａｖから開始する順番のＡ００ｘｘｘ．ｗａｖなどのファイル名がこれに割り当てられる。番号ｘｘｘもまた語句のインデックスである。ｓｐｏｋｅｎ＿ｔｅｘｔ＿ｓｔｒｉｎｇｓのリストは以下のファイル内に保存することができる。
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｐｈｒａｓｅｓ．ｔｘｔ〜これは、このテーマで使用される全ての語句のリストを含む。
ｃ：＼ｙｏｕｍｅ＼ｔｈｅｍｅｓ＼ｔｈｅｍｅ＿ｎａｍｅ＼ｄｏｌｌ＿ｎａｍｅ＼ｐｈｒａｓｅｓ．ｔｘｔ〜これらは、個々の人形が使用する全ての語句のリストを含む。
【０２８３】
これらのファイルは、以下のフォーマットのテキストを含む。
Ａ００ｘｘｘ  テキストとしての関連語句
【０２８４】
このようにして、語句のリストを順番に記録し、適当なファイル名で保存し、人形内で使用するための、或いはＰＣが仮想人形として機能する場合にはＰＣ内で使用するためのダウンロードに向けて準備することができるので、数多くのｗａｖファイルを作成するプロセスが単純化される。
【０２８５】
図１２ａに示すように、ファイルを生成するプロセスは、ボタン１２１２「ファイルの生成」により起動される。ユーザは、完了している適当なテーマを選択してボタン１２１２を押す。これにより、上述したようなファイルが生成される。その後、ファイルのバンドル全体が人形にアップロードされ、このバンドルは、テーマ及び付随するオペレーティングシステムのバイナリファイル、発話のためのサウンド（ｗａｖ）ファイル及びプロセッサ動作コード（ファームウェア）を含む。
【０２８６】
上述したように、ｙｏｕｍｅ＿ｃｏｎｖｅｒｓａｔｉｏｎ＿ｓｔｒｕｃｔ＿ｔという会話構造の配列が会話の主な制御データである。概略的には、コントローラ人形において会話が操作される場合、最初の人形に関するこの配列のインデックス１により指定されたコンテキストにおいて会話エンジンが起動する。その後、以下の行動を行う。
１.現在のコンテキストのｔｒａｎｓｉｔｉｏｎ手順を呼び出して、どの人形が次になるかを決定する。
２.現在のコンテキストのｓｅｔ手順を呼び出して、コンテキスト内で指定されたあらゆる属性の値を設定する。
３.現在のコンテキストのｓａｙ手順を呼び出して、コンテキスト内に指定されたデータに従ってどの文を発言すべきかを選択する。この結果、現在の人形がコントローラ人形でない場合、遠隔の人形との無線通信が行われる。いずれにせよ、エンジンは手順の前にオーディオ出力が完了するまで待機する。
４.コンテキストのｂｒａｎｃｈ手順を呼び出して、次のインデックスを選択し、使用する会話配列に入れる。
５.前の人形ポインタ（ｐｒｅｖ）を現在の人形ポインタ（ｍｅ）と同等に設定する。
６.  現在の人形ポインタ（ｍｅ）を次の人形ポインタ（ｎｅｘｔ）と同等に設定する。
次の人形ポインタは、ステップ１において設定済みである。
７.その後、新しいインデックス及び新しい人形で再びステップ１から開始し、ステップ４の１つにおいてＦＩＮＩＳＨ分岐にぶつかるまでこのプロセスを継続する。
【０２８７】
図１２ｄに示す代替の実施形態では、会話を入力する追加の方法を提供する。「インポートテーマ」ボタン１２５０は、ユーザがテーマ別会話を作成するためにテキストファイルをインポートできるようにする。テキストファイルをインポートには、ファイルを適切にフォーマットしなければならない。このインポートテーマ機能は、テキストファイルを人形にアップロードするのに適したフォーマットにユーザからのさらなる入力を伴わずに直接変換できるようにする。
【０２８８】
テキストファイルのコンテンツは、テーマを構築するために必要なコンテンツの一部又は全てとすることができる。例えば、テキストファイルは、あらゆる話題に関する（好ましくは内蔵された）会話全体を含むことができる。次に、この会話全体をオーサリングツールにインポートして、人形を制御するのに適したフォーマットに変換する。テキストファイルは、見た目が（プレイなどのための）スクリプトと同様であり、人形名の後にこの人形が発言すべき単語が続く。オーサリングツールは、テキストファイル内を進み、人形名を抽出し、図１３ａ及び図１３ｂを参照しながら上述したようにこの名前の人形を作成し、その後対応するテキストをコンテキスト（コンテキストについては上記でより詳細に説明している）として記憶する。抽出手順中、オーサリングツールは、同じ人形名が以前にテキストファイルから抽出されたことがない場合にのみ新たな人形を作成する。この場合、対応するテキストがこの人形の別のコンテキストとして記憶される。この手順は、テキストファイル全体がオーサリングツール内に解析され終わるまで継続する。
【０２８９】
図１２ｅはテキストファイルをオーサリングツール内にインポートする処理のフロー図である。インポート手段が、人形名に関連するテキストの行を識別し、この名前の人形が存在しない場合、人形を作成する。次に、テキストがオーサリングツールデータベースにインポートされ、対応する人形のコンテキストに関連付けられる。この処理は、テキストの行が全てオーサリングツール内にインポートされるまで継続する。テキストファイルが解析されるようにするためには、これを正しくフォーマットしなければならず、この場合、人形名の後にコロンを続けなければならず、後続する人形のための個々の入力は新たな行に行わなければならない。付録Ｉには、以下のフォーマット要件を使用してフォーマットしたテキストファイルの例を示す。
・＄Ｔｈｅｍｅ：
・この記述に続くテキストはテーマ名としてインポートされる。
・＄Ｄｏｌｌｎ：
・この記述に続くテキストはＤｏｌｌｎと呼ばれる人形のための記述としてインポートされる。
【０２９０】
上述したように、オーサリングツールは、テキストファイルを解析してしまうと出力命令を生成する。この実施形態では、テキストファイル会話エンジンが、確定的会話のみを作成できるようにする。しかしながら、後述するように、テキストファイルがオーサリングツール内にインポートされると、ユーザは、さらなる確率的結果を含めるように会話を修正することができる。
【０２９１】
ＵＳＢ通信ドングル
さらなる実施形態では、ＰＣが本明細書で説明するような玩具と無線で対話できるようにするＵＳＢ通信ドングルが提供される。図１６は、ＰＣ３０４に取り付けられ、人形１００と無線通信しているＵＳＢ通信ドングル１６００の概略図である。ドングルは、無線モジュール１０４と、ＩＲ／ＲＦ送／受信機２１２と、インターフェイス１６０２とを含む。これらの構成要素は、インターフェイス１６０２を除き、上述したような人形１００内に含まれるものと同じものである。しかしながら、ＰＣ３０４は、人形１００が有するような独立したプロセッサを有するドングルの代わりにプロセッサ１６０４として利用され、従って事実上、ＰＣが物理的人形１００と通信できる仮想人形になる。仮想人形には、現実の人形と同様の外観を有することができる、ＰＣのモニタに表示されるアニメ化したアバターが提供され、これによりアバターのアニメーションが人形の発話と同期化される。会話を実行するために、ＰＣは、玩具のプロセッサをエミュレートするためのエミュレータをメモリ１６０６内に記憶している。或いは、上述したように、オーサリングツールがＰＣベースの仮想人形の特定のコードを出力する。いずれにせよ、テーマ別会話データを使用し、玩具／人形のファームウェアをエミュレートするＰＣ上で実行されるアプリケーションを使用して会話が実行される。玩具／人形の発話は、ＰＣのスピーカを介して出力される。
【０２９２】
インターフェイス１６０２はＵＳＢ接続であり、無線通信ドングル１６００をＰＣ３０４に接続するための効率的な方法を提供する。ドングルが使用する無線通信プロトコルは、本明細書で説明するような人形間で使用されるものと同じものであり、すなわちＩＥＥＥ８０２．１５．４．である。
【０２９３】
ユーザは、ウェブサイトに接続すると、ＵＳＢ通信ドングルを使用して物理的人形とウェブサイト内でアニメ化された仮想人形との間の会話を容易化することができる。このようにして、１人のユーザが、複数の物理的人形を必要とせずに人形の会話エンジンの機能を使用することができる。また、仮想人形は、複数の物理的人形との会話に参加することができる。２人のユーザが各々ＵＳＢ通信ドングルを取り付けたラップトップコンピュータを有する場合、仮想人形が他の仮想人形と対話することもできる。
【０２９４】
ゲームのプレイ
さらなる実施形態では、玩具が子供とゲームをプレイするようにもなっている。例えば、ヘビとはしご、ネズミ取り、ルード又はサイコロを使用してプレイすることができる他のあらゆる偶然に基づくゲームなどのボードゲームを玩具がプレイすることができる。
【０２９５】
玩具には、サイコロをシミュレートするために使用される乱数発生器が設けられる。さらに、玩具は、駒がボードに沿って進むことができるスペースの数を計数するようになっている。玩具は、駒を必要なスペースの数だけ移動させるように音で子供に合図する。子供が駒を移動させると、子供はボタンなどを押すことにより、次の玩具／子供の番であることを玩具に示す。或いは、ボードは対話型でもあり、プレイボードからカウンタの位置に関する情報を受信するセンサなどを含む。プレイは、勝者が出るまでこのように進行する。
【０２９６】
図５は、ゲームエンジン４００をさらに含むコントローラ玩具２００の概略図である。残りの構成要素は、図２及び図３で説明したものと同じである。ゲームエンジン４００は、ボードメモリ４０２と、乱数発生器４０４と、位置ＲＡＭ４０６と、確認応答受信機４０８とを含む。
【０２９７】
ボードメモリ４０２は、ヘビとはしご又はルードなどのボードゲームのレイアウトに関する情報を記憶する。乱数発生器は、サイコロをシミュレートするために使用され、数字１、２、３、４、５及び６（又は、ゲームに適した他のいずれかの数字セット）を生成するようになっている。位置ＲＡＭは、この場合はコントローラ及び３つのスレーブであるが、プレイヤの各々のボード上の位置に関する情報を記憶するために使用される。ボードメモリ及び仮想サイコロの転がりとともにこの情報を使用して、駒が移動するのに適した位置の数を計数し、駒が移動するスクウェアにはしごの底部又はヘビの頭部などの何らかの特別な関連性があるかどうかを識別する。
【０２９８】
会話エンジン２０４は、ゲームエンジンから得られる情報を利用してスペースの数を計数し、例えば最初の位置がスクウェア１３であり、仮想サイコロを転がして４が出た場合、人形が「４が出て、１４、１５、１６、１７と移動したよ」）とスピーカ２１０を介して発声する。この例では、スクウェア１７がヘビの頭部とした場合、人形は「あらら、スクウェア６までヘビを滑り落ちてしまった」と発声するであろう。計数メカニズムは、テキストを適当な回数循環し、そこで位置ＲＡＭ４０６内の最終位置を思い出す。従って、例えば仮想サイコロを転がして４が出た場合、数字のリストに４回アクセスして最終結果を出す。
【０２９９】
また、人形は、子供が起動する外部乱数発生器から情報を受信することもできる。このようにして、子供が人形と一緒に遊ぶことができ、人形は、子供を含むプレイヤの駒の全ての経過を追っていつ勝者が出たかを判定することができる。
【０３００】
図６は、ゲームをプレイするプロセスのフロー図である。ゲームはユーザにより開始され（ステップ５００）、コントローラ人形がプレイヤの数を判定するためのチェックを行う（ステップ５０２）。次に、コントローラ人形が乱数発生器などを使用して最初のプレイヤを決める（ステップ５０４）。次に、コントローラ人形が最初のプレイヤのために仮想サイコロを転がし（ステップ５０６）、或いは子供が最初のプレイヤの場合には、コントローラ人形が子供にサイコロを転がすように求める。次に、コントローラ人形は、プレイヤにカウンタ／駒をボード上の対応するスクウェアの数だけ移動させるように指示し（ステップ５０８）、その後子供がカウンタを移動させたという確認応答を待つ（ステップ５１０）。ステップ５１２において、コントローラ人形は、子供にカウンタが移動したという確認応答を促すまで、２秒、３秒、５秒又は８秒などの所定の秒数待つ。コントローラ人形が確認応答を受信すると、プレイヤがゲームに勝ったかどうかを判定するためのチェックが行われる（ステップ５１４）。プレイヤがゲームに勝っていなかった場合、プレイは次のプレイヤへ進み（ステップ５１６）、プレイヤが勝つまで（ステップ５１８）ステップ５０６からプロセスが続く。
【０３０１】
ゲームエンジンは、上述した方法であらゆるルールに基づくゲームをプレイするようになっている。
【０３０２】
或いは、システムがＣ言語などの従来のプログラム言語を実行し、より複雑なアルゴリズムを実行してチェスなどのより複雑なゲームをプレイすることができる。上述したものと同じ言語を使用して会話を生成し、またこの言語がＣ言語プログラムから参照されるであろう。
【０３０３】
このような玩具及び人形は子供に異なる対話の機会を与え、子供たちのプレイを向上させる。
【０３０４】
テーマの例
会話を構築する異なる方法の様々な例が存在する。例えば、動物園というテーマとペットというテーマなどのランダムに生成された会話、台本通りの（確定的）会話、ヘビとはしごなどをプレイできるようにするゲームをプレイするというテーマを有することができる。
【０３０５】
ユニットのプロセッサ１０２を、会話コンパイラ２０６、会話データベース２０８及びパラメータ記憶装置２１６などのその他のモジュールとともに使用してテーマ内のスクリプトを解釈する。例えば、変数が定義された場合、パラメータ記憶装置内でメモリが割り当てられる。会話が開始されるたびに、パラメータ記憶装置内で変数が割り当てられる。これによりテーマを変更すること、すなわち動物園からペットへの変更ができるようになり、また前の会話からの変数と衝突することなく適当なメモリリソースに新しい変数を割り当てできるようになる。さらに、ＰＲＥＶ、ＮＥＸＴ及びＭＥなどのパラメータにもパラメータ記憶装置内のメモリが割り当てられる。これにより、ＳＥＬＥＣＴ文がスクリプト内のパラメータを参照できるようになる。
【０３０６】
ＳＡＹ文を使用する場合、コントローラ人形は、無線モジュール及び送信機を使用して関連する人形へコマンドを送信するために上述の通信プロトコルを使用するか、或いはコントローラ人形が現在の発話者である場合にはコントローラ人形の関連するモジュールを利用するかのいずれかを行う。発話するために必要な人形内の発話コンパイラ２０６を利用して、発話データベース２０８内の適当なオーディオファイルにアクセスする。例えば、動物園というテーマ内のＳＡＹ文を含む最初の行は、「ＳＡＹ（ｉ  ｔｈｉｎｋ  ｗｅ’ｖｅ  ｓｅｅｎ  ｅｖｅｒｙｔｈｉｎｇ  ｎｏｗ，ｐ０３，ｌｅｔｓ  ｇｏ  ｈｏｍｅ）」である。この文は、会話データベース内のオーディオファイルへの３つの参照で構成される。これらの参照は、「ｉ  ｔｈｉｎｋ  ｗｅ’ｖｅ  ｓｅｅｎ  ｅｖｅｒｙｔｈｉｎｇ  ｎｏｗ」、「ｐ０３」、及び「ｌｅｔｓ  ｇｏ  ｈｏｍｅ」である。これらはすべてオーディオファイルを参照するが、「ｐ０３」という参照は特定の長さの休止を意味する。この休止は、オーディオファイルに適当に間隔をあけるために使用される空白のオーディオファイルである。その後、会話コンパイラ２０６がスピーカ２１０を使用してオーディオファイルを再生する。
【０３０７】
いずれの場合にも、プロセッサがコードを解釈し、適当なモジュールを利用して文を実行する。
【０３０８】
代替の実施形態では、本明細書で説明するように、プロセッサが内蔵インタプリタを使用せず、代わりに個々のテーマが、プロセッサが正しく機能できるようにする全てのプロセッサ制御命令を含むバイナリデータファイルで構成される。これにより、事実上必要なときにはいつでもプロセッサのファームウェアを新機能に更新できるようになる。以下で提供するテーマの例は、全てオーサリングツールを使用して生成することができる。しかしながら、玩具／人形を制御するための命令は、コンパイルされた「Ｃ」コードのバイナリファイルとなるであろう。
【０３０９】
プロセッサ及び関連電子部品
図８は、図２及び図３に示す概略図の潜在的生産バージョンのための回路図及びパーツリストの概略を示しており、付録IIが図８内の構成要素について詳述する。図９は代替の回路図の概略を示しており、付録IIIが図９内の構成要素について詳述する。生産回路に含めることができる選択肢が存在し、これらについては後で説明する。
【０３１０】
回路は以下を含む。
・Ｊｅｎｎｉｃ無線コントローラ
生産回路はＪｅｎｎｉｃＩＣを使用し、ＲＦ回路を含み、ファームウェアとデータとを組み合わせて単一の大型フラッシュメモリＩＣにする。Ｊｅｎｎｉｃ無線コントローラは、例えばＺｉｇｂｅｅ無線通信プロトコルを使用して人形間で通信を行うことができる。
・充電器
生産回路は、ＵＳＢポートから充電するように特別に設計された部品を使用し、充電中に回路に給電も行う。
・音声増幅器
生産回路上の音声増幅器はＤ級オーディオアンプである。このアンプは非常に効率がよい（〜８０％）。
【０３１１】
技術的選択肢
このセクションでは、図８の生産回路に含まれていない考えられる選択肢について説明する。
・ＵＳＢインターフェイス
ＦＴＤＩ  ＦＴ２４５ＲＱ
この構成要素は、主にＵＳＢドライバソフトウェアを備えたすぐに使用できるＩＣとして選ばれたものであり、開発労力を低減させる。主な欠点は、Ｊｅｎｎｉｃ上のほとんどのＤＩＯｘ線を使用するという点である。これは現行の設計には問題ないが、会話圧縮ＩＣなどの他の選択肢にＤＩＯｘ線が必要とされる場合、この部品は不適当なものとなる。
【０３１２】
代替の実施形態
以下の両選択肢は、ＵＳＢ内蔵８ビットマイクロコントローラＩＣ及びＳＰＩスレーブインターフェイスである。これらはいずれもこれらを機能的にするために開発されたファームウェア及びソフトウェアドライバを有する必要があるが、両メーカは、このプロセスに役立てるためのリファレンス設計、利用上の注意などを提供している。これらの部品の利点は、ＪｅｎｎｉｃＳＰＩインターフェイスとインターフェイス接続することができ、また１本のＤＩＯｘ線しか必要とせずに他のＤＩＯｘ線を他の用途のために解放する点である。
【０３１３】
玩具は、複雑なＵＳＢ要件を有しておらず、唯一の要件は、プログラムされるデータをフラッシュメモリにダウンロードすることである。装置は、メモリスティックなどのいかなる一般的な装置の機能にも対応する必要はない。これにより必要な開発労力が低減される。
【０３１４】
以下で特定する部品は、単純な低出力埋込み型アプリケーションを対象とするとともにＳＰＩスレーブインターフェイスを有するものとして選んだものである。しかしながら、メーカのグループ又は他社メーカから得られる装置も同様に適している可能性が十分にある。
Ｃｙｐｒｅｓｓ  ＣＹ７Ｃ６３８３３−ＬＦＸＣ
Ａｔｍｅｌ  ＡＴ９０ＵＳＢ８２−１６ＭＵ
【０３１５】
電池
リチウムイオン
図８及び図９に示す回路はリチウムイオン（Ｌｉ＋）電池を使用する。
３つの理由からＬｉ＋電池を選択した。
ｉ）形状〜実証機のプロジェクトに便利であった平坦プリズム状パッケージの形で利用可能である。
ｉｉ）開発しやすさ〜Ｌｉ＋の充電要件は、特に充電器が追加の回路に同時に給電する必要がある場合に代替品よりも単純である。
ｉｉｉ）電力容量〜実証機起動時の控えめな電力要件の評価値が、利用可能な空間が狭くてもＬｉ技術が十分な電力を与えることが示唆していた。
（後述を参照）。
代替の充電技術は、ＮｉＭＨ及びＮｉＣａｄである。ＮｉＭＨは、ＮｉＣａｄ（Ｌｉ＋より複雑な）と同様の充電要件を有するが、Ｌｉ＋と同様の（より高い）出力密度（特定の物理体積に関しては保持電力が大きい）及び価格を有する。
【０３１６】
ＮｉＣａｄ／ＮｉＭＨ
このセクションでは、Ｌｉ＋と比較したＮｉＣａｄ／ＮｉＭＨ電池の特性について考察する。説明を簡潔にするために、以下のセクションではＮｉＭＨをＮｉＣａｄと表記する。
【０３１７】
ｉ）形状
通常、ＮｉＣａｄ電池には単三及び単四などの標準サイズがあるが、他の形状も利用可能である。小型の構成要素を使用でき、２ピース及び／又はフレキシブル回路／コネクタなどのより複雑なＰＣＢの製造コストが抑制事項にならないと考えられる生産環境では、標準サイズの電池の使用を可能にすることができる。
【０３１８】
ｉｉ）開発しやすさ
新しいデータをダウンロードできるように、（ＵＳＢポートから）電池を充電すると同時に（ＵＳＢポートから）回路に電源を入れる必要がある（電池の充電と回路への給電とを同時に行うことはできない）。充電中に回路を電池から絶縁すること、或いは回路を接続したままにすることのいずれもが可能である。電池を絶縁するにはより複雑な回路を伴う。回路を接続したままにすることは、回路が制御している電池への通常の電流と、玩具の回路が受ける余分な電流との両方を充電器が見ることを意味する。
【０３１９】
Ｌｉ＋充電器の場合、回路を接続したままにすることはそれほど重大な問題ではない。主な欠点は、Ｌｉ＋電池が完全に充電されると充電器の電源を切ることが一般的であるという点である。この機能は禁止する必要があり、そうでなければ玩具の回路も同様に電源が切れてしまう。この結果、電池の寿命が短縮される。
【０３２０】
ＮｉＣａｄ充電器の場合、回路を接続したままにすることは極めて重大な問題である。ＮｉＣａｄ電池のほうが、特に充電の終了頃に充電プロファイルが複雑になる。このプロファイルが正しく検出されない場合、電池が二度と完全充電されないか、或いは電池が過充電された結果、電池への損傷及び過大な温度上昇が発生する。充電器は、このプロファイルを検出する２つの方法のうちの１つを使用する。第１の方法は、電池により引き込まれる電流の変化によるものである。残念ながら、現在の回路により引き込まれる電流では、充電器を混乱させた結果、危険な状況を生じる可能性がある。第２の方法は、電池の温度の変化を検出することによるものである。しかしながら、電池の充電部品も通常の使用中に高温になる。この用途では、信頼できる結果が得られるほど十分に電池を熱的に絶縁することは困難であると考えられる。
【０３２１】
電池を絶縁することは、図８の回路が採用する解決策である。充電器のＩＣは、高性能の電力管理回路を組み込んで絶縁を行う。この統合電力管理は、既製品におけるＮｉＣａｄ技術には利用不可能である。従って、これは別個の構成要素又は特注のＩＣにおいて実現されることになる。
【０３２２】
ｉｉｉ）電力容量
このセクションでは、人形の電子部品に関する電源要件について説明する。このセクションで使用される電池寿命は、以下の電池容量に基づくものである。
・単四アルカリ＝１１５０ｍＡｈ  ＠１．５Ｖ
・単四ＮｉＣａｄ＝３００ｍＡｈ  ＠１．２Ｖ
・単四ＮｉＭＨ＝７５０ｍＡｈ  ＠１．２Ｖ
・Ｌｉ＋プリズム状＝６２０ｍＡｈ＠３．７Ｖ
注：Ｌｉ＋電池は、同じ定格の場合他の電池の２倍の電力を保持するが、その理由は電圧が２倍の大きさだからである。２つの単四電池を直列で使用する必要があり、或いは１つの単四を昇圧型コンバータと共に使用してその能力を半分とする。
【０３２３】
図９に示す回路の電力評価
推定電力消費量＝発話時１３６ｍＡ、その他の場合４８ｍＡ。これは、以下で構成される。
・Ｊｅｎｎｉｃモジュール＝４８ｍＡ
・音声ドライバ
２５０ｍＷ最大８オームスピーカ出力＝１７５ｍＡ、ただし、各々の人形が時間の半分ずつ発話する２つの人形間の会話において＝＞８８ｍＡ
注：スピーカが時間全体にわたって最大電力で駆動されることはありそうにないが、オーディオアンプは１００％効率ではないので、８８ｍＡが合理的な妥協点である。
・残りの回路＝無視できる
【０３２４】
実証機の評価に基づく電池寿命。
0005404781.tif 000002
実証機にとっては、単一のプリズム状Ｌｉ＋による解決策が当然の選択であった。
【０３２５】
図８に示す回路の電力要件。
全体的な電力消費量の中で音声電力が最も重要な因子であるため、より正確な値を得ることが重要である。最良の方法は直接測定であるが、これは音声パフォーマンスが一旦終了したときに限り可能である。
【０３２６】
しかしながら、音声電力が推定値ほど大きくないであろうことを示唆するいくつかの要素が存在する。
・発話の特性により、波形の平均電力はピーク振幅をかなり下回るものとなる。例えば、発話は多くの休止を含む。従って、回路が最大平均出力レベルを下回るレベルで駆動する可能性がある。
・生産回路で使用されるＤ級アンプは、図９に示す回路のものよりもはるかに良好な効率を有し、この結果大幅な節電となる。
【０３２７】
実証用の会話のさらに詳細な計算及び分析により、平均音声電力は会話中１０ｍＡにすぎず、従って２つの人形間の会話に関しては５ｍＡという平均値になることが示唆されている。これにより、発話時に合計５３ｍＡで非発話時に４８ｍＡをもたらすＪｅｎｎｉｃ電力が優勢となる。
注：この音声電力レベルは、音楽ではなく発話音声に関するものである。
音声電力の改良評価に基づく電池寿命
0005404781.tif 000003
【０３２８】
Ｊｅｎｎｉｃの電力消費量を削減する方法が存在する。現在、Ｊｅｎｎｉｃは常にオンであり、絶えずメッセージを探っている。ファームウェア及び人形が互いに通信する方法の変更により、絶えず探っている必要があるのは（最初に電源が入れられる）１つの人形のみとなる。他の人形は、発話する必要がある場合には定期的に第１の人形に確認することができ、この短時間の間のみ給電される必要がある。残りの時間は、Ｊｅｎｎｉｃは低電力スリープモードに入ることができる。１０％の負荷サイクルが達成可能な場合、これにより非発話時に１０倍の電力消費量が削減される。発話時にはＪｅｎｎｉｃに給電する必要があるが、メッセージを探る必要がないので、ＲＦ部は非給電状態にすることができる。これによりＪｅｎｎｉｃの電力消費量が４倍削減される。従って、全体的な電流消費量を発話時には１４ｍＡに、非発話時には４ｍＡに低減させることが可能となる。
【０３２９】
ほとんどの人形がこの低減された電力要件を有するようになるが、（最初に電源を入れられる）１つの人形にはこの節電が行われないことになる。人形の起動方法の変更により、これも同様に低減させることが可能になると思われる。どのようなことが実現可能であるかを判定するためにはさらなる調査が必要である。
【０３３０】
低減されたＪｅｎｎｉｃの電力要件に基づく電池寿命
0005404781.tif 000004
これらの電力要件を実現できる場合、２本の単四標準、ＮｉＣａｄ又はＮｉＭＨ電池が使用可能になる。
【０３３１】
自動電源オフ機能
人形の電子部品の現在の仕様では、オン／オフスイッチが回路の作動を制御する。他の玩具とは異なり、人形は、アクティブな人形のいずれか１体のボタンが押されるのを待って受動的に座っているので、いつ人形のスイッチがオンになるかは明らかでない。これは、人形の電源をオフにするのを忘れる可能性が高いことを意味する。このため、（翌日などの）次回人形で遊ぶときには電池が切れてしまっている結果となる。
【０３３２】
回路がひとりでに『スタンバイ』モードに切り替わり、電流をほとんど引き出さないようにすることは可能であるが、これは現在の機能仕様には含まれていない。電子部品がいつこのスタンバイモードに入るか及びどのようにして再起動するかは、人形の全体的な挙動及びパフォーマンスに密接な関係がある。
【０３３３】
発話の圧縮
発話の圧縮により、同じメモリ量により多くの音声データを記憶できるようになる。現在の設計には発話圧縮技術は含まれていない。現在の設計では、結果として６４ｋｂｐｓ（ビット／秒）のデータ転送速度をもたらす８ビット８ｋＨｚの音声データが使用され、約１０００秒（１７分）の音声データを記憶できるようにする６４Ｍｂｉｔ直列フラッシュメモリが使用されている。会話の圧縮を使用して、このデータ転送速度を２ｋｂｐｓと８ｋｂｐｓとの間に下げることができるが、圧縮率を高くするほど音声品質は低くなる。
つまり、８ｋｂｐｓの場合、４Ｍｂｉｔフラッシュメモリは約５００秒（８  １／２分）の音声データを保持することができる。
【０３３４】
圧縮音声データは、再生時に解凍を必要とする。これは、ソフトウェア又は専用ハードウェア内で行うことができる。２、３の選択肢を以下に示す。
【０３３５】
Ｊｅｎｎｉｃコントローラ上でのソフトウェア解凍
この選択肢は幅広く調査されていない。まず、適当な圧縮／解凍アルゴリズムのソースコードを発見し、このアルゴリズムをＪｅｎｎｉｃコントローラに移植できるようにする必要がある。次に、このアルゴリズムが必要とし、Ｊｅｎｎｉｃコントローラ上で利用可能な処理電力の分析を行う必要がある。
【０３３６】
Ｓｅｎｓｏｒｙ社の音声合成ＩＣ
Ｓｅｎｓｏｒｙ社は、マイクロコントローラのファミリを２つ有する。ＳＣ−６ｘファミリは、事前プログラムされたＳＣ−６９１スレーブシンセサイザを有する。これは、Ｊｅｎｎｉｃとインターフェイス接続するのに９本のＤＩＯｘ線を必要とする４ビットＭＣＵインターフェイスを有し、３２オームのスピーカを直接駆動させることができる。新しい方のＲＳＣ４６ｘファミリは、事前プログラムされたスレーブシンセサイザを有していないので、カスタムファームウェアを開発することが必要となる。Ｊｅｎｎｉｃとは４ビット、又は８ビットＭＣＵインターフェイス（９本又は１５本のＤＯＩｘ線）でインターフェイス接続するようになるであろう。しかしながら、こちらのほうがプロセッサは強力であり（音声認識アルゴリズムを処理することができる）、８オームのスピーカを直接駆動させることができる。Ｊｅｎｎｉｃは両方に対応する十分なＤＩＯｘ線を有していないので、これらの部品のどちらもＵＳＢ  ＦＴ２４５チップと共に使用することができない。スレーブＳＰＩ  ＵＳＢチップが必要となる（ＵＳＢのセクションを参照）。
【０３３７】
かなりの処理電力を有するＲＳＣ−４ｘなどの音声合成マイクロコントローラを使用することは、代替のシステム構築の可能性を示唆する。メイン人形アルゴリズムを実行させるとともにスレーブマイクロプロセッサとして合成マイクロコントローラを使用して音声を単純に解凍するＪｅｎｎｉｃ無線マイクロコントローラの代わりに、合成マイクロコントローラがメイン人形アルゴリズムを実行するとともに無線通信のためにスレーブコプロセッサとして無線マイクロコントローラを使用することができる。さらなる詳細については無線マイクロコントローラのセクションを参照されたい。
【０３３８】
無線マイクロコントローラ
現在の設計は、２．４ＧＨｚＩＥＥＥ８０２．１５．４パーソナルエリアネットワーク通信規格に基づくものである。全ての低レベルＲＦ通信に対応するために必要なＲＦハードウェア及びファームウェアを含む無線マイクロコントローラ製品が存在する。通信内のデータのみは、人形アプリケーションにより定義する必要がある。現在の設計は、Ｊｅｎｎｉｃ無線マイクロコントローラを選択している。
【０３３９】
ＩＥＥＥ８０２．１５．４製品は低レベルＲＦ通信に対応するが、人形アプリケーションには良好に適合しない一面がある。ＩＥＥＥ  ８０２．１５．４はノードの階層構造に基づくものであり、多くの機能低減装置が全機能搭載装置と通信する。人形アプリケーションはピアツーピア構造を有し、全ての装置が同じものである。
【０３４０】
同じ２．４ＧＨｚ又は異なるＩＳＭ周波数帯で機能する他のＲＦトランシーバ製品が利用可能である。これらは必要なＲＦハードウェアを全て含むが、特定の低レベルプロトコルを強いるものではない。これらのトランシーバＩＣは、汎用マイクロコントローラ又はＲＳＣ４倍速音声シンセサイザーなどの専用マイクロコントローラのスレーブとして機能する。これらの部品を使用して、専用のピアツーピア通信プロトコルを開発することができる。
【０３４１】
ＲＦトランシーバの例には、Ｔｌ  ＣＣ２５００及びＡｔｍｅｌ  ＡＴＡ５４２Ｘファミリがある。これらの部品は、ＪｅｎｎｉｃＩＣよりも低い電力消費量及び単位原価を実現する可能性がある。
【０３４２】
言うまでもなく、本発明は、単なる例示として説明した上記実施形態の詳細に限定されることを意図されたものではなく、本発明の範囲内において詳細の修正を行うことができることを理解されたい。
【０３４３】
説明及び（必要に応じて）特許請求の範囲並びに図面において開示した個々の特徴は、単独で又はあらゆる適当な組み合せで提供することができる。
【０３４４】
付録Ｉ〜オーサリングツール内にインポートするためのフォーマットしたテキストファイルの例
0005404781.tif 000005
【０３４５】
付録II〜図８に関する部品の詳細
0005404781.tif 000006
0005404781.tif 000007
0005404781.tif 000008
【０３４６】
付録III〜図９に関する部品の詳細
0005404781.tif 000009
0005404781.tif 000010
0005404781.tif 000011
【０３４７】
以上の説明に関して更に以下の項を開示する。
（１）
少なくとも１つの他の同じような玩具と対話するようにされた玩具であって、
プロセッサと、
前記プロセッサに結合されたメモリと、
を備え、前記プロセッサが、
行うべき行動を表す出力信号を生成する手段と、
少なくとも１つの他のこのような玩具における受信のための、前記玩具が自身の行動を終える前に前記少なくとも１つの他のこのような玩具が行動を起こすようにするためのトリガ信号を生成する手段と、
を備える、
ことを特徴とする玩具。
【０３４８】
（２）
前記トリガ信号が、前記玩具が自身の行動を開始した後に所定の時間間隔で生成される、
ことを特徴とする項（１）に記載の玩具。
【０３４９】
（３）
前記トリガ信号が、前記玩具が自身の行動を終える前に所定の時間間隔で生成される、ことを特徴とする項（１）又は項（２）に記載の玩具。
【０３５０】
（４）
ユーザが前記所定の時間間隔の目安を入力できるようにする入力部をさらに備える、
ことを特徴とする項（２）又は項（３）に記載の玩具。
【０３５１】
（５）
所定の時間間隔が、１秒未満、又は１／２秒未満、又は１／４秒未満であり、実質的に０秒であることがより好ましい、
ことを特徴とする項（２）、項（３）又は項（４）に記載の玩具。
【０３５２】
（６）
前記行動が、音を発すること、光を発すること、及び動きのうちの少なくとも１つである、
ことを特徴とする項（１）から項（５）のいずれかに記載の玩具。
【０３５３】
（７）
前記少なくとも１つの他のこのような玩具と無線で通信するようにされた無線通信モジュールをさらに備える、
ことを特徴とする項（１）から項（５）のいずれかに記載の玩具。
【０３５４】
（８）
前記無線通信モジュールが、トリガ信号、対話に関する情報、及び玩具に関する情報のうちの少なくとも１つを送信する、
ことを特徴とする項（７）に記載の玩具。
【０３５５】
（９）
前記対話に関する情報が、玩具が出力する行動、行動の持続時間、及び少なくとも１つの他の玩具がとるべき行動のうちの少なくとも１つを含む、
ことを特徴とする項（８）に記載の玩具。
【０３５６】
（１０）
前記メモリが、所定の対話を記憶するようになっている、
ことを特徴とする項（１）から項（９）のいずれかに記載の玩具。
【０３５７】
（１１）
前記プロセッサは、前記対話を疑似ランダムに決定するようになっている、
ことを特徴とする項（１）から項（１０）のいずれかに記載の玩具。
【０３５８】
（１２）
前記玩具が、生きているかのように対話するようになっている、
ことを特徴とする項（１）から項（１１）のいずれかに記載の玩具。
【０３５９】
（１３）
前記対話が、会話、音声対話、対人対話、教育的対話、演奏、及びゲームプレイのうちの少なくとも１つである、
ことを特徴とする項（１）から項（１２）のいずれかに記載の玩具。
【０３６０】
（１４）
前記玩具が、このような玩具のグループ内のメンバーとして対話するようになっている、
ことを特徴とする項（１３）に記載の玩具。
【０３６１】
（１５）
前記グループが、音楽バンド、車のグループ、又は軍事資産のグループのうちの１つを表す、
ことを特徴とする項（１４）に記載の玩具。
【０３６２】
（１６）
前記トリガ信号を使用してグループの行動を同期させる、
ことを特徴とする項（１４）又は項（１５）に記載の玩具。
【０３６３】
（１７）
別のこのような玩具からトリガ信号を受け取る手段をさらに備え、前記トリガ信号を使用して行動を開始する時点を決定する、
ことを特徴とする項（１）から項（１６）のいずれかに記載の玩具。
【０３６４】
（１８）
前記玩具が、人形、ゲームボード、乗り物、及び軍事資産のうちの１つである、
ことを特徴とする項（１）から項（１７）のいずれかに記載の玩具。
【０３６５】
（１９）
少なくとも１つの他の同じような玩具と対話するようにされた玩具で使用するためのコンピュータ可読メモリであって、
行うべき行動を表す出力信号を生成するためのコードと、
少なくとも１つの他のこのような玩具において受信して、前記玩具が自身の行動を終える前に前記少なくとも１つの他のこのような玩具が行動を起こすようにするためのトリガ信号を生成するためのコードと、
を含むことを特徴とするコンピュータ可読メモリ。
【０３６６】
（２０）
前記メモリが、前記玩具が自身の行動を開始した後に所定の時間間隔で前記トリガ信号を生成するためのコードをさらに含む、
ことを特徴とする項（１９）に記載のコンピュータ可読メモリ。
【０３６７】
（２１）
前記メモリが、前記玩具が自身の行動を終える前に所定の時間間隔で前記トリガ信号を生成するためのコードをさらに含む、
ことを特徴とする項（１９）又は項（２０）に記載のコンピュータ可読メモリ。
【０３６８】
（２２）
前記メモリが、ユーザが前記所定の時間間隔の目安を入力できるようにするためのコードをさらに含む、
ことを特徴とする項（２０）又は項（２１）に記載のコンピュータ可読メモリ。
【０３６９】
（２３）
前記所定の時間間隔が、１秒未満、又は１／２秒未満、又は１／４秒未満であり、実質的に０秒である、
ことを特徴とする項（２０）、項（２１）又は項（２２）に記載のコンピュータ可読メモリ。
【０３７０】
（２４）
前記行動が、音を発すること、光を発すること、及び動きのうちの少なくとも１つである、
ことを特徴とする項（１９）から項（２３）のいずれかに記載のコンピュータ可読メモリ。
【０３７１】
（２５）
玩具のテーマ別データを作成するためのオーサリングツールであって、
特定のテーマに関するコンテンツを受信する手段と、
前記コンテンツを処理して、前記特定のテーマ内の前記玩具を動作させる命令セットを生成する手段と、
前記命令セットを出力する手段と、
を含むことを特徴とするオーサリングツール。
【０３７２】
（２６）
前記受信手段が、前記特定のテーマに関するスクリプトデータと、前記玩具の性格を定義する表現データとの両方を別個に含むコンテンツを受信するようにされた、
ことを特徴とする項（２５）に記載のオーサリングツール。
【０３７３】
（２７）
前記受信手段が、コンテンツを別の部分の形で受信するようにされた、
ことを特徴とする項（２６）に記載のオーサリングツール。
【０３７４】
（２８）
個々の表現データ部分に一意のＩＤ番号を割り当てる手段をさらに含む、
ことを特徴とする項（２７）に記載のオーサリングツール。
【０３７５】
（２９）
前記処理手段が、前記命令セット内の前記表現データ部分への参照として前記一意のＩＤ番号を利用するようにされた、
ことを特徴とする項（２８）に記載のオーサリングツール。
【０３７６】
（３０）
前記受信手段が、テーマ全体又はテーマの本質的部分を含むコンテンツを１つの動作で受信するようにされた、
ことを特徴とする項（２５）から項（２９）のいずれかに記載のオーサリングツール。
【０３７７】
（３１）
前記コンテンツがフォーマット済みファイルの形である、
ことを特徴とする項（３０）に記載のオーサリングツール。
【０３７８】
（３２）
前記フォーマット済みファイルがテキストファイルである、
ことを特徴とする項（３１）に記載のオーサリングツール。
【０３７９】
（３３）
前記処理手段が、前記フォーマット済みファイルのコンテンツのみを使用して前記命令セットを生成する、
ことを特徴とする項（３１）又は項（３２）に記載のオーサリングツール。
【０３８０】
（３４）
前記表現データが、テーマ名、前記玩具の名前、及び前記玩具が対話するために使用する文のうちの少なくとも１つを含む、
ことを特徴とする項（２５）から項（３３）のいずれかに記載のオーサリングツール。
【０３８１】
（３５）
前記スクリプトデータが、前記テーマ内で対話できる玩具の数、対話方法、テーマ関連パラメータ、及び玩具関連パラメータのうちの少なくとも１つを含む、
ことを特徴とする項（２５）から項（３４）のいずれかに記載のオーサリングツール。
【０３８２】
（３６）
前記玩具関連パラメータが、次の対話する玩具を選択するための予め定めたルールに関する情報を含む、
ことを特徴とする項（３５）に記載のオーサリングツール。
【０３８３】
（３７）
前記対話方法がタイミング関連パラメータを含む、
ことを特徴とする項（３６）に記載のオーサリングツール。
【０３８４】
（３８）
前記タイミング関連パラメータが、次の玩具がいつ対話を行うかを決定する
ことを特徴とする項（３７）に記載のオーサリングツール。
【０３８５】
（３９）
前記タイミング関連パラメータが、前記現在の玩具の対話の開始から前記次の玩具の対話の開始までの時間遅延、及び前記次の玩具の対話の開始から前記現在の玩具の対話の終了前までの時間遅延の一方を含む、
ことを特徴とする項（３８）に記載のオーサリングツール。
【０３８６】
（４０）
ゲームに関するコンテンツを受信する手段をさらに含む、
ことを特徴とする項（２５）から項（３９）のいずれかに記載のオーサリングツール。
【０３８７】
（４１）
前記ゲームに関するコンテンツが、ゲームを実行できるようにするロジックを含む、
ことを特徴とする項（４０）に記載のオーサリングツール。
【０３８８】
（４２）
特定のテーマに関する前記スクリプトデータと表現データとを配列の形でともに記憶する手段をさらに含む、
ことを特徴とする項（２５）から項（４１）のいずれかに記載のオーサリングツール。
【０３８９】
（４３）
前記処理手段が、前記配列から前記命令セットを生成するようにされた、
ことを特徴とする項（４２）に記載のオーサリングツール。
【０３９０】
（４４）
前記処理手段が、前記表現データの少なくとも一部を含む少なくとも１つのリストをコンパイルする手段を含む、
ことを特徴とする項（２５）から項（４３）のいずれかに記載のオーサリングツール。
【０３９１】
（４５）
前記リストコンパイル手段が、前記特定のテーマにおける個々の玩具ごとにそれぞれのリストをコンパイルするようにされた、
ことを特徴とする項（４４）に記載のオーサリングツール。
【０３９２】
（４６）
前記表現データがシンボルデータである、
ことを特徴とする項（２５）から項（４５）のいずれかに記載のオーサリングツール。
【０３９３】
（４７）
前記シンボルデータの上演データバージョンを記録する記録手段をさらに含む、
ことを特徴とする項（４６）に記載のオーサリングツール。
【０３９４】
（４８）
関係者に、上演データの必要な部分を生成するように促す手段をさらに含む、
ことを特徴とする項（４７）に記載のオーサリングツール。
【０３９５】
（４９）
前記プロセッサが、前記シンボルデータと上演データとの間のルックアップテーブルを生成するようにされた、
ことを特徴とする項（４７）又は項（４８）に記載のオーサリングツール。
【０３９６】
（５０）
前記処理手段が、前記表現データを出力するようにされた、
ことを特徴とする項（２５）から項（４９）のいずれかに記載のオーサリングツール。
【０３９７】
（５１）
前記処理手段がさらに、前記表現データと命令セットとを別個に出力するようにされた、
ことを特徴とする項（５０）に記載のオーサリングツール。
【０３９８】
（５２）
前記処理手段が、前記玩具の基本機能を制御するための基本命令セットと、該基本命令セットが前記テーマ内の前記玩具を制御するためのテーマ別命令セットとを含む命令セットを生成するようにされた、
ことを特徴とする項（２５）から項（５１）のいずれかに記載のオーサリングツール。
【０３９９】
（５３）
前記プロセッサが、前記基本命令セット及び前記テーマ別命令セットを共に組み合わせるようにされた、
ことを特徴とする項（５２）に記載のオーサリングツール。
【０４００】
（５４）
コンパイラをさらに含む、
ことを特徴とする項（５２）又は項（５３）に記載のオーサリングツール。
【０４０１】
（５５）
前記コンパイラが、前記基本命令セット及び前記テーマ別命令セットをコンパイルするようにされた、
ことを特徴とする項（５４）に記載のオーサリングツール。
【０４０２】
（５６）
前記プロセッサが、前記命令セットをコンピュータ可読コードに変換するようになっている符号化エンジンを含む、
ことを特徴とする項（２５）から項（５５）のいずれかに記載のオーサリングツール。
【０４０３】
（５７）
前記オーサリングツールの前記出力が会話エンジン内で使用されるようにされ、該会話エンジンが、
会話のテーマを選択する手段と、
複数の起点から起点をランダムに選択する手段と、
変数に基づいて語句をランダムに選択する手段と、
変数に基づいて次の発話者をランダムに選択する手段と、
を含むことを特徴とする項（２５）から項（５６）のいずれかに記載のオーサリングツール。
【０４０４】
（５８）
玩具のテーマ別データを作成するオーサリングツールのためのユーザインターフェイスであって、
各々がテーマに関するコンテンツの特定のサブセットの入力に対応する入力ウィンドウのセットをユーザに提供する手段と、
前記テーマ別データの出力を開始する手段と、
を含むことを特徴とするユーザインターフェイス。
【０４０５】
（５９）
前記コンテンツのサブセットが、テーマ関連データ、玩具関連データ及びコンテキスト関連データのうちの少なくとも１つを含む、
ことを特徴とする項（５８）に記載のユーザインターフェイス。
【０４０６】
（６０）
前記コンテキスト関連データが、前記玩具が対話するために使用する文、対話方法、テーマ関連パラメータ及び玩具関連パラメータのうちの少なくとも１つを含む、
ことを特徴とする項（５９）に記載のユーザインターフェイス。
【０４０７】
（６１）
玩具のテーマ別データを生成するためのシステムであって、
前記テーマ別データにアクセスし、これを作成及び編集するためのオーサリングツールと、
前記テーマ別データを記憶するためのデータベースを含むサーバと、
を含み、
前記オーサリングツールが、インターネットを介して前記テーマ別データにアクセスするようにされた、
ことを特徴とするシステム。
【０４０８】
（６２）
前記オーサリングツールが、前記テーマ別データを処理して配列するようにされ、前記データベースが、前記テーマ別データを前記配列の形で記憶するようにされた、
ことを特徴とする項（６１）に記載のシステム。
【０４０９】
（６３）
前記オーサリングツールが、項（２５）から項（５７）のいずれかに記載のオーサリングツールである、
ことを特徴とする項（６２）に記載のシステム。
【０４１０】
（６４）
ユーザインターフェイスをさらに含む、
ことを特徴とする項（６１）から項（６３）のいずれかに記載のシステム。
【０４１１】
（６５）
前記インターフェイスが、項（５８）から項（６０）のいずれかに記載のインターフェイスである、
ことを特徴とする項（６４）に記載のシステム。
【０４１２】
（６６）
少なくとも１つの他の同じような玩具と対話するようにされた少なくとも１つの玩具とコンピュータとの間に無線通信を提供するための装置であって、
前記装置を前記コンピュータに接続する通信ポートと、
前記コンピュータと前記又は各玩具との間にネットワークを確立する手段と、
を含み、
前記装置が、前記コンピュータが別のこのような玩具であるかのように前記又は各玩具と通信できるようにする、
ことを特徴とする装置。
【０４１３】
（６７）
前記装置が、前記コンピュータを仮想玩具として機能できるようにする、
ことを特徴とする項（６６）に記載の玩具。
【０４１４】
（６８）
前記通信ポートがＵＳＢ通信ポートである、
ことを特徴とする項（６６）又は項（６７）に記載の玩具。
【０４１５】
（６９）
前記ネットワークが無線である、
ことを特徴とする項（６６）、項（６７）又は項（６８）に記載の玩具。
【０４１６】
（７０）
少なくとも１つの他の同じような玩具と対話するようにされた少なくとも１つの玩具と、
各々が項（６６）から項（６９）のいずれかに記載の装置を含む少なくとも１つのコンピュータと、
を含み、
前記コンピュータと装置との組み合わせが、さらなるこのような玩具であるかのように機能する、
ことを特徴とするシステム。
【０４１７】
（７１）
前記コンピュータが、仮想玩具を提供するようになっている視覚及び音声出力を含む、ことを特徴とする項（７０）に記載のシステム。
【０４１８】
（７２）
前記仮想玩具がアバターである、
ことを特徴とする項（７１）に記載のシステム。
【符号の説明】
【０４１９】
１７００：プロセッサ
１７０２：メモリ
１７０４：変換器
１７０６：無線通信モジュール
１７０８：対話エンジン
【図１】
0005404781.tif 000012
【図２】
0005404781.tif 000013
【図３】
0005404781.tif 000014
【図４】
0005404781.tif 000015
【図５】
0005404781.tif 000016
【図６】
0005404781.tif 000017
【図７】
0005404781.tif 000018
【図８ａ】
0005404781.tif 000019
【図８ｂ】
0005404781.tif 000020
【図８ｃ】
0005404781.tif 000021
【図９ａ】
0005404781.tif 000022
【図９ｂ】
0005404781.tif 000023
【図９ｃ】
0005404781.tif 000024
【図１０】
0005404781.tif 000025
【図１１】
0005404781.tif 000026
【図１２ａ】
0005404781.tif 000027
【図１２ｂ】
0005404781.tif 000028
【図１２ｃ】
0005404781.tif 000029
【図１２ｄ】
0005404781.tif 000030
【図１２ｅ】
0005404781.tif 000031
【図１３ａ】
0005404781.tif 000032
【図１３ｂ】
0005404781.tif 000033
【図１４】
0005404781.tif 000034
【図１５ａ】
0005404781.tif 000035
【図１５ｂ】
0005404781.tif 000036
【図１６】
0005404781.tif 000037
【図１７ａ】
0005404781.tif 000038
【図１７ｂ】
0005404781.tif 000039
【図１７ｃ】
0005404781.tif 000040
【図１７ｄ】
0005404781.tif 000041