(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022187433
(43)【公開日】2022-12-19
(54)【発明の名称】シミュレーションシステム、シミュレーション方法、及びシミュレーションプログラム
(51)【国際特許分類】
A63F 13/55 20140101AFI20221212BHJP
A63F 13/42 20140101ALI20221212BHJP
A63F 13/56 20140101ALI20221212BHJP
A63F 13/35 20140101ALI20221212BHJP
【FI】
A63F13/55
A63F13/42
A63F13/56
A63F13/35
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2021095475
(22)【出願日】2021-06-07
(71)【出願人】
【識別番号】504440133
【氏名又は名称】株式会社ポケモン
(74)【代理人】
【識別番号】100151688
【弁理士】
【氏名又は名称】今 智司
(72)【発明者】
【氏名】押野 洋介
(57)【要約】
【課題】仮想空間内においてキャラクタを動作させる場合に、ユーザがキャラクタの動作の変化を想定して楽しむことができ、複数のユーザによる同時プレイ可能なシミュレーションシステム、シミュレーション方法、及びシミュレーションプログラムを提供する。
【解決手段】シミュレーションシステム1は、複数のキャラクタに命令を設定可能であり、複数の命令が設定された場合に命令の実行順序を設定する命令設定部14と、キャラクタに対して設定された命令及び実行順序に基づいてキャラクタを仮想空間100内で動作させる動作制御部18とを備え、命令設定部14が、各キャラクタを有するユーザそれぞれの指示に基づく命令及び実行順序の設定が可能であり、動作制御部18が一のキャラクタ及び他のキャラクタを仮想空間100内で動作させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数の仮想単位空間により構成される仮想空間に配置可能であり、複数のユーザそれぞれに対応付けられたキャラクタそれぞれに、1つ以上の命令を設定可能であり、複数の命令が設定された場合に前記命令の実行順序を設定する命令設定部と、
前記キャラクタに対して設定された前記命令及び前記実行順序に基づいて、前記キャラクタを前記仮想空間内で動作させる動作制御部と
を備え、
前記命令設定部が、一以上のキャラクタそれぞれについて、各キャラクタに対応付けられたユーザそれぞれの指示に基づく前記命令及び前記実行順序の設定が可能であり、
前記動作制御部が、第1のユーザの指示を受け付けて第2のユーザの指示とは無関係に前記第1のユーザに対応付けられた第1のキャラクタを当該の第1キャラクタに対して設定された前記命令及び前記実行順序に基づいて前記仮想空間内で動作させ、第2のユーザの指示を受け付けて前記第1のユーザの指示とは無関係に前記第2のユーザに対応付けられた第2のキャラクタを当該第2のキャラクタに対して設定された前記命令及び前記実行順序に基づいて前記仮想空間内で動作させるシミュレーションシステム。
【請求項2】
前記動作制御部が、前記第1のキャラクタに対する前記第2のキャラクタの前記仮想空間内における位置関係が所定の条件を満たした場合、前記命令設定部が前記第1のキャラクタに設定した前記命令及び前記第2のキャラクタに設定した前記命令に基づく動作に優先し、前記第1のキャラクタ及び前記第2のキャラクタの少なくとも一方に所定の動作を実行させる請求項1に記載のシミュレーションシステム。
【請求項3】
前記動作制御部が、ユーザの停止指示に基づいて、前記仮想空間内で動作中の当該ユーザが有するキャラクタの動作を停止させ、
前記命令設定部が、停止した前記キャラクタに設定されている前記命令及び前記実行順序に代えて、新たな前記命令及び前記実行順序の設定を受け付ける請求項1又は2に記載のシミュレーションシステム。
【請求項4】
前記仮想単位空間にキャラクタを配置する配置部
を更に備え、
前記仮想空間が1以上の前記仮想単位空間からなるエリアを複数有して構成され、前記複数のエリアそれぞれが前記複数のユーザそれぞれに対応付けられ、
前記配置部が、前記キャラクタが動作を開始する前記エリア内の位置である動作開始位置の指定に際し、前記第1のユーザに対応付けられている第1のエリア内での前記第1のキャラクタの前記動作開始位置の指定を許可し、前記第1のユーザに対応付けられていない第2のエリア内での前記第1のキャラクタの前記動作開始位置の指定を禁止する請求項1~3のいずれか1項に記載のシミュレーションシステム。
【請求項5】
前記仮想単位空間にオブジェクトを配置する配置部
を更に備え、
前記仮想空間が1以上の前記仮想単位空間からなるエリアを複数有して構成され、前記複数のエリアそれぞれが前記複数のユーザそれぞれに対応付けられ、
前記配置部が、前記第1のユーザに対応付けられている第1のエリア内への前記第1のユーザが有する前記オブジェクトの設置を許可し、前記第1のユーザに対応付けられていない第2のエリア内への前記オブジェクトの設置を禁止する請求項1~3のいずれか1項に記載のシミュレーションシステム。
【請求項6】
前記命令設定部が、前記第1のエリアの前記動作開始位置から前記第2のエリアに前記命令に基づいて前記第1のキャラクタが移動した後、前記第1のキャラクタに、前記第2のエリア内において前記命令及び前記実行順序を設定可能である請求項4又は5に記載のシミュレーションシステム。
【請求項7】
前記動作制御部が、前記複数のユーザそれぞれが有する前記キャラクタに設定されている前記命令の実行の指示及び停止の指示を前記複数のユーザごとに受け付け、前記実行の指示又は前記停止の指示を受け付けたタイミングで前記命令を実行又は前記命令を停止する請求項1~6のいずれか1項に記載のシミュレーションシステム。
【請求項8】
前記動作制御部が、前記複数のキャラクタそれぞれに対する前記命令の実行指示の受け付けを契機とし、前記複数のキャラクタそれぞれを前記仮想空間内でリアルタイムに動作させる請求項1~7のいずれか1項に記載のシミュレーションシステム。
【請求項9】
複数のユーザそれぞれに対応付けられたキャラクタそれぞれを動作させるシミュレーションシステムのシミュレーション方法であって、
複数の仮想単位空間により構成される仮想空間に配置可能であり、前記複数のユーザそれぞれに対応付けられたキャラクタそれぞれに、1つ以上の命令を設定可能であり、複数の命令が設定された場合に前記命令の実行順序を設定する命令設定工程と、
前記キャラクタに対して設定された前記命令及び前記実行順序に基づいて、前記キャラクタを前記仮想空間内で動作させる動作制御工程と
を備え、
前記命令設定工程において、一以上のキャラクタそれぞれについて、各キャラクタに対応付けられたユーザそれぞれの指示に基づく前記命令及び前記実行順序の設定が可能であり、
前記動作制御工程において、第1のユーザの指示を受け付けて第2のユーザの指示とは無関係に前記第1のユーザに対応付けられた第1のキャラクタを当該の第1キャラクタに対して設定された前記命令及び前記実行順序に基づいて前記仮想空間内で動作させ、第2のユーザの指示を受け付けて前記第1のユーザの指示とは無関係に前記第2のユーザに対応付けられた第2のキャラクタを当該第2のキャラクタに対して設定された前記命令及び前記実行順序に基づいて前記仮想空間内で動作させるシミュレーション方法。
【請求項10】
複数のユーザそれぞれに対応付けられたキャラクタそれぞれを動作させるシミュレーションシステム用のシミュレーションプログラムであって、
コンピュータに、
複数の仮想単位空間により構成される仮想空間に配置可能であり、複数のユーザそれぞれに対応付けられたキャラクタそれぞれに、1つ以上の命令を設定可能であり、複数の命令が設定された場合に前記命令の実行順序を設定する命令設定機能と、
前記キャラクタに対して設定された前記命令及び前記実行順序に基づいて、前記キャラクタを前記仮想空間内で動作させる動作制御機能と
を実現させ、
前記命令設定機能において、一以上のキャラクタそれぞれについて、各キャラクタに対応付けられたユーザそれぞれの指示に基づく前記命令及び前記実行順序の設定が可能であり、
前記動作制御機能において、第1のユーザの指示を受け付けて第2のユーザの指示とは無関係に前記第1のユーザに対応付けられた第1のキャラクタを当該の第1キャラクタに対して設定された前記命令及び前記実行順序に基づいて前記仮想空間内で動作させ、第2のユーザの指示を受け付けて前記第1のユーザの指示とは無関係に前記第2のユーザに対応付けられた第2のキャラクタを当該第2のキャラクタに対して設定された前記命令及び前記実行順序に基づいて前記仮想空間内で動作させるシミュレーションプログラム。
【請求項11】
複数の仮想単位空間により構成される仮想空間に配置可能であり、複数のユーザそれぞれに対応付けられたキャラクタそれぞれに、1つ以上の命令を設定可能であり、複数の命令が設定された場合に前記命令の実行順序を設定する命令設定部と、
前記キャラクタに対して設定された前記命令及び前記実行順序に基づいて、前記キャラクタを前記仮想空間内で動作させる動作制御部と
を備え、
前記命令設定部が、一以上のキャラクタそれぞれについて、各キャラクタに対応付けられたユーザそれぞれの指示に基づく前記命令及び前記実行順序の設定が可能であり、
前記動作制御部が、第1のユーザの指示を受け付けて第2のユーザの指示とは無関係に前記第1のユーザに対応付けられた第1のキャラクタを当該の第1キャラクタに対して設定された前記命令及び前記実行順序に基づいて前記仮想空間内で動作させ、第2のユーザの指示を受け付けて前記第1のユーザの指示とは無関係に前記第2のユーザに対応付けられた第2のキャラクタを当該第2のキャラクタに対して設定された前記命令及び前記実行順序に基づいて前記仮想空間内で動作させるシミュレーションサーバ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シミュレーションシステム、シミュレーション方法、及びシミュレーションプログラムに関する。特に、本発明は、複数のユーザそれぞれが有するキャラクタが仮想空間において動作するシミュレーションシステム、シミュレーション方法、及びシミュレーションプログラムに関する。
【背景技術】
【0002】
従来、操作手段と演算手段と記憶手段とを少なくとも備え、演算手段が、操作手段からゲームプレイヤが入力する情報、並びに、記憶手段に記憶されているゲームプログラム及びデータに基づいて演算することでゲームを進行させるゲームシステムであって、演算手段が、ゲームプレイヤが自分に割り当てられたキャラクタの行動を指示することにより、シナリオをこなしていく形式のロール・プレイング・ゲームと、ゲームプレイヤが任意に編集することにより、ゲームプレイヤ独自の世界を造り上げていく形式のシミュレーション・ゲームとを並行して進行させ、これら2つのゲームを関連付けるゲームシステムが知られている(例えば、特許文献1参照)。特許文献1に記載のゲームシステムによれば、ゲームプレイヤ独自の世界をロール・プレイング・ゲームの世界に設けることで、数多くのロール・プレイング・ゲームを体験したゲームプレイヤであっても、飽きずにゲームを楽しめることができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、特許文献1に記載のゲームシステムにおいては、キャラクタの行動をユーザが設定できるものの、当該キャラクタはユーザの設定どおり忠実に行動し、行動範囲に制限がないことからキャラクタの行動に意外性を持たせることは困難である。そして、特許文献1に記載のゲームシステムにおいては、複数のユーザがそれぞれのキャラクタの行動を設定し、ゲーム内でユーザ同士が協力することや対戦すること等について全く考慮されていない。
【0005】
したがって、本発明の目的は、仮想空間内においてキャラクタを動作させる場合に、ユーザがキャラクタの動作の変化を想定して楽しむことができ、複数のユーザによる同時プレイ可能なシミュレーションシステム、シミュレーション方法、及びシミュレーションプログラムを提供することにある。
【課題を解決するための手段】
【0006】
本発明は、上記目的を達成するため、複数の仮想単位空間により構成される仮想空間に配置可能であり、複数のユーザそれぞれに対応付けられたキャラクタそれぞれに、1つ以上の命令を設定可能であり、複数の命令が設定された場合に命令の実行順序を設定する命令設定部と、キャラクタに対して設定された命令及び実行順序に基づいて、キャラクタを仮想空間内で動作させる動作制御部とを備え、命令設定部が、一以上のキャラクタそれぞれについて、各キャラクタに対応付けられたユーザそれぞれの指示に基づく命令及び実行順序の設定が可能であり、動作制御部が、第1のユーザの指示を受け付けて第2のユーザの指示とは無関係に第1のユーザに対応付けられた第1のキャラクタを当該の第1キャラクタに対して設定された命令及び実行順序に基づいて仮想空間内で動作させ、第2のユーザの指示を受け付けて第1のユーザの指示とは無関係に第2のユーザに対応付けられた第2のキャラクタを当該第2のキャラクタに対して設定された命令及び実行順序に基づいて仮想空間内で動作させるシミュレーションシステムが提供される。
【発明の効果】
【0007】
本発明に係るシミュレーションシステム、シミュレーション方法、及びシミュレーションプログラムによれば、仮想空間内においてキャラクタを動作させる場合に、ユーザがキャラクタの動作の変化を想定して楽しむことができ、複数のユーザによる同時プレイ可能なシミュレーションシステム、シミュレーション方法、及びシミュレーションプログラムを提供できる。
【図面の簡単な説明】
【0008】
【
図1】本実施形態に係るシミュレーションシステムの概要図である。
【
図2】本実施形態に係るシミュレーションシステムの概要図である。
【
図3】本実施形態に係るシミュレーションシステムの概要図である。
【
図4】本実施形態に係るシミュレーションシステムの概要図である。
【
図5】本実施形態に係るシミュレーションシステムの機能構成ブロック図である。
【
図6】本実施形態に係る格納ユニットが有する各格納部のデータ構成図である。
【
図7】本実施形態に係るシミュレーションシステムの処理がリアルタイム制の場合の処理の流れを示す図である。
【
図8】本実施形態に係るシミュレーションシステムの処理がターン制の場合の処理の流れを示す図である。
【
図9】本実施形態に係るシミュレーションシステムにおける処理のフロー図である。
【発明を実施するための形態】
【0009】
[実施の形態]
<シミュレーションシステム1の概要>
本実施形態に係るシミュレーションシステム1は、一例として、複数のユーザそれぞれの情報端末と、シミュレーションの所定の処理を実行するサーバとを備えて構成できる。情報端末とサーバとは、通信ネットワークを介して双方向通信可能に接続される。また、通信ネットワークは、携帯電話網、及び/又はインターネット等の通信網である。通信ネットワークは、有線LAN及び無線LAN等の通信ネットワークを含むこともできる。更に、シミュレーションシステム1は、サーバクライアント型のシミュレーションシステムであってもよい。以下の説明においては、一例として、シミュレーションシステム1が、複数のユーザそれぞれの情報端末と、シミュレーションの所定の処理を実行するサーバとを備える例を説明する。
【0010】
シミュレーションシステム1は、複数のユーザそれぞれが有するキャラクタ及び/又はオブジェクトを仮想空間(フィールド)に配置し、各ユーザが有するキャラクタそれぞれに対し、各ユーザが、仮想空間において実行して欲しい1つ以上のお願いと、お願いの実行順序とを設定する。そして、シミュレーションシステム1は、各ユーザが有するキャラクタそれぞれに対するお願いの実行の指示を契機とし、仮想空間においてキャラクタに実行順序に沿ったお願いを実行させる。すなわち、シミュレーションシステム1は、一のユーザが一のキャラクタを有し、他のユーザが他のキャラクタを有している場合、一のユーザが一のキャラクタにお願い及び実行順序を設定し、他のユーザが他のキャラクタにお願い及び実行順序を設定する。そして、シミュレーションシステム1は、一のユーザが一のキャラクタに対してお願いの実行の指示をした場合、他のユーザの指示とは無関係に(つまり、独立に)一のキャラクタに実行順序に沿ったお願いを仮想空間内で実行させ、他のユーザが他のキャラクタに対してお願いの実行の指示をした場合、一のユーザの指示とは無関係に(つまり、独立に)他のキャラクタに実行順序に沿ったお願いを一のキャラクタが存在する仮想空間と同一の仮想空間内で実行させる。
【0011】
この場合においてシミュレーションシステム1は、一のユーザがお願いの実行指示をした場合に一のユーザの情報端末の表示部等に一のキャラクタ及び/又はオブジェクトの動作を出力すると共に、他のユーザがお願いの実行指示をした後、他のキャラクタ及び/又はオブジェクトの動作も当該表示部等に出力する。他のユーザの情報端末においても同様である。
【0012】
また、シミュレーションシステム1は、仮想空間を複数のエリアに区切り、各エリアを複数のユーザそれぞれに割り当てる(つまり、対応付ける)。複数のエリアはそれぞれ、各エリアに対応付けられたユーザによる、当該ユーザが有するキャラクタ及び/又はオブジェクトに対する操作が可能な領域(操作可能領域)である。例えば、一のユーザに一のエリアを割り当てた場合、当該一のエリアは他のユーザに割り当てることが禁止される。そして、シミュレーションシステム1においては、各ユーザが自身に割り当てられたエリアに1以上のキャラクタを配置し、各キャラクタにお願い及びその実行順序を設定する。エリアには、所定のオブジェクトを配置することもできる。
【0013】
そして、シミュレーションシステム1においては、一のユーザは一のエリア内(自エリア内)にのみ自身が有するキャラクタ及び/又はオブジェクトを配置でき、他のエリア内への配置は禁止される。つまり、シミュレーションシステム1においてキャラクタをエリアに最初に配置する場合、一のユーザに割り当てられた一のエリアには一のユーザが有する一のキャラクタのみ配置可能であり、他のユーザに割り当てられた他のエリアに一のキャラクタを配置することは禁止される。また、シミュレーションシステム1は、一のユーザが有するオブジェクトについても、一のエリアに配置可能にし、他のエリアへの配置を禁止する。ただし、シミュレーションシステム1は、一のエリアに配置された一のキャラクタが一のユーザの命令に基づいて一のエリアから他のエリア内に移動して入った後、当該一のキャラクタに対する一のユーザによる命令の追加や再設定は許可してよい。
【0014】
更に、シミュレーションシステム1は、各キャラクタが仮想空間において動作し、同一位置に一のキャラクタ(第1のキャラクタ)と当該一のキャラクタとは異なるキャラクタ(第2のキャラクタ)若しくは所定のオブジェクト等とが存在することになる場合、第1のキャラクタの特徴と第2のキャラクタの特徴若しくは所定のオブジェクト等の特徴との組み合わせ、及び/又は当該位置に存在する前において第1のキャラクタ及び/又は第2のキャラクタが実行したお願い等に基づいて、設定したお願いと共に、若しくは設定したお願いに優先し、第1のキャラクタ及び/又は第2のキャラクタに所定の動作を実行させる。なお、第1のキャラクタを有するユーザと第2のキャラクタを有するユーザ、及び第1のキャラクタを有するユーザとオブジェクトを有するユーザとは同一でも異なっていてもよい。
【0015】
更に、シミュレーションシステム1は、仮想空間を複数の仮想単位空間から構成する。そして、各仮想単位空間には固有の特徴を対応付けることができる。シミュレーションシステム1は、キャラクタが仮想空間において動作する場合において、キャラクタの特徴と当該キャラクタが存在している仮想単位空間の特徴との組み合わせ、及び/又は当該位置に存在する前において当該キャラクタが実行したお願い等に基づいて、設定したお願いと共に若しくは設定したお願いに優先し、当該キャラクタに所定の動作を実行させることもできる。
【0016】
図1~
図4は、本実施形態に係るシミュレーションシステム及び動作の概要の一例を示す。
【0017】
具体的に、シミュレーションシステム1は、複数のユーザそれぞれが設定したお願い(以下、「命令」という。)及び命令の実行順序に基づいて、同一の仮想空間内で複数のユーザそれぞれが有するキャラクタに所定の動作を実行させるシステムである。すなわち、シミュレーションシステム1においては、複数のユーザそれぞれが1以上のキャラクタを有している。そして、シミュレーションシステム1は、一のユーザからの指示を受け付けて、当該一のユーザが有する一のキャラクタに対し、命令及び命令の実行順序を設定する。また、シミュレーションシステム1は、他のユーザからの指示を受け付けて、当該他のユーザが有する他のキャラクタに対し、命令及び命令の実行順序を設定する。シミュレーションシステム1は、一のユーザからの命令実行の指示を受け付けたことを契機とし、他のユーザの指示とは無関係に一のキャラクタに実行順序に則った命令を実行させ、他のユーザからの命令実行の指示を受け付けたことを契機とし、一のユーザの指示とは無関係に他のキャラクタに実行順序に則った命令を実行させる。
【0018】
(仮想空間100について)
本実施形態において仮想空間は、複数の構成単位(以下、「仮想単位空間」と呼ぶ。)が連結して構成される。一例として、
図1(a)に示すように、仮想空間100は、複数の仮想単位空間110の集合体で構成される。なお、
図1(a)では仮想単位空間110の境界線が示されているが、仮想空間100を情報端末等の表示部に表示する場合は、境界線は表示しなくてよい。
図1(a)では、立方体形状の複数の仮想単位空間110(つまり、仮想的な立体マス)が集合し、立方体形状の仮想空間100が構成される例を示す(一例として、5×5×5の仮想単位空間の集合体により仮想空間100が構成される例を示すが、集合体のサイズはこれに限定されない。例えば、仮想空間は、m×n×oの仮想単位空間の集合体であってよい。ただし、m、n、oはそれぞれ同一の若しくは異なる正の整数である。)。なお、仮想空間100の形状は立方体形状に限られず、複数の仮想単位空間110の集合体であればいかなる形状であってもよい。このように仮想単位空間110で仮想空間100を構成することにより、仮想的な立体マス間でのキャラクタの移動指定(つまり、仮想単位空間110単位での移動指定)や、立体マス中でのキャラクタの所定の動作の指定が可能になるので、キャラクタの移動や動作について自由度が高いにも関わらず、操作が容易なシミュレーションシステム1を提供できる。
【0019】
また、仮想単位空間110の形状に特に限定はない。ただし、仮想単位空間110は、仮想空間100の構成の容易性等の確保等の観点から、例えば、立方体形状を有して構成されることが好ましい。また、複数の仮想空間100を連結させてもよい。なお、仮想単位空間110は、直方体形状や球状等、他の形状を有して構成されてもよい。また、仮想単位空間110は、同一若しくは互いに異なる形状の複数の仮想単位空間をつなぎ合わせ、つなぎ合わされた部分(接合部分)を存在しないものとして扱い、つなぎ合わされた複数の仮想単位空間を1つの仮想単位空間として扱ってもよい。本実施形態では、仮想単位空間110が立方体形状であり、仮想空間100も立方体形状である例を説明する。
【0020】
(エリアについて)
シミュレーションシステム1においては、仮想空間100は複数のエリアを有して構成される。また、各エリアは複数の仮想単位空間110を含んで構成される。例えば、
図1(b)に示すように、仮想空間100は、エリア101、エリア101a、エリア101b、及びエリア101cを有して構成される。なお、
図1(b)では説明を簡略化するため仮想空間100の平面図を示す。また、
図1(b)の例では、仮想空間100が4つのエリアを有して構成されているが、エリアの数は複数であれば4つに限られない。更に、エリアの形状やサイズも自由に設定できる。
【0021】
ここで、シミュレーションシステム1においては、一のエリアは一のユーザに対応付けられる。例えば、エリア101が第1のユーザに対応付けられ、エリア101aが第2のユーザに対応付けられ、エリア101bが第3のユーザに対応付けられ、エリア101cが第4のユーザに対応付けられる。なお、仮想空間100は、ユーザが対応付けられていないエリア(中立エリア)を有していてもよい。すなわち、エリア101が第1のユーザに対応付けられ、エリア101bが第2のユーザに対応付けられる一方で、エリア101a及びエリア101cがいずれのユーザにも対応付けられていなくてもよい。また、複数のユーザからなるチームを設定し、エリアにチームを対応付けてもよい。この場合、一のエリアは、同一チームの複数のユーザに対応付けられる。
【0022】
(エリアへのキャラクタ及び/又はオブジェクトの配置について)
シミュレーションシステム1は、複数のユーザそれぞれからの指示に応じ若しくは予め、仮想空間100の所定のエリアに所定のキャラクタを配置する。例えば、エリア101が第1のユーザに対応付けられ、エリア101bが第2のユーザに対応付けられているとする。この場合においてシミュレーションシステム1は、第1のユーザが有するキャラクタ50であって、命令及び命令の実行順序が未だ設定されていないキャラクタ50の仮想空間100への配置を、エリア101内に限定する。一例として、シミュレーションシステム1は、第1のユーザの指示に基づき、
図1(b)に示すように、エリア101内の仮想単位空間110aにキャラクタ50を配置する。一方、シミュレーションシステム1は、エリア101を除く他のエリアの仮想単位空間への第1のユーザによるキャラクタ50の配置を禁止する。同様にして、シミュレーションシステム1は、第2のユーザが有するキャラクタ52であって、命令及び命令の実行順序が未だ設定されていないキャラクタ52の仮想空間への配置を、エリア101b内に限定する。そして、シミュレーションシステム1は、第2のユーザの指示に基づき、エリア101b内の仮想単位空間110bにキャラクタ52を配置し、エリア101bを除く他のエリアの仮想単位空間への第2のユーザによるキャラクタ52の配置を禁止する。
【0023】
すなわち、シミュレーションシステム1においてユーザは、キャラクタ及び/又はオブジェクトをエリアに最初に配置する場合(以下、キャラクタ及び/又はオブジェクトがエリアに最初に配置される位置、つまり、キャラクタ及び/又はオブジェクトが仮想空間100内で最初に動作を開始する位置を「動作開始位置」と称する。)、自身のエリア内に自身が有するキャラクタ及び/又はオブジェクトを配置できる一方で、他者のエリア内にキャラクタ及び/又はオブジェクトを配置することはできない。つまり、キャラクタ及びオブジェクトの動作開始位置は、当該キャラクタ及び当該オブジェクトを有するユーザに対応付けられているエリア内に限定される。
【0024】
なお、複数のユーザからなるチームを設定した場合、当該チームに属する複数のユーザそれぞれが、各自が有するキャラクタ及び/又はオブジェクトをチームに対応付けられたエリアに配置できる。ただし、同一チームであっても、一のユーザが有するキャラクタ及び/又はオブジェクトに対する同一チームの他のユーザによる操作は禁止されてよい。ここで、例えばシミュレーションシステム1は、1以上のユーザを有する複数のチームを設定した場合、各ユーザが有するキャラクタ及びオブジェクトの配置について所定の制限を設けることができる。例えば、ユーザA及びユーザBを含むチーム(味方チーム)と他のユーザを含むチーム(敵チーム)との2つのチームが設定された場合、以下のようにキャラクタ及びオブジェクトの初期配置(つまり、動作開始位置)について条件を設けてもよい。この場合、エリアはユーザA用のエリア(自エリア)、ユーザB用のエリア(味方エリア)、及び敵チームのエリア(敵エリア)を含む。
(i)ユーザAは、ユーザAに対応付けられたキャラクタ及びオブジェクトの動作開始位置を自エリア内に設定できる。
(ii)ユーザAは、ユーザAに対応付けられたキャラクタの動作開始位置を味方エリア内に設定できる一方、オブジェクトの動作開始位置については自エリア内にのみ設定できる。又は、ユーザAは、ユーザAに対応付けられたオブジェクトの動作開始位置を味方エリア内に設定できる一方、キャラクタの動作開始位置については自エリア内にのみ設定できる。
(iii)ユーザAは、ユーザAに対応付けられたキャラクタ及びオブジェクトの動作開始位置を敵エリア内に設定できない。
以上の(i)~(iii)の条件は、ユーザB及び他のユーザも同様である。
【0025】
また、複数のエリアのうち一部のエリアを以下の特性を有するエリアとして設定してもよい。
(a)いずれのユーザも自己のキャラクタ及び/又はオブジェクトを最初に配置可能なエリア。
(b)いずれのユーザも自己のキャラクタ及び/又はオブジェクトを配置できないエリア。
(c)複数のユーザのキャラクタのうち、最先に到達したキャラクタを有するユーザに対応付けるエリア。最先に到達したキャラクタを有するユーザに対応付けられた後は、当該ユーザのキャラクタのみが当該エリアに配置可能になる。
(d)予め定められた時間間隔で、エリアに対応付けられているユーザが変わるエリア。例えば、1分ごとにエリアに対応付けられるユーザが一のユーザから他のユーザに切り換わる。
(e)所定条件を満たした場合に、当該条件を満たしたユーザに対応付けられるエリア。所定の条件は、例えば、所定のアイテムの使用等である。
(f)各ユーザに達成すべき目標が設定されている場合に、各ユーザの目標の達成度合いを参照し、達成度合いが最も低いユーザに対応付けられるエリア。
【0026】
(命令及び命令の実行順序の設定について)
そして、シミュレーションシステム1は、第1のユーザがキャラクタ50に対して1以上の命令及び命令の実行順序を設定し、命令実行の指示を第1のユーザから受け付けた場合、命令及び命令の実行順序に基づいて仮想空間100内でキャラクタ50を動作させる。ここで、第1のユーザのキャラクタ50の動作は、第2のユーザが設定した命令及び命令の実行順序、並びに命令実行の指示とは無関係に実行される。シミュレーションシステム1は、キャラクタ52についても同様に、第2のユーザからの指示に基づき、第2のユーザが設定した命令及び命令の実行順序に基づいて動作させる。第2のユーザのキャラクタ52の動作もキャラクタ50と同様に、第1のユーザが設定した命令及び命令の実行順序、並びに命令実行の指示とは無関係に実行される。
【0027】
ここで、シミュレーションシステム1は、キャラクタが、当該キャラクタを有するユーザに対応付けられているエリアから当該ユーザに対応付けられていないエリアに命令の実行により移動した場合、当該キャラクタに対する命令及び命令の実行順序の追加、及び/又は変更を可能にできる。例えば、第1のユーザのキャラクタ50が命令の実行によりエリア101からエリア101aに移動した場合、エリア101aは第1のユーザに対応付けられているエリアではない。しかし、シミュレーションシステム1は、第1のユーザの指示に基づいて、エリア101a内のキャラクタ50に対する命令の設定(例えば、既に設定した命令の変更や停止、及び/又は新たな命令の追加)を可能にすることができる。具体的に、シミュレーションシステム1は、キャラクタ及びオブジェクトの動作開始位置を当該キャラクタ及び当該オブジェクトを有するユーザに対応付けられているエリア内に限定する一方、キャラクタ及び/又はオブジェクトに対する命令の設定については当該エリア内に限定しない。すなわち、シミュレーションシステム1は、当該ユーザに対応付けられているキャラクタ及びオブジェクトであれば、仮想空間100内のいずれの位置に当該キャラクタ及び当該オブジェクトが存在している場合であっても、当該キャラクタ及び当該オブジェクトに対する命令及び命令の実行順序の設定を可能にできる。
【0028】
また、シミュレーションシステム1は、キャラクタ50とキャラクタ52との仮想空間100内における位置関係が所定の関係を満たした場合(例えば、同一の仮想単位空間に位置することになった場合)、キャラクタ50及びキャラクタ52に設定されている命令に優先し、キャラクタ50及びキャラクタ52の少なくともいずれか一方に所定の動作を実行させる。これにより、キャラクタ50及びキャラクタ52の少なくとも一方が想定外の動作(つまり、設定した命令にはない動作)をすることになり、動作の意外性によるシミュレーションの興趣性を高めることができる。
【0029】
(ユーザに設定される目標について)
シミュレーションシステム1は、各ユーザに達成すべき目標を設定してもよい。各ユーザは、自身が有するキャラクタ及び/又はオブジェクトを自身のエリア内に配置し、かつ、キャラクタに命令及び命令の実行順序を設定してキャラクタに命令を実行させることで、設定された目標の達成を目指して楽しむことができる。例えば、目標として、一のユーザの一のキャラクタが他のユーザの他のエリアの所定箇所(ゴール地点)への到達が設定された場合、一のユーザは、一のキャラクタを自エリアに配置し、かつ、一のキャラクタに1以上の命令及び命令の実行順序を設定してゴール地点への一のキャラクタの到達を目指す。一方、他のユーザは、一のキャラクタのゴール地点への経路を予想し、他のエリア内に一のキャラクタの移動を妨害するオブジェクトを設置することや、一のキャラクタのゴール地点への移動を妨害する命令及び命令の実行順序を設定した他のキャラクタを他のエリア内に設置することで一のユーザの目標達成を妨害することができる。
【0030】
(配置、並びに命令及び命令の実行順序の例)
図2~
図4を用いてキャラクタ及びオブジェクトの配置、並びにキャラクタに対する命令及び命令の実行順序の設定の例を説明する。
図2~
図4では、第1のユーザと第2のユーザとがシミュレーションシステム1を利用している例であって、エリア101に第1のユーザが対応付けられ、エリア101aに第2のユーザが対応付けられている例を示す。なお、
図2において仮想空間100はエリア101とエリア101に隣接するエリア101aとを有して構成され、エリア101は網掛けが施されていない領域であり、エリア101aは網掛けが施された領域である。また、
図2では複数のキャラクタ及びオブジェクトを仮想空間100に配置している例を示すが、仮想空間100に配置するキャラクタ及び/又はオブジェクトは1以上であればよい。
【0031】
また、
図2(b)においては、説明の簡略化のため、各仮想単位空間の下面のみ示す(よって、
図2(b)においては、仮想空間100の下面のみが示されている。)。したがって、シミュレーションシステム1は、仮想空間100の下面だけではなく、下面より上方の仮想単位空間(図示しない)にキャラクタやオブジェクトを設置することもできる。
【0032】
まず、第1のユーザは、自身が有するキャラクタ及び/又はオブジェクトの中からエリア101に配置するキャラクタを選択する。例えば、シミュレーションシステム1は、第1のユーザの情報端末に第1のユーザが有するキャラクタ及びオブジェクトを表示させ(
図2(a)の上段の図参照)、第1のユーザの選択に基づいてキャラクタを選択する。第1のユーザの情報端末には、一例として、第1のユーザが所持するキャラクタ54、キャラクタ56、及びオブジェクト60等が表示される。そして、
図2の例では第1のユーザが、キャラクタ54を選択したとする。
【0033】
そして、シミュレーションシステム1は、第1のユーザに指示されたエリア101の仮想単位空間111にキャラクタ54を配置する。続いて、シミュレーションシステム1は、第1のユーザの情報端末にキャラクタに設定する各種の命令を表示させる(
図2(a)の下段の図参照)。第1のユーザの情報端末には、一例として、「すすむ」ことを指定する命令C1、「まがる」ことを指定する命令C2、「ジャンプ」することを指定する命令C3等が表示される。シミュレーションシステム1は、第1のユーザの指示に基づき、キャラクタ54に1以上の命令及び命令の実行順序を設定する。一方、シミュレーションシステム1は、第2のユーザについても同様に、第2のユーザの指示に基づき、第2のユーザが所持するキャラクタ56を仮想単位空間111iに設置すると共に、キャラクタ56に対する命令及び命令の実行順序を設定する。
【0034】
ここで、キャラクタとは、シミュレーションシステム1に登場可能なキャラクタであって仮想空間100に配置可能であり、仮想空間100内における動作についてユーザが命令を設定できるキャラクタである。また、オブジェクトとは、仮想空間100を構成する所定の仮想単位空間110にユーザの指示に応じて設置可能なオブジェクトであって、キャラクタによる干渉が可能な、若しくは不可能な配置物等を表すオブジェクトである。また、仮想単位空間110には、仮想単位空間の地形や天候等の特徴が設定されてもよい。なお、オブジェクトには、仮想空間100内で実質的に動作しないキャラクタや、キャラクタの動作に付随するオブジェクトである派生オブジェクト、及び仮想単位空間110の地形や天候等に付随する環境に特有なオブジェクト(環境オブジェクト)も含まれる。
【0035】
更に、干渉とは、一のキャラクタが当該一のキャラクタとは異なる別のキャラクタ及び/又はオブジェクトと同一の若しくは近傍の仮想単位空間に存在する場合、及び/又は一のキャラクタが所定の仮想単位空間若しくは所定の仮想単位空間の近傍の仮想単位空間に存在する場合に、一のキャラクタが別のキャラクタ及び/又はオブジェクトに所定の影響を与えること、及び/又は一のキャラクタが所定の仮想単位空間に所定の影響を与え得ることを意味する。所定の影響には様々な影響が挙げられる。例えば、一のキャラクタを他の仮想単位空間に押し出す影響や同一の仮想単位空間内のオブジェクトを破壊する等の影響、更には仮想単位空間の状況を変化させる影響等、様々な影響を設定できる。
【0036】
例えば、
図2(b)において、キャラクタ54に第1のユーザが命令を設定し、キャラクタ56に第2のユーザが命令を設定する。一例として、シミュレーションシステム1は、第1のユーザの指示に基づき、キャラクタ54に、仮想単位空間111から仮想単位空間111aを経由して仮想単位空間111bに至り、仮想単位空間111bで方向転換して仮想単位空間111c、仮想単位空間111d、仮想単位空間111e、仮想単位空間111fまで進み、仮想単位空間111fで再び方向転換して仮想単位空間111gを経由して仮想単位空間111hに到達するように、命令C1(「すすむ」命令)、命令C2(「まがる」命令)、及び/又は命令C3(「ジャンプ」命令)等の各種の命令を適宜組み合わせて指定すると共に各命令の実行順序を設定する。
図2(b)では、仮想単位空間111から仮想単位空間111aの方向を「前方」とすると、キャラクタ54は前方に2マス進み、仮想単位空間111bで進行方向左に曲がって4マス進み、仮想単位空間111fで進行方向右に曲がって2マス進むことになる。
【0037】
同様にしてシミュレーションシステム1は、第2のユーザの指示に基づき、キャラクタ56についても命令及び命令の実行順序を設定する。キャラクタ56の場合は、仮想単位空間111iから仮想単位空間111jを経由して仮想単位空間111kまで進み、仮想単位空間111kで進行方向左に方向転換して仮想単位空間111lに移動し、仮想単位空間111lで更に進行方向右に方向転換して進み、仮想単位空間111hに到達するような命令及び命令の実行順序が設定される。一方、シミュレーションシステム1は、第1のユーザの指示に基づき、オブジェクト60を仮想単位空間111mに配置する。そして、シミュレーションシステムは、第1のユーザからの命令実行の指示を受け取り、キャラクタ54に命令を実行させ、第2のユーザからの命令実行の指示を受け取り、キャラクタ56に命令を実行させる。
【0038】
ここで、シミュレーションシステム1は、ユーザが設定した命令及び命令の実行順序をユーザに知覚可能に出力できる。例えば、シミュレーションシステム1は情報端末において実行可能であり、仮想空間100と共に若しくは別に、ユーザが設定した命令及び実行順序を情報端末の表示部に表示させることができる。例えば、
図2(c)のようなテキスト等を用いて命令内容とその実行順序が命令300として表示される。
図2(c)の例では、第1のユーザのキャラクタ54に設定された命令内容の一部が表示されている。シミュレーションシステム1は、例えば、「すすむ」命令を2回繰り返した後、所定方向に「曲がる」命令を実行し、続いて「すすむ」命令を4回繰り返す内容を含む命令300がキャラクタ54に設定されていることを第1のユーザの情報端末に表示させる。同様にしてシミュレーションシステム1は、第2のユーザの情報端末に第2のユーザがキャラクタ56に設定した命令及び命令の実行順序を表示させる。そして、シミュレーションシステム1は、各ユーザが設定した命令を各ユーザが設定した実行順序で実行することにより、仮想空間100内で各キャラクタを動作させる。
【0039】
なお、シミュレーションシステム1においては、キャラクタが存在する仮想単位空間内で実行する動作(例えば、技の発動、その場でジャンプする等の動作)については、シミュレーションシステム1がキャラクタの動作を実行中であってもユーザの指示に応じて動作可能にしてもよい。
【0040】
(キャラクタ54とキャラクタ54aとの干渉の例)
例えば、
図3(a)に示すように、第1のユーザのキャラクタ54に仮想単位空間111gから仮想単位空間111hに「ジャンプ」する命令(第1の命令)が設定され、第2のユーザのキャラクタ54aに仮想単位空間111lから仮想単位空間111hに「すすむ」命令(第2の命令)が設定されているとする。第1のユーザの指示により第1の命令が実行されるとキャラクタ54は仮想単位空間111gからジャンプして仮想単位空間111hに到達し、第2のユーザの指示により第2の命令が実行されるとキャラクタ54aは仮想単位空間111lから進んで仮想単位空間111hに到達する。そうすると、キャラクタ54とキャラクタ54aとは同一の仮想単位空間111hに存在することになる。この場合、シミュレーションシステム1は、キャラクタ54の特徴とキャラクタ54aの特徴との組み合わせ、及びキャラクタ54が仮想単位空間111hに到達する直前の命令に基づいて、キャラクタ54の仮想単位空間111hにおける動作を制御する。つまり、シミュレーションシステム1は、ユーザの設定によらずに(若しくは優先し)、予め定められた条件に基づいてキャラクタ54の動作を制御する。
【0041】
例えば、シミュレーションシステム1は、同一の仮想単位空間に存在する複数のキャラクタが同一種類のキャラクタであり、一のキャラクタが当該仮想単位空間に隣接する仮想単位空間から「ジャンプ」により当該仮想単位空間に到達した場合、仮想単位空間に存在する他のキャラクタの上に一のキャラクタを乗せる動作を実行させることを予め設定しておく。そして、キャラクタ54とキャラクタ54aとは同一種類のキャラクタであり、キャラクタ54は仮想単位空間111hに到達する直前にジャンプする命令を実行したので、シミュレーションシステム1は
図3(a)に示すように、キャラクタ54aの上にキャラクタ54が乗るようにキャラクタ54を動作させる。なお、シミュレーションシステム1は、同一の仮想単位空間に存在する複数のキャラクタが同一種類のキャラクタであり、一のキャラクタが当該仮想単位空間に隣接する仮想単位空間から「すすむ」により当該仮想単位空間に到達した場合、仮想単位空間に存在する他のキャラクタに衝突し、一のキャラクタがその場(他のキャラクタが存在する仮想単位空間に隣接する仮想単位空間)に留まる動作、又は一のキャラクタ及び他のキャラクタ双方が互いに逆向きに跳ね飛ばされる動作等を実行させることを予め設定しておくこともできる。
【0042】
(キャラクタ54bとキャラクタ54cとの干渉の例)
また、例えば、
図3(b)に示すように、第1のユーザのキャラクタ54bに仮想単位空間111gから仮想単位空間111hに「すすむ」命令(第1の命令)が設定され、第2のユーザのキャラクタ54cに仮想単位空間111lから仮想単位空間111hに「すすむ」命令(第2の命令)が設定されているとする。第1のユーザの指示により第1の命令が実行されるとキャラクタ54bは仮想単位空間111gから進んで仮想単位空間111hに到達し、第2のユーザの指示により第2の命令が実行されるとキャラクタ54cは仮想単位空間111lから進んで仮想単位空間111hに到達する。そうすると、キャラクタ54bとキャラクタ54cとは同一の仮想単位空間111hに存在することになる。この場合、シミュレーションシステム1は、キャラクタ54bの特徴とキャラクタ54cの特徴との組み合わせ、及びキャラクタ54bが仮想単位空間111hに到達する直前の命令に基づいて、キャラクタ54bの仮想単位空間111hにおける動作を制御する。ここで、キャラクタ54bの種類とキャラクタ54cの種類とは同一である一方、キャラクタ54bのサイズはキャラクタ54cのサイズより小さいものとする。
【0043】
例えば、シミュレーションシステム1は、同一の仮想単位空間に存在する複数のキャラクタについて、各キャラクタの種類が同一で、当該仮想単位空間に到達する一のキャラクタのサイズが、当該仮想単位空間に存在する他のキャラクタのサイズより小さい場合、仮想単位空間に存在する他のキャラクタに衝突し、一のキャラクタが移動してきた元の仮想単位空間より更に後方の仮想単位空間に後退する動作を一のキャラクタに実行させることを予め設定しておく。また、この場合、サイズがより大きいキャラクタ(この場合、他のキャラクタ)は、当該仮想単位空間に存在したままの動作を実行させることを予め設定しておく。
【0044】
ここで、
図3(b)の例ではキャラクタ54cのサイズはキャラクタ54bのサイズより大きい。そして、キャラクタ54cが仮想単位空間111hに存在している場合、シミュレーションシステム1は、
図3(b)に示すように、キャラクタ54cによってキャラクタ54bが弾かれ、移動してきた元の経路を後退して仮想単位空間111fに戻るように動作させる。
【0045】
(キャラクタ56とオブジェクト60と干渉の例)
また、
図4に示すように、第2のユーザが有するキャラクタ56が、第2のユーザに対応付けられているエリア101aから第1のユーザに対応付けられているエリア101の仮想単位空間111mに向けて移動し、更に、仮想単位空間111nから仮想単位空間111mに向けてジャンプして移動する命令に基づいて、仮想単位空間111mに移動してきたとする。また、仮想単位空間111mには第1のユーザによりオブジェクト60が設置されていたとする。
【0046】
この場合、キャラクタ56は、仮想単位空間111nからジャンプして仮想単位空間111mに到達する。そうすると、キャラクタ56とオブジェクト60とは同一の仮想単位空間111mに存在することになる。この場合、シミュレーションシステム1は、キャラクタ56の特徴とオブジェクト60の特徴との組み合わせ、及びキャラクタ56が仮想単位空間111mに到達する直前の命令に基づいて、キャラクタ56の仮想単位空間111mにおける動作を制御する。
【0047】
例えば、シミュレーションシステム1は、同一の仮想単位空間に一のキャラクタと所定のオブジェクトとが存在する場合において、所定のオブジェクトがキャラクタからの所定の干渉が可能であることを予め設定しておく。ここでの干渉は、一例として、キャラクタによる所定のオブジェクトの破壊が可能であることを示す。そして、シミュレーションシステム1は、一のキャラクタが当該仮想単位空間に隣接する仮想単位空間から「ジャンプ」により当該仮想単位空間に到達した場合、当該仮想単位空間に存在するオブジェクトを破壊する動作を実行させることを予め設定しておく。そうすると、キャラクタ56は仮想単位空間111mに到達する直前にジャンプする命令を実行したので、シミュレーションシステム1は
図4に示すように、キャラクタ56によりオブジェクト60が破壊され、オブジェクト60の破片である複数のオブジェクト60aが仮想単位空間111mの周囲に散らばるように、キャラクタ56及びオブジェクト60を動作させる。
【0048】
なお、同一の仮想単位空間に一のキャラクタと所定のオブジェクトとが存在する場合において、所定のオブジェクトがキャラクタからの所定の干渉が不可能であることを予め設定した場合であって、一のキャラクタが当該仮想単位空間に隣接する仮想単位空間から「ジャンプ」若しくは「すすむ」により当該仮想単位空間に到達した場合、仮想単位空間に存在するオブジェクトを破壊せず、オブジェクトにより一のキャラクタが弾かれて元の仮想単位空間に戻る動作を実行させることを予め設定しておくこともできる。また、所定のオブジェクトが存在する仮想単位空間に一のキャラクタが進んできた場合において、所定のオブジェクトがキャラクタからの所定の干渉が不可能であることを予め設定してあり、かつ、一のキャラクタが当該キャラクタの属性として「オブジェクトを通り抜ける」属性を有しているとする。この場合、オブジェクトが存在する仮想単位空間に隣接する仮想単位空間から「すすむ」によりオブジェクトが存在する仮想単位空間に一のキャラクタが到達した場合、仮想単位空間に存在するオブジェクトを破壊せず、一のキャラクタがオブジェクトを透過してオブジェクトに隣接する仮想単位空間に進む動作を実行させることを予め設定しておくこともできる。
【0049】
(キャラクタ及びオブジェクトのサイズ)
なお、キャラクタ及びオブジェクトは複数の仮想単位空間110を占めるサイズであってもよい。例えば、2×2×2の8つの仮想単位空間110を占めるサイズのキャラクタ及び/又はオブジェクトや、2×2×1の4つの仮想単位空間110を占めるサイズのキャラクタ及び/又はオブジェクト等、複数の仮想単位空間110を占める様々なサイズのキャラクタ及び/又はオブジェクトを用いることができる。そして、この場合、「干渉」とは、一のキャラクタ及び/又はオブジェクトが占める1以上の仮想単位空間110と他のキャラクタ及び/又はオブジェクトが占める1以上の仮想単位空間110とが一致する場合だけではなく、少なくとも一部が共通する場合に、一のキャラクタが他のキャラクタ及び/又はオブジェクトに所定の影響を与えること、及び/又は一のキャラクタが所定の仮想単位空間に所定の影響を与え得ることを指す。例えば、一のキャラクタが複数の仮想単位空間110を占めており、他のキャラクタが当該複数の仮想単位空間110の全て若しくは一部と重なる場合(つまり、一のキャラクタの存在位置と他のキャラクタの存在位置との少なくとも一部が共通する場合)、「干渉」が発生するとしてよい。また、一のキャラクタ及び/又はオブジェクトが占める1以上の仮想単位空間110と他のキャラクタ及び/又はオブジェクトが占める1以上の仮想単位空間110とが一致する場合、一部が共通する場合とは異なり、特別な干渉として認識し、予め定められた所定の干渉処理を実行してもよい。
【0050】
このようにシミュレーションシステム1においては、まず、キャラクタに対する命令の設定、及び当該命令の実行順序の設定を、複数のユーザそれぞれが、各自が有するキャラクタ及び/又はオブジェクトに対して自由にできる。そして、シミュレーションシステム1においては、各ユーザが設定した命令及び命令の実行順序に従って各ユーザのキャラクタそれぞれの動作の実行が開始され、所定の場合に一のキャラクタと他のキャラクタ等との間で干渉が発生する。干渉が発生した場合、シミュレーションシステム1は、一のキャラクタと他のキャラクタ等との関係や一のキャラクタの直前の動作等に基づいて、一のキャラクタが実行する動作を制御できる。なお、干渉は、一のユーザが有する複数のキャラクタ間若しくは一のユーザが有するキャラクタとオブジェクトとの間で発生させても、一のユーザが有するキャラクタ及び/又はオブジェクトと他のユーザが有するキャラクタ及び/又はオブジェクトとの間で発生させることができる。
【0051】
なお、仮想空間100は複数の仮想単位空間110から構成され、命令が設定されたキャラクタは、一の仮想単位空間110から他の仮想単位空間110へと仮想単位空間ごとに移動できる。したがって、キャラクタ同士、及び/又はキャラクタとオブジェクト等との間の干渉の発生を仮想単位空間ごとに制御できるので、キャラクタへの移動命令を厳密に制御することなく(つまり、キャラクタ同士やキャラクタとオブジェクトとの接触判定を厳密に設定することなく)、ユーザは、干渉の発生自体について容易に想定できる(ただし、いかなる干渉が発生するかについてはユーザに干渉内容を通知することはないので、実際に干渉が発生するまでユーザは容易には想定できない。)。
【0052】
つまり、シミュレーションシステム1においては、複数のユーザそれぞれが設定した命令及び/又は命令の順序が各ユーザの設定どおりに実行されるとは限らず、仮想空間100に配置するキャラクタの特徴、オブジェクトの特徴、及び/又は仮想単位空間110の特徴の組み合わせにより、キャラクタの動作に様々な変化が生じる。したがって、シミュレーションシステム1によれば、各ユーザは、複数のキャラクタを用いる場合、あるキャラクタにどのようなキャラクタを用いると興味深い挙動を観察することができるかや、仮想空間100に配置するオブジェクトによってキャラクタの動作がどのように変化するのか、あるいは他のユーザが用いるキャラクタに自身が有するキャラクタを用いるとどのような意外性のある行動を各キャラクタがするのか等、様々な動作や動作の変化を検討・想定・想像しつつシミュレーションを実行できる。これにより、シミュレーションシステム1においては、複数のユーザそれぞれが、キャラクタやオブジェクト、及び/又は仮想単位空間の様々な組み合わせを試行し、キャラクタ同士の挙動(一のユーザが有するキャラクタ同士、及び/又は一のユーザが有するキャラクタと他のユーザが有するキャラクタ同士の挙動)やキャラクタの仮想空間100内での挙動を観察して楽しむことができる。
【0053】
なお、シミュレーションシステム1は、情報端末等で実現できる。情報端末は、ユーザが操作可能な装置である。情報端末は、例えば、移動体通信システムに対応した携帯電話やスマートフォン、タブレット等の携帯端末であってよい。この他に、情報端末は、例えば、据え置き型のPersonal Computer(PC)、ラップトップPC、ノートPC、携帯用ゲーム機、及び/又は家庭用ゲーム機やゲーム専用機等であってもよい。そして、以下において本実施形態に係るシミュレーションシステム1の詳細を説明するが、上記説明及び下記説明における名称や数値等はあくまで例示であり、これらの固有名や数値に本発明が限定されることはないこと、及びこれら固有名や数値は実在の固有名や数値とは必ずしも関係するとは限らないことを付言する。
【0054】
<シミュレーションシステム1の詳細>
図5は、本実施形態に係るシミュレーションシステムの機能構成の一例を示す。また、
図6は、本実施形態に係る格納ユニットが有する各格納部のデータ構成の一例を示す。
【0055】
[シミュレーションシステム1の構成の概要]
本実施形態に係るシミュレーションシステム1は、複数のユーザそれぞれの所定の指示や情報の入力を受け付ける入力部10と、複数のユーザそれぞれのキャラクタ等を同一の仮想空間100に配置する配置部12と、複数のユーザそれぞれのキャラクタに実行させる命令を設定する命令設定部14と、複数のユーザそれぞれから命令の実行を受け付ける実行受付部16と、各キャラクタの動作を制御する動作制御部18と、各キャラクタの動作等を出力する出力部20と、出力部20の出力を制御する出力制御部21と、各種の情報を格納する格納ユニット22と、仮想単位空間やオブジェクト等に変形等を加える編集部24と、各キャラクタの動作により各ユーザに設定された所定の条件が満たされたか否かを判定する判定部26とを備える。
【0056】
格納ユニット22は、キャラクタに関する情報を格納するキャラクタ情報格納部220と、仮想単位空間に関する情報を格納する単位空間情報格納部221と、命令に関する情報を格納する命令情報格納部222と、キャラクタに対する干渉に関する情報を格納するキャラクタ干渉情報格納部223と、仮想空間に対する干渉に関する情報を格納する空間干渉情報格納部224と、オブジェクトに関する情報を格納するオブジェクト情報格納部225と、オブジェクトに対する干渉に関する情報を格納するオブジェクト干渉情報格納部226と、キャラクタの一連の動作に関する情報を格納する動作シーケンス情報格納部227と、ユーザに関する情報を格納するユーザ情報格納部228とを有する。
【0057】
シミュレーションシステム1は、上記複数の構成要素を物理的に同一の装置や場所に有するだけでなく、上記複数の構成要素の一部を物理的に離れた位置に設置してもよい。例えば、シミュレーションシステム1は、構成要素の機能の一部を外部のサーバに担わせてもよい。また、シミュレーションシステム1は、一以上のサーバとして構成してもよい。この場合、複数の情報端末、並びに一のサーバの構成要素及び他のサーバの構成要素を組み合わせることで、シミュレーションシステム1が構成される。また、本実施形態において、所定の構成要素の集合体を1つの「情報処理装置」として把握することができ、シミュレーションシステム1を複数の情報処理装置の集合体として形成してもよい。1つ又は複数のハードウェアに対して本実施形態に係るシミュレーションシステム1を実現することに要する複数の機能の配分の仕方は、各ハードウェアの処理能力及び/又はシミュレーションシステム1に求められる仕様等に鑑みて適宜決定することができる。更に、格納ユニット22が格納する各種の情報は、入力部10を介して受け付ける各ユーザの指示や情報により更新されてもよく、シミュレーションシステム1の外部に存在する所定のサーバから所定の情報を取得して、随時、更新されてもよい。
【0058】
[シミュレーションシステム1の構成の詳細]
以下の説明においては、シミュレーションシステム1により提供されるシミュレーションを、主として複数のユーザがそれぞれの情報端末を用い、サーバを介して実行する場合を例として説明する。具体的に、シミュレーションシステム1は、例えば、複数のユーザそれぞれの情報端末とサーバとを備える。この場合、複数の情報端末はそれぞれ、入力部10と出力部20とを少なくとも有して構成される。そして、サーバは、入力部10と出力部20とを除く他の構成要素を有して構成され、複数の情報端末と通信ネットワークを介して双方向通信可能に接続される。
【0059】
また、以下の説明において「一のキャラクタ」及び「他のキャラクタ」を用いて説明するが、一のキャラクタを所持するユーザと他のキャラクタを所持するユーザとは同一であっても異なっていてもよい。すなわち、キャラクタを所持するユーザに関わらず「一のキャラクタ」と異なるキャラクタを「他のキャラクタ」として用いる。更に、「ユーザ」若しくは「一のユーザ」を用いて説明する場合、特に断りがない限り、「一のユーザ」とは異なる「他のユーザ」についても各構成要素は同様に動作する。
【0060】
(入力部10、出力部20、出力制御部21)
入力部10は、ユーザからの所定の指示等の入力を受け付ける。入力部10は、例えば、情報端末のタッチパネル、キーボード、マウス、マイク、モーションセンサ等である。入力部10は、シミュレーションシステム1の所定の構成要素に当該指示を供給する。当該指示を受け付けた各構成要素はそれぞれ所定の機能を発揮する。
【0061】
出力部20は、シミュレーションシステム1においてキャラクタによる動作の実行前、実行中、及び/又は実行後の各種の処理結果、並びに仮想空間100の様子を出力制御部21に制御されて出力する。すなわち、出力制御部21は、シミュレーションシステム1の所定の構成要素からの指示及び/又は所定の構成要素から受け取る情報に基づいて、出力部20に出力させる出力内容を制御する。そして、出力部20は、出力制御部21に制御され、各種の処理結果や格納ユニット22が格納している情報、仮想空間100の様子等をユーザが知覚可能に出力する。なお、以下の説明において特に断りがない限り、出力部20は出力制御部21に制御され、各種の情報を出力する。
【0062】
具体的に出力部20は、各種処理結果や格納している情報等を、所定形式のデータ、静止画像、動画像、音声、テキスト、及び/又は振動等の物理現象等として出力する。例えば、出力部20は、情報端末の表示部、スピーカー、振動部(情報端末内に設けられ、所定の電気信号により振動を発生させる装置)、発光部、又はデータ出力部等である。そして、出力部20は、ユーザの指示に応じ、ユーザが設定した仮想空間100へのキャラクタやオブジェクト等の配置に関する情報、キャラクタやオブジェクトに設定した命令及び命令順序を示す情報、及び/又は干渉により所定の動作を実行したキャラクタの当該動作に関する情報等を所定のデータ形式で外部に出力することもできる。また、出力部20は、外部のサーバから受け取る情報も出力できる。
【0063】
また、出力部20は、仮想空間100を構成する複数のエリアについて、一のユーザに対応付けられている一のエリアと、他のユーザに対応付けられている他のエリアとの出力態様を変えて出力してもよい。例えば、一のユーザの情報端末の出力部20は、一のエリアより他のエリアを見えにくい態様で出力できる。つまり、一のユーザの情報端末の出力部20は、一のユーザから見て他のユーザの他のエリアを、一のエリアとは異なる態様で出力してよい。また、出力部20は、一のユーザが有する一のキャラクタと他のユーザが有する他のキャラクタとの出力態様を変えることも変えないこともできる。例えば、一のユーザの情報端末の出力部20は、一のキャラクタについては複数のエリアのいずれのエリアに一のキャラクタが存在する場合であっても、見えやすい態様(明確な態様)で出力でき、他のユーザの他のキャラクタについては一のキャラクタに比べて見えにくい態様(例えば、キャラクタが存在する位置を把握できるものの、いかなる種類のキャラクタであるかが分からない態様)で出力することもできる。
【0064】
(格納ユニット22)
格納ユニット22は、シミュレーションシステム1に関連する各種の情報を格納する。格納ユニット22が有する各格納部は、シミュレーションシステム1の他の構成要素からの要求に応じ、所定の情報を所定の構成要素に供給する。
【0065】
(格納ユニット22:キャラクタ情報格納部220)
キャラクタ情報格納部220は、シミュレーションに用いられるキャラクタに関する情報を格納する。具体的に、キャラクタ情報格納部220は、キャラクタを識別するキャラクタIDに対応付けて、キャラクタ情報等を格納する。キャラクタ情報はキャラクタの特徴であって、例えば、キャラクタの属性、キャラクタの種類、キャラクタの名称、ヒットポイント(HP)、キャラクタの性別、キャラクタの能力、キャラクタの技、キャラクタの技によって削減できる他のキャラクタのHP量、キャラクタのサイズ、キャラクタの重量(体重)、キャラクタが一度の指示で受けることができる最大の命令数、キャラクタが受けることができる命令の種類、所持している道具の有無、経験値、レベル等を示す情報である。
【0066】
なお、属性とは、各キャラクタに設定される情報であり、例えば、キャラクタの種類、状態、性質、若しくは能力等に応じて設定されるキャラクタが有する特徴である。属性としては特に限定されないが、例えば、ノーマル、ほのお、みず、くさ、こおり、でんき、ゴースト等の名称の属性が挙げられる。なお、一のキャラクタには複数の属性が設定されてもよい。また、属性は、キャラクタが覚えている「技」や有しているアイテムに設定される「スキル」等の属性であってもよい。この場合、例えば、キャラクタは、キャラクタ自身の属性と、キャラクタが覚えている「技」の属性(キャラクタ自身の属性と同一でも異なっていてもよい)との双方を有していてもよい。
【0067】
(格納ユニット22:単位空間情報格納部221)
単位空間情報格納部221は、仮想単位空間を識別する仮想単位空間IDに対応付けて、仮想空間内における仮想単位空間の位置を示す位置情報、当該仮想単位空間が属するエリアを示すエリア情報、及び仮想単位空間に対応付けられる地形や天候等に関する情報であって、仮想単位空間の特徴を示す情報である仮想単位空間情報を格納する。エリア情報としては、仮想空間100を構成する複数のエリアを識別するエリアID等が挙げられる。仮想単位空間情報としては、地形情報、天候情報、干渉可否情報等が挙げられる。
【0068】
地形情報としては、具体的に、草原、海岸、水辺、山岳、岩場、街、墓地等を示す情報が挙げられ、仮想単位空間は、対応付けられている地形情報に基づいて当該地形情報に対応する地形を示す仮想単位空間として出力部20から出力される。例えば、仮想単位空間として、草原、岩場、水辺等の複数種類それぞれの地形に特徴的なオブジェクト(このオブジェクトはユーザが配置することも、シミュレーションシステム1が予め配置することもできるオブジェクトであってよい)等を含む仮想単位空間が予め準備されていてよい。また、天候情報としては、仮想単位空間ごとに設定可能な天候に関する情報であって、例えば、晴天、曇天、雨天、雷雨、雪等を示す情報である。天候情報が対応付けられた仮想単位空間は、対応付けられている天候情報に基づいて当該天候情報に対応する天候を示す仮想単位空間として出力部20から出力される。
【0069】
また、干渉可否情報とは、ユーザ及び/又はキャラクタによる仮想単位空間に対する干渉が可能か否かを示す情報である。例えば、干渉可否情報が干渉可能であることを示す情報である場合、編集部24は、干渉可能である仮想単位空間についてはユーザによる所定の指示を入力部10を介して受け付けて、当該指示を仮想単位空間に反映させることができる。例えば、仮想単位空間の地形を変形する干渉が可能である場合、ユーザの指示に応じ、編集部24は、仮想単位空間の地形を変形することができる(一例として、山岳地形を崩す変形や平らな地面に土等を盛って隆起させる変形、沼地等を埋め立てる変形等)。また、干渉可否情報が干渉可能であることを示す情報である場合、干渉可能である仮想単位空間については、キャラクタによる破壊等の干渉も有効にしてよい。一方、干渉可否情報が干渉不可能であることを示す情報である場合、干渉不可能である仮想単位空間についてはユーザ及びキャラクタによる干渉が禁止される。
【0070】
(格納ユニット22:命令情報格納部222)
命令情報格納部222は、命令を識別する命令IDに対応付けてキャラクタに実行させる命令内容を示す命令情報を格納する。命令情報格納部222は、複数の命令情報を格納する。
【0071】
ここで、命令は、仮想空間内の到達位置の指定なしに仮想空間内でキャラクタを移動させる命令(つまり、移動先の仮想単位空間が仮想空間内のいずれの仮想単位空間であるかを指定せず、キャラクタが位置する仮想単位空間を変える動作命令;以下、「第1動作命令」という。)、及び仮想単位空間のいずれかにおいて所定の動作を実行させる命令(つまり、キャラクタが所定の仮想単位空間に位置し、当該キャラクタが当該所定の仮想単位空間で所定の動作を実行する動作命令:以下、「第2動作命令」という。)の少なくともいずれか一方を含む。また、命令は、第1動作命令、及び/又は第2動作命令を所定回数、繰り返す動作命令を含むこともできる。
【0072】
第1動作命令としては、所定の仮想単位空間からの移動(つまり、所定の仮想単位空間に隣接する仮想単位空間にキャラクタの位置を変更する動作)方向や移動量、及び移動方法に関する命令が挙げられ、例えば、前に進む、後ろに戻る、右若しくは左に進む、前にジャンプする、後ろにジャンプする、右若しくは左にジャンプする、飛ぶ、転がる、這う等の命令が挙げられる。また、第2動作命令としては、所定の仮想単位空間から移動せずに所定の動作を実行する命令が挙げられ、キャラクタの向きを所定方向に変える、その場でジャンプする、その場に留まる(待機する)、所定の技(パンチ、キック、電気ショック、その他のキャラクタに特有の技・行動等)を出す、命令を1回休む等の命令が挙げられる。なお、その場に留まる命令としては、キャラクタが座った状態を維持する命令、立った状態を維持する命令、眠った状態を維持する命令、仮想単位空間内を飛行した状態を維持する命令等、当該所定の仮想単位空間に到達する直前の命令若しくは当該所定の仮想単位空間に到達時の命令内容を維持する命令(つまり、「休止」命令)であってよい。
【0073】
また、命令は、キャラクタの存在位置である仮想単位空間に隣接する他の仮想単位空間に当該キャラクタの存在及び技等に起因する派生オブジェクトを発生させる命令を含むこともできる。例えば、キャラクタが所定の技として「火を吐く」技を有しているとする。この場合に、派生オブジェクトを発生させる命令としては、当該キャラクタが所定の仮想単位空間に位置し、かつ、「火を吐く」技を発動した場合、当該仮想単位空間に隣接する他の仮想単位空間に「吐かれた火」を表す派生オブジェクトを発生させる命令である。
【0074】
更に、命令は、キャラクタが所定の条件を満たした場合に所定のキャラクタに変化する(以下、「進化」という。)命令であってもよい。なお、「進化」とは、一のキャラクタが所定の条件を満たした場合に進化先の他のキャラクタに変わることを指す。
【0075】
(格納ユニット22:キャラクタ干渉情報格納部223)
キャラクタ干渉情報格納部223は、一のキャラクタの他のキャラクタに対する干渉が発生した場合における一のキャラクタ及び/又は他のキャラクタの動作を示す動作情報を格納する。すなわち、キャラクタ干渉情報格納部223は、一のキャラクタと他のキャラクタとが同一の仮想単位空間に存在することになった場合に、一のキャラクタ及び/又は他のキャラクタが実行する動作の動作情報を格納する。なお、キャラクタ干渉情報格納部223が格納する動作情報は、一のキャラクタを所持するユーザと他のキャラクタを所持するユーザとが同一であるか否かに関わらず、一のキャラクタの仮想空間100内における位置に対する他のキャラクタの仮想空間100内における位置が所定の位置関係を満たした場合に実行される動作情報であってよい。所定の位置関係とは、例えば、複数のキャラクタが同一の仮想単位空間に位置する関係、一のキャラクタと他のキャラクタとの間の仮想空間100内における距離が所定の距離以下である関係等である。
【0076】
具体的に、キャラクタ干渉情報格納部223は、一のキャラクタを識別する一のキャラクタID及び他のキャラクタを識別する他のキャラクタIDに対応付けて動作情報を格納する。また、キャラクタ干渉情報格納部223は、一のキャラクタID及び他のキャラクタIDと、当該一のキャラクタが他のキャラクタと同一の仮想単位空間に存在することになる前(好ましくは直前)の命令を示す命令情報(以下、「一のキャラクタの直前の命令情報」という。)及び/又は当該他のキャラクタが一のキャラクタと同一の仮想単位空間に存在することになる前(好ましくは直前)の命令を示す命令情報(以下、「他のキャラクタの直前の命令情報」という。)とに対応付けて動作情報を格納してもよい。
【0077】
動作情報は、例えば、一のキャラクタと他のキャラクタとの組み合わせ、一のキャラクタのキャラクタ情報と他のキャラクタのキャラクタ情報との組み合わせ等によって設定される。また、動作情報は、一のキャラクタが他のキャラクタと同一の仮想単位空間に至るまでに実行した命令、若しくは同一の仮想単位空間に至る直前に実行した命令によって設定することもできる。
【0078】
なお、キャラクタ干渉情報格納部223は、キャラクタを特徴づける情報(例えば、キャラクタの属性、サイズ、重量等)に対応付けて、デフォルトの動作情報を格納することもできる。すなわち、キャラクタ干渉情報格納部223は、一のキャラクタIDや他のキャラクタIDに対応付けずに動作情報を格納することもできる。例えば、複数のキャラクタが存在し、複数の命令が存在する場合、キャラクタの組み合わせ及び/又は命令の組み合わせの全てについて動作情報を設定できない場合がある。この場合、キャラクタ干渉情報格納部223は、例えば、一のキャラクタの特徴と他のキャラクタの特徴とを比較することで把握できる同一点や差異点に対応付けて、デフォルトの動作情報を格納する。デフォルトの動作情報としては、例えば、一のキャラクタのサイズと他のキャラクタのサイズとが異なる場合において、両キャラクタが同一の仮想単位空間において衝突した場合、よりサイズの小さいキャラクタが他方のキャラクタによって跳ね飛ばされる動作を設定する情報等が挙げられる。
【0079】
<キャラクタの種類に基づく動作情報の例:種類が同一の場合>
例えば、一のキャラクタの種類と他のキャラクタの種類とに基づいて決定される動作情報を説明する。まず、一のキャラクタの種類と他のキャラクタの種類とが同一である場合であって、一のキャラクタと他のキャラクタとが同一の仮想単位空間に存在することになる場合、一のキャラクタの直前の命令及び他のキャラクタの直前の命令に基づいて動作情報を設定できる。
【0080】
例えば、一のキャラクタの直前の命令が「前に進む」であり、他のキャラクタの直前の命令も「前に進む」である場合、動作情報としては、一のキャラクタと他のキャラクタとが同一の仮想単位空間において「衝突」し、一のキャラクタ及び他のキャラクタのいずれも、直前に存在していた仮想単位空間に後退する動作を示す情報を設定できる。また、一のキャラクタの直前の命令が「前にジャンプする」であり、他のキャラクタの直前の命令が「停止する」である場合(ただし、一のキャラクタが「前にジャンプする」ことで他のキャラクタが「停止」している仮想単位空間に到達するとする。)、動作情報としては、一のキャラクタと他のキャラクタとが同一の仮想単位空間において重なる動作、すなわち、他のキャラクタの上に一のキャラクタが乗る動作を示す情報を設定できる。
【0081】
更に、一のキャラクタの直前の命令が「前に進む」であり、他のキャラクタが所定の仮想単位空間において一のキャラクタに対して背を向けており、他のキャラクタの直前の命令が「停止する」である場合(なお、一のキャラクタが「前に進む」ことで他のキャラクタが「停止」している所定の仮想単位空間に到達するとする。)、動作情報としては、他のキャラクタが一のキャラクタの進行方向に沿って所定の仮想単位空間に隣接する他の仮想単位空間に押し出される動作を示す情報を設定できる。
【0082】
<キャラクタの種類に基づく動作情報の例:種類が同一で、サイズが所定以上の場合>
なお、キャラクタの種類が同一である場合であっても、上記とは異なり、キャラクタの特徴に応じて特殊な動作情報を設定することもできる。例えば、一のキャラクタの種類と他のキャラクタの種類とが同一であり、両キャラクタのサイズ及び/又は重量が所定値以上である場合であって、一のキャラクタと他のキャラクタとが同一の仮想単位空間に存在することになる場合、一のキャラクタの直前の命令及び他のキャラクタの直前の命令に基づいて所定の動作情報を設定できる。
【0083】
例えば、一のキャラクタの直前の命令が「前にジャンプする」であり、他のキャラクタの直前の命令が「停止する」である場合(ただし、一のキャラクタが「前にジャンプする」ことで他のキャラクタが「停止」している仮想単位空間に到達するとする。)、動作情報としては、両キャラクタのサイズが所定値以上であるので(一のキャラクタは高くはジャンプできず)、上記と異なり他のキャラクタに一のキャラクタが乗るのではなく、一のキャラクタが同一の仮想単位空間において他のキャラクタに「衝突」し、一のキャラクタが、直前に存在していた仮想単位空間において佇む動作を示す情報を設定できる。
【0084】
<キャラクタの種類に基づく動作情報の例:種類が相違する場合(その1)>
一のキャラクタの種類と他のキャラクタの種類とが異なるである場合であって、一のキャラクタと他のキャラクタとが同一の仮想単位空間に存在することになる場合、一のキャラクタの特徴及び他のキャラクタの特徴と、一のキャラクタの直前の命令及び他のキャラクタの直前の命令に基づいて動作情報を設定できる。
【0085】
例えば、一のキャラクタの特徴として一のキャラクタの重量が設定され、他のキャラクタの特徴として他のキャラクタの重量が設定されており、一のキャラクタの重量が他のキャラクタの重量より小さい場合であって、一のキャラクタの直前の命令が「前に進む」であり、他のキャラクタの直前の命令も「前に進む」である場合、動作情報としては、一のキャラクタと他のキャラクタとが同一の仮想単位空間(衝突位置の仮想単位空間)で衝突し、一のキャラクタが直前に存在していた仮想単位空間に後退する動作をし、他のキャラクタが衝突位置の仮想単位空間に留まる動作をすることを示す情報を設定できる。
【0086】
<キャラクタの種類に基づく動作情報の例:種類が相違する場合(その2)>
一のキャラクタの種類と他のキャラクタの種類とが異なるである場合であって、一のキャラクタと他のキャラクタとが同一の仮想単位空間に存在することになる場合、一のキャラクタが有する特殊な特徴に基づいて動作情報を設定できる。
【0087】
例えば、一のキャラクタが、自身が存在する仮想単位空間に隣接する仮想単位空間であって、一のキャラクタの正面に位置する仮想単位空間に存在する他のキャラクタの特徴をコピーできる能力を有する特徴を備えている場合を説明する。この場合、一のキャラクタの直前の命令が「前に進む」であり、他のキャラクタの直前の命令が「停止する」若しくはその場で所定の動作を実行する内容である場合、動作情報としては、一のキャラクタの正面に他のキャラクタが位置しているので、一のキャラクタが他のキャラクタの能力をコピーした上で前進し、他のキャラクタに衝突する動作を示す情報を設定できる。この場合、動作情報として、他のキャラクタが驚く動作を示す情報を同時に設定してもよい。
【0088】
<キャラクタのサイズに基づく動作情報の例>
例えば、一のキャラクタのサイズと他のキャラクタのサイズとが異なる場合を説明する。ここで、一のキャラクタのサイズが他のキャラクタのサイズより小さいとする。この場合、動作情報としては、他のキャラクタが存在する仮想単位空間に一のキャラクタが到達したときの動作が設定される。この動作は、例えば、一のキャラクタが他のキャラクタに衝突し、当該仮想単位空間へ一のキャラクタが至った経路を逆方向に向かって一のキャラクタが跳ね返る動作であってよい。
【0089】
<キャラクタの直前の命令に基づく動作情報の例(その1)>
また、一のキャラクタの種類と他のキャラクタの種類とが異なるである場合であって、一のキャラクタのサイズと他のキャラクタのサイズとが異なり、一のキャラクタが進化可能である場合を説明する。ここで、一のキャラクタのサイズが他のキャラクタのサイズより小さいとする。そして、一のキャラクタと他のキャラクタとが同一の仮想単位空間に存在することになる場合、一のキャラクタの直前の命令及び他のキャラクタの直前の命令に基づいて動作情報を設定できる。
【0090】
例えば、進化していない一のキャラクタが所定の仮想単位空間に至る場合の直前の命令が「前に進む」であり、他のキャラクタの直前の命令が所定の仮想単位空間において「眠る」である場合、動作情報としては、一のキャラクタが他のキャラクタに衝突し、当該仮想単位空間へ一のキャラクタが至った経路を逆方向に向かって跳ね返る動作を設定でき、他のキャラクタはそのまま「眠る」を継続する動作を設定できる。
【0091】
一方、例えば、一のキャラクタが所定の仮想単位空間に至る前において所定の条件を満たして「進化」しており、進化後の一のキャラクタの直前の命令が「前に進む」であり、他のキャラクタの直前の命令が「眠る」である場合、動作情報としては、一のキャラクタが他のキャラクタと同一の仮想単位空間(衝突位置の仮想単位空間)で衝突し、他のキャラクタが「目覚め」、一のキャラクタと他のキャラクタとが衝突位置の仮想単位空間において共に目覚めている状態で停止する動作を示す情報を設定できる。
【0092】
<キャラクタの直前の命令に基づく動作情報の例(その2)>
また、一のキャラクタの種類と他のキャラクタの種類とが異なるである場合であって、一のキャラクタのサイズと他のキャラクタのサイズとが異なり、一のキャラクタのサイズが他のキャラクタのサイズより小さい場合を説明する。更に、他のキャラクタが存在している仮想単位空間の上方の仮想単位空間に一のキャラクタが存在しているとする。
【0093】
ここで、一のキャラクタが他のキャラクタが存在する所定の仮想単位空間に至る場合の直前の命令が「落ちる」等であり(若しくは、所定の仮想単位空間の上方にキャラクタの落下を遮るオブジェクト等がない場合、いかなる命令であっても一のキャラクタは所定の仮想単位空間に向けて落下するようにしてもよい。)、他のキャラクタの直前の命令が所定の仮想単位空間において「留まる」である場合、動作情報としては、一のキャラクタが他のキャラクタに衝突し、跳ねつつ当該仮想単位空間に隣接する仮想単位空間に着地する動作を示す情報を設定できる。一方、他のキャラクタが存在する所定の仮想単位空間と同一平面に沿って一のキャラクタが当該所定の仮想単位空間に到達した場合、動作情報としては、一のキャラクタが他のキャラクタに衝突し、移動方向と逆方向に跳ね返される動作を示す情報を設定できる。
【0094】
また、一のキャラクタの種類と他のキャラクタの種類とが異なるである場合であって、一のキャラクタが所定の技(例えば、電気ショック)を使用可能である場合を説明する。
【0095】
ここで、他のキャラクタが存在する所定の仮想単位空間に一のキャラクタが至る場合の直前の命令が「前に進む」であり、かつ、「前に進む」の後に「電気ショック」を発動する命令が設定されており、他のキャラクタの直前の命令が所定の仮想単位空間において「眠る」である場合、動作情報としては、一のキャラクタが他のキャラクタに衝突した時に、一のキャラクタが「電気ショック」を発動し、他のキャラクタが「電気ショック」に驚いて飛び起きる動作を示す情報を設定できる。
【0096】
(格納ユニット22:空間干渉情報格納部224)
空間干渉情報格納部224は、一のキャラクタの仮想単位空間に対する干渉が発生した場合における一のキャラクタの動作を示す動作情報を格納する。すなわち、空間干渉情報格納部224は、一のキャラクタが所定の仮想単位空間に存在することになった場合に、一のキャラクタが実行する動作の動作情報を格納する。なお、動作情報は、一のキャラクタの干渉により、一のキャラクタが存在する仮想単位空間の状態を変化させる情報も含む。
【0097】
具体的に、空間干渉情報格納部224は、キャラクタIDと所定の仮想単位空間を識別する仮想単位空間IDとに対応付けて動作情報を格納する。また、空間干渉情報格納部224は、キャラクタID及び仮想単位空間IDと、当該キャラクタが当該仮想単位空間IDで識別される仮想単位空間に存在することになる前(好ましくは直前)の命令を示す命令情報(以下、「キャラクタの直前の命令情報」という。)とに対応付けて動作情報を格納してもよい。
【0098】
動作情報は、例えば、キャラクタの特徴等と仮想単位空間情報との組み合わせ等によって設定される。また、動作情報は、キャラクタが所定の仮想単位空間に至るまでに実行した命令、若しくは当該所定の仮想単位空間に至る直前に実行した命令によって設定することもできる。
【0099】
<仮想単位空間の地形に基づく動作情報の例>
例えば、キャラクタが所定の地形の仮想単位空間に到達した場合を説明する。一例として、仮想単位空間が「川」の地形を有しており、命令設定部14が設定した命令によってキャラクタが「川」を有する当該仮想単位空間に到達した例を挙げる。
【0100】
この場合において、キャラクタの直前の命令が「前に進む」であり、キャラクタの属性が「みずタイプ」である場合、動作情報としては、キャラクタが「川」を有する仮想単位空間を「川」を有さない仮想単位空間と同様に進む動作をすることを示す情報を設定できる。また、キャラクタの直前の命令が「前に進む」であり、キャラクタの属性が「みずタイプ」である場合であって水中で遊泳可能なキャラクタである場合、動作情報としては、キャラクタが「川」を有する仮想単位空間において「川」の中で泳ぎだす動作をすることを示す情報を設定できる。一方、キャラクタの直前の命令が「前に進む」であり、キャラクタの属性が「ほのおタイプ」である場合、動作情報としては、キャラクタが「川」を有する仮想単位空間に進むことができずに後退する動作を示す情報を設定できる。また、キャラクタの直前の命令が「前に進む」であり、キャラクタの属性が「いわタイプ」である場合、動作情報としては、キャラクタが「川」に流されて、「川」を有する仮想単位空間に隣接する他の仮想単位空間に移動する動作を示す情報を設定してもよい。更に、キャラクタの直前の命令が「前に進む」であり、キャラクタの属性が「いわタイプ」であって、当該キャラクタのサイズが所定の大きさ以上である場合、動作情報としては、キャラクタが「川」に嵌まる動作を示す情報を設定すると共に「川」から水が溢れる様子を出力する情報を設定してもよい。
【0101】
<仮想単位空間の天候に基づく動作情報の例>
例えば、キャラクタが所定の天候の仮想単位空間に到達した場合、及び/又は存在する場合を説明する。一例として、仮想単位空間の天候が「雨天」であり、命令設定部14が設定した命令によってキャラクタが当該仮想単位空間に到達する例を挙げる。
【0102】
この場合において、キャラクタに対する直前の命令、及び/又は「雨天」の仮想単位空間内での命令が「走って1マス進む」である場合、動作情報としては、キャラクタが「雨天」の仮想単位空間を進む場合に所定の確率で(例えば、ランダムに)、キャラクタがスリップして1マス以上余計に進む動作を示す情報を設定できる。また、キャラクタの直前の命令、及び/又は「雨天」の仮想単位空間での命令が「天候を変える技」である場合、動作情報としては、当該技によって当該キャラクタが存在する仮想単位空間の天候を変更することを示す情報を設定することもできる。
【0103】
<仮想単位空間とキャラクタの属性に基づく動作情報の例>
例えば、キャラクタが所定の地形の仮想単位空間に到達した場合を説明する。一例として、仮想単位空間が「壁」を有する地形を有しており、命令設定部14が設定した命令によってキャラクタが「壁」を有する当該仮想単位空間に到達した例を挙げる。
【0104】
この場合において、キャラクタの直前の命令が「前に進む」であり、キャラクタの属性が「ノーマルタイプ」である場合、動作情報としては、キャラクタが「壁」を有する仮想単位空間を進むことができず、当該仮想単位空間に到達する直前の仮想単位空間に留まる動作をすることを示す情報を設定できる。また、キャラクタの直前の命令が「前に進む」であり、キャラクタの属性が「ゴーストタイプ」である場合、動作情報としては、キャラクタが「壁」を有する仮想単位空間をすり抜けて進む動作をすることを示す情報を設定できる。
【0105】
(格納ユニット22:オブジェクト情報格納部225)
オブジェクト情報格納部225は、仮想単位空間に配置可能なオブジェクトに関する情報(オブジェクト情報)を格納する。具体的に、オブジェクト情報格納部225は、オブジェクトを識別するオブジェクトIDに対応付けて、オブジェクト情報等を格納する。オブジェクト情報は、例えば、オブジェクトの属性、オブジェクトの種類、オブジェクトの名称、オブジェクトのサイズ、オブジェクトの破壊可否等を示す情報である。なお、属性とは、各オブジェクトに設定される情報であり、例えば、オブジェクトの種類、状態、若しくは性質等に応じて設定されるオブジェクトが有する特徴である。なお、一のオブジェクトには複数の属性が設定されてもよい。
【0106】
また、オブジェクトは、仮想単位空間に配置可能なオブジェクトであって、仮想単位空間の地形等の環境を設定若しくは変形可能なオブジェクト(以下、「環境オブジェクト」という。)を含むことができる。環境オブジェクトには、地形を表すオブジェクト(例えば、木、岩、海、滝、川等)、構造物を表すオブジェクト(例えば、ブロック、壁、建物、床等)、及び/又は命令設定部14による命令の設定が不可能なキャラクタ(例えば、所定の仮想単位空間で睡眠しているか、目覚めていても移動しないキャラクタ等)等が含まれていてよい。そして、環境オブジェクトは、キャラクタによる干渉が可能なオブジェクト及びキャラクタによる干渉が不可能なオブジェクトが含まれていてよい。干渉が可能なオブジェクトは、キャラクタの動作(例えば、所定の技や突進等)により破壊可能なオブジェクト(例えば、破壊可能な木や岩等)である。一方、干渉が不可能なオブジェクトは、キャラクタの動作によっては破壊不可能なオブジェクト(例えば、破壊不可能な床や壁等)である。更に、オブジェクトは、所定のキャラクタに固有の派生オブジェクトを含んでいてもよい。派生オブジェクトは、例えば、所定のキャラクタの動作(一例として、当該所定のキャラクタの技)の発動に応じて発生するオブジェクトである。
【0107】
(格納ユニット22:オブジェクト干渉情報格納部226)
オブジェクト干渉情報格納部226は、キャラクタのオブジェクトに対する干渉が発生した場合における当該キャラクタ及び/又は当該オブジェクトの動作を示す動作情報を格納する。すなわち、オブジェクト干渉情報格納部226は、キャラクタとオブジェクトとが同一の仮想単位空間に存在することになった場合に、キャラクタが実行する動作及び/又はオブジェクトが受ける影響に関する動作情報を格納する。
【0108】
具体的に、オブジェクト干渉情報格納部226は、キャラクタID及びオブジェクトIDに対応付けて動作情報を格納する。また、オブジェクト干渉情報格納部226は、キャラクタID及びオブジェクトIDと、当該キャラクタが当該オブジェクトと同一の仮想単位空間に存在することになる前(好ましくは直前)の命令を示す命令情報(以下、「キャラクタの直前の命令情報」という。)とに対応付けて動作情報を格納してもよい。
【0109】
動作情報は、例えば、キャラクタとオブジェクトとの組み合わせ、キャラクタのキャラクタ情報とオブジェクトのオブジェクト情報との組み合わせ等によって設定される。また、動作情報は、キャラクタがオブジェクトと同一の仮想単位空間に至るまでに実行した命令、若しくは同一の仮想単位空間に至る直前に実行した命令に応じて設定することもできる。
【0110】
<オブジェクトの種類に基づく動作情報の例>
例えば、キャラクタが所定のオブジェクトが配置されている仮想単位空間に到達した場合を説明する。
【0111】
一例として、仮想単位空間に「岩」を表す環境オブジェクトが配置されており、この環境オブジェクトが干渉可能なオブジェクトであるとする。そして、キャラクタがこの仮想単位空間に到達した場合であって、キャラクタの直前の命令が「技を出す」であり、当該技において「岩」の環境オブジェクトが破壊可能である場合、動作情報としては、キャラクタが「岩」を「技」で破壊する動作をすることを示す情報を設定できる。また、仮想単位空間に「岩」を表す環境オブジェクトが配置されており、この環境オブジェクトが干渉不可能なオブジェクトであるとする。そして、キャラクタがこの仮想単位空間に到達した場合、キャラクタの直前の命令がいかなる命令であっても、動作情報としては、キャラクタが「岩」によって跳ね返され、当該仮想単位空間に到達する直前の仮想単位空間に後退する動作をすることを示す情報を設定できる。
【0112】
また、オブジェクトとして、所定のキャラクタが当該オブジェクトを取得することにより進化可能なオブジェクトを用意できる。例えば、配置部12が所定の仮想単位空間に所定のキャラクタの進化に必要なオブジェクト(進化用オブジェクト)を配置する。そして、進化用オブジェクトが配置されている仮想単位空間に命令設定部14が設定した命令によって所定のキャラクタが到達した場合、当該キャラクタの直前の命令がいかなる命令であっても、動作情報としては、当該キャラクタが進化する動作を示す情報を設定できる。
【0113】
(格納ユニット22:動作シーケンス情報格納部227)
動作シーケンス情報格納部227は、動作シーケンス情報を識別する動作シーケンス情報IDに対応付けて、動作シーケンス情報を格納する。動作シーケンス情報とは、キャラクタの動作に用いられた仮想空間100、配置部12による配置結果、命令設定部14が所定のキャラクタに設定した1以上の命令及び当該命令の実行順序、並びに後述する動作制御部18によって制御されたキャラクタの動作を含む情報である。すなわち、動作シーケンス情報とは、仮想空間100内へのキャラクタ及び又はオブジェクトの配置、並びに仮想空間100内でのキャラクタの動作開始から動作終了までの一連の動作を、シミュレーションシステム1を含む任意のシステムにおいて任意のタイミングで再現することを可能にする情報である。
【0114】
出力部20は、動作シーケンス情報に基づいて、任意のタイミングで仮想空間100内においてキャラクタの動作を実行すること、典型的には、各ユーザの指示に応じ、各ユーザの情報端末の表示部等において仮想空間100内におけるキャラクタの動作を動画として再生することができる。動作シーケンス情報は、例えば、当該動作シーケンス情報が生成されたシミュレーションシステム1外の情報端末やサーバ等に通信網や記録媒体等を介して提供されてもよい。動作シーケンス情報が提供された情報端末やサーバ等は、当該動作シーケンス情報を用いて仮想空間100内においてキャラクタの動作を実行させることができる。これにより、一のシミュレーションシステム1で作成した動作シーケンス情報を、他のシミュレーションシステム1に供給することができる。
【0115】
(格納ユニット22:ユーザ情報格納部228)
ユーザ情報格納部228は、ユーザを識別するユーザIDに対応付けてユーザ情報、キャラクタ情報、オブジェクト情報、及びエリア情報を格納する。ユーザ情報は、ユーザ名、ユーザのニックネーム、ユーザの個人に特有の情報(生年月日等)、ユーザがシミュレーションシステム1において達成した目標に関する情報、及び/又はユーザが所持するアイテムに関する情報等である。また、キャラクタ情報は、ユーザが有するキャラクタに関する情報(例えば、キャラクタIDや所持しているキャラクタの数等の情報)であり、オブジェクト情報は、ユーザが有するオブジェクトに関する情報(例えば、オブジェクトIDや所持しているオブジェクトの数等の情報)である。更に、エリア情報は、ユーザに対応付けられているエリアに関する情報(例えば、エリアID等の情報)である。
【0116】
(配置部12)
配置部12は、仮想空間100を構成する仮想単位空間110に、キャラクタ及び/又はオブジェクトを配置する。配置部12は、キャラクタ及び/又はオブジェクトを仮想単位空間110に予め配置することもできる。また、配置部12は、入力部10が受け付けたユーザの指示に応じ、所定のキャラクタ及び/又は所定のオブジェクトをユーザが指定した仮想単位空間110に配置することができる。配置部12は、複数の仮想単位空間110それぞれに、キャラクタ及び/又はオブジェクトを配置することもできる。つまり、配置部12は、各ユーザからの指示に基づいて、1以上のキャラクタを1以上の仮想単位空間110それぞれに配置すること、及び/又は1以上のオブジェクトを1以上の仮想単位空間110それぞれに配置することができる。なお、仮想空間100は仮想の3次元で構成されているので、配置部12は、仮想空間100の下面102のみならず、下面102より上方の仮想単位空間110にキャラクタ及び/又はオブジェクトを配置することもできる。
【0117】
ここで、配置部12は、エリアに最初に配置されるキャラクタの位置をユーザに対応付けられているエリアに基づいて制限する。具体的に、配置部12は、一のユーザ(第1のユーザ)の一のキャラクタ(第1のキャラクタ)が動作を開始するエリア内の位置である動作開始位置の指定に際し、一のユーザに対応付けられている一のエリア(第1のエリア)内での一のキャラクタの動作開始位置の指定を許可し、一のユーザに対応付けられていない他のエリア内での一のキャラクタの動作開始位置の指定を禁止する。配置部12は、他のユーザ(第2のユーザ)についても同様にする。また、配置部12は、一のユーザに対応付けられている一のエリア内への一のユーザが有するオブジェクトの設置を許可し、一のユーザに対応付けられていない他のエリア(第2のエリア)内へのオブジェクトの設置を禁止する。配置部12は、他のユーザについても同様にする。
【0118】
更に、出力部20は、一のユーザのユーザIDに対応付けてユーザ情報格納部228に格納されているキャラクタ情報及び/又はオブジェクト情報に含まれるキャラクタID及び/又はオブジェクトIDを用い、キャラクタ情報格納部220に格納されているキャラクタ及び/又はオブジェクト情報格納部225に格納されているオブジェクトの情報(例えば、当該一のユーザがシミュレーションシステム1において使用可能なキャラクタ及び/又はオブジェクトの一覧情報)を一のユーザの情報端末の表示部に出力する。そして、配置部12は、入力部10を介して一のユーザによるキャラクタ及び/又はオブジェクトの選択指示を受け付けて、キャラクタ情報格納部220に格納されている一のユーザに選択されたキャラクタの情報、及び/又はオブジェクト情報格納部225に格納されている一のユーザに選択されたオブジェクトの情報を取得する。また、出力部20は、一のユーザの情報端末の表示部に仮想単位空間110からなる仮想空間100を出力する。配置部12は、一のユーザによる仮想単位空間110の選択指示を一のユーザが選択したキャラクタ及び/又はオブジェクトごとに入力部10を介して受け付ける。そして、配置部12は、一のユーザが選択指示した仮想単位空間に、取得したキャラクタの情報が示すキャラクタ及び/又はオブジェクトの情報が示すオブジェクトを配置する。一のユーザの情報端末の出力部20は、配置部12がキャラクタ及び/又はオブジェクトを仮想単位空間に配置した状態を示す画像を出力することができる。配置部12は、仮想空間100に配置されたキャラクタ及び/又はオブジェクトに関する情報を動作制御部18に供給する。
【0119】
(命令設定部14)
命令設定部14は、複数のユーザそれぞれが有するキャラクタが仮想空間100内で実行する1つ以上の命令を各キャラクタに設定し、複数の命令が設定された場合には、複数の命令の実行順序を各キャラクタに設定する。すなわち、命令設定部14は、一以上のキャラクタそれぞれについて、各キャラクタを有するユーザそれぞれの指示に基づいて命令及び実行順序の設定ができる。具体的に、命令設定部14は、一のユーザが有する一のキャラクタに対し、一のユーザの指示、つまり一のユーザの一の操作(例えば、入力部10を介して受け付ける命令設定の指示)に基づいて命令及び実行順序の設定が可能であると共に、他のユーザが有する他のキャラクタに対し、他のユーザの指示に基づいて記命令及び実行順序の設定が可能である。
【0120】
なお、ユーザがキャラクタを「有する」とは、例えば、以下の態様を含む。
(a)ユーザにキャラクタが対応付けられており、ユーザが命令を設定可能なキャラクタ。
(b)抽選や購入等で恒常的にユーザが所有するキャラクタ、又は一時的に所有している(つまり、一定時間経過後は非所持となる)キャラクタ。
(c)ユーザと所定の関係性を有する他のプレイヤ(例えば、ユーザのフレンドやユーザが属するチームのメンバー等)から一時的にゲームで使用する権利をレンタルしたキャラクタ。
【0121】
また、命令設定部14は、一のエリアの動作開始位置から他のエリアに一のユーザが設定した命令に基づいて一のキャラクタが移動した後、入力部10を介して受け付ける一のユーザの指示に基づいて、他のエリア内において一のキャラクタに、命令及び実行順序を設定(つまり、追加で設定若しくは新たに設定)することもできる。すなわち、一のユーザのキャラクタは、一のユーザに対応付けられている一のエリアに最初に配置し、その位置で命令及び命令の実行順序を設定できるものの、他のエリアに最初に配置して命令及び命令の実行順序を設定できない。しかし、一のキャラクタが設定された命令に基づいて一のエリアから他のエリア内に侵入した後は、他のエリア内に存在する一のキャラクタに対し、命令の変更や新たな命令及び命令の実行順序を設定することができる。
【0122】
更に、命令設定部14は、複数のキャラクタが一のユーザにより選択された場合、一のキャラクタと一のキャラクタとは別のキャラクタとのそれぞれについて命令及び実行順序を設定する。すなわち、命令設定部14は、入力部10を介し、一のユーザによる命令の選択及び選択された命令の実行順序を受け付けて、受け付けた命令及び命令の実行順序を一のユーザが選択したキャラクタに対応付ける。命令設定部14は、他のユーザが有する1以上のキャラクタについても同様に他のユーザの指示に応じ、命令及び命令の実行順序を対応付ける。具体的に、出力部20は、命令情報格納部222に格納されているキャラクタに対する命令に関する情報を各ユーザに知覚可能に出力する。そして、命令設定部14は、入力部10を介し、命令に関する情報を参照した各ユーザによる命令及び命令の実行順序の設定指示を受け付けて、受け付けた命令及び命令の実行順序を各ユーザが選択したキャラクタに対応付ける。また、出力部20は、命令設定部14が設定した命令及び命令の実行順序をテキストや所定の図形等によって各ユーザの情報端末に知覚可能に出力することができる。命令設定部14は、複数のユーザそれぞれのキャラクタに対応付けられた命令及び命令の実行順序を示す情報を動作制御部18に供給する。
【0123】
なお、命令設定部14は、ユーザによる命令の選択及び命令の実行順序の指示を受けずに、自動で命令及び命令の実行順序を設定することもできる。この場合、命令設定部14は、例えば、ランダムに命令及び命令の実行順序を設定することも、予め決められた命令及び命令の実行順序を設定することもできる。一例として、命令設定部14は、チュートリアルとして、所定のキャラクタに、予め決められた命令及び実行順序を設定してもよい。
【0124】
具体的に、命令設定部14が設定する命令は、命令情報格納部222に格納されている命令である。命令設定部14が設定する命令としては、上述した第1動作命令、第2動作命令、繰り返す動作命令、派生オブジェクトを発生させる命令、及び進化させる命令等が挙げられる。なお、命令設定部14は、第1動作命令に含まれる所定の仮想単位空間からの移動量を、仮想単位空間の数を単位として設定することができる。つまり、仮想単位空間を仮想のマスとして捉えることで、キャラクタに「2マス前に進む」等の命令を設定できる。仮想単位空間を仮想のマスとして扱うことで、キャラクタの移動の設定が容易になる。また、命令設定部14が設定する命令の実行順序はユーザの所望に応じて自由に設定できる。
【0125】
更に、キャラクタに設定可能な命令数及び/又は命令の種類はキャラクタによって異なっていてもよい。命令設定部14は、キャラクタ情報格納部220に格納されているキャラクタ情報に含まれる「キャラクタが一度の指示で受けることができる最大の命令数」に基づいて、キャラクタに設定可能な命令数を制限できる。また、命令設定部14は、キャラクタ情報格納部220に格納されているキャラクタ情報に含まれる「キャラクタが受けることができる命令の種類」に基づいて、キャラクタに設定可能な命令の種類を制限してもよい。例えば、第1のキャラクタと第2のキャラクタとが存在し、第1のキャラクタのサイズが第2のキャラクタのサイズより小さい場合、小回りが第1のキャラクタの方が利くとして、第1のキャラクタの最大命令数を第2のキャラクタの最大命令数より多く設定してもよい。また、第1のキャラクタのサイズが所定サイズ未満であり、第2のキャラクタのサイズが所定サイズ以上の場合、第1のキャラクタが身軽であるとして第1のキャラクタ用の命令の種類に「ジャンプ」を含め、第2のキャラクタ用の命令の種類には「ジャンプ」を含めないようにしてもよい。
【0126】
<キャラクタが仮想空間100内で動作中に進化する場合を含む命令の例>
ここで、命令設定部14が一のキャラクタに「進化する」命令を設定した場合を例に挙げて説明する。例えば、命令設定部14は、一のキャラクタに「前に進む」、「技を出す」、「前に進む」、「進化する」、「前に進む」、「技を出す」という命令をこの順に設定したと想定する。この場合、命令設定部14は、進化前の「技を出す」命令と、進化後の「技を出す」命令とについて、キャラクタの進化前後によって異ならせてもよい。すなわち、ユーザは単に「技を出す」という命令を設定するだけでよく、「技」の内容については、命令設定部14が設定された命令の内容及び実行順序に基づいて適宜設定してよい。この例では、進化前のキャラクタの技と進化後のキャラクタの技とは異なることを前提にする。そのため、命令設定部14は、進化後のキャラクタに対してユーザが「技を出す」命令を設定した場合、当該「技」が進化後のキャラクタの「技」であると判断し、進化前ではなく、進化後のキャラクタの「技」が出るように設定してもよい。
【0127】
(実行受付部16)
実行受付部16は、命令設定部14が設定した命令の実行指示を受け付ける。具体的に、実行受付部16は、入力部10を介してユーザからの命令の実行指示を受け付ける。実行受付部16は、ユーザが複数のキャラクタに命令を設定している場合、例えば、以下の各パターンのいずれかで命令の実行を受け付けることができる。
【0128】
(パターン1)複数のキャラクタ全てに対する命令の実行指示を一括で受け付ける。
(パターン2)複数のキャラクタを複数のグループに分け、各グループそれぞれに異なるタイミング若しくは一部は同一のタイミングで命令の実行指示を受け付ける。
(パターン3)複数のキャラクタからユーザが選択したキャラクタごとに命令の実行指示を受け付ける。
【0129】
実行受付部16は、所定のキャラクタに対する命令の実行指示を受け付けたことを示す情報を動作制御部18に供給する。
【0130】
(動作制御部18)
動作制御部18は、実行受付部16から受け付けた情報に応じ、命令設定部14が設定した命令及び実行順序に基づいて、配置部12が仮想空間100に配置したキャラクタを仮想空間100内で動作させる。動作制御部18は、仮想空間100内において複数のキャラクタそれぞれをリアルタイムに若しくは所定のターンごとに動作させることができる。例えば、動作制御部18は、一のユーザの指示を受け付けて他のユーザの指示とは無関係に一のユーザが有する一のキャラクタを一のキャラクタに対して設定された命令及び実行順序に基づいて仮想空間100内で動作させ、他のユーザの指示を受け付けて一のユーザの指示とは無関係に他のユーザが有する他のキャラクタを他のキャラクタに対して設定された命令及び実行順序に基づいて仮想空間100内で動作させる。そして、動作制御部18は、複数のキャラクタそれぞれに対する命令の実行指示の受け付けを契機とし、複数のキャラクタそれぞれを仮想空間100内でリアルタイムに動作させる。動作制御部18は、仮想空間100内の時間をリアルタイムで進行させることができる。
【0131】
すなわち、動作制御部18は、複数のユーザそれぞれが有するキャラクタに設定されている命令の実行の指示及び停止の指示を複数のユーザごと若しくは複数のユーザのキャラクタごとに受け付け、命令の実行の指示又は停止の指示を受け付けたタイミングで命令を実行させるか、又は命令を停止させる。
【0132】
例えば、動作制御部18は、各ユーザの情報端末の出力部20を制御し、各出力部20にユーザによる命令の実行指示を受け付ける「再生ボタン」とユーザによる命令の停止指示を受け付ける「停止ボタン」とを出力させる。そして、動作制御部18は、一のユーザから「再生ボタン」を介して受け付けた開始指示により、一のキャラクタに対して設定された命令及び実行順序に基づいて、一のキャラクタを仮想空間100内で動作させる。また、動作制御部18は、他のユーザから「再生ボタン」を介して受け付けた開始指示により、他のキャラクタに対して設定された命令及び実行順序に基づいて、他のキャラクタを仮想空間100内で動作させる。すなわち、動作制御部18は、一のユーザからの開始指示を受け付けた場合、他のユーザからの開始指示の有無に関わらず(つまり、他のユーザの開始指示とは無関係に)、一のキャラクタを仮想空間100内で動作させる。また、動作制御部18は、他のユーザからの開始指示を受け付けた場合、一のユーザからの開始指示の有無に関わらず(つまり、一のユーザの開始指示とは無関係に)、他のキャラクタを仮想空間100内で動作させる。
【0133】
そして、動作制御部18は、一のユーザから「停止ボタン」を介して受け付けた停止指示により、他のユーザからの停止指示の有無に関わらず仮想空間100内で動作中の一のキャラクタの動作を停止させ、他のユーザから「停止ボタン」を介して受け付けた停止指示により、一のユーザからの停止指示の有無に関わらず仮想空間100内で動作中の他のキャラクタの動作を停止させる。この場合において、命令設定部14は、停止したキャラクタに設定されている命令及び実行順序に代えて、新たな命令及び実行順序の設定を受け付けてもよい。すなわち、各ユーザは、自身のキャラクタに命令及び命令の実行順序を設定し、キャラクタに命令の実行を開始させた後、設定した全ての命令の実行が完了する前であれば、自身とは異なるユーザの操作とは無関係に、命令の実行を停止させた上で一度設定した命令を変更することができる。
【0134】
また、動作制御部18は、一のユーザが有する複数のキャラクタそれぞれに命令及び命令の実行順序が設定されている場合、一のユーザの一の操作(例えば、入力部10を介して受け付ける命令実行の指示)に応じ、複数のキャラクタのそれぞれについて、各命令の実行順序に沿った命令の実行を開始させることができる。
【0135】
更に、動作制御部18は、一のユーザが有する一のキャラクタ(第1のキャラクタ)に対する他のユーザが有する他のキャラクタ(第2のキャラクタ)の仮想空間100内における位置関係が所定の条件を満たした場合、命令設定部14が一のキャラクタに設定した命令及び他のキャラクタに設定した命令に基づく動作に優先し、一のキャラクタ及び他のキャラクタの少なくとも一方に所定の動作を実行させる。つまり、一のキャラクタに設定した命令及び他のキャラクタに設定した命令とは異なる所定の動作が実行される。所定の条件としては、例えば、一のキャラクタの存在位置と他のキャラクタの存在位置とが重なった場合、一のキャラクタの存在位置と他のキャラクタの存在位置とが近接している場合(例えば、一のキャラクタが存在する仮想単位空間と他のキャラクタが存在する仮想単位空間とが隣接する場合や、一のキャラクタと他のキャラクタとの間の仮想単位空間の数が所定数以下の場合等)等の条件が挙げられる。
【0136】
また、動作制御部18は、仮想空間100内で一のキャラクタとは異なるキャラクタ、所定の仮想単位空間に配置されたオブジェクト(一のユーザが有するオブジェクト及び/又は他のユーザが有するオブジェクト)、及び/又は所定の仮想単位空間と、命令の実行が開始された一のキャラクタとの間で干渉が発生した場合、命令設定部14が設定した命令及び命令の実行順序に優先し、干渉に応じた動作を一のキャラクタに実行させる。つまり、この場合、動作制御部18は、予め定められたルールに則って、一のキャラクタが実行する動作を決定できる。そして、動作制御部18は、命令を実行中の一のキャラクタの様子を出力部20に出力させる。
【0137】
更に、動作制御部18は、命令及び命令の実行順序が設定されたキャラクタを仮想空間100内で動作させ、全ての命令の実行が完了した後、当該キャラクタに対する命令設定部14による命令及び命令の実行順序の設定を一定期間、禁止させてもよい。この場合において動作制御部18は、入力部10を介して受け付ける当該キャラクタを有するユーザからの所定のアイテム(例えば、ゲーム内仮想通貨やゲーム内で取得可能な道具等)の消費指示に応じ、当該一定期間の長さを短くすること、若しくは長くすることができる。
【0138】
なお、動作制御部18は、命令設定部14が設定した命令が、キャラクタとキャラクタが存在している仮想空間との関係により実行できない場合、予め定められた動作をキャラクタに実行させることもできる。例えば、配置部12によりキャラクタが仮想空間100の空中に配置されており、かつ、当該キャラクタは空中を飛ぶことや浮遊することができないキャラクタであり、命令設定部14が設定した命令が「前に進む」等の移動命令である場合、動作制御部18は、当該移動命令を実行できないと判断する。そして、動作制御部18は、当該移動命令の実行を停止し、例えば、物理法則に則って当該キャラクタを動作させる(この場合、キャラクタの存在位置から下方にキャラクタを落下させる。)。続いて、動作制御部18は、命令設定部14が設定した命令の実行が可能になった段階で(この場合、当該キャラクタが仮想空間の床に着地した段階で)、命令設定部14が設定した命令の実行を継続する。
【0139】
ここで、動作制御部18は、命令設定部14が設定した命令及び実行順序に基づいて、キャラクタを仮想空間100内で移動させる場合において、一の仮想単位空間から当該一の仮想単位空間に隣接する他の仮想単位空間へとキャラクタを移動させる。仮想単位空間を「マス」として捉えるとすれば、動作制御部18は、「マス」毎にキャラクタを移動させる。なお、動作制御部18は、所定時間ごとにキャラクタを移動させてもよい。つまり、動作制御部18は、キャラクタを所定時間ごとに複数の仮想単位空間をシームレスに移動させてもよい(一例として、1秒間に1つの仮想単位空間を移動させる等を設定できる。)。また、動作制御部18は、命令設定部14が設定した命令の実行後、キャラクタを仮想空間100内で移動させる場合において、入力部10を介してユーザから当該キャラクタの一の仮想単位空間から他の仮想単位空間への移動指示(例えば、ドラッグによる移動指示)があった場合であっても、当該移動指示を受け付けず、設定されている命令及び命令の実行順序に則った動作をキャラクタに実行させる。
【0140】
また、一のユーザの一のエリア内に他のユーザの他のキャラクタが動作制御部18により制御されて侵入して存在している場合、配置部12は、一のユーザの指示に基づいて、他のキャラクタが存在している仮想単位空間に自己が有するキャラクタ又はオブジェクトを配置できる。この場合、配置部12は、当該キャラクタ又はオブジェクトを他のキャラクタの上又は下に配置できる。
【0141】
なお、動作制御部18は、命令設定部14が設定した命令及び命令の実行順序に基づいて動作するキャラクタと他のキャラクタ又はオブジェクトとが干渉した場合や、命令及び命令の実行順序に基づいて動作するキャラクタと所定の仮想単位空間とが干渉した場合、物理演算に基づいて決定される動作も用いてキャラクタの動作を制御してもよい。例えば、キャラクタと他のキャラクタやオブジェクトとが衝突する場合、キャラクタの形状やサイズ、重量等、他のキャラクタの形状やサイズ、重量等、及び衝突スピード等に基づいて、物理演算により、キャラクタ及び他のキャラクタやオブジェクトの動作を算出し、算出した動作をキャラクタに実行させてもよい。
【0142】
更に、動作制御部18は、キャラクタの仮想空間100内での一連の動作(命令設定部14が設定した命令による動作、及び干渉が発生した場合における動作を含む)を示す動作シーケンス情報を生成し、生成した動作シーケンス情報を当該動作シーケンス情報の動作シーケンス情報IDに対応付けて動作シーケンス情報格納部227に格納する。なお、動作制御部18は、動作シーケンス情報として、キャラクタの仮想空間100内での一連の動作の一部を示す動作シーケンス情報を生成することもできる。つまり、動作制御部18は、命令設定部14が設定した命令の実行順序によって命令が実行されることによるキャラクタの動作、及び干渉が発生した場合におけるキャラクタの動作の全て若しくは一部を含む動作シーケンス情報を生成できる。
【0143】
具体的に、動作制御部18は、キャラクタの特徴と、キャラクタの存在位置に対応する仮想単位空間の特徴とに基づいて、キャラクタの動作を制御することができる。一例として、動作制御部18は、命令を実行しているキャラクタのキャラクタIDと当該キャラクタが存在する仮想単位空間の仮想単位空間IDに対応付けて空間干渉情報格納部224に格納されている動作情報を取得する。そして、動作制御部18は、取得した動作情報を参照し、当該動作情報の内容が示す動作をキャラクタに実行させる。また、動作制御部18は、命令を実行しているキャラクタのキャラクタIDと当該キャラクタが存在する仮想単位空間の仮想単位空間IDと当該キャラクタが当該仮想単位空間に至る直前に実行した命令(直前の命令情報)とに対応付けて空間干渉情報格納部224に格納されている動作情報を取得し、当該動作情報に基づいてキャラクタに所定の動作を実行させてもよい。
【0144】
また、動作制御部18は、一のキャラクタ及び他のキャラクタそれぞれを仮想空間100内で動作させ、一のキャラクタの存在位置と他のキャラクタの存在位置とが同一の仮想単位空間になる場合、命令設定部14が設定した命令及び実行順序に優先し、一のキャラクタ及び他のキャラクタの少なくともいずれか一方に所定の動作を実行させることができる。この場合、動作制御部18は、一のキャラクタの特徴と他のキャラクタの特徴との組み合わせ、一のキャラクタが他のキャラクタと同一の仮想単位空間に位置する前に実行した命令、及び他のキャラクタが一のキャラクタと同一の仮想単位空間に位置する前に実行した命令からなる群から選択される少なくとも1つに基づいて、一のキャラクタ及び他のキャラクタの少なくともいずれか一方の動作を制御することができる。
【0145】
例えば、動作制御部18は、一のキャラクタと他のキャラクタとが同一の仮想単位空間に存在する場合、命令を実行している一のキャラクタのキャラクタIDと他のキャラクタの他のキャラクタIDとに対応付けてキャラクタ干渉情報格納部223に格納されている動作情報を参照し、当該動作情報の内容が示す動作を一のキャラクタ及び/又は他のキャラクタに実行させる。また、動作制御部18は、命令を実行している一のキャラクタの一のキャラクタIDと他のキャラクタの他のキャラクタIDと、一のキャラクタが存在する仮想単位空間に至る直前に実行した命令(一のキャラクタの直前の命令情報)及び/又は他のキャラクタが当該仮想単位空間に至る直前に実行した命令(他のキャラクタの直前の命令情報)とに対応付けてキャラクタ干渉情報格納部223に格納されている動作情報を取得し、当該動作情報に基づいて一のキャラクタ及び/又は他のキャラクタに所定の動作を実行させてもよい。
【0146】
また、動作制御部18は、キャラクタの特徴と、キャラクタの存在位置に配置されているオブジェクトの特徴とに基づいて、キャラクタの動作を制御することができる。一例として、動作制御部18は、命令を実行しているキャラクタのキャラクタIDと当該キャラクタが存在する仮想単位空間に配置されているオブジェクトのオブジェクトIDとに対応付けてオブジェクト干渉情報格納部226に格納されている動作情報を取得する。そして、動作制御部18は、取得した動作情報を参照し、当該動作情報の内容が示す動作をキャラクタに実行させる。また、動作制御部18は、命令を実行しているキャラクタのキャラクタIDと当該キャラクタが存在する仮想単位空間に配置されているオブジェクトのオブジェクトIDと当該キャラクタが当該仮想単位空間に至る直前に実行した命令(直前の命令情報)とに対応付けてオブジェクト干渉情報格納部226に格納されている動作情報を取得し、当該動作情報に基づいてキャラクタに所定の動作を実行させてもよい。
【0147】
なお、動作制御部18は、一の仮想単位空間に一のキャラクタが存在し、当該一の仮想単位空間に隣接し、派生オブジェクトの発生が対応付けられた他の仮想単位空間に他のキャラクタが存在する場合、他のキャラクタの特徴と派生オブジェクトの特徴とに基づいて、他のキャラクタの動作を制御することもできる。例えば、動作制御部18は、一のキャラクタが存在する一の仮想単位空間に隣接する他の仮想単位空間に他のキャラクタが存在し、命令設定部14によって一のキャラクタが一の仮想単位空間において所定の動作(例えば、他の仮想単位空間に向けて所定の作用を及ぼす動作)を実行する命令が設定されている場合、他のキャラクタに所定の動作を実行させる。すなわち、動作制御部18は、他のキャラクタIDと派生オブジェクトのオブジェクトIDとに対応付けてオブジェクト干渉情報格納部226に格納されている動作情報を取得し、取得した動作情報に基づいて他のキャラクタに所定の動作を実行させてもよい。
【0148】
<派生オブジェクトとキャラクタとの関係に基づく動作の例1>
例えば、命令設定部14が、一のキャラクタが一の仮想単位空間に到達した場合、この一の仮想単位空間に隣接する他の仮想単位空間に一のキャラクタに固有の派生オブジェクトを発生させる命令を一のキャラクタに設定した場合を例に挙げる。この場合において、一のキャラクタが一の仮想単位空間に到達し、かつ、他のキャラクタが他の仮想単位空間に到達した場合、動作制御部18は、他のキャラクタの種類と派生オブジェクトの種類とに応じ、他のキャラクタに設定されている命令に優先し、所定の動作を実行させる。つまり、動作制御部18は、他のキャラクタの他のキャラクタIDと他のキャラクタが存在する仮想単位空間に配置されている派生オブジェクトのオブジェクトIDとに対応付けてオブジェクト干渉情報格納部226に格納されている動作情報を取得する。この動作情報は、一例として、一のキャラクタに固有の派生オブジェクトが一のキャラクタの技である「電気ショック」に対応する「電撃」を表す派生オブジェクトであり、他のキャラクタが、この「電撃」の派生オブジェクトにより痺れる動作を実行する内容を含む情報である。したがって、動作制御部18は、他のキャラクタに痺れる動作を実行させる。
【0149】
<派生オブジェクトとオブジェクトとの関係に基づく動作の例2>
例えば、命令設定部14が、一のキャラクタが一の仮想単位空間に到達した場合、この一の仮想単位空間に隣接する他の仮想単位空間に一のキャラクタに固有の派生オブジェクトを発生させる命令を、一のキャラクタに設定した場合を例に挙げる。この場合において、一のキャラクタが一の仮想単位空間に到達し、かつ、他の仮想単位空間に所定のオブジェクトが存在している場合、動作制御部18は、所定のオブジェクトの種類と派生オブジェクトの種類とに応じ、所定のオブジェクトに所定の影響を与える。
【0150】
この場合、オブジェクト干渉情報格納部226は、一のキャラクタの一のキャラクタIDと派生オブジェクトのオブジェクトIDとに対応付けて、所定のオブジェクトに与える影響を含む動作情報を格納することができる。そして、動作制御部18は、オブジェクト干渉情報格納部226に格納されている当該動作情報を取得する。当該動作情報は、一例として、一のキャラクタに固有の派生オブジェクトが一のキャラクタの技である「火を吐く」に対応する「炎」を表す派生オブジェクトであり、所定のオブジェクトが、この「炎」の派生オブジェクトにより燃える内容を含む情報である。したがって、動作制御部18は、所定のオブジェクトが燃える状態を発生させる。
【0151】
また、動作制御部18は、キャラクタの存在位置若しくは移動先である仮想単位空間において、命令設定部14が設定した命令の実行ができないと判断した場合、予め定められた動作を実行してもよい。例えば、仮想空間100の外部にキャラクタは移動できない。すなわち、仮想空間100の外縁は、仮想空間100内のキャラクタにとっては「見えない壁」若しくは「見えない床・天井」として機能している。そこで、動作制御部18は、命令設定部14が設定した命令によってキャラクタが仮想空間100内を移動し、仮想空間100の外縁や破壊不可能なオブジェクトが配置されている仮想単位空間等、キャラクタによる干渉が不可能な状況が発生した場合、キャラクタに予め定められた動作を実行させる。予め定められた動作としては、一例として、その場に留まる動作、移動してきた経路を逆に進む動作、進行方向を変化させる動作等が挙げられる。
【0152】
(判定部26)
判定部26は、複数のユーザそれぞれに同一又は異なる所定の条件を設定し、各ユーザのキャラクタそれぞれが、それぞれに設定された命令及び命令の実行順序に応じて仮想空間100内で動作した結果、所定の条件が満たされたか否かを判定する。判定部26は、判定結果を各ユーザの情報端末の出力部20に表示する。判定部26は、所定の条件が満たされた場合、各ユーザに所定の効果を発生させてもよい。所定の効果は、例えば、各ユーザに所定の報酬を付与する効果や各ユーザのキャラクタに所定の経験値等を付与する効果、及び/又は目標の達成度合いに応じて所定のエリアをユーザに対応付ける効果(若しくは対応付けない効果)であってよい。
【0153】
所定の条件は、所定のエリア内で達成すべき条件である。例えば、以下の条件が挙げられるが、これらの条件に限られない。
(1)一のユーザの一のキャラクタが、一のエリアから他のエリアの所定箇所(例えば、所定の仮想単位空間をゴールに設定した箇所)に到達する条件。
(2)一のユーザの一のキャラクタが、他のユーザの他のキャラクタに攻撃し、他のキャラクタのHPをゼロにする条件。
(3)他のユーザの他のキャラクタの周囲を所定のオブジェクトで囲み、他のキャラクタの仮想空間100内における移動を不可能にする条件。
(4)所定のオブジェクトを破壊する条件。
(5)一のユーザの一のエリア内に、他のユーザの他のキャラクタが侵入することを所定時間防御する条件。
(6)一のユーザの一のキャラクタと他のユーザの他のキャラクタとが協働し、所定のオブジェクトを破壊することや、所定のエリアに予め配置され当該エリア内における移動を制限された所定のキャラクタを移動可能にする条件。
【0154】
以下、具体的な例を挙げて説明する。
【0155】
<設定目標の例1:協力プレイ1>
一のユーザの一のキャラクタと他のユーザの他のキャラクタとが協力し、仮想空間100内の所定のエリアに設置されているオブジェクトを消去することを目標として設定できる。例えば、配置部12は、仮想空間100内の所定のエリアにオブジェクトを設置する。このオブジェクトは「氷」のオブジェクト(以下、「氷オブジェクト」という)であるとする。そして、オブジェクト干渉情報格納部226が、2以上の所定のキャラクタID及び2以上の派生オブジェクトのオブジェクトIDとに対応付けて氷オブジェクトに与える影響を含む動作情報を格納しているとする。ここで、2以上の所定のキャラクタIDに対応する各キャラクタが「炎」や「火」等の熱に関する技を有しているとする。この場合、当該動作情報は、一のキャラクタの派生オブジェクトが一のキャラクタの技である「火を吐く」に対応する「炎」を表す派生オブジェクトであり、他のキャラクタの派生オブジェクトが他のキャラクタの技である「ひのこ」に対応する「火の粉」を表す派生オブジェクトであり、氷オブジェクトがこれら「炎」及び「火の粉」の2以上の派生オブジェクトにより溶ける内容を含む情報である。すなわち、当該動作情報は、一例として、2以上の所定のキャラクタIDに対応する2以上のキャラクタの所定の技(例えば、「火を吐く」技若しくは「ひのこ」技等)を表す2以上の派生オブジェクトが氷オブジェクトに重なった場合、氷オブジェクトが溶けて消える動作情報である。ここでは、2以上の所定のキャラクタIDに一のキャラクタのキャラクタID及び他のキャラクタのキャラクタIDが含まれているとする。
【0156】
この場合、配置部12は、まず、一のユーザの指示に応じ、一のエリアの所定の仮想単位空間に一のキャラクタを配置する(この配置位置を「一の動作開始位置」とする。)。ここで、一のキャラクタは、「火を吐く」技を有している。次に、命令設定部14は、一のユーザの指示に応じ、一のキャラクタに一の動作開始位置から氷オブジェクトが存在する仮想単位空間に隣接する仮想単位空間に移動し、氷オブジェクトに対し技を発動させる命令(つまり、一のキャラクタに固有の派生オブジェクトを発生させる命令)を設定する。同様にして、配置部12は、他のユーザの指示に応じ、他のエリアの所定の仮想単位空間に他のキャラクタを配置する(この配置位置を「他の動作開始位置」とする。)。この他のキャラクタは、「ひのこ」技を有している。次に、命令設定部14は、他のユーザの指示に応じ、他のキャラクタに他の動作開始位置から氷オブジェクトが存在する仮想単位空間に隣接する仮想単位空間に移動し、氷オブジェクトに対し技を発動させる命令(つまり、他のキャラクタに固有の派生オブジェクトを発生させる命令)を設定する。
【0157】
そして、動作制御部18は、実行受付部16を介して受け付ける一のユーザによる一のキャラクタに対する命令実行の指示に応じ、設定された命令及び命令の実行順序に基づいて一のキャラクタを動作させる。動作制御部18は、他のキャラクタについても同様に動作させる。一のキャラクタが氷オブジェクトに隣接する仮想単位空間に到達した場合、動作制御部18は、氷オブジェクトに一のキャラクタの派生オブジェクト(例えば、「火を吐く」技のオブジェクト)を発生させる。更に、他のキャラクタが氷オブジェクトに隣接する仮想単位空間に到達した場合、動作制御部18は、氷オブジェクトに他のキャラクタの派生オブジェクト(例えば、「ひのこ」技のオブジェクト)を発生させる。
【0158】
すなわち、動作制御部18は、一のキャラクタのキャラクタID及び他のキャラクタのキャラクタID、並びに派生オブジェクトのオブジェクトIDに対応付けてオブジェクト干渉情報格納部226に格納されている氷オブジェクトに与える影響を含む動作情報を取得する。そして、動作制御部18は、氷オブジェクトが溶けて消える動作を氷オブジェクトに実行させる。判定部26は、氷オブジェクトが仮想空間100から消去されたか否かを判断し、消去された場合、各ユーザに所定の効果(例えば、所定の報酬の各ユーザへの付与)を発生させる。
【0159】
<設定目標の例2:協力プレイ2>
一のユーザの一のキャラクタと他のユーザの他のキャラクタとが協力し、仮想空間100内の所定のエリアに設置されている所定のキャラクタに所定の効果を発生させることを目標として設定できる。例えば、配置部12は、仮想空間100内の所定のエリアに所定のキャラクタ(以下、「対象キャラクタ」という。)を設置する。対象キャラクタは「水」の存在下で「進化」するキャラクタであるとする。そして、オブジェクト干渉情報格納部226が、2以上の所定のキャラクタID及び2以上の派生オブジェクトのオブジェクトIDとに対応付けてキャラクタに隣接する仮想単位空間に与える影響を含む動作情報を格納しているとする。ここで、2以上の所定のキャラクタIDに対応する各キャラクタのうち一のキャラクタが「炎」や「火」等の熱に関する技を有し、他のキャラクタが「氷」等に関する技を有しているとする。この場合、当該動作情報は、一のキャラクタの派生オブジェクトが一のキャラクタの技である「火を吐く」に対応する「炎」を表す派生オブジェクトであり、他のキャラクタの派生オブジェクトが他のキャラクタの技である「こおり」に対応する「氷塊」(若しくは吹雪)を表す派生オブジェクトであり、対象キャラクタがこれら「炎」及び「氷塊」の派生オブジェクトにより生じる水により進化する内容を含む情報である。すなわち、当該動作情報は、一例として、2以上の所定のキャラクタIDに対応する2以上のキャラクタの所定の技(例えば、「火を吐く」技及び「こおり」技等)を表す2以上の派生オブジェクトが対象キャラクタに重なった場合、対象キャラクタが進化する動作情報である。ここでは、2以上の所定のキャラクタIDに一のキャラクタのキャラクタID及び他のキャラクタのキャラクタIDが含まれているとする。
【0160】
この場合、配置部12は、まず、一のユーザの指示に応じ、一のエリアの一の動作開始位置に一のキャラクタを配置する。ここで、一のキャラクタは、「火を吐く」技を有している。次に、命令設定部14は、一のユーザの指示に応じ、一のキャラクタに一の動作開始位置から対象キャラクタが存在する仮想単位空間に隣接する仮想単位空間に移動し、対象キャラクタに対し技を発動させる命令を設定する。同様にして、配置部12は、他のユーザの指示に応じ、他のエリアの他の動作開始位置に他のキャラクタを配置する。この他のキャラクタは、「こおり」技を有している。次に、命令設定部14は、他のユーザの指示に応じ、他のキャラクタに他の動作開始位置から対象キャラクタが存在する仮想単位空間に隣接する仮想単位空間に移動し、対象キャラクタに対し技を発動させる命令を設定する。
【0161】
そして、動作制御部18は、実行受付部16を介して受け付ける一のユーザによる一のキャラクタに対する命令実行の指示に応じ、設定された命令及び命令の実行順序に基づいて一のキャラクタを動作させる。動作制御部18は、他のキャラクタについても同様に動作させる。一のキャラクタが対象キャラクタに隣接する仮想単位空間に到達した場合、動作制御部18は、対象キャラクタに一のキャラクタの派生オブジェクト(例えば、「火を吐く」技のオブジェクト)を発生させる。更に、他のキャラクタが対象キャラクタに隣接する仮想単位空間に到達した場合、動作制御部18は、対象キャラクタに他のキャラクタの派生オブジェクト(例えば、「こおり」技のオブジェクト)を発生させる。
【0162】
すなわち、動作制御部18は、一のキャラクタのキャラクタID及び他のキャラクタのキャラクタID、並びに派生オブジェクトのオブジェクトIDに対応付けてオブジェクト干渉情報格納部226に格納されている対象キャラクタに与える影響を含む動作情報を取得する。そして、動作制御部18は、他のキャラクタの派生オブジェクトである氷塊が一のキャラクタの炎により溶けて水が生じ、対象キャラクタが進化する動作を対象キャラクタに実行させる。判定部26は、対象キャラクタが進化したか否かを判断し、進化した場合、各ユーザに所定の効果を発生させる。
【0163】
なお、対象キャラクタが「水」の存在下で「進化」するキャラクタである場合、当該対象キャラクタを進化させる方法は上記に限られない。例えば、「水を吐き出す」技を有するキャラクタを用い、対象キャラクタに対して当該技を発動させることや、対象キャラクタの周囲の仮想単位空間に「滝」や「川」等の環境オブジェクトを配置することで対象キャラクタを進化させること、あるいは対象キャラクタの周囲の仮想単位空間に「山」等の環境オブジェクトを配置して対象キャラクタを捕獲することもできる。すなわち、シミュレーションシステム1においては、様々なキャラクタの様々な技、及び/又は様々な特徴を有するオブジェクトを駆使し、各ユーザは設定された目標を達成する過程を楽しむことができる。
【0164】
<設定目標の例3:他のエリアの所定地点への到達>
一のユーザの一のキャラクタが、他のユーザの他のエリアの所定の仮想単位空間(以下、「ゴール地点」という。)に到達することを目標として設定できる。この場合、命令設定部14は、一のユーザからの指示に応じ、一のキャラクタが一のエリアの一の動作開始位置からゴール地点に向けて進む命令及び命令の実行順序を設定する。一方、命令設定部14は、他のユーザからの指示に応じ、ゴール地点への一のキャラクタの到達を妨害することを目的として、他のエリア内に所定のオブジェクトを配置する命令や他のキャラクタが所定の動作をする命令及び命令の実行順序を設定する。他のキャラクタに設定される命令としては、例えば、他のユーザが一のキャラクタの進路を想定して決定する命令であって、一のキャラクタの予想進路において一のキャラクタの進行を妨害する動作命令や複数の他のキャラクタにより一のキャラクタを取り囲む命令等である。
【0165】
そして、動作制御部18は、実行受付部16を介して受け付ける一のユーザによる一のキャラクタに対する命令実行の指示に応じ、設定された命令及び命令の実行順序に基づいて一のキャラクタを動作させる。動作制御部18は、他のキャラクタについても同様に動作させる。一のキャラクタが他のキャラクタやオブジェクトによる妨害をかいくぐり、ゴール地点に到達した場合、判定部26は、一のキャラクタが目標を達成したと判断し、一のユーザに所定の効果を発生させる。一方、判定部26は、一のキャラクタが他のキャラクタやオブジェクトに妨害されてゴール地点に到達しなかったと判断した場合、一のキャラクタが目標を達成しなかったと判断し、他のユーザに所定の効果を発生させる。
【0166】
<設定目標の例4:他のキャラクタのHPをゼロにする>
一のユーザの一のキャラクタが他のユーザの他のキャラクタに対して技を発動し、他のキャラクタのHPをゼロにすること又はHPを所定値以下にすることを目標として設定できる。この場合、一例として命令設定部14は、一のユーザからの指示に応じ、一のキャラクタが一のエリアの一の動作開始位置から他のキャラクタが存在する仮想単位空間に向けて進み、この仮想単位空間に隣接する仮想単位空間に到達した場合に他のキャラクタに向けて技を発動する命令及び命令の実行順序を設定する。
【0167】
そして、動作制御部18は、実行受付部16を介して受け付ける一のユーザによる一のキャラクタに対する命令実行の指示に応じ、設定された命令及び命令の実行順序に基づいて一のキャラクタを動作させる。一のキャラクタが他のキャラクタが存在する仮想単位空間に隣接する仮想単位空間に到達し、他のキャラクタに対して技を発動させた場合、判定部26は、他のキャラクタのHPが当該技によりゼロになったか否か、又はHPが所定値以下になったか否かを判定する。例えば、判定部26は、キャラクタ情報格納部220を参照し、一のキャラクタのキャラクタIDに対応付けて格納されている「一のキャラクタの技によって削減できる他のキャラクタのHP量」と、他のキャラクタのキャラクタIDに対応付けて格納されている他のキャラクタのHPとに基づいて、他のキャラクタのHPが当該技によりゼロになったか否か、又はHPが所定値以下になったか否かを判定する。判定部26は、他のキャラクタのHPがゼロになった場合又は所定値以下になった場合、一のキャラクタが目標を達成したと判断し、一のユーザに所定の効果を発生させる。一方、判定部26は、他のキャラクタのHPがゼロにならなかった場合又は所定値以下にならなかった場合、一のキャラクタが目標を達成しなかったと判断し、他のユーザに所定の効果を発生させてもよい。
【0168】
(シミュレーションシステム1のシミュレーションの実行方法)
シミュレーションシステム1における命令の実行及び処理の流れについて特に限定はないが、例えば、リアルタイム制、ターン制、及びリアルタイム制とターン制とのハイブリッド制のいずれかの方法で実行できる。
【0169】
<リアルタイム制>
図7は、本実施形態に係るシミュレーションシステムの処理がリアルタイム制の場合の処理の流れの概要の一例を示す。
図7においてシミュレーションシステム1は、入力部10及び出力部20を有するユーザAの情報端末Aと、入力部10及び出力部20を有するユーザBの情報端末Bと、入力部10及び出力部20を除き、少なくとも出力制御部21を含む他の構成要素を備えるサーバとを備え、シミュレーションを実行する。なお、ネットワークを介した処理においては各ユーザが用いる回線の回線速度の違い等による遅延時間(ラグ)を考慮した処理(待機処理等)を要するが、ここでは係る処理の説明は説明の簡略化のため考慮せずに省略する。
【0170】
なお、
図7においては左から右に向けて時間が進み、「Fx」(xは正の正数)はフレームを示す。すなわち、リアルタイム制においてシミュレーションシステム1は、仮想空間100内の時間をフレーム単位(1秒を複数に分割した単位)で扱い、時間をフレーム単位で管理する。
【0171】
まず、リアルタイム制においてシミュレーションシステム1は、仮想空間100で命令の実行を一定周期で常に実行する。すなわち、シミュレーションシステム1は、各種の処理をリアルタイムで実行すると共に、各ユーザからのキャラクタ及び/又はオブジェクトに対する命令を任意のタイミングで受け付け、任意のタイミングで各ユーザから命令の実行指示を受け付けた後、各キャラクタ及び/又はオブジェクトをリアルタイムで動作させる。
【0172】
具体的に、出力制御部21は、情報端末A及び情報端末Bに仮想空間100の状態を示すスナップショットを一定のタイミングで供給する。情報端末A及び情報端末Bの出力部20はそれぞれ、当該スナップショットに基づいてレンダリングし、仮想空間100の状態を出力する。例えば、出力制御部21は、所定のタイミングT1において第1のフレーム(F1)における仮想空間100の状態を示すスナップショットを生成し、情報端末A及び情報端末Bに供給する。情報端末A及び情報端末Bの出力部20は、受け取ったスナップショットを基に仮想空間100の状態を出力する。出力制御部21は、予め定められたタイミングで順次、仮想空間100のスナップショットを生成し、情報端末A及び情報端末Bに供給する。
図7の例において出力制御部21は、所定のタイミングTx(xは正の正数)ごとにフレームFxの仮想空間100のスナップショットを生成し、情報端末A及び情報端末Bに供給する。
【0173】
例えば、第1のフレームF1において命令設定部14が、ユーザAの指示を受け付けてユーザAが有するキャラクタA及びオブジェクトA(障害物)に対し、所定の命令を設定する(D1)。所定の命令は、例えば、ユーザAが対応付けられているエリアAの所定の仮想単位空間にキャラクタAを配置すると共にキャラクタAに対して3つの動作を順次実行させる命令(例えば、1つの動作は1つのフレームで実行される)、及びエリアAの所定の仮想単位空間にオブジェクトAを配置する命令である。同様に第1のフレームF1において、命令設定部14が、ユーザBの指示を受け付けてユーザBが有するキャラクタB及びオブジェクトB(障害物)に対し、所定の命令を設定する(D8)。所定の命令は、例えば、ユーザBが対応付けられているエリアBの所定の仮想単位空間にキャラクタBを配置すると共にキャラクタBに対して3つの動作を順次実行させる命令(例えば、1つの動作は1つのフレームで実行される)、及びエリアBの所定の仮想単位空間にオブジェクトBを配置する命令である。命令設定部14は、ユーザA及びユーザBの指示を受け付けて、これらの命令を第1のフレームF1において設定する。
【0174】
続いて、実行受付部16は、入力部10を介してユーザAからの命令の実行指示(D2)を受け付ける。また、実行受付部16は、入力部10を介してユーザBからの命令の実行指示(D9)を受け付ける。実行受付部16は、実行指示を各ユーザの任意のタイミングで受け付ける。
図7の例では、実行受付部16は、第3のフレームF3においてユーザAの実行指示を受け付け、第4のフレームF4においてユーザBの実行指示を受け付ける。そして、実行受付部16が第3のフレームF3においてユーザAからの実行指示を受け付けた場合、動作制御部18は、命令設定部14が設定した命令及び実行順序に基づいて、キャラクタAを仮想空間100内で動作させ、オブジェクトAをユーザAが指定した仮想単位空間に配置する。同様に、実行受付部16が第4のフレームF4においてユーザBからの実行指示を受け付けた場合、動作制御部18は、命令設定部14が設定した命令及び実行順状に基づいて、キャラクタBを仮想空間100内で動作させ、オブジェクトBをユーザBが指定した仮想単位空間に配置する。
【0175】
そして、出力制御部21は、動作制御部18が制御しているキャラクタA及びオブジェクトA、並びにキャラクタB及びオブジェクトBの仮想空間100内での状態を示すスナップショットを第4のフレームF4、第5のフレームF5、第6のフレームF6、及び第7のフレームF7においてそれぞれ生成する。そして、出力制御部21は、タイミングT4で第4のフレームF4のスナップショットを、タイミングT5で第5のフレームF5のスナップショットを、タイミングT6で第6のフレームF6のスナップショットを、タイミングT7で第7のフレームF7のスナップショットを情報端末A及び情報端末Bに供給する。
【0176】
そして、情報端末A及び情報端末Bの出力部20はそれぞれ、第4のフレームF4から第6のフレームF6にわたり、キャラクタAが3つの動作を順次実行し、オブジェクトAが所定の仮想単位区間に第4のフレームF4において配置される状態を出力すると共に(D3)、第5のフレームF5から第7のフレームF7にわたり、キャラクタBが3つの動作を順次実行し、オブジェクトBが所定の仮想単位空間に第5のフレームF5において配置される状態を出力する(D10)。
【0177】
すなわち、実行受付部16が各ユーザからの命令の実行指示を受け付けるたびに、出力制御部21は、各ユーザからの命令の実行結果を反映した仮想空間100の状況のスナップショットを生成し、情報端末A及び情報端末Bの出力部20に仮想空間100の状況を出力させる。
【0178】
また、実行受付部16が、入力部10を介してユーザAから命令の停止指示(D4)を受け付けた場合、動作制御部18は、命令設定部14が設定した命令の実行を停止させる。つまり、シミュレーションシステム1においては、ユーザの任意のタイミングで命令を停止させることができる。そして、出力制御部21は、命令が停止された後の仮想空間100の状況のスナップショットを生成し(
図7では第7のフレームF7で生成。当該スナップショットにはキャラクタB及びオブジェクトBの状態も含まれる。)、情報端末A及び情報端末Bの出力部20に仮想空間100の当該状況を出力させる(
図7では第8のフレームで出力させる。)。
【0179】
上記と同様にして、例えば
図7の第9のフレームF9において、命令設定部14による命令(例えば、所定のオブジェクトAのエリアA内の所定の仮想単位空間へのユーザAの指定に基づく設置命令)の設定(D5)後、実行受付部16が第10のフレームにおいてユーザAからの命令の実行指示(D6)を受け付けたとする。この場合、出力制御部21は、動作制御部18がオブジェクトAを所定の仮想単位空間に配置した状態を示すスナップショットを第10のフレームF10において生成し、タイミングT11(つまり、第11のフレームF11)において、当該スナップショットを情報端末A及び情報端末Bに供給する。情報端末A及び情報端末Bの出力部20は、当該スナップショットに基づき、エリアAの所定の仮想単位空間にオブジェクトAが設置された状態(D7)を出力する(第11のフレームF11)。
【0180】
なお、実行受付部16が、入力部10を介してユーザから命令実行の停止指示を受け付けた場合において、命令設定部14が設定した命令のうち未実行の命令が存在する場合、未実行の命令をそのまま残存させることができる。そして、実行受付部16が再度の命令実行の開始指示を受け付けた場合、未実行であった命令を再開してよい。また、実行受付部16が、ユーザから命令実行の停止指示を受け付けた場合において未実行の命令が存在する場合、命令設定部14はユーザから新たな命令の設定を受け付け、未実行の命令に新たな命令を上書きすることもできる。
【0181】
このように、シミュレーションシステム1がリアルタイム制で動作する場合、一のユーザが一のキャラクタに対する命令の実行を停止させた場合、命令の実行を再開させるか、新たな命令を設定するか若しくは一度設定した命令を変更した上で変更後の命令の実行を開始させなければ、仮想空間100内において一のキャラクタは停止した状態を維持する。一方、係る状態において他のユーザの他のキャラクタは、他のユーザの命令に応じて自由に動作可能である。また、一のユーザが命令を設定している間であっても、他のユーザは既に設定した命令を実行させることができる。したがって、シミュレーションシステム1においては、一のユーザと他のユーザとの間で、キャラクタにどのような動作をさせるか検討するだけでなく、互いに相手側のキャラクタの動作や動作開始のタイミングを予想しつつ、どのタイミングでいかなるキャラクタにいかなる動作を開始させるかを考えることを要するという戦略性や駆け引き、更には相手のキャラクタの動きに応じて自身のキャラクタの動きを変える瞬発性のあるシミュレーションを楽しむことができる。
【0182】
また、シミュレーションシステム1がリアルタイム制で動作する場合、キャラクタ及びオブジェクトに対して設定した命令の実行タイミングは、ユーザが任意に決定できる。したがって、例えば、複数のキャラクタ及び/又は複数のオブジェクトに複数の命令及び命令の実行順序を設定し、一度のタイミングで全ての命令を実行させること(つまり、命令を蓄積し、一度のタイミングで全命令を実行させること)も、一のキャラクタに1つの命令のみを設定し、命令を設定するごとに命令を逐次実行させることもできる。これにより、シミュレーションシステム1においては、例えば、一のユーザに設定された目標が他のユーザの他のエリアに一のキャラクタを侵入させることである場合、他のユーザは他のエリアと一のエリアとの境界付近に複数の他のキャラクタ及び複数の他のオブジェクトを配置する命令を設定しておき、一のキャラクタが当該境界付近に近づいたと予想されるタイミングで、設定した命令を全て実行させる等の駆け引きを楽しむことができる。
【0183】
<ターン制>
図8は、本実施形態に係るシミュレーションシステムの処理がターン制の場合の処理の流れの概要の一例を示す。なお、
図8においては左から右に向けて時間が進む。
【0184】
シミュレーションシステム1は、ターン制で処理を実行できる。すなわち、シミュレーションシステム1は、命令及び命令の実行順序を設定するターン(設定フェーズ)と、設定した命令を実行するターン(実行フェーズ)とを一組にしたターン制でシミュレーションを実行できる。この場合、シミュレーションシステム1は、設定フェーズと実行フェーズとからなるターンを繰り返し実行する。したがって、ターン制においてシミュレーションシステム1は、設定フェーズで設定された各ユーザの命令に基づいて、実行フェーズにおいて各キャラクタ及び/又は各オブジェクトを一斉に動作させる。
【0185】
図8に示すように、ターン制においてシミュレーションシステム1は、複数のターンを有して実行される。すなわち、複数のターンx(xは正の正数)が設けられ、各ターンには設定フェーズと実行フェーズとが含まれる。設定フェーズにおいて各ユーザは、自身が有するキャラクタ及び/又はオブジェクトに対して1以上の命令と命令の実行順序を設定可能である。また、実行フェーズは複数のフレームを有して構成される。
図8の例で実行フェーズは3つのフレームを有して構成されるが、フレーム数は3つに限られず、1以上であればよい。ここで、命令設定部14は、キャラクタを仮想空間100に出現させるフレーム、オブジェクトを仮想空間100に出現させるフレーム、並びにキャラクタ及びオブジェクトに設定した命令を実行させるフレームをユーザの指示に応じて設定できる。
【0186】
図8の例では、まずターン1の設定フェーズにおいて、命令設定部14が、ユーザAの指示を受け付けてユーザAが有するキャラクタA及びオブジェクトA(障害物)に対し、所定の命令を設定する(D11)。所定の命令は、例えば、ユーザAが対応付けられているエリアAの所定の仮想単位空間にキャラクタAを配置すると共にキャラクタAに対して3つの動作を連続的に実行させる命令(例えば、ターン1の実行フェーズの第1のフレームF1~第3のフレームF3のそれぞれで1つの動作を実行する命令)、及びエリアAの所定の仮想単位空間にオブジェクトAを設置する命令(例えば、実行フェーズの第1のフレームで設置する命令)である。また、命令設定部14は、ユーザBの指示を受け付けてユーザBが有するキャラクタB及びオブジェクトB(障害物)に対し、所定の命令を設定する(D12)。所定の命令は、例えば、ユーザBが対応付けられているエリアBの所定の仮想単位空間にキャラクタBを配置すると共にキャラクタBに対して2つの動作を連続的に実行させる命令(例えば、ターン1の実行フェーズの第2のフレームF2及び第3のフレームF3のそれぞれで1つの動作を実行する命令)、及びエリアBの所定の仮想単位空間にオブジェクトBを設置する命令(例えば、実行フェーズの第3のフレームで設置する命令)である。
【0187】
次にターン1の実行フェーズにおいて、ターン1の設定フェーズで設定された命令が実行される。
図8の例では、キャラクタAが3つの動作を第1のフレームF1から順次実行し、キャラクタBが2つの動作を第2のフレームF2から順次実行し、オブジェクトAが第1のフレームF1においてエリアAの所定の仮想単位空間に設置され、オブジェクトBが第3のフレームF3においてエリアBの所定の仮想単位空間に設置される。
【0188】
続いて、ターン2の設定フェーズが実行される。
図8の例ではユーザBのみが所定の命令を設定する(D13)。この所定の命令は、例えば、ターン2の実行フェーズを構成する複数のフレームのうち所定のフレームにおいて、オブジェクトを設置する命令である(例えば、ターン2の実行フェーズの第2のフレームF2においてオブジェクトをエリアBの所定の仮想単位空間に設置する命令)。この場合、ターン2の実行フェーズが実行されると、動作制御部18は、ターン2の実行フェーズの第2のフレームにおいて、エリアBの所定の仮想単位空間にオブジェクトを設置する(D14)。ユーザAの情報端末A及びユーザBの情報端末Bの出力部20はそれぞれ、実行フェーズの状態を出力する。
【0189】
ここで、出力制御部21は、各ターンの設定フェーズにおいて、一のユーザの情報端末に他のユーザの他のキャラクタの次の実行フェーズ(つまり、当該設定フェーズの内容が実行される実行フェーズ)での動きを出力させることもさせないこともできる。ただし、出力制御部21は、一のユーザの一のキャラクタと他のキャラクタとが干渉する場合は、どのような干渉が発生するかを各ユーザに悟られないようにするため、次の実行フェーズでの他のキャラクタの動きを出力させなくてよい。
【0190】
なお、各ターンの設定フェーズから実行フェーズへの切り替えは、所定の時間が経過したことを契機として切り替えても、全ユーザが命令及び命令の実行順序を設定フェーズで設定した後、命令の実行指示を全ユーザから受け付けたことを契機として切り替えてもよい。また、ターンごとに設定できる命令数、使用可能なキャラクタ及び/又はオブジェクトの数に制限を設けてもよい。更に、ターン数に上限を設定することもできる。例えば、各ユーザに達成すべき目標を設定すると共に目標達成までのターン数に上限を設けてもよい。ユーザが当該目標をターン数の上限までに達成できない場合、シミュレーションシステム1は、シミュレーションの実行を止めることができる。
【0191】
また、各ターンの設定フェーズにおいて、複数のユーザそれぞれが同時に命令を設定可能にしてもよく、複数のユーザ間で所定の順序に沿って命令を設定可能にしてもよい。一のターンの設定フェーズで複数のユーザ間で所定の順序に沿って命令を設定可能にした場合、次のターンの設定フェーズでは、当該順序を逆にすることが好ましい。すなわち、一のターンの設定フェーズでユーザAが最初に命令を設定し、ユーザBが次に命令を設定した場合、次のターンの設定フェーズでは、ユーザBが先に命令を設定し、その次にユーザAが命令を設定可能にする。
【0192】
<ハイブリッド制>
シミュレーションシステム1は、命令の実行及び処理の流れについてリアルタイム制とターン制とのハイブリッド制により実行することもできる。例えば、シミュレーションシステム1は、リアルタイム制で処理を実行している場合において所定の条件を満たしたユーザがいる場合、当該ユーザのみが当該ユーザのキャラクタに対する命令の設定及び命令の実行順序の設定、並びに命令の実行ができる時間帯を設けることができる。所定の条件は、例えば、所定のアイテムの消費やシミュレーションシステム1内で用いることができる仮想通貨の消費等である。
【0193】
[シミュレーションシステム1の処理の流れ]
図9は、本実施形態に係るシミュレーションシステムにおける処理の流れの一例を示す。なお、
図9においては、一のユーザ(以下では単に「ユーザ」と表記する。)が他のユーザと共にシミュレーションシステムにおいてシミュレーションを実行する例を、一のユーザ視点から説明する。また、ユーザには、ユーザが有するキャラクタを用いて達成されるべき所定の条件が設定されているものとする。
【0194】
まず、ユーザの情報端末の出力部20は、出力制御部21に制御され、キャラクタ情報格納部220及び/又はオブジェクト情報格納部225を参照し、キャラクタ及び/又はオブジェクトをユーザに知覚可能に出力する(例えば、情報端末の表示部に表示することを指す。以下同じ。)。そして、入力部10は、出力されたキャラクタ及び/又はオブジェクトのうち、仮想空間100で動作させる1以上のキャラクタ及び/又はオブジェクトの選択指示をユーザから受け付ける。また、出力部20は、仮想空間100及び仮想空間100を構成する複数の仮想単位空間110をユーザに知覚可能に出力する。そして、入力部10は、出力された複数の仮想単位空間110のうち、キャラクタ及び/又はオブジェクトを配置する仮想単位空間110の選択指示をユーザから受け付ける。この場合に、入力部10は、複数のキャラクタ及び/又は複数のオブジェクトが存在する場合、複数のキャラクタ及び/又は複数のオブジェクトごとに、それらを配置すべき仮想単位空間110の位置の指定を受け付ける(ステップ10。以下、ステップを「S」と表す。)。
【0195】
配置部12は、指定された仮想単位空間110の位置(以下、「指定位置」という)が、ユーザに対応付けられているエリア(自エリア)内に存在するか否かを確認する(S12)。配置部12は、自エリア内に指定位置が存在しないキャラクタ及び/又はオブジェクトが存在する場合(S12のNo)、当該キャラクタ及び/又は当該オブジェクトの指定位置が自エリア内になるようにユーザに指定位置の設定のやり直しを求める(S10)。一方、配置部12は、各キャラクタ及び/又はオブジェクトについて、自エリア内に指定位置が存在する場合(S12のYes)、入力部10が受け付けた1以上のキャラクタ及び/又はオブジェクトの選択指示、並びに1以上のキャラクタ及び/又はオブジェクトを配置する仮想単位空間110の位置の指定に応じ、1以上のキャラクタ及び/又はオブジェクトのそれぞれを所定の仮想単位空間110に配置する。
【0196】
続いて、命令設定部14は、命令情報格納部222に格納されている各種の命令を出力部20からユーザに知覚可能に出力させる。命令設定部14は、出力された命令を参照しているユーザからの指示に応じ、仮想単位空間110に配置された1以上のキャラクタそれぞれに対し、仮想空間100で実行する1つ以上の命令と命令の実行順序とを設定する(S14)。そして、実行受付部16がユーザからの命令の実行指示を入力部10を介して受け付けた場合(S16のYes)、動作制御部18は、命令設定部14がキャラクタに設定した命令及び命令の実行順序に応じ、キャラクタの動作を開始する(S18)。一方、実行受付部16がユーザからの命令の実行指示を入力部10を介して受け付けていない場合、当該実行指示を受け付けるまで待機する(S16のNo)。なお、シミュレーションシステム1がリアルタイム制で動作する場合は、当該ユーザと異なるユーザは、命令の設定、及び/又は命令の実行を当該ユーザの操作とは独立に自由にできる。
【0197】
ここで、動作制御部18は、入力部10を介して受け付けるユーザからの命令実行の停止指示を受け付けた場合(S20のYes)、実行中の命令を停止させる。そして、命令設定部14は、入力部10を介して命令の変更指示を受け付けた場合(S22のYes)、キャラクタ及び/又はオブジェクトに設定した命令の一部若しくは全部を変更する(S14)。一方、命令設定部14が入力部10を介して命令の変更をしない旨の指示を受け付けた場合(S22のNo)、動作制御部18は、命令の実行指示(つまり、命令の実行再開指示)があるまでキャラクタ及び/又はオブジェクトに設定された命令の実行を待機する(S24のNo)。そして、動作制御部18は、入力部10を介してユーザから命令の実行指示を受け付けた場合(S24のYes)、キャラクタ及び/又はオブジェクトに設定された命令の実行を再開し、命令に基づいた動作を継続する(S26)。また、動作制御部18は、ユーザからの命令実行の停止指示がない場合も(S20のNo)、命令に基づいた動作を継続する(S26)。
【0198】
そして、命令に応じて仮想空間100内で動作するキャラクタと、他のキャラクタ、オブジェクト、及び/又は所定の仮想単位空間110との間で干渉が発生した場合(S28のYes)、動作制御部18は、キャラクタと、他のキャラクタ、オブジェクト、及び/又は所定の仮想単位空間110との間の関係に基づいて、キャラクタに所定の動作を実行させる(S30)。動作制御部18は、キャラクタ干渉情報格納部223、空間干渉情報格納部224、及び/又はオブジェクト干渉情報格納部226に格納されている動作情報に基づいて、キャラクタに所定の動作を実行させる。所定の動作としては、例えば、上記で説明した各種の動作が挙げられる。
【0199】
そして、動作制御部18は、干渉に基づく動作をキャラクタに実行させた後、命令設定部14が設定した命令をキャラクタに続行させる(S32)。なお、動作制御部18は、干渉に基づく動作をキャラクタに実行させた後、命令設定部14が設定した命令をキャンセルし、所定の動作をキャラクタに実行させてもよい。一方、命令に応じて仮想空間100内で動作するキャラクタと、他のキャラクタ、オブジェクト、及び/又は所定の仮想単位空間110との間で干渉が発生しない場合(S28のNo)、動作制御部18は、命令設定部14が設定した命令をキャラクタに続行させる(S32)。続いて、動作制御部18は、命令設定部14が設定した命令の実行が完了した場合、キャラクタの動作を停止させる(S34)。
【0200】
次に、判定部26は、キャラクタの動作によりユーザに設定された所定の条件が満たされたか否かを判断する(S36)。判定部26は、所定の条件が満たされていると判断した場合(S36のYes)、所定の効果をユーザに発生させる(S38)。そして、所定の効果を発生させた後、シミュレーションシステム1は動作を終了する(S40)。また、判定部26が所定の条件を満たしていないと判断した場合(S36のNo)も、シミュレーションシステム1は動作を終了する(S40)。
【0201】
[シミュレーションプログラム]
図1~
図9に示した本実施形態に係るシミュレーションシステム1が備える各構成要素は、中央演算処理装置(Central Processing Unit:CPU)等の演算処理装置にプログラム(すなわち、シミュレーションプログラム)を実行させること、つまり、ソフトウェアによる処理により実現できる。また、集積回路(Integrated Circuit:IC)等の電子部品としてのハードウェアにプログラムを予め書き込むことで実現することもできる。なお、ソフトウェアとハードウェアとを併用することもできる。
【0202】
本実施形態に係るシミュレーションプログラムは、例えば、ICやROM等に予め組み込むことができる。また、シミュレーションプログラムは、インストール可能な形式、又は実行可能な形式のファイルで、磁気記録媒体、光学記録媒体、半導体記録媒体等のコンピュータで読み取り可能な記録媒体に記録し、コンピュータプログラムとして提供することもできる。プログラムを格納している記録媒体は、CD-ROMやDVD等の非一過性の記録媒体であってよい。更に、シミュレーションプログラムを、インターネット等の通信ネットワークに接続されたコンピュータに予め格納させ、通信ネットワークを介してダウンロードによる提供ができるようにすることもできる。
【0203】
本実施形態に係るシミュレーションプログラムは、CPU等に働きかけて、シミュレーションプログラムを、
図1~
図9にかけて説明した入力部10、配置部12、命令設定部14、実行受付部16、動作制御部18、出力部20、出力制御部21、格納ユニット22、編集部24、判定部26、キャラクタ情報格納部220、単位空間情報格納部221、命令情報格納部222、キャラクタ干渉情報格納部223、空間干渉情報格納部224、オブジェクト情報格納部225、オブジェクト干渉情報格納部226、動作シーケンス情報格納部227、ユーザ情報格納部228として機能させる。
【0204】
[実施の形態の効果]
本実施形態に係るシミュレーションシステム1は、仮想空間100内において動作可能なキャラクタに対し、キャラクタの動作についての命令の設定及び命令の実行順序の設定を複数のユーザそれぞれが各ユーザ自身のキャラクタに対して自由にできる。そして、シミュレーションシステム1においては、仮想空間内で当該キャラクタと、他のキャラクタやオブジェクト及び/又は仮想単位空間110との間で干渉が発生した場合、各ユーザが設定した命令に優先し、所定の動作をキャラクタに実行させることができる。これにより、従来は一度設定した命令はそのまま忠実に実行されるところ、シミュレーションシステム1においてはキャラクタと他のキャラクタ等との相互作用に応じ、命令とは異なる動作をキャラクタに実行させることができる。したがって、シミュレーションシステム1によれば、各ユーザは、自身が設定した命令とは異なる動作をキャラクタが実行する様子を同時に観察して楽しむことができる。
【0205】
また、シミュレーションシステム1においては、一のキャラクタと他のキャラクタとの組み合わせ、一のキャラクタとオブジェクトとの組み合わせ、及び/又は一のキャラクタと仮想単位空間との組み合わせ等、様々な組み合わせによって、各ユーザには想定外の様々な動作をキャラクタに実行させることができる。したがって、シミュレーションシステム1においては、各ユーザはいかなる動作をキャラクタが実行するのかについて楽しむこと、つまり、上記様々な組み合わせを試行錯誤することで、キャラクタの動作のシミュレーションを楽しむことができる。
【0206】
更に、シミュレーションシステム1においては、仮想空間100を複数のエリアに分け、複数のユーザそれぞれに、一のエリアを対応付けることができる。そして、一のユーザは自身に対応付けられたエリア内に自身が有するキャラクタ及び/又はオブジェクトを設置し、かつ、1以上の命令を設定して自身に対応付けられていない他のエリアにキャラクタを移動させることができる。これにより、シミュレーションシステム1は、一のユーザが自己のキャラクタ及びオブジェクトを配置できない他のエリアにおいて、他のユーザの他のキャラクタ及び/又は他のオブジェクトとの間で干渉を発生させることができ、一のユーザが自己のキャラクタに設定した命令からは予想できない一のキャラクタの動作の変化を想定してシミュレーションを楽しむことができる。
【0207】
以上、本発明の実施形態を説明したが、上記に記載した実施の形態は特許請求の範囲に係る発明を限定するものではない。また、実施の形態の中で説明した特徴の組み合わせの全てが発明の課題を解決するための手段に必須であるとは限らない点に留意すべきである。更に、上記した実施形態の技術的要素は、単独で適用されてもよいし、プログラム部品とハードウェア部品とのような複数の部分に分割されて適用されるようにすることもできる。
【符号の説明】
【0208】
1 シミュレーションシステム
10 入力部
12 配置部
14 命令設定部
16 実行受付部
18 動作制御部
20 出力部
21 出力制御部
22 格納ユニット
24 編集部
26 判定部
50、52、54、54a、54b、54c、56 キャラクタ
60、60a オブジェクト
100 仮想空間
101、101a、101b、101c エリア
102 下面
110、110a、110b 仮想単位空間
111、111a、111b、111c、111d、111e、111f、111g、111h、111i、111j、111k、111l、111m、111n 仮想単位空間
220 キャラクタ情報格納部
221 単位空間情報格納部
222 命令情報格納部
223 キャラクタ干渉情報格納部
224 空間干渉情報格納部
225 オブジェクト情報格納部
226 オブジェクト干渉情報格納部
227 動作シーケンス情報格納部
228 ユーザ情報格納部
300 命令