(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-06-05
(45)【発行日】2024-06-13
(54)【発明の名称】情報処理システム、及び情報処理方法
(51)【国際特許分類】
G06F 8/73 20180101AFI20240606BHJP
G06F 8/75 20180101ALI20240606BHJP
G06F 9/44 20180101ALI20240606BHJP
【FI】
G06F8/73
G06F8/75
G06F9/44
(21)【出願番号】P 2022193354
(22)【出願日】2022-12-02
【審査請求日】2022-12-02
【新規性喪失の例外の表示】特許法第30条第2項適用 (1)ウェブサイトの掲載日:令和4年(2022年)8月24日 ・CEDEC2022 開催日:令和4年(2022年)8月23~25日 ・ウェブサイトのアドレス:https://cedec.cesa.or.jp/2022/session/detail/94 https://cedec.cesa.or.jp/2022/session/detail/84 https://cedec.cesa.or.jp/2022/session/detail/13 (2)ウェブサイトの掲載日:令和4年(2022年)10月25日 ・Unity Sync 2022 開催日:令和4年(2022年)10月25日 ・ウェブサイトのアドレス: https://events.unity3d.jp/sync/session/8/ (3)ウェブサイトの掲載日:令和4年(2022年)9月16日 ・CA.unity x WFS 開催日:令和4年(2022年)9月16日 ・ウェブサイトのアドレス: https://cyberagent.connpass.com/event/257129/ (4)ウェブサイトの掲載日:令和4年(2022年)10月25日 ・GREE Tech Conference 2022 開催日:令和4年(2022年)10月25日 ・ウェブサイトのアドレス: https://techcon.gree.jp/2022/session/TrackB-2 (5)ウェブサイトの掲載日:令和4年(2022年)4月18日 ・ウェブサイトのアドレス: https://forpro.unity3d.jp/case_study/wright-flyer-studios/
(73)【特許権者】
【識別番号】504437801
【氏名又は名称】グリー株式会社
(74)【代理人】
【識別番号】110002871
【氏名又は名称】弁理士法人坂本国際特許商標事務所
(72)【発明者】
【氏名】西田 綾佑
(72)【発明者】
【氏名】奥村 典史
【審査官】山本 俊介
(56)【参考文献】
【文献】特開2021-163241(JP,A)
【文献】特開2004-038319(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/00-8/77
G06F 9/44
(57)【特許請求の範囲】
【請求項1】
コンピュータ読み取り可能な実行プログラムのソースコードをパースする第1処理部と、
前記第1処理部によりパースされたソースコードに係るデータ構造の集合体に変更を施す第2処理部
であって、前記変更が前記実行プログラムの少なくとも一部を形成する複数の要素に対して所定順にインデックスを付与することを含む前記第2処理部と、
前記第2処理部により前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する第3処理部と
、
前記実行プログラムの実行結果に基づいて、前記実行プログラムにおける実行部分と非実行部分とを区別するための2値情報、又は、前記実行プログラムにおける実行態様の相違を区別するための2値情報を、前記インデックスに対応付ける第4処理部とを含む、情報処理システム。
【請求項2】
前記第2処理部は、あらかじめ決められたルールに基づいて、前記変更を施す、請求項1に記載の情報処理システム。
【請求項3】
前記第4処理部は、前記インデックスに対応付けられた順に前記2値情報を保持するバイナリデータを生成及び更新する、請求項
1に記載の情報処理システム。
【請求項4】
前記第3処理部は、前記バイナリデータに基づいて、前記実行プログラムを実行する、請求項
3に記載の情報処理システム。
【請求項5】
前記複数の要素のそれぞれは、対応するセリフ情報を含み、
前記第3処理部は、前記バイナリデータに基づいて既読のセリフをスキップ又は簡略化する態様で、前記実行プログラムを実行する、請求項
4に記載の情報処理システム。
【請求項6】
前記第3処理部は、複数の種類の前記実行プログラムをファイルごとに管理するとともに、前記バイナリデータを前記ファイルごとに管理する、請求項
4又は5に記載の情報処理システム。
【請求項7】
コンピュータ読み取り可能な実行プログラムのソースコードをパースする第1処理部と、
前記第1処理部によりパースされたソースコードに係るデータ構造の集合体に変更を施す第2処理部と、
前記第2処理部により前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する第3処理部と
、
前記第2処理部により前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行するための補助情報を生成する第5処理部とを含み、
前記第3処理部は、前記補助情報に基づいて、前記実行プログラムを実行する、情報処理システム。
【請求項8】
前記補助情報は、前記実行プログラムを実行するためのリソースを表すリソース情報を含み、
前記第3処理部は、前記リソース情報に基づいて、前記実行プログラムの実行に先立って、前記リソースを一括ダウンロードする、請求項
7に記載の情報処理システム。
【請求項9】
コンピュータ読み取り可能な実行プログラムのソースコードをパースする第1処理部と、
前記第1処理部によりパースされたソースコードに係るデータ構造の集合体に変更を施す第2処理部
であって、前記変更が前記実行プログラムの少なくとも一部を形成する複数の要素に対してそれぞれ固有のラベルを埋め込むことを含む前記第2処理部と、
前記第2処理部により前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する第3処理部とを含
み、
前記第3処理部は、前記ラベルに対応付けられた出力用ファイルを実行しつつ、前記実行プログラムを実行する、情報処理システム。
【請求項10】
コンピュータ読み取り可能な実行プログラムのソースコードをパースする第1処理部と、
前記第1処理部によりパースされたソースコードに係るデータ構造の集合体に変更を施す第2処理部と、
前記第2処理部により前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する第3処理部とを含
み、
前記実行プログラムは、複数種類の表示媒体を所定のレイアウトで並べて表示するための配置用プログラム部分を含み、
前記配置用プログラム部分は、前記複数種類の表示媒体のうちの表示する種類を指示する第1指示と、2種類以上の前記表示媒体を表示する際の並び順を指示する第2指示とからなる入力情報に基づいて、生成される、情報処理システム。
【請求項11】
コンピュータ読み取り可能な実行プログラムのソースコードをパース
する第1処理ステップと、
前記第1処理ステップによりパースされたソースコードに係るデータ構造の集合体に変更を施
す第2処理ステップであって、前記変更が前記実行プログラムの少なくとも一部を形成する複数の要素に対して所定順にインデックスを付与することを含む前記第2処理ステップと、
前記第2処理ステップにより前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する
第3処理ステップと、
前記実行プログラムの実行結果に基づいて、前記実行プログラムにおける実行部分と非実行部分とを区別するための2値情報、又は、前記実行プログラムにおける実行態様の相違を区別するための2値情報を、前記インデックスに対応付ける第4処理ステップとを含む、コンピュータにより実行される情報処理方法。
【請求項12】
コンピュータ読み取り可能な実行プログラムのソースコードをパース
する第1処理ステップと、
前記第1処理ステップによりパースされたソースコードに係るデータ構造の集合体に変更を施
す第2処理ステップと、
前記第2処理ステップにより前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する
第3処理ステップと、
前記第2処理ステップにより前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行するための補助情報を生成する第5処理ステップとを含み、
前記第3処理ステップは、前記補助情報に基づいて、前記実行プログラムを実行する、コンピュータにより実行される情報処理方法。
【請求項13】
コンピュータ読み取り可能な実行プログラムのソースコードをパース
する第1処理ステップと、
前記第1処理ステップによりパースされたソースコードに係るデータ構造の集合体に変更を施
す第2処理ステップであって、前記変更が前記実行プログラムの少なくとも一部を形成する複数の要素に対してそれぞれ固有のラベルを埋め込むことを含む前記第2処理ステップと、
前記第2処理ステップにより前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する
第3処理ステップとを含
み、
前記第3処理ステップは、前記ラベルに対応付けられた出力用ファイルを実行しつつ、前記実行プログラムを実行する、コンピュータにより実行される情報処理方法。
【請求項14】
コンピュータ読み取り可能な実行プログラムのソースコードをパース
する第1処理ステップと、
前記第1処理ステップによりパースされたソースコードに係るデータ構造の集合体に変更を施
す第2処理ステップと、
前記第2処理ステップにより前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する
第3処理ステップとを含
み、
前記実行プログラムは、複数種類の表示媒体を所定のレイアウトで並べて表示するための配置用プログラム部分を含み、
前記配置用プログラム部分は、前記複数種類の表示媒体のうちの表示する種類を指示する第1指示と、2種類以上の前記表示媒体を表示する際の並び順を指示する第2指示とからなる入力情報に基づいて、生成される、コンピュータにより実行される情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、情報処理システム、及び情報処理方法に関する。
【背景技術】
【0002】
構造化されたプログラム言語で記述されたプログラムソースの開発を支援するプログラムの開発支援装置において、通常のコンパイルの他に、XMLファイルをパースして構文チェックを行う技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上記のような従来技術では、プログラム実行時の処理負荷や通信負荷等を効果的に低減することが難しい。
【0005】
そこで、1つの側面では、本開示は、プログラム実行時の処理負荷や通信負荷等を効果的に低減することを目的とする。
【課題を解決するための手段】
【0006】
1つの側面では、コンピュータ読み取り可能な実行プログラムのソースコードをパースする第1処理部と、
前記第1処理部によりパースされたソースコードに係るデータ構造の集合体に変更を施す第2処理部と、
前記第2処理部により前記変更が施された前記データ構造の集合体に基づいて、前記実行プログラムを実行する第3処理部とを含む、情報処理システムが提供される。
【発明の効果】
【0007】
1つの側面では、本開示によれば、プログラム実行時の処理負荷や通信負荷等を効果的に低減することが可能となる。
【図面の簡単な説明】
【0008】
【
図1】一実施例による情報処理システムの全体構成の概略図である。
【
図2】コンピュータのハードウェア構成の一例を示す図である。
【
図3】情報処理システムを介して実現可能な情報処理形態の一例を示す概念図である。
【
図4】情報処理システムにより実現可能な機能部の説明図である。
【
図5】立ち絵のアドベンチャーパートの説明図である。
【
図7】立ち絵の制御に係る実行プログラムの命令と、各立ち位置の座標との関係を示す表図である。
【
図8】立ち位置の座標を定義するプログラムの一例の説明図である。
【
図10】サウンド制御に係る実行プログラム用の命令列の一部を示す説明図である。
【
図11】
図10に示す命令列に対して変更を施した実行プログラムの一例を示す図である。
【
図14】ランタイムパースにより
図10に示す命令列に対してインデックスを埋め込む方法の説明図である。
【
図15】既読フラグとして機能するバイナリデータの説明図である。
【発明を実施するための形態】
【0009】
以下、添付図面を参照しながら各実施例について詳細に説明する。なお、添付図面では、見易さのために、複数存在する同一属性の部位には、一部のみしか参照符号が付されていない場合がある。
【0010】
本明細書において、用語「対応付け」とは、直接的な対応付けのみならず、間接的な対応付けをも含む。例えば、要素Aに要素Bが対応付けられている状態は、要素Aに要素Bが対応付けられている状態のみならず、要素Aに要素Cが対応付けられかつ要素Cに要素Bが対応付けられている状態をも含む概念である。これは、同様の用語「紐付け」についても同様である。
【0011】
図1は、一実施例による情報処理システム1の全体構成の概略図である。
【0012】
情報処理システム1は、ユーザ端末21と情報処理サーバ30とにより実現されてもよい。
【0013】
情報処理サーバ30は、ネットワーク4を介して各ユーザ端末21と通信可能である。すなわち、ユーザ端末21及び情報処理サーバ30は、ネットワーク4を介して接続される。
【0014】
ネットワーク4は、インターネット、WAN(Wide Area Network)、無線通信網、有線ネットワーク、又はこれらの任意の組み合わせ等を含んでもよい。なお、ネットワーク4の一部又は全部は、P2Pネットワークにより実現されてもよい。
【0015】
ユーザ端末21は、それぞれ、例えばスマートフォンや携帯電話であるが、ウェアラブル端末(例えばスマートウォッチ、リング等)、タブレット端末、ラップトップ端末、デスクトップ端末等であってもよい。
【0016】
ユーザ端末21は、それぞれ、処理装置23、表示部24、及び入力装置25を備える。処理装置23は、マイクロコンピュータのようなコンピュータであってよい。表示部24は、液晶ディスプレイや、有機EL(Electro-Luminescence)ディスプレイ等であってよい。入力装置25は、タッチパネル等であってよい。
【0017】
情報処理サーバ30は、サーバの形態であり、例えばサーバコンピュータにより形成される。情報処理サーバ30は、複数のサーバコンピュータにより実現されてもよい。例えば、情報処理サーバ30は、互いに異なる場所に配置された複数のサーバコンピュータが協動することで実現されてもよい。また、情報処理サーバ30は、Webサーバを含んでよい。この場合、後述するユーザ端末21の機能の一部は、Webサーバから受領したHTML文書やそれに付随する各種プログラム(JavaScript(登録商標))をブラウザが処理することによって実現されてもよい。
【0018】
図2は、コンピュータ100のハードウェア構成の一例を示す図である。
【0019】
情報処理システム1は、コンピュータ100単体により実現されてもよい。コンピュータ100は、ユーザ端末21の処理装置23として具現化されてもよいし、コンピュータ100に含まれてもよい。
【0020】
図2に示す例では、コンピュータ100は、制御部101、主記憶部102、補助記憶部103、ドライブ装置104、ネットワークI/F部106、及び入力部107を含む。
【0021】
制御部101は、主記憶部102や補助記憶部103に記憶されたプログラムを実行する演算装置であり、入力部107や記憶装置からデータを受け取り、演算、加工した上で、記憶装置などに出力する。
【0022】
主記憶部102は、ROM(Read Only Memory)やRAM(Random Access Memory)などである。主記憶部102は、制御部101が実行する基本ソフトウェアであるOS(Operating System)やアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
【0023】
補助記憶部103は、HDD(Hard Disk Drive)やSSD(Solid State Drive)などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
【0024】
ドライブ装置104は、記録媒体105、例えばフレキシブルディスクからプログラムを読み出し、記憶装置にインストールする。
【0025】
記録媒体105は、所定のプログラムを格納する。この記録媒体105に格納されたプログラムは、ドライブ装置104を介してコンピュータ100にインストールされる。インストールされた所定のプログラムは、コンピュータ100により実行可能となる。
【0026】
ネットワークI/F部106は、ネットワーク4を介して接続された通信機能を有する周辺機器やユーザ端末21等と、コンピュータ100とのインターフェースである。
【0027】
入力部107は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、マウスやタッチパッド等を有する。
【0028】
なお、
図2に示す例において、以下で説明する各種処理等は、プログラムをコンピュータ100に実行させることで実現することができる。また、プログラムを記録媒体105に記録し、このプログラムが記録された記録媒体105をコンピュータ100に読み取らせて、以下で説明する各種処理等を実現させることも可能である。なお、記録媒体105は、様々なタイプの記録媒体を用いることができる。例えば、記録媒体105は、CD(Compact Disc)-ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する記録媒体、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等であってよい。
【0029】
次に、
図3以降を参照して、情報処理システム1の動作について説明する。なお、以下の説明において、情報処理システム1が
図1に示す構成の場合、ユーザ端末21の機能の一部は、情報処理サーバ30により実現されてもよいし、情報処理サーバ30の機能の一部又は全部は、ユーザ端末21により実現されてもよい。
【0030】
図3は、情報処理システム1を介して実現可能な情報処理形態の一例を示す概念図である。
【0031】
図3に示す例では、複数の実行プログラムA、B・・・が、ベースプログラム(システム)と協動(連携)して、それぞれに対応する機能A、B・・・を実現する。以下では、主にプログラマが、実行プログラムA、B・・・のような実行プログラムを作成する際の支援(例えば、開発環境の効率化や支援)に好適な情報処理システム1について説明する。
【0032】
図4は、情報処理システム1により実現可能な機能部であって、実行プログラムが実装され、プレイヤによりプレイ可能となるまでに機能しうる機能部の説明図である。
【0033】
以下では、一例として、情報処理システム1は、
図1に示した構成を有するものとする。実行プログラムは、ゲーム用の実行プログラムであるとし、本ゲームとは、実行プログラムにより実現されるゲームであるとする。また、ユーザ端末21は、プログラマがユーザであるときのユーザ端末21と、本ゲームをプレイするプレイヤがユーザであるときのユーザ端末21とを含み、これらを区別するときは、プログラマに係るユーザ端末21と、プレイヤに係るユーザ端末21とも称する。
【0034】
情報処理システム1は、ソースコード取得部400、パース部402、変更処理部404、補助情報生成部406、実行処理部408、及びフラグ処理部410を含む。また、情報処理システム1は、実行プログラム記憶部450、リソースリスト記憶部452、及びリソースファイル記憶部454を含む。
【0035】
ソースコード取得部400は、例えばプログラマからの入稿等の際に、プログラマから入力される実行プログラム用のソースコードを取得する。以下では、特に言及しない限り、特定の一の実行プログラムに関する処理について説明する。なお、ソースコードの言語は、任意のスクリプト言語であるが、例えばLuaであってよい。
【0036】
パース部402は、パーサないし構文解析器により実現される。パース部402は、ソースコード取得部400により取得されたソースコードをパースする。これにより、パースされたソースコードに係るデータ構造の集合体が得られる。なお、パース部402は、開発段階の入稿時に機能してもよいし、実行プログラムに係るランタイム中に機能してもよい。
【0037】
変更処理部404は、パースされたソースコードに係るデータ構造の集合体に変更を施す。変更は、自動的及び/又は手動により実現されてもよい。自動的に実現される場合、あらかじめ決められたルールに基づいて変更が施されてよい。変更処理部404による処理(変更)のいくつかの例は後述する。
【0038】
補助情報生成部406は、パースされたソースコードに係るデータ構造の集合体に基づいて、実行プログラムを実行するための補助情報を生成する。補助情報生成部406は、パースされたソースコードに係るデータ構造の集合体が入力されると、自動的に補助情報を生成してもよいし、手動による入力を利用しつつ補助情報を生成してもよい。補助情報は、例えば実行プログラムを実行する際に必要となるリソース(例えば音声ファイル等)に関するリスト化された情報(以下、「リソースリスト」とも称する)(リソース情報の一例)を含む。リソースリストは、リソースリスト記憶部452に記憶される。
【0039】
実行処理部408は、実装された実行プログラムを実行する処理部である。実行処理部408は、一括ダウンロード処理部4081と、演出/制御処理部4082とを含む。
【0040】
一括ダウンロード処理部4081は、一の実行プログラムを実行するに先立って、当該一の実行プログラムに対応付けられているリソースリストに記載のリソースを、リソースファイル記憶部454から一括でダウンロードする。これにより、実行プログラムの実行中のリソースダウンロードにより生じうる不都合(通信によるゲームパートの進行の遮断やレイテンシーの悪化)等を低減できる。また、実行プログラムの実行中の通信負荷も低減できる。
【0041】
演出/制御処理部4082は、本ゲームに係る各種演出や制御を実現する。処理内容は、本ゲームの内容に依存するので、任意である。本実施例では、本ゲームが、複数のキャラクタの会話などのセリフが大量にあり、それに伴いセリフに対応した細やかな演出(表情等)があるゲームパートを有する場合に好適であるが、これに限られない。
【0042】
本実施例では、一例として、本ゲームは、
図5に模式的に示すように、立ち絵のアドベンチャーパートを有する。
図5は、立ち絵のアドベンチャーパートの説明図である。当該ゲームパートでは、演出/制御処理部4082は、立ち絵の演出501と、サウンド制御502と、フラグ分岐制御503とを主に実現する。立ち絵の演出501等の詳細は、後述する。なお、その他、仮想カメラの制御等が併せて実現されてもよい。
【0043】
フラグ処理部410は、演出/制御処理部4082のフラグ分岐制御503に関連したフラグ処理を実行する。本実施例では、フラグ処理部410は、
図15を参照して後述するように、バイナリデータの2値情報を更新することで、フラグ処理を実現する。フラグ分岐制御503に関連したフラグ処理の詳細は、
図13から
図15を参照して後述する。
【0044】
実行プログラム記憶部450は、実装可能な実行プログラムが記憶される。すなわち、実行プログラム記憶部450には、開発が終了しているリリース後の実行プログラムが記憶される。なお、実行プログラム記憶部450内の実行プログラムは、適宜、バージョンアップ等により更新されてよい。
【0045】
リソースリスト記憶部452には、上述したとおりリソースリストが記憶される。リソースリストは、実行プログラム記憶部450内の実行プログラムごとに生成され、対応する実行プログラムに対応付けられる形態でリソースリスト記憶部452に記憶されてよい。すなわち、リソースリストは、実行プログラム記憶部450内の各実行プログラムに対してそれぞれ用意されてよい。
【0046】
リソースファイル記憶部454には、上述したとおり、リソースリストに記載の各種リソースファイル(出力用ファイルの一例)が記憶される。リソースファイルは、各セリフに係る音声ファイルや、背景に係る画像ファイル等を含んでよい。
【0047】
なお、本実施例において、ソースコード取得部400、パース部402、変更処理部404、及び補助情報生成部406は、プログラマに係るユーザ端末21、及び/又は、情報処理サーバ30により実現されてもよい。他方、実行処理部408及びフラグ処理部410は、プレイヤに係るユーザ端末21、及び/又は、情報処理サーバ30により実現されてもよい。なお、実行処理部408及びフラグ処理部410が、プレイヤに係るユーザ端末21により実現される場合は、プレイヤに係るユーザ端末21には、実行プログラムに係るアプリケーションが実装される。この場合、アプリケーションは、いわゆるネイティブアプリケーションであってよい。他方、実行処理部408及びフラグ処理部410が、情報処理サーバ30により実現される場合、アプリケーションは、WEBアプリケーションであってもよい。また、同様の観点から、実行プログラム記憶部450は、プレイヤに係るユーザ端末21、及び/又は、情報処理サーバ30により実現されてもよい。
【0048】
また、本実施例において、リソースリスト記憶部452及びリソースファイル記憶部454は、典型的には、情報処理サーバ30により実現されてよい。ただし、リソースリスト記憶部452及びリソースファイル記憶部454の少なくともいずれか一方の一部又は全部は、プレイヤに係るユーザ端末21により実現されてもよい。
【0049】
次に、
図6から
図9を参照して、実行処理部408(演出/制御処理部4082)により実行される立ち絵の制御に係る開発支援に有用な構成について説明する。
【0050】
図6は、立ち絵の演出501の概要の説明図であり、3種類の立ち絵G61からG63を模式的に示す図である。なお、3種類の立ち絵G61からG63は、プレイヤに係るユーザ端末21の表示部24上に選択的に表示される。
【0051】
各立ち絵に係る画像は、背景にキャラクタを重畳した画像であり、セリフ領域G600を含む。セリフ領域G600には、実行プログラムで規定されたセリフが出力される。また、各立ち絵に係る画像は、ユーザインターフェースとして、ゲームパートの進行を操作するための各種ボタンB600を含んでよい。
【0052】
立ち絵G61は、キャラクタAが一人だけ中央に立っている状態の立ち絵である。なお、この場合、セリフ領域G600に出力されるセリフは、キャラクタAに係るセリフであってよい。
【0053】
立ち絵G62は、キャラクタA、Bが二人並んで立っている状態の立ち絵である。なお、この場合、セリフ領域G600に出力されるセリフは、キャラクタA及び/又はBに係るセリフであってよい。
【0054】
立ち絵G63は、キャラクタB、A、Cが三人並んで立っている状態の立ち絵である。なお、この場合、セリフ領域G600に出力されるセリフは、キャラクタA及び/又はB及び/又はCに係るセリフであってよい。
【0055】
図7は、実行処理部408(演出/制御処理部4082)により実行される立ち絵の制御に係る実行プログラム(配置用プログラム部分の一例)の命令と、各立ち位置の座標との関係を示す表図である。
図8は、立ち位置の座標を定義するプログラムの一例の説明図である。
【0056】
本実施例では、立ち絵の制御に係る実行プログラム用の命令は、各キャラクタのレイアウトに関し、例えば、Layout.show(*)、Layout.show(*、*)、Layout.show(*、*、*)の3種類の命令を含む。
【0057】
Layout.show(*)は、立ち絵G61を実現可能な命令であり、()内の“*”には、対応するキャラクタを特定する情報(例えばキャラクタ名)を入れることができる。例えば、立ち絵G61は、Layout.show(キャラクタA)により実現できる。
【0058】
Layout.show(*、*)は、立ち絵G62を実現可能な命令であり、()内の2つの“*”には、対応する2人のキャラクタを特定する情報(例えばキャラクタ名)を入れることができる。この際、()内の2つの“*”の順序は、対応する2人のキャラクタの並び順を表す。例えば、立ち絵G62は、Layout.show(キャラクタA、キャラクタB)により実現できる。
【0059】
Layout.show(*、*、*)は、立ち絵G63を実現可能な命令であり、()内の3つの“*”には、対応する3人のキャラクタを特定する情報(例えばキャラクタ名)を入れることができる。この際、()内の3つの“*”の順序は、対応する3人のキャラクタの並び順を表す。例えば、立ち絵G62は、Layout.show(キャラクタB、キャラクタA、キャラクタC)により実現できる。
【0060】
各立ち位置の座標は、3種類の命令のそれぞれに対して
図7に示すように規定される。
図7に示す例では、Position#1からPosition#6までの6つの座標値が対応付けられている。具体的には、Position#1は、Layout.show(*)に対して1人のキャラクタの立ち位置の座標である。Position#2は、Layout.show(*、*)に対して2人のキャラクタのうちの、左側のキャラクタの立ち位置の座標である。Position#3は、Layout.show(*、*)に対して2人のキャラクタのうちの、右側のキャラクタの立ち位置の座標である。同様に、Position#4からPosition#6は、Layout.show(*、*、*)に対する3人の、左から順の立ち位置の座標を表す。
【0061】
このようなPosition#1からPosition#6までの6つの座標値は、実行プログラム中に含まれていない。この場合、Position#1からPosition#6までの6つの座標値は、例えば一部を
図8に模式的に示すように、
図3に示すベースプログラム内に記述(定義)されてもよい。
【0062】
このようにして本実施例によれば、実行プログラム中に各キャラクタ立ち位置の座標を指定する必要がなくなる。すなわち、実行プログラムにおいて、各キャラクタ立ち位置の座標情報を隠蔽できる。これにより、プログラマは、単に、どのようなキャラクタを何人立たせるか、複数の場合は、どのような順序で立たせるかを、3種類の命令を利用して、容易に規定できる。この結果、プログラマの開発負荷を効果的に低減できる。
【0063】
換言すると、3種類の命令は、複数種類のキャラクタ(表示媒体の一例)のうちの表示する種類を指示する第1指示と、2種類以上の表示媒体を表示する際の並び順を指示する第2指示とからなる入力情報(例えばプログラマからの入力情報)に基づいて、生成される。従って、プログラマの負荷を低減できる。
【0064】
図9は、5つの命令の説明図である。例えば、
図9に示す例では、一番目の命令Layout.show(キャラクタB、キャラクタA、キャラクタC)が実行されると、
図6に示した立ち絵G63が実現され、次の命令Layout.show(キャラクタB、キャラクタA)が実行されると、
図6に示した立ち絵G63から、キャラクタCがいなくなり(例えば、矢印R92に模式的に示すように右側へとスライドアウトし)、キャラクタB、Aの2人の立ち絵(図示せず)となる。この際、キャラクタB、Aは、同じ順序で立ち位置だけが若干変化する(矢印R90、R91参照)。ついで、次の命令Layout.show(キャラクタC、キャラクタB)が実行されると、キャラクタAがいなくなり(例えば、矢印R95に模式的に示すように右側へとスライドアウトし)、キャラクタC、Bの2人の立ち絵(図示せず)となる。この際、キャラクタCは、矢印R93に模式的に示すように左側からスライドインし、キャラクタBは並び順が右側へとずれる(矢印R94参照)。ついで、次の命令Layout.show(キャラクタA、キャラクタC)が実行されると、キャラクタBがいなくなり(例えば、矢印R98に模式的に示すように右側へとスライドアウトし)、キャラクタA、Cの2人の立ち絵(図示せず)となる。この際、キャラクタAは、矢印R96に模式的に示すように左側からスライドインし、キャラクタCは並び順が右側へとずれる(矢印R97参照)。そして、次の命令Layout.show(キャラクタA)が実行されると、キャラクタCがいなくなり(例えば、矢印R100に模式的に示すように右側へとスライドアウトし)、キャラクタAの一人の立ち絵(
図6に示した立ち絵G61)となる。
【0065】
このような
図9に示す立ち位置変更からわかるように、本実施例によれば、プログラマは、3種類の命令を利用して所望の態様で立ち位置を変化させることが可能な実行プログラムを、容易に生成できる。
【0066】
なお、
図6から
図9を参照して上述した例では、立ち位置の命令であるが、レイアウト(例えば横並びだけであく、円形の並びなど)の命令等も適用可能である。
【0067】
次に、
図10から
図12を参照して、実行処理部408(演出/制御処理部4082)により実行されるサウンド制御502に関連した特徴について説明する。
【0068】
図10は、サウンド制御502に係る実行プログラム用の命令列の一部を示す説明図である。
図11は、
図10に示す命令列に対して変更(変更処理部404による変更)を施した実行プログラムの一例を示す図である。
【0069】
サウンド制御502に係る命令Adv.talk(*、[[###]])は、発話に関するコルーチンを実行する命令であり、“*”は、発話するキャラクタを表し、[[###]]の“###”は、セリフを表す情報(セリフ情報の一例)である。例えば、命令Adv.talk(キャラクタA、[[おはよう!]])は、キャラクタAに「おはよう!」というセリフを発話させる命令である。プログラマは、このような命令を利用して、多様なセリフのやり取りを含む実行プログラムを容易に生成できる。例えば、
図10に示す例では、キャラクタAとキャラクタBとの会話を、6つの命令により実現できる。
【0070】
本実施例では、
図10に示すようなプログラマが作成した命令列(ソースコード)に変更(変更処理部404による変更)を加えることで、
図11に示す実行プログラムを生成する。
【0071】
図11に示す実行プログラムは、
図10に示す命令列に対して、各命令におけるセリフの後に、音声ファイル名が挿入されている点が異なる。音声ファイル名は、セリフ及び話者が異なれば異なるラベル(「固有のラベル」の一例)となるように自動的に設定されてよい。この場合、音声ファイル名に対応する音声ファイル(リソースファイル記憶部454内に記憶)を再生することで、本ゲーム中に、対応する音声を出力できる。なお、このようにして実行プログラムに挿入される音声ファイル名は、上述した補助情報生成部406によりリスト化されてよい。
【0072】
図12は、
図10に示す命令列からの台本化の説明図である。本実施例では、
図10に示す命令列から、
図12に示すような台本1200が自動的に生成されてもよい。この場合、声優さんは、このような台本1200を見ながら、対応する音声ファイルの音声を吹き込むことができる。
【0073】
なお、
図10から
図12に示す例は、音声ファイルに対応付けるための変更(変更処理部404による変更)に関するが、例えば変更処理部404による変更は、多様に実現可能である。例えば、変更処理部404による変更は、セリフの言語の変換(例えば日本語から英語への変換)、セリフの方言の変換、絵文字、スタンプなどの組み込み等を含んでもよい。
【0074】
次に、
図13から
図15を参照して、上述したフラグ処理部410により実行されるフラグ分岐制御503に関連したフラグ処理の詳細について説明する。
【0075】
図13は、フラグ分岐制御503の前提となる一般的な既読スキップ機能の説明図である。本ゲームに係るゲームパートは、分岐を伴い進行するシーン(例えば1人以上のキャラクタがセリフを発するシーン)を含む。この場合、分岐を介してどちらのルートを辿るかに応じてプレイヤにより読まれるセリフが異なりうる。このようなゲームパートでは、ゲームパートの中断等を介して再開する場合等、プレイヤが、同じセリフを何度も読む(又は聞く)のは煩雑である。そこで、従来から、既読フラグなるフラグを設定し、一度読んだセリフに対応する命令行には既読フラグを立てることが実行されている。この場合、一度読んだセリフに対応する命令行(実行部分の一例)と、一度も読まれたことがないセリフに対応する命令行(非実行部分の一例)とは、既読フラグの状態に基づいて判別可能となる。
【0076】
例えば、
図13に示す例では、ゲームパートの進行が、ポイント(シーン)P1からポイントP2に至ると、分岐があり、ポイントP2からポイントP3を介してポイントP4に至るルートと、ポイントP2からポイントP6を介してポイントP4に至るルートが有る。なお、ポイントP4に至ると次は同じポイントP5までの共通のルートである。
【0077】
例えば、ポイントP1、P2、P6、P4、P5がすでに進行済のルートであるとする。すなわち、ポイントP1、P2、P6、P4、P5のそれぞれにおいて出力されたセリフは、いわゆる“既読”である。この場合、新たな別のルートとして、ポイントP1、P2、P3、P4、P5を辿るルートが実現される場合、ポイントP1、P2、P4、P5のそれぞれにおいては、同じセリフが出力されることになるため、早送り再生(スキップ再生)が実現される。なお、早送り再生に代えて、より簡易的な再生や、完全に省略する再生(音声が出ない再生)が実現されてもよい。他方、ポイントP3では、初めてのセリフとなるので、通常速度での再生が実現される。以下、このように既読のセリフを、スキップ又は通常時よりも簡略化する態様で再生する機能を、「既読スキップ機能」とも称する。
【0078】
ところで、このような既読スキップ機能を通常的に実現しようとすると、分岐ごとに、どちらに分岐したかをフラグ等を利用して記憶する必要性がある。しかしながら、この方法では、分岐が膨大にあるような場合や、関数分けが膨大である場合等、実装が現実的に困難となる。また、すべての命令の行にフラグを持たせることも可能であるが、1つ1つのセリフをハッシュ化し、keyとして保存しても、データ量が膨大となる。
【0079】
そこで、本実施例では、以下で
図14及び
図15を参照して説明するが、ファイルごとに既読フラグをビット列にし、エンコードして文字列として保存し、すべての「セリフ」に、読んだかどうかのフラグを挟む方法を用いる。
【0080】
図14は、ランタイムパースにより
図10に示す命令列に対してインデックスを埋め込む方法の説明図であり、上側は、
図10に示した命令列を示し、下側は、インデックスを埋め込んだ後の状態を示す。
【0081】
インデックスは、命令列の上から順に所定規則(所定順の一例)で変化する番号であってよい。例えば、実行プログラムに係る複数の命令Adv.talk(*、[[###]])からなる命令列の上から順に増加していく態様で付番されてよい。
図14に示す例では、セリフA1に係る命令に対してインデックス=1が埋め込まれ、セリフA2に係る命令に対してインデックス=2が埋め込まれ、以下同様である。このようなインデックスの埋め込みは、上述した変更処理部404による変更として実現できる。
【0082】
図15は、既読フラグとして機能するバイナリデータの説明図である。
【0083】
本実施例では、バイナリデータのビット列の順序を、インデックスに対応付けるとともに、ビット列の各ビットの値(2値)を、既読フラグの値(状態)として利用する。例えば、
図15に示す例では、
図14に示した6つの命令に対するビット列の一例が示されている。この場合、上側の数字1から6は、インデックスに対応した説明用の数字であり、ビット列を構成しない。下側の数字1又は0は、6つの命令に対するビット列を表し、数値“1”は、既読であることを表し、数値“0”は、未読であることを示す。
図15に示す例では、セリフA1からA6のうちの、セリフA2、A3だけが未読であることを意味する。この場合、実行処理部408は、セリフA1、A2、A3、A4、A5、A6を順に再生する場合、セリフA1を早送り再生して、セリフA2、A3を通常速度で再生し、セリフA4からA6を早送り再生することとしてよい。
【0084】
このようにして、本実施例では、バイナリデータを利用して既読フラグを管理できるので、比較的少ないデータ量で、既読スキップ機能を実現できる。すなわち、データ量の増加を抑制して実現される既読スキップ機能によって、プレイヤの操作の煩雑さを低減できる。
【0085】
このようなバイナリデータは、対応する実行プログラムとともに、ファイルで管理されてよい。すなわち、一のユーザに係る一の実行プログラムのファイルに対しては、対応する一のバイナリデータのファイルが対応付けられてよい。この場合、実行処理部408は、一の実行プログラムを実行する際に、対応するバイナリデータのファイルを参照することで、上述した既読スキップ機能を実現できる。
【0086】
なお、本実施例では、バイナリデータの2値情報は、対応するインデックスに係る命令が実行されたか否か(すなわち対応するセリフが再生されたか否か)を表すが、これに限られない。例えば、2値情報は、実行プログラムにおける実行態様の相違(例えば、対応する命令に係る再生態様の相違)を区別するために利用されてもよい。
また、実行処理部408の一括ダウンロード処理部4081は、バイナリデータの2値情報に基づいて、一括ダウンロードするファイルを変化させてもよい。例えば、既読スキップ機能により再生されないファイルは、ダウンロード対象から除外されてもよい。
【0087】
以上、各実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、前述した実施例の構成要素の全部又は複数を組み合わせることも可能である。
【符号の説明】
【0088】
1 情報処理システム
4 ネットワーク
21 ユーザ端末
23 処理装置
24 表示部
25 入力装置
30 情報処理サーバ
100 コンピュータ
101 制御部
102 主記憶部
103 補助記憶部
104 ドライブ装置
105 記録媒体
106 ネットワークI/F部
107 入力部
400 ソースコード取得部
402 パース部(第1処理部)
404 変更処理部(第2処理部)
406 補助情報生成部(第5処理部)
408 実行処理部(第3処理部)
410 フラグ処理部(第4処理部)
450 実行プログラム記憶部
452 リソースリスト記憶部
454 リソースファイル記憶部
4081 一括ダウンロード処理部
4082 演出/制御処理部
【要約】
【課題】実行プログラムの実装までのプログラマ等の負荷を効果的に低減する。
【解決手段】 コンピュータ読み取り可能な実行プログラムのソースコードをパースする第1処理部と、第1処理部によりパースされたソースコードに係るデータ構造の集合体に変更を施す第2処理部と、第2処理部により変更が施されたデータ構造の集合体に基づいて、実行プログラムを実行する第3処理部とを含む、情報処理システムが開示される。
【選択図】
図4