(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025027640
(43)【公開日】2025-02-28
(54)【発明の名称】データ編集プログラム、データ編集システム、データ編集方法、およびデータ編集装置
(51)【国際特許分類】
G06F 8/34 20180101AFI20250220BHJP
A63F 13/60 20140101ALI20250220BHJP
A63F 13/533 20140101ALI20250220BHJP
G06F 3/0484 20220101ALI20250220BHJP
【FI】
G06F8/34
A63F13/60
A63F13/533
G06F3/0484
【審査請求】未請求
【請求項の数】28
【出願形態】OL
(21)【出願番号】P 2023132595
(22)【出願日】2023-08-16
(71)【出願人】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】弁理士法人小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【弁理士】
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】岡村 祐一郎
【テーマコード(参考)】
5B376
5E555
【Fターム(参考)】
5B376BC07
5B376BC13
5B376BC14
5B376BC15
5B376BC23
5B376BC43
5B376BC80
5E555AA04
5E555AA79
5E555BA02
5E555BA20
5E555BB02
5E555BB20
5E555BC18
5E555CA02
5E555CA18
5E555CB02
5E555CB42
5E555CB46
5E555CC02
5E555CC05
5E555CC19
5E555DA23
5E555DB04
5E555DB41
5E555DB53
5E555DB56
5E555DC11
5E555DC13
5E555DD06
5E555DD07
5E555DD11
5E555EA08
5E555FA00
(57)【要約】
【課題】データ編集プログラム、データ編集システム、データ編集方法、およびデータ編集装置を提供すること。
【解決手段】ゲームに含まれる要素に関する設定を行うためのノードエディタのUIを提示させる。ノードエディタに対する操作入力に基づいて、少なくとも1つのノードを含む第1のグループを作成させ、第1のグループをコピー元としたコピー先となるグループであって、第1グループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよび接続情報を含む第2のグループを生成させる。第1のグループに対する第1の編集が行われた場合に、所定のタイミングで更に第2のグループに当該第1の編集を反映させ、第2のグループに対する第2の編集が行われた場合に、編集された内容を更に、以降第1の編集が反映されない状態に変更させる。
【選択図】
図19
【特許請求の範囲】
【請求項1】
情報処理装置のコンピュータに、
開発中のゲームに含まれる要素に関する設定を行うためのノードエディタのUIを提示させ、
前記ノードエディタに対する操作入力に基づいて、
少なくとも1つのノードを含む第1のグループを作成させ、
前記第1のグループをコピー元としたコピー先となるグループであって、前記第1のグループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよび接続情報を含む第2のグループを生成させ、
前記第1のグループに含まれるノードまたは接続情報に対する第1の編集が行われた場合に、所定のタイミングで更に前記第2のグループに含まれる対応するノードまたは接続情報に当該第1の編集を反映させ、
前記第2のグループに含まれるノードまたは接続情報に対する第2の編集が行われた場合に、編集された当該ノードまたは接続情報を更に、以降前記第1の編集が反映されない状態に変更させる、
データ編集プログラム。
【請求項2】
前記コンピュータに、
前記第2のグループに含まれるノードまたは接続情報を、前記第1のグループに含まれるノードまたは接続情報に対して追加的に行われる編集内容として保持させる、請求項1に記載のデータ編集プログラム。
【請求項3】
前記コンピュータに、
前記ノードエディタに対する操作入力に基づいて、前記第2のグループに含まれるノードまたは接続情報を削除する編集が行われた場合に、削除が行われたことを前記追加的に行われる編集内容として保持させる、請求項2に記載のデータ編集プログラム。
【請求項4】
前記ノードはグループを含み、
前記コンピュータに、
前記ノードエディタに対する操作入力に基づいて、前記第2のグループに新規のノードまたは接続情報を追加する編集が行われた場合に、前記第1のグループを示すノードに対してノードまたは接続情報の追加が行われたことを前記追加的に行われる編集内容として保持させる、請求項2に記載のデータ編集プログラム。
【請求項5】
前記要素はゲーム内オブジェクトであり、
前記第1のグループは、第1のオブジェクトに関連付けられる少なくとも1つのノードの内、少なくとも1つのノードを含むグループであり、
前記第2のグループに含まれるノードおよび接続情報は、第2のオブジェクトに関連付けられる、請求項1または2に記載のデータ編集プログラム。
【請求項6】
前記コンピュータに、
前記ノードエディタにおいて、前記第2の編集が行われたノードまたは接続情報を、前記第2の編集が行われていないノードまたは接続情報と異なる表示態様で表示させる、請求項5に記載のデータ編集プログラム。
【請求項7】
前記コンピュータに、
前記ノードエディタに対する操作入力に基づいて、
前記第2のグループをコピー元としたコピー先となるグループであって、前記第2のグループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよびノードの接続情報を含む第3のグループを生成させ、
前記第3のグループに含まれるノードまたは接続情報を、前記第2のグループに含まれるノードまたは接続情報に対して前記追加的に行われる編集内容として保持させる、請求項5記載のデータ編集プログラム。
【請求項8】
少なくとも1つのプロセッサを備え、前記プロセッサは、
開発中のゲームに含まれる要素に関する設定を行うためのノードエディタのUIを提示し、
前記ノードエディタに対する操作入力に基づいて、
少なくとも1つのノードを含む第1のグループを作成し、
前記第1のグループをコピー元としたコピー先となるグループであって、前記第1のグループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよび接続情報を含む第2のグループを生成し、
前記第1のグループに含まれるノードまたは接続情報に対する第1の編集が行われた場合に、所定のタイミングで更に前記第2のグループに含まれる対応するノードまたは接続情報に当該第1の編集を反映し、
前記第2のグループに含まれるノードまたは接続情報に対する第2の編集が行われた場合に、編集された当該ノードまたは接続情報を更に、以降前記第1の編集を反映しない状態に変更する、
データ編集システム。
【請求項9】
前記プロセッサは、
前記第2のグループに含まれるノードまたは接続情報を、前記第1のグループに含まれるノードまたは接続情報に対して追加的に行われる編集内容として保持する、請求項8に記載のデータ編集システム。
【請求項10】
前記プロセッサは、
前記ノードエディタに対する操作入力に基づいて、前記第2のグループに含まれるノードまたは接続情報を削除する編集が行われた場合に、削除が行われたことを前記追加的に行われる編集内容として保持する、請求項9に記載のデータ編集システム。
【請求項11】
前記ノードはグループを含み、
前記プロセッサは、
前記ノードエディタに対する操作入力に基づいて、前記第2のグループに新規のノードまたは接続情報を追加する編集が行われた場合に、前記第1のグループを示すノードに対してノードまたは接続情報の追加が行われたことを前記追加的に行われる編集内容として保持する、請求項9に記載のデータ編集システム。
【請求項12】
前記要素はゲーム内オブジェクトであり、
前記第1のグループは、第1のオブジェクトに関連付けられる少なくとも1つのノードの内、少なくとも1つのノードを含むグループであり、
前記第2のグループに含まれるノードおよび接続情報は、第2のオブジェクトに関連付けられる、請求項8または9に記載のデータ編集システム。
【請求項13】
前記プロセッサは、
前記ノードエディタにおいて、前記第2の編集が行われたノードまたは接続情報を、前記第2の編集が行われていないノードまたは接続情報と異なる表示態様で表示する、請求項12に記載のデータ編集システム。
【請求項14】
前記プロセッサは、
前記ノードエディタに対する操作入力に基づいて、
前記第2のグループをコピー元としたコピー先となるグループであって、前記第2のグループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよびノードの接続情報を含む第3のグループを生成し、
前記第3のグループに含まれるノードまたは接続情報を、前記第2のグループに含まれるノードまたは接続情報に対して前記追加的に行われる編集内容として保持する、請求項12記載のデータ編集システム。
【請求項15】
情報処理装置のコンピュータに、
開発中のゲームに含まれる要素に関する設定を行うためのノードエディタのUIを提示させ、
前記ノードエディタに対する操作入力に基づいて、
少なくとも1つのノードを含む第1のグループを作成させ、
前記第1のグループをコピー元としたコピー先となるグループであって、前記第1のグループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよび接続情報を含む第2のグループを生成させ、
前記第1のグループに含まれるノードまたは接続情報に対する第1の編集が行われた場合に、所定のタイミングで更に前記第2のグループに含まれる対応するノードまたは接続情報に当該第1の編集を反映させ、
前記第2のグループに含まれるノードまたは接続情報に対する第2の編集が行われた場合に、編集された当該ノードまたは接続情報を更に、以降前記第1の編集が反映されない状態に変更させる、
データ編集方法。
【請求項16】
前記コンピュータに、
前記第2のグループに含まれるノードまたは接続情報を、前記第1のグループに含まれるノードまたは接続情報に対して追加的に行われる編集内容として保持させる、請求項15に記載のデータ編集方法。
【請求項17】
前記コンピュータに、
前記ノードエディタに対する操作入力に基づいて、前記第2のグループに含まれるノードまたは接続情報を削除する編集が行われた場合に、削除が行われたことを前記追加的に行われる編集内容として保持させる、請求項16に記載のデータ編集方法。
【請求項18】
前記ノードはグループを含み、
前記コンピュータに、
前記ノードエディタに対する操作入力に基づいて、前記第2のグループに新規のノードまたは接続情報を追加する編集が行われた場合に、前記第1のグループを示すノードに対してノードまたは接続情報の追加が行われたことを前記追加的に行われる編集内容として保持させる、請求項16に記載のデータ編集方法。
【請求項19】
前記要素はゲーム内オブジェクトであり、
前記第1のグループは、第1のオブジェクトに関連付けられる少なくとも1つのノードの内、少なくとも1つのノードを含むグループであり、
前記第2のグループに含まれるノードおよび接続情報は、第2のオブジェクトに関連付けられる、請求項15または16に記載のデータ編集方法。
【請求項20】
前記コンピュータに、
前記ノードエディタにおいて、前記第2の編集が行われたノードまたは接続情報を、前記第2の編集が行われていないノードまたは接続情報と異なる表示態様で表示させる、請求項19に記載のデータ編集方法。
【請求項21】
前記コンピュータに、
前記ノードエディタに対する操作入力に基づいて、
前記第2のグループをコピー元としたコピー先となるグループであって、前記第2のグループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよびノードの接続情報を含む第3のグループを生成させ、
前記第3のグループに含まれるノードまたは接続情報を、前記第2のグループに含まれるノードまたは接続情報に対して前記追加的に行われる編集内容として保持させる、請求項19記載のデータ編集方法。
【請求項22】
少なくとも1つのプロセッサを備え、前記プロセッサは、
開発中のゲームに含まれる要素に関する設定を行うためのノードエディタのUIを提示し、
前記ノードエディタに対する操作入力に基づいて、
少なくとも1つのノードを含む第1のグループを作成し、
前記第1のグループをコピー元としたコピー先となるグループであって、前記第1のグループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよび接続情報を含む第2のグループを生成し、
前記第1のグループに含まれるノードまたは接続情報に対する第1の編集が行われた場合に、所定のタイミングで更に前記第2のグループに含まれる対応するノードまたは接続情報に当該第1の編集を反映し、
前記第2のグループに含まれるノードまたは接続情報に対する第2の編集が行われた場合に、編集された当該ノードまたは接続情報を更に、以降前記第1の編集を反映しない状態に変更する、
データ編集装置。
【請求項23】
前記プロセッサは、
前記第2のグループに含まれるノードまたは接続情報を、前記第1のグループに含まれるノードまたは接続情報に対して追加的に行われる編集内容として保持する、請求項22に記載のデータ編集装置。
【請求項24】
前記プロセッサは、
前記ノードエディタに対する操作入力に基づいて、前記第2のグループに含まれるノードまたは接続情報を削除する編集が行われた場合に、削除が行われたことを前記追加的に行われる編集内容として保持する、請求項23に記載のデータ編集装置。
【請求項25】
前記ノードはグループを含み、
前記プロセッサは、
前記ノードエディタに対する操作入力に基づいて、前記第2のグループに新規のノードまたは接続情報を追加する編集が行われた場合に、前記第1のグループを示すノードに対してノードまたは接続情報の追加が行われたことを前記追加的に行われる編集内容として保持する、請求項23に記載のデータ編集装置。
【請求項26】
前記要素はゲーム内オブジェクトであり、
前記第1のグループは、第1のオブジェクトに関連付けられる少なくとも1つのノードの内、少なくとも1つのノードを含むグループであり、
前記第2のグループに含まれるノードおよび接続情報は、第2のオブジェクトに関連付けられる、請求項22または23に記載のデータ編集装置。
【請求項27】
前記プロセッサは、
前記ノードエディタにおいて、前記第2の編集が行われたノードまたは接続情報を、前記第2の編集が行われていないノードまたは接続情報と異なる表示態様で表示する、請求項26に記載のデータ編集装置。
【請求項28】
前記プロセッサは、
前記ノードエディタに対する操作入力に基づいて、
前記第2のグループをコピー元としたコピー先となるグループであって、前記第2のグループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよびノードの接続情報を含む第3のグループを生成し、
前記第3のグループに含まれるノードまたは接続情報を、前記第2のグループに含まれるノードまたは接続情報に対して前記追加的に行われる編集内容として保持する、請求項26記載のデータ編集装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ゲームの開発環境で用いられるノードエディタに関する。
【背景技術】
【0002】
従来から、ゲームの開発環境において用いられるノードエディタというものが知られている(例えば、非特許文献1)。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】EPIC GAMES ”Unreal Engine 4.27 Documentation ノード”、[online]、[令和5年8月22日検索]、インターネット(URL:https://docs.unrealengine.com/4.27/ja/ProgrammingAndScripting/Blueprints/UserGuide/Nodes/)
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記の技術によって、ゲームの開発がし易い環境が提供されていた。この点について、例えばゲームに登場させたいオブジェクトを多数編集したい場合等において、更に編集の手間を軽減してより開発し易い環境を提供するために改善する余地があった。
【課題を解決するための手段】
【0005】
上記の点に鑑みて、例えば以下のような構成例が挙げられる。
【0006】
(構成1)
構成1は、情報処理装置のコンピュータに、以下の処理を実行させるデータ編集プログラムである。すなわち、コンピュータに、開発中のゲームに含まれる要素に関する設定を行うためのノードエディタのUIを提示させる。更に、ノードエディタに対する操作入力に基づいて、少なくとも1つのノードを含む第1のグループを作成させ、第1のグループをコピー元としたコピー先となるグループであって、第1グループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよび接続情報を含む第2のグループを生成させ、第1のグループに含まれるノードまたは接続情報に対する第1の編集が行われた場合に、所定のタイミングで更に第2のグループに含まれる対応するノードまたは接続情報に当該第1の編集を反映させ、第2のグループに含まれるノードまたは接続情報に対する第2の編集が行われた場合に、編集された当該ノードまたは接続情報を更に、以降第1の編集が反映されない状態に変更させる。
【0007】
上記構成例によれば、コピー元とした第1のグループに対する編集を、コピー先である第2のグループにも反映させる。これにより、共通の特徴を持つ多種の要素に対する調整を一括で行うことができる。また、第2のグループの一部を編集して第1のグループから独立した特徴を持たせた場合に、その後の第1のグループの編集の有無に関わらず、当該独立した特徴を残すことができる。そのため、多数の要素に対する編集を効率よく行うことができる。
【0008】
(構成2)
構成2は、上記構成1において、コンピュータに、第2のグループに含まれるノードまたは接続情報を、第1のグループに含まれるノードまたは接続情報に対して追加的に行われる編集内容として保持させてもよい。
【0009】
上記構成例によれば、コピー元となる第1グループの情報自体は書き換えずに、当該第1グループの内容に対する追加の編集情報として、編集内容を保持する。これにより、第2の編集がない場合は第1の編集は反映させ、第2の編集が行わていれば第1の編集は反映されない、という状態を実現できる。
【0010】
(構成3)
構成3は、上記構成2において、コンピュータに、ノードエディタに対する操作入力に基づいて、第2のグループに含まれるノードまたは接続情報を削除する編集が行われた場合に、削除が行われたことを追加的に行われる編集内容として保持させでもよい。
【0011】
上記構成例によれば、第1グループには残っていても、第2グループからは削除されたという、第2グループに固有の編集内容を反映できる。これにより、第1のグループをベースにして少しだけ手を加える、というような柔軟な編集作業が可能となり、開発効率が向上する。
【0012】
(構成4)
構成4は、上記構成2において、ノードはグループを含んでいてもよい。そして、コンピュータに、ノードエディタに対する操作入力に基づいて、第2のグループに新規のノードまたは接続情報を追加する編集が行われた場合に、第1のグループを示すノードに対してノードまたは接続情報の追加が行われたことを追加的に行われる編集内容として保持させてもよい。
【0013】
上記構成例によれば、第1グループにはないが第2グループにはあるという第2グループ固有の特徴を追加したい場合に、第1グループに対する追加の編集内容として、当該追加した特徴の情報を保持する。
これにより、第1のグループ自体には直接手を加えずに、第1のグループをベースにして第2のグループに少しだけ手を加える、というような柔軟な編集作業が可能となり、開発効率が向上する。
【0014】
(構成5)
構成5は、上記構成1または2において、上記要素はゲーム内オブジェクトであてtもよい。また、第1のグループは、第1のオブジェクトに関連付けられる少なくとも1つのノードの内、少なくとも1つのノードを含むグループであり、第2のグループに含まれるノードおよび接続情報は、第2のオブジェクトに関連付けられてもよい。
【0015】
上記構成例によれば、あるオブジェクトを参考にして別のオブジェクトを作成するという場合に、より効率的な開発作業ができる。
【0016】
(構成6)
構成6は、上記構成1~5のいずれかにおいて、コンピュータに、ノードエディタにおいて、第2の編集が行われたノードまたは接続情報を、前記第2の編集が行われていないノードまたは接続情報と異なる表示態様で表示させてもよい。
【0017】
上記構成例によれば、第2のグループを編集する際に、第1のグループとは異なる箇所(差分)が視覚的に把握しやすくなる。
【0018】
(構成7)
構成7は、上記構成1~6のいずれかにおいて、コンピュータに、ノードエディタに対する操作入力に基づいて、第2のグループをコピー元としたコピー先となるグループであって、第2グループに含まれるノードおよびノードの接続情報にそれぞれ対応するノードおよびノードの接続情報を含む第3のグループを生成させ、第3のグループに含まれるノードまたは接続情報を、第2のグループに含まれるノードまたは接続情報に対して追加的に行われた編集内容として保持させてもよい。
【0019】
上記構成例によれば、第2のグループをコピー元として更にコピー先のグループを作成る。また、第3のグループで行われた編集内容を、コピー元とした第2のグループに対して更に加えられた編集として保持することができる。
【発明の効果】
【0020】
本開示によれば、ゲームの開発時において、ノードエディタを用いて要素の設定を行う場合に、編集の手間が少なく、開発し易い開発環境を提供できる。
【図面の簡単な説明】
【0021】
【
図1】情報処理装置1のハードウェア構成を示すブロック図
【
図14】情報処理装置1の記憶部12に記憶される各種データの一例を示すメモリマップ
【
図15】ノード構成データ304のデータ構成の一例
【
図16】臨機型ノードの場合の詳細情報313のデータ構成の一例
【
図17】アクションデータ315のデータ構成の一例
【
図18】描画処理用データ305のデータ構成の一例
【
図19】ノードエディタ処理の詳細を示すフローチャート
【
図20】ノードエディタ処理の詳細を示すフローチャート
【
図21】ノードエディタ処理の詳細を示すフローチャート
【発明を実施するための形態】
【0022】
以下、本発明の一実施形態について説明する。
図1は、本実施形態に係る情報処理装置1のハードウェア構成を示すブロック図である。情報処理装置1は、例えばパーソナルコンピュータ(パソコン)である。情報処理装置1は、プロセッサ11を備える。プロセッサ11は、情報処理装置1において実行される各種の情報処理を実行する情報処理部である。プロセッサ11は、記憶部12に記憶される情報処理プログラム(例えば、ゲーム開発用の各種ツールのプログラム)を実行することによって、各種の情報処理を実行する。なお、記憶部12は、例えば、フラッシュメモリやDRAM(Dynamic Random Access Memory)等の内部記憶媒体であってもよいし、外部記憶媒体等を利用する構成でもよい。
【0023】
また、情報処理装置1は、キーボードやマウス等の各種の入力デバイス16と有線または無線通信を行うための入力デバイス通信部14を備える。また、情報処理装置1は、画像音声出力部15を介して表示部17(例えば、パソコン用のモニタ)が接続される。プロセッサ11は、例えば、上記の情報処理の実行によって生成した画像や音声を、画像音声出力部15を介して表示部17に出力する。
【0024】
[本実施形態で想定する処理の概要]
次に、本実施形態で想定する処理の概要を説明する。本実施形態は、ゲーム開発現場等で用いられるノードエディタに関する。ノードエディタは、ゲームに含まれる「ゲーム要素」に関する設定を行うためのUIを提供するものである。当該ゲーム要素は、例えば、プレイヤキャラクタや敵キャラクタ等のキャラクタオブジェクトや、その他ゲーム中にお登場する各種のゲーム内オブジェクトや、ゲーム内イベントや、ゲームのシーケンス(全体的な進行制御)や、CGにおけるシェーダ等である。
【0025】
図2に、ノードエディタの画面の一例を示す。
図2の画面例では、第1のコマンド関係エリア101、第2のコマンド関係エリア102、編集作業領域103が示されている。第1のコマンド関係エリア101には、例えばメニューバーやツールバーが表示される。第2のコマンド関係エリア102には、複数のゲーム要素が例えばツリー形式等で一覧表示される。編集作業領域103は、ノードの構成を視覚的に提示し、ユーザに各種の編集作業を行わせるための領域である。
図2の例では、編集作業領域103内には、4つのノード111が示されている。また、ノード同士が、各ノードに含まれるプラグ112を介するような形で結線113によって結ばれており、ノード同士の接続関係が示されている。
図2において、ノード111は、例えば、ゲーム要素に行わせたい機能や、当該機能に付随する各種パラメータや動作内容等が定義されたものである。プラグ112は、ノード111を接続する場所的な概念であり、例えばノード間のデータの入出力関係や処理の順番等が設定され得る。結線113は、プラグ112を介してノード同士の接続関係を示すものである。換言すれば、プラグ112および結線113は、ノードの接続情報であるともいえる。以下では、ノード111、プラグ112、結線113のことを総称して「構成要素」と呼ぶこともある。また、編集作業領域103で表示されるノード111、プラグ112、結線113の画像を総称して「ノード画像」と呼ぶこともある。ユーザは、このようなノードエディタのUIを用いて、ノード111、プラグ112、結線113の作成(追加)、削除、および内容の変更(以下、総称して「編集」と呼ぶ)を行うことができる。つまり、ユーザは、様々な機能を有するノード111を接続していくことで、各種のゲーム要素の内容を定義できる。例えば、各種オブジェクトの動作を作成したり、ゲームのシーケンスを設定したり、シェーダの処理内容を作成したりすることができる。一例を挙げると、ゲーム要素の一つである「箱形のオブジェクト」に対してノードエディタを用いて機能を定義する場合、「ゲーム中は常に実行する」という機能の第1ノードと、「回転する」という機能の第2ノードとを作成し、これらを接続することで、ゲーム処理中は常に回転しているという挙動の箱形のオブジェクト、というゲーム要素が定義できる。
【0026】
また、本実施形態に係るノードエディタでは、上記ノード、プラグ、結線の組み合わせをグループ化して、1つの新たなノードとしてまとめることもできる。以下では説明の便宜上、グループ化したノードのことを「グループノード」と呼ぶ。
【0027】
また、本実施形態に係るノードエディタでは、あるノードを「参照元」としてリンクを張る形で、新たなノードを作成することができる。つまり、「参照元」とするノードの内容を丸ごとコピーする形で、新たなノードを作成できる。例えば、いわゆる「コピー&ペースト」操作を行うことで、コピー元にリンクが張られた新たなノード作成ができる。以下では、このようなリンクが張られたノードのことを「リンク型ノード」と呼ぶ。また、リンク型ノードにおいて「参照元」とされているノード(リンク元のノード)のことを「参照ノード」と呼ぶ。なお、「参照元」として扱うことができるのは、上記グループノードであり、本実施形態では、グループ化されていないノード、プラグ、結線については直接的には「参照元」として指定はできないものとする。但し、他の実施形態では、グループ化されていないノードについても「参照元」として指定できるようにしてもよい。
【0028】
そして、本実施形態では、参照ノードにおける編集内容は、原則的にはリンク型ノードにおいても反映されるが、リンク型ノードにおいて行われた編集内容は、参照ノードには反映されない。また、リンク型ノードにおいて固有に編集した箇所(後述のローカル編集した箇所)については、その後に発生した参照ノードにおける編集は反映されないようにする制御も行われる。以下、本実施形態におけるリンク型ノードに関する操作例等を、画面例を用いて説明する。
【0029】
まず、リンク型ノードの作成について説明する。ここでは、まず、上記
図2で示したようなノード構成がユーザの操作に基づいて作成されたとする。このようなノード構成が作成できれば、ユーザは、このノード構成をグループ化する操作を行う。例えば、グループ化したいノード、プラグ、および結線を選択した状態で「グループ化する」旨のコマンドを選択する等の操作である。これにより、グループノードが作成されることになる。
【0030】
次に、ユーザが、上記グループノードを「参照元」に指定して「リンク型ノード生成操作」を行うことで、リンク型ノードが作成される。
図3に、上記
図2のようなグループノードを参照ノードとして作成されたリンク型ノードのノード画像の一例を示す。
図3では、ノード構成としては、上記
図2の参照ノードと全く同じ構成である。但し、画面上では、リンク型ノードについては、参照ノードとは異なる表示態様で表示される。本実施形態では、例えば半透明でリンク型ノードが表示される。なお、実際のノードエディタ画面では、互いに直接接続されていない別々のグループノードを並列的に表示することもできる。例えば、編集作業領域103に、参照ノードとリンク型ノードとの2つのノード画像を一緒に表示することも可能である。
【0031】
次に、上記リンク型ノードが作成された後、参照ノードについて編集が行われた場合を想定する。例えば、
図2のノード構成に対して、
図4に示すような編集が行われた場合を想定する、
図4は、参照ノードについて新たなノードが追加された例である。この場合は、
図5に示すように、リンク型ノードの構成にも新たなノードの追加が反映される。なお、参照ノードの編集内容が反映されるタイミングは、例えばユーザが「表示内容の更新」のためのボタンを操作したタイミングや、リンク型ノードに係るファイルを開いたタイミング等である。またその他、参照ノードにおける編集内容が確定次第、リンク型ノードにおける表示に即時に反映させてもよい。
【0032】
次に、上記リンク型ノードが作成された後、当該リンク型ノードについて編集が行われた場合を想定する。例えば、上記
図5のノード構成から
図6に示すような内容に変更した場合を想定する、
図6は、リンク型ノードにおいて、新たなノードを一つ追加した例である。この場合は、リンク型ノードにおいて行われた編集(以下、ローカル編集と呼ぶ)の内容は参照ノードには反映されない。そのため、このときの参照ノードの内容を表示した場合、上記
図4と同じものとなる。つまり、リンク型ノードにおいて行われたローカル編集は当該リンク型ノードについてのみ適用されるということである。そのため、参照ノードにはない特徴をリンク型ノードに持たせることもできる。例えば「キャラクタA」をベースにして、少しだけ外観や動作内容等が異なる「キャラクタA1」や「キャラクタA2」という別キャラクタを作成および編集したい場合を想定する。この場合、キャラクタAに係るグループノードを参照ノードとして、各キャラクタに係るリンク型ノードを作成し、当該リンク型ノードで編集を行うことで、効率的な編集作業を行うことができる。
【0033】
ここで、本実施形態では、上記リンク型ノードで行われたローカル編集の内容を示す情報を「アクション情報」として保存する。そして、ノードエディタでリンク先ノードを表示する際は、上記参照ノードの内容を取り込み、これに対してアクション情報を適用する(取り込んだ参照ノードの内容をローカル編集内容で上書きする)、という形で、リンク型ノードを構築して表示する。そのため、リンク型ノードにおいてローカル編集されたノードについては、その後、参照ノードのほうで同じノードに対して更なる編集が行われたとしても、上記アクション情報の内容で上書きされる。つまり、結果的には、その後の参照ノードにおける編集が反映されないような状態となる。例えば、上記のような新たなノードの追加ではなく、参照ノードから取り込んだ所定のノードについてパラメータを変更したり、パラメータを追加したりするローカル編集を行った場合を想定する。具体例として、
図7に示すように、リンク型ノードにおいて、ノードCに含まれる第1パラメータの値を“A”から“B”に変更するローカル編集が行われたとする。この場合、例えば「ノードCの第1パラメータの値を“B”に変更」という内容のアクション情報が保存される。そして、この後に、
図7に示すように、参照ノードのほうで、同じノードCの第1パラメータの値が“A”から“C”に変更されたとする。この場合、この後リンク型ノードを開き直すと、第1パラメータの値が“C”となっている参照ノードを一旦取り込むことになる。その上で、上記アクション情報が適用され、リンク型ノードにおける上記ノードCの第1パラメータの値が“C”から“B”に上書きされることになる。そのため、結果として、ローカル編集された箇所に対応する参照ノードにおける変更内容は、リンク型ノードには反映されない(ローカル編集の内容が優先される)ような状態となる。一方、リンク型ノードにおいてローカル編集されていない箇所については、上記のように、参照ノードにおける編集内容が反映される。
【0034】
また、上記のように、リンク型ノードにおけるローカル編集の内容をアクション情報として保存するため、リンク先ノードから所定のノードを削除した場合も、当該削除したという情報がアクション情報として保存される。そのため、当該削除されたノードが参照ノードには残っていても、リンク型ノードを表示する際は、当該アクション情報に基づいて当該ノードが削除された状態で、リンク先ノードが表示されることになる。つまり、ノードを削除したというローカル編集の内容が反映されることになる。
【0035】
また、ノードエディタのUI上、ローカル編集が行われた箇所については、参照ノードにおける構成と区別がつくように表示態様を異ならせて表示する。本例では、上記のようにリンク型ノードについては半透明で表示される。そして、例えば、いずれかのノード(半透明表示されているノード)に対して「変更」があれば、上記
図6や
図7で示しているように、変更されたノードを点線の枠で囲うようにして表示する。なお、
図6の例では、「プラグを追加する」という変更をノードに対して行っていることになる。これにより、参照ノードに対して変更が加えられたノードであることをわかりやすく提示できる。また、参照ノードには無いノードを「追加」した場合は、当該追加ノード(およびこれに付随するプラグと結線)については上記
図6で示されるように、半透明にはせず、また、点線枠での囲いもせずに表示する。これにより、参照ノードには無いノードであることをわかりやすく提示できる。
【0036】
また、上記アクション情報に関連して、リンク型ノードでローカル編集が発生した後、参照ノードにおいて、当該ローカル編集が行われたノードが削除された場合を想定する。例えば、参照ノードが
図9、リンク型ノードが
図10のような構成を想定する。
図9では、ノードCには第1パラメータのみ含まれているとする。そして、
図10では、このノードCについて、第1パラメータの値を変更し、更に、第2パラメータを追加したことを示している。この状態から、参照ノードにおいて、
図11に示すように、ノードCを削除する編集が行われた場合を想定する。この場合、結果としては、
図12に示すように、リンク型ノードにおいてもノードCが削除されることになる。つまり、リンク型ノードのアクション情報にはノードCに対する編集情報は記憶されているものの、その編集対象のノードCが参照ノードから削除されているため、当該編集内容も適用できないということになる。
【0037】
ところで、本実施形態では、上記リンク型ノードを参照ノードとして、更にリンク型ノートを新たに作成することもできる。例えば、
図13に3つのノード構成を示す。
図13において、上から順に、第1世代ノード、第2世代ノード、第3世代ノードが示されている。第1世代ノードは、第2世代ノードとの関係において、参照ノードである。第2世代ノードは、第1世代ノードを参照ノードとして作成されたリンク型ノードである。また、第3世代ノードは、第2世代ノードを参照ノードとして作成されたリンク型ノードである。そのため、第2世代ノードは、第1世代ノードとの関係においてはリンク型ノードに該当し、第3世代ノードとの関係においては参照ノードに該当することになる。また、第2世代ノードのノード構成は、第1世代ノードの構成を取り込みつつ、第2世代ノードにおけるローカル編集の内容が加えられた構成となる。
図13では、第2世代ノードでは第1世代ノードにはないノードが追加された例を示している。また、第3世代ノードのノード構成は、第2世代ノードの構成を取り込みつつ、第3世代ノードにおけるローカル編集の内容が加えられた構成となる。
図13では、第2世代ノードにないノードが更に追加された例を示している。このように、世代が重ねられるようにしてリンク型ノードが作成されても、上記同様、参照ノードでの編集内容は、ローカル編集が行われたノード等を除いてリンク型ノードに反映し、リンク型ノードでの編集内容は参照ノードには反映しないという制御が行われる。そのため、
図13において、第1世代ノードにおけるあるノードについて編集が行われた場合、その編集内容は、当該ノードにローカル編集が行われていなければ、第3世代ノードまで反映されることになる。また、第2世代ノードにおける編集内容は、第1世代ノードには反映されないが、第3世代ノードには反映されることになる。また、第3世代ノードにおける編集内容は、第3世代ノードにのみ適用されることになる。もし第3世代ノードを参照ノードとする、更に後の世代のリンク型ノードが作成された場合は、これ以降の世代に対して第3世代ノードにおける編集内容は反映されることになる。
【0038】
[本実施形態の処理の詳細]
次に、
図14~
図22を参照して、本実施形態における処理についてより詳細に説明する。
【0039】
[使用データについて]
まず、本実施形態で用いられる各種データの一例を説明する。なお、以下に示すデータ構成は一例であり、上記のようなノードの制御ができれば、どのようなデータ構成を採用してもよい。
【0040】
図14は、情報処理装置1の記憶部12に記憶される各種データの一例を示すメモリマップである。記憶部12には、開発ツールプログラム301、プロジェクトファイル302、描画処理用データ305、操作データ306等が記憶される。
【0041】
開発ツールプログラム301は、情報処理装置1において上述したノードエディタの処理を含む開発ツールのプログラムである。
【0042】
プロジェクトファイル302は、複数のゲーム要素データ303を含むファイルである。プロジェクトファイル302は、例えば、所定のゲームタイトルに該当するファイルである。ゲーム要素データ303は、ゲームに登場する各種のオブジェクト等、上述したようなゲーム要素のそれぞれに対応するデータである。ゲーム要素データ303には、ノード構成データ304が含まれる。ノード構成データ304は、上記のノードを用いてそのゲーム要素の機能を定義した内容であり、上記
図2等で示したノード構成に対応するデータである。つまり、ノード構成データ304は、当該ゲーム要素に関する上記ノード、プラグ、結線の情報を記録したデータである。
【0043】
図15に、上記ノード構成データ304のデータ構成の一例を示す。ノード構成データ304は、構成要素ID311、構成タイプ312、詳細情報313の項目を含むレコードの集合で構成されるテーブル形式のデータである。構成要素ID311は、上記ノード、プラグ、結線のそれぞれを一意に特定するためのIDである。構成タイプ312は、構成要素ID311で特定さる構成要素の種類を示す情報である。具体的には、グループ化されていないノード、プラグ、結線、グループノード、リンク型ノードのうちのいずれかを示す情報である。詳細情報313は、その構成要素の内容を示すための情報である。具体的には、グループ化されていないノードの場合は、詳細情報313には、そのノードの機能(例えば関数等)や各種のパラメータ等を示す情報が含まれる。また、構成要素がプラグの場合は、例えば、そのプラグが属するノードの構成要素ID311と、入力を示すプラグか出力を示すプラグか等の、そのプラグの性質を示す情報が詳細情報313に含まれる。また、構成要素が結線の場合は、接続するプラグ(またはノード)の構成要素ID311が含まれる。また、構成要素がグループノードの場合は、そのグループノードに含まれるノード、プラグ、結線を特定するための構成要素ID311が詳細情報313として含まれる。
【0044】
また、構成要素がリンク型ノードの場合は、詳細情報313には、
図16で示すような情報が格納される。
図16では、詳細情報313として、参照ノード情報314と、アクションデータ315とが含まれていることを示している。参照ノード情報314は、そのリンク型ノードが参照するノード(本例の場合、いずれかのグループノードになる)を特定する情報(構成要素ID311)である。アクションデータ315は、上述したようなアクション情報のデータである。
図17に、アクションデータの構成の一例を示す。アクションデータ315は、アクション番号316、アクションタイプ317、アクション対象ID318、アクション詳細情報319の項目を含むレコードの集合で構成されるテーブル形式のデータである。
【0045】
アクション番号316は、そのアクション情報における個々のアクションを識別するための番号であり、本例では上記ローカル編集が確定した順に格納されるものとする。なお、同じ構成要素に対して複数回のローカル編集が行われた場合は、最新の編集内容のみ保存されるものとする。
【0046】
アクションタイプ317は、ローカル編集の内容が「変更」、「追加」、「削除」のいずれであるかを特定するための情報である。アクション対象ID318は、ローカル編集の内容が「変更」の場合は、ローカル編集が行われた構成要素ID311を示す。「追加」の場合は、その構成要素が追加された際に割り当てられた構成要素ID311を示す。「削除」の場合は、削除対象となった構成要素の構成要素ID311を示す。
【0047】
アクション詳細情報319は、アクションタイプ317が「変更」の場合に、ローカル編集の具体的な内容を示す情報である。例えば、変更したパラメータ等の内容を示す情報が含まれる。なお、アクションタイプ317が「追加」の場合は、追加された構成要素の構成要素ID311に基づく情報がノード構成データ304から取得されることになる。また、「削除」の場合は、アクション対象ID318で削除対象が示されている。そのため、これらの場合は、例えばNull値がアクション詳細情報319に設定される。
【0048】
図15に戻り、ノード構成データ304には、上記のようなデータの他、図示は省略するが、ノードエディタのUI画面上における各構成要素の表示位置等を示す情報も含まれる。
【0049】
図14に戻り、描画処理用データ305は、ノードエディタのUI画面でノード画像を表示する際に用いられる一時的な作業用データである。例えばリンク型ノードを表示する場合、参照ノードの情報とアクション情報とに基づいて、画面表示用の具体的なノード構成を示す情報が描画処理用データ305として生成される。また例えば、リンク型ノードを表示する場合で、参照ノードでは削除されておらず、ローカル編集において削除されたノードがあるような場合を想定する。この場合、上記ノード構成データ304からは当該ノードの情報は削除されないが、描画処理用データ305においてこれを削除したノード構成の情報を作成する。これに基づいて、リンク型ノードに係る画面表示用のノード画像が生成される。
【0050】
図18に、描画処理用データ305のデータ構成の一例を示す。描画要素ID321は、描画対象となる構成要素の構成要素ID311を示す。描画タイプ322は、その構成要素の種類を示す情報である。描画要素詳細情報323は、上記詳細情報313に基づくものであり、その構成要素の具体的内容を示す情報である。なお、上記のように、リンク型ノードの場合、ノード画像は参照ノードの情報とアクション情報とに基づいて生成される。例えば、上記
図18では6つの描画要素が示されているが、このうち前半の3件は、参照ノードの情報から取り込んだ内容、および、アクション情報に基づいて「変更」されたローカル編集の反映した内容となり、後半の3件は、アクション情報に基づいて「追加」されたローカル編集を反映した内容となることもあり得る。
【0051】
また、上記
図18のようなデータは、ゲーム要素毎に作成されてもよい。例えば、UI上に複数のゲーム要素のノード構成を並列的に表示する場合、ゲーム要素毎に対応付ける形で、
図18のような描画処理用データ305が用意される。換言すれば、ノードエディタ上で同時に開いているゲーム要素の数だけ描画処理用データ305が生成されてもよい。
【0052】
図14に戻り、操作データ306は、ユーザが入力デバイス16に対して行った操作内容を示すデータである。
【0053】
次に、本実施形態における処理の一例の詳細を説明する。なお、本実施形態では、1以上のプロセッサが1以上のメモリに記憶されたプログラムを読み込んで実行することにより、以下に示すフローチャートの処理が実現される。また、当該フローチャートは、処理過程の単なる一例にすぎない。そのため、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数の値や、判定ステップで利用される閾値も、単なる一例であり、必要に応じて他の値を採用してもよい。
【0054】
図19~
図21は、本実施形態におけるノードエディタ処理の一例を示すフローチャートである。当該処理は、例えば、開発ツールのUI画面において、所定のゲーム要素を選択した状態で、メニュー等から「ノードエディタ」を起動する操作を行うことで開始される。
【0055】
図19において、まず、ステップS1で、プロセッサ11は、指定されたゲーム要素のノード構成データ304から、1件分の構成要素のデータを読み込む。なお、本例では、複数のゲーム要素についてのデータを読み込ませて、それぞれのノード構成をUI画面上に並列的に表示させることも可能であるとする。
【0056】
次に、ステップS2で、プロセッサ11は、読み込んだ構成要素がリンク型ノードのデータか否かを判定する。当該判定の結果、リンク型ノードではない場合は(ステップS2でNO)、ステップS6で、プロセッサ11は、上記読み込んだ構成要素の内容を描画処理用データ305に登録する。その後、後述のステップS7に処理が進められる。
【0057】
一方、上記ステップS2の判定の結果、リンク型ノードの場合は(ステップS2でYES)、ステップS3で、プロセッサ11は、詳細情報313に含まれる参照ノード情報314で示される参照ノードを検索して、そのデータを読み込む。本例では、参照ノードはいずれかのグループノードになるため、グループノードを構成する複数の構成要素のデータが読み込まれることになる。そして、プロセッサ11は、読み込んだ参照ノードの情報を描画処理用データ305に登録する。これにより、描画処理用データ305に、参照ノードで示されるノード構成が展開されることになる。
【0058】
次に、ステップS4で、プロセッサ11は、当該リンク型ノードの詳細情報313に、有効なアクションデータ315があるか否かを判定する。本例では、アクションデータ315が空のデータでなければ、有効なアクションデータとして扱われるものとする。当該判定の結果、有効なアクションデータ315がある場合は(ステップS4でYES)、ステップS5で、プロセッサ11は、アクションデータ315の内容を描画処理用データ305に反映する。つまり、参照ノードの内容を上記ローカル編集の内容で上書きする処理を行う。例えば、「変更」されているノードがある場合、描画処理用データ305における該当ノードの情報をアクションデータ315の内容に基づき書き換える。また、「追加」されたノード等があれば、追加されたノードの情報を描画処理用データ305に追加する。また、「削除」されたノード等があれば、描画処理用データ305から該当するノード等のデータを削除する。一方、上記ステップS4の判定の結果、有効なアクションデータ315が無い場合は(ステップS4でNO)、上記ステップS5の処理はスキップされる。
【0059】
次に、ステップS7で、プロセッサ11は、読み込み対象のノード構成データ304に含まれる全ての構成要素について上記のような処理を行ったか否かを判定する。当該判定の結果、まだ未処理の構成要素が残っていれば(ステップS7でNO)、上記ステップS1に戻り、処理が繰り返される。
【0060】
一方、全ての構成要素を処理済みの場合は(ステップS7でYES)、ステップS8で、プロセッサ11は、表示処理を行う。
図22は、当該表示処理の詳細を示すフローチャートである。
図22において、まず、ステップS31で、プロセッサ11は、描画処理用データ305に基づき上記
図2等で示したような、ノード構成を視覚的に示すノード画像を生成する。次に、ステップS22で、プロセッサ11は、描画処理用データ305にリンク型ノードが含まれている場合は、リンク型ノードのノード画像を半透明で表示するための設定を行う。なお、この際、参照ノードにはない「追加」されたノードについては、半透明表示の設定は行わず、不透明な状態で表示されるように設定される。次に、ステップS23で、プロセッサ11は、リンク型ノードについて、ローカル編集された箇所がある場合(アクションデータ315がある場合)は、ローカル編集された箇所について、更に表示態様を変更して表示するための設定を行う。すなわち、参照ノードの構成に対して何らかの「変更」が発生したノードについて、点線枠を用いて表示する設定が行われる。次に、ステップS34で、プロセッサ11は、上記のような表示設定を反映したUI画像を生成して表示する。以上で、表示処理は終了する。
【0061】
次に、
図20のステップS9で、プロセッサ11は、グループノードを作成する操作が行われたか否かを判定する。当該判定の結果、行われている場合は(ステップS9でYES)、ステップS10で、プロセッサ11は、グループ化が指定された構成要素を示す情報を詳細情報313として設定し、構成タイプ312として「グループノード」が設定されたデータを生成する。そして、当該データをノード構成データ304に追加する。その後、後述のステップS21に処理が進められる。
【0062】
一方、上記ステップS9の判定の結果、グループノード作成操作ではない場合は(ステップS9でNO)、次に、ステップS11で、プロセッサ11は、リンク型ノードの作成操作が行われたか否かを判定する。リンク型ノードの作成操作が行われた場合は(ステップS11でYES)、ステップS12で、プロセッサ11は、操作内容に基づいて、参照ノード情報314と中身が空のアクションデータ315とを詳細情報313に設定する。更に、構成タイプ312として「リンク型ノード」を設定したデータをノード構成データ304に追加する。その後、後述のステップS21に処理が進められる。リンク型ノードの作成の一例として、例えば、ゲーム要素の1つである第1オブジェクトをベースにして第2オブジェクトを生成する場合を想定する。この場合、ユーザは、まず、第2オブジェクトを作成する操作を行う。これにより、第2オブジェクトに係るゲーム要素データ303自体が新たに生成される(この段階では中身が空、またはデフォルト設定のデータが設定されている)。また、当該第2オブジェクトに対応するウィンドウ等、第2オブジェクトに対応する領域が表示される。そして、例えば第2オブジェクトに対応するウィンドウ内に、第1オブジェクトにおけるグループノードをコピー&ペーストする操作を行う。この操作が、第1オブジェクトにおけるグループノードを参照ノードに指定したリンク型ノードの作成操作に該当する。これにより、第1オブジェクトにおけるグループノードの構成要素ID311が参照ノード情報314に設定された詳細情報313が生成される。そして、これを含むリンク型ノードのデータがノード構成データ304に追加されることになる。また、当該ノード構成データ304は、第2オブジェクトに係るゲーム要素データ303に含まれることになる。
【0063】
なお、上記のように第1オブジェクトをベースにして第2オブジェクトを作成する場合、第1オブジェクトのノード構成全体を参照ノードとして第2オブジェクトを作成してもよいし、第1オブジェクトのノード構成の一部だけを参照ノードとして第2オブジェクトを作成してもよい。
【0064】
一方、上記ステップS11の判定の結果、リンク型ノードの作成操作ではない場合は(ステップS15でNO)、ステップS13で、プロセッサ11は、操作データ306に基づき、所定のゲーム要素のノード構成について編集操作が行われたか否かを判定する(ここではまだ編集内容は確定しておらず、編集中の状態である)。当該編集操作は、構成要素を新たに作成(追加)する操作、既存の構成要素の内容を変更する操作(例えばノードに含まれるパラメータの変更や追加)、既存の構成要素を削除する操作のいずれかである。当該判定の結果、編集操作が行われた場合は(ステップS9でYES)、ステップS14で、プロセッサ11は、編集操作の内容を反映するように描画処理用データ305を更新する。つまり、編集操作の内容をリアルタイムで画面表示に反映するための処理が行われる。その後、後述のステップS21に処理が進められる。
【0065】
一方、上記ステップS13の判定の結果、編集操作が行われていない場合(ステップS13でNO)、ステップS15で、プロセッサ11は、所定のゲーム要素についての編集内容を確定する操作が行われたか否かを判定する。当該操作は例えば、編集中の入力を完了する操作や、「データの保存」を指示する操作である。編集内容を確定する操作が行われた場合は(ステップS15でYES)、次に、ステップS16で、プロセッサ11は、編集を確定した対象がリンク型ノードか否かを判定する。当該判定の結果、リンク型ノードではない場合は(ステップS16でNO)、ステップS17で、プロセッサ11は、編集内容(この時点での描画処理用データ305の内容)に基づいて、ノード構成データ304の内容を更新する。例えば、ノードが追加された場合は、新たな構成要素ID311を割り振って、その内容を登録する。あるノードの内容が変更された場合は、変更内容に応じて、対応する詳細情報313の内容を更新する。あるノードが削除された場合は、ノード構成データ304からそのノードの情報を削除する。
【0066】
一方、リンク型ノードに対する編集確定操作の場合は(ステップS16でYES)、ローカル編集に該当することになる。この場合は、ステップS18で、プロセッサ11は、描画処理用データ305に基づき、ローカル編集の内容を示す情報を上記アクションデータ315に追加する。その後、後述するステップS19に処理が進められる。
【0067】
一方、上記ステップS15の判定の結果、編集確定操作ではない場合は(ステップS15でNO)、次に、
図21のステップS19で、プロセッサ11は、ノードエディタを終了する操作が行われたか否かを判定する。終了する操作が行われていれば(ステップS19でYES)、プロセッサは、ノードエディタ処理を終了する。一方、終了操作が行われていない場合は(ステップS19でNO)、ステップS20で、プロセッサ11は、操作データ306で示される操作内容に基づいた、上記以外の各種処理を実行する。例えば、別のゲーム要素についてのデータの読み込み操作が行われた場合は、プロセッサ11は、上記ステップS1~S7と同様の処理で、指定されたゲーム要素に係るデータを読み込む。そして、読み込んだ内容に基づいて、描画処理用データ305を作成する。
【0068】
次に、ステップS21で、プロセッサ11は、現在表示されているノード構成について、参照ノードの表示更新が必要か否かを判定する。これは、例えば、UIのツールバーに用意されている「表示更新ボタン」が押された場合や、上述の処理で参照ノードに関する保存が行われた場合や、何らかのファイルの読み込みが行われた場合等に、参照ノードに係る表示内容の更新が必要、と判定される。当該判定の結果、表示内容の更新が必要な場合は(ステップS21でYES)、ステップS22で、プロセッサ11は、UI内で表示対象となっている参照ノードのデータを再度読み込み直し、その内容を描画処理用データ305に反映する。一方、表示内容の更新が不要である場合は(ステップS21でNO)、上記ステップS22の処理はスキップされる。
【0069】
次に、ステップS23で、プロセッサ11は、表示処理を行う、当該処理は上記ステップS8と同様の処理であるため、詳細説明は省略するが、上記各種の編集内容等が反映された描画処理用データ305に基づいてUI画面が表示されることになる。その後、上記ステップS9に戻り、処理が繰り返される。
【0070】
以上で本実施形態に係るノードエディタ処理の詳細説明を終了する。
【0071】
このように、本実施形態では、参照ノードに対する編集内容をリンク型ノードにも反映させることで、共通の特徴を持つ多種のゲーム要素に対する調整を一括で行うことができる。更に、リンク型ノードの一部を編集することで、参照ノードから独立した特徴を持たせた場合に、その後に行われた参照ノードの編集内容に関わらず、この特徴を残すことができる。そのため、多数のゲーム要素に対する編集を効率よく行うことができ、編集の手間が少なく、開発し易い開発環境を提供できる。
【0072】
[変形例]
なお、上記実施形態では、ゲーム開発において利用されるノードエディタを例示して説明した。上記のようなリンク型ノードの制御については、ゲーム開発以外の局面でノードエディタを利用する場合にも適用できる。例えば、上記ゲーム要素の代わりに、ビジネス文書等の文書ファイルを用いるノードエディタについて、上述したような処理を適用してもよい。
【0073】
また、上記実施形態においては、ノードエディタにかかる一連の処理が単一の情報処理装置において実行される場合を説明したが、他の実施形態においては、上記一連の処理が複数の情報処理装置からなる情報処理システムにおいて実行されてもよい。例えば、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの一部の処理がサーバ側装置によって実行されてもよい。更には、端末側装置と、当該端末側装置とネットワークを介して通信可能なサーバ側装置とを含む情報処理システムにおいて、上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該端末側装置では一部の処理が実行されてもよい。また、上記情報処理システムにおいて、サーバ側のシステムは、複数の情報処理装置によって構成され、サーバ側で実行するべき処理を複数の情報処理装置が分担して実行してもよい。
【符号の説明】
【0074】
1 情報処理装置
11 プロセッサ
12 記憶部
14 入力デバイス通信部
15 画像音声出力部
16 入力デバイス
17 表示部