ゲームを作ったり、ゲームを遊びまくったりしている せっき~の生き様。 まずは目次をご覧ください
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
2012年8月21日 にあった、CEDECの講演についての記事です。
『GRAVITY DAZE/重力的眩暈:上層への帰還において、彼女の内宇宙に生じた摂動』
携帯型エンタテインメントシステムゲーム機 PlayStationVitaにおけるオープンワールドゲームの作り方
講演内容を 大きく2つに分けて まとめました。
スクリプトについて です。
(データの管理の手法 については http://sekigames.gg-blog.com/Entry/243/ )
-------------------------------------------------------------------
●スクリプトについて
Luaを使用した。
→ 「GRAVITY DAZE」では、スクリプトで全ての要素を管理しているため 大変重要
→ 複数の LuaState を同時に存在でき、並列に動けるようにした。
・SandBox
スクリプト1つの実行単位
(SandBox = LuaState + オブジェクト管理情報)
・スクリプトは プランナーが書いた
●なぜ こうしたか?
基礎研究に時間を費やしたため、イベントの作成などの期間は (デバッグ期間など含め)1年ほどであった
その1年の中で
ストーリーミッション 21個
チャレンジミッション 20個
その他イベント
を作成と、短い期間で 大量のイベントを同時作成する必要があった
・開発環境
Maya イベントセンサー
各種配置情報 などを設定
EXCEL 簡易データベース
静的データ
Lua 具体的なイベントの動き
・専用ツールは無かった
→ ツール開発に コストを割けなかった
→ それなら 専用ツールを必要としない作り方を考えた
(Maya と Lua のみで作成)
すぐに作成を開始でき、ツールのメンテナンスコストが かからなかった点は良かった
(ただし、より大人数で開発する場合や 追加コンテンツなどをこの先も作り続けるタイプの開発の場合は 不向きだろう)
-------------------------------------------------------------------
●ゲームの要素全てを SandBox にしている
プレイヤー、敵キャラ、オブジェクト
タイトル画面、メニュー画面
イベントマネージャー
コミックデモ、ムービー
イベントシーン、ミッションシーン
などなど
●SandBox の特徴
SandBoxは独立しており、他のSandBoxに影響を与える事がないので
作業者は自分の管理している SandBoxだけを注意すれば良い
(バグったとしても、他の何かを壊さずに済む)
ゲームデータベースに シナリオ進行状態、各種フラグ、セーブデータに乗る情報 などが管理されていて
全てのSandBox は、ゲームデータベースを参照できる。
(SandBox同士がやり取りする場合は、SandBox経由)
手軽に 新しいイベントの追加、 仕組みの追加 ができた
共通スクリプト関数、各種テンプレート を用意して、量産効率を高めた
→ 初めてスクリプトを触れる人間でも 悩まずにできた
→→ 増員しやすい、スキル差が抑えられ 品質が均一に
-------------------------------------------------------------------
●実際のゲーム中のスクリプトの流れ
・例 タイトル画面
ゲームが起動すると、 プレイヤーキャラ と タイトル画面シーン の SandBox が生成される。
→ タイトル画面シーンSandBox は、タイトル画面の画面表示、BGM再生、メニュー処理 など 全て行う
→ ロードを選択
→ タイトル画面シーンSandbox は、ゲームデータベースに各種パラメーターを登録し
イベントマネージャーSandBoxを生成
その後、タイトル画面シーンSandBox は、自己消滅する。
→→ このように 各シーンを管理するSandBoxは、次のSandBoxに託した後 自子消滅していく作りになっている。
---------------------------
●イベントマネージャーSandBox について
ゲームデータベースの内容に基づいて、その状態に必要なSandBoxを一式用意する。
例) エピソード13の開始状態だった とすると
イベントマネージャーSandBoxは
エピソード13のイベント SandBox
エピソード13の舞台の街 SandBox
エピソード13用のモブキャラ SandBox
など 全てを生成。
エピソード13のイベント SandBox に スタート信号を送る
その後、自己消滅
例) エピソード13 をクリアした場合
エピソード13のイベント SandBox が、ゲームデータベースに クリアしたと言う情報を書き込む
→ そして、イベントマネージャーSandBox を生成
→ イベントマネージャーSandBoxは ゲームデータベースを読み取り、エピソード14のための SandBoxを準備する
例) 特別なイベントを持った人物に話しかけた場合
ゲームデータベース に 話しかけた と言う情報をセット
→ イベントマネージャーSandBox を生成
→ イベントマネージャーSandBoxは ゲームデータベースを読み取り コミックデモSandBox を生成
→→ コミックデモ開始
→ コミックデモ再生中の裏で イベントマネージャーSandBox を生成
イベントマネージャーSandBox は、コミックデモ終了後のシーンのための SandoBox を作っておく
-------------------------------------------------------------------
このように シーンの切り替え毎に 全てのSandBox を捨てて 作り直す と言うようにしています。
→ 生成に時間がかかるけれども、ムービーやコミックデモ を流している裏で行い
ローディング時間のような シームレスを阻害するような間を隠している。
しかし、ゲームオーバーからの復帰 チャレンジミッションが終了して通常のゲームシーン戻るとき のみ
ムービーやコミックデモで ごまかす事ができず 生成時間の間を生んでしまった。
→ 残念だけれども 構造上仕方なかった
( http://sekigames.gg-blog.com/Entry/243/ のまとめに戻ります)
『GRAVITY DAZE/重力的眩暈:上層への帰還において、彼女の内宇宙に生じた摂動』
携帯型エンタテインメントシステムゲーム機 PlayStationVitaにおけるオープンワールドゲームの作り方
講演内容を 大きく2つに分けて まとめました。
スクリプトについて です。
(データの管理の手法 については http://sekigames.gg-blog.com/Entry/243/ )
-------------------------------------------------------------------
●スクリプトについて
Luaを使用した。
→ 「GRAVITY DAZE」では、スクリプトで全ての要素を管理しているため 大変重要
→ 複数の LuaState を同時に存在でき、並列に動けるようにした。
・SandBox
スクリプト1つの実行単位
(SandBox = LuaState + オブジェクト管理情報)
・スクリプトは プランナーが書いた
●なぜ こうしたか?
基礎研究に時間を費やしたため、イベントの作成などの期間は (デバッグ期間など含め)1年ほどであった
その1年の中で
ストーリーミッション 21個
チャレンジミッション 20個
その他イベント
を作成と、短い期間で 大量のイベントを同時作成する必要があった
・開発環境
Maya イベントセンサー
各種配置情報 などを設定
EXCEL 簡易データベース
静的データ
Lua 具体的なイベントの動き
・専用ツールは無かった
→ ツール開発に コストを割けなかった
→ それなら 専用ツールを必要としない作り方を考えた
(Maya と Lua のみで作成)
すぐに作成を開始でき、ツールのメンテナンスコストが かからなかった点は良かった
(ただし、より大人数で開発する場合や 追加コンテンツなどをこの先も作り続けるタイプの開発の場合は 不向きだろう)
-------------------------------------------------------------------
●ゲームの要素全てを SandBox にしている
プレイヤー、敵キャラ、オブジェクト
タイトル画面、メニュー画面
イベントマネージャー
コミックデモ、ムービー
イベントシーン、ミッションシーン
などなど
●SandBox の特徴
SandBoxは独立しており、他のSandBoxに影響を与える事がないので
作業者は自分の管理している SandBoxだけを注意すれば良い
(バグったとしても、他の何かを壊さずに済む)
ゲームデータベースに シナリオ進行状態、各種フラグ、セーブデータに乗る情報 などが管理されていて
全てのSandBox は、ゲームデータベースを参照できる。
(SandBox同士がやり取りする場合は、SandBox経由)
手軽に 新しいイベントの追加、 仕組みの追加 ができた
共通スクリプト関数、各種テンプレート を用意して、量産効率を高めた
→ 初めてスクリプトを触れる人間でも 悩まずにできた
→→ 増員しやすい、スキル差が抑えられ 品質が均一に
-------------------------------------------------------------------
●実際のゲーム中のスクリプトの流れ
・例 タイトル画面
ゲームが起動すると、 プレイヤーキャラ と タイトル画面シーン の SandBox が生成される。
→ タイトル画面シーンSandBox は、タイトル画面の画面表示、BGM再生、メニュー処理 など 全て行う
→ ロードを選択
→ タイトル画面シーンSandbox は、ゲームデータベースに各種パラメーターを登録し
イベントマネージャーSandBoxを生成
その後、タイトル画面シーンSandBox は、自己消滅する。
→→ このように 各シーンを管理するSandBoxは、次のSandBoxに託した後 自子消滅していく作りになっている。
---------------------------
●イベントマネージャーSandBox について
ゲームデータベースの内容に基づいて、その状態に必要なSandBoxを一式用意する。
例) エピソード13の開始状態だった とすると
イベントマネージャーSandBoxは
エピソード13のイベント SandBox
エピソード13の舞台の街 SandBox
エピソード13用のモブキャラ SandBox
など 全てを生成。
エピソード13のイベント SandBox に スタート信号を送る
その後、自己消滅
例) エピソード13 をクリアした場合
エピソード13のイベント SandBox が、ゲームデータベースに クリアしたと言う情報を書き込む
→ そして、イベントマネージャーSandBox を生成
→ イベントマネージャーSandBoxは ゲームデータベースを読み取り、エピソード14のための SandBoxを準備する
例) 特別なイベントを持った人物に話しかけた場合
ゲームデータベース に 話しかけた と言う情報をセット
→ イベントマネージャーSandBox を生成
→ イベントマネージャーSandBoxは ゲームデータベースを読み取り コミックデモSandBox を生成
→→ コミックデモ開始
→ コミックデモ再生中の裏で イベントマネージャーSandBox を生成
イベントマネージャーSandBox は、コミックデモ終了後のシーンのための SandoBox を作っておく
-------------------------------------------------------------------
このように シーンの切り替え毎に 全てのSandBox を捨てて 作り直す と言うようにしています。
→ 生成に時間がかかるけれども、ムービーやコミックデモ を流している裏で行い
ローディング時間のような シームレスを阻害するような間を隠している。
しかし、ゲームオーバーからの復帰 チャレンジミッションが終了して通常のゲームシーン戻るとき のみ
ムービーやコミックデモで ごまかす事ができず 生成時間の間を生んでしまった。
→ 残念だけれども 構造上仕方なかった
( http://sekigames.gg-blog.com/Entry/243/ のまとめに戻ります)
PR
この記事にコメントする
プロフィール
HN:
せっき~
性別:
男性
職業:
ゲームプログラマ
自己紹介:
古いパソゲー、ボードゲーム、カードゲームを熱狂的に遊んでいます。
ついったー
http://twitter.com/seki_seki_seki
連絡先は
sekisekiseki(あっと)gmail.com
ついったー
http://twitter.com/seki_seki_seki
連絡先は
sekisekiseki(あっと)gmail.com
カテゴリー
最新記事
(10/24)
(02/17)
(12/20)
(12/07)
(11/29)
(11/15)
(11/02)
最新コメント
[06/24 www.linux.ca]
[06/23 linux.org]
[06/23 blackmarket-matches.com]
[06/23 Ucuz Davetiye]
[06/22 ロレックス デイトナ 8pダイヤ]
カウンター
ついったー