忍者ブログ
ゲームを作ったり、ゲームを遊びまくったりしている せっき~の生き様。   まずは目次をご覧ください
2012年8月21日 にあった、CEDECの講演についての記事です。


『GRAVITY DAZE/重力的眩暈:上層への帰還において、彼女の内宇宙に生じた摂動』
携帯型エンタテインメントシステムゲーム機 PlayStationレジスタードトレードマークVitaにおけるオープンワールドゲームの作り方



GRAVITY DAZE


講演内容を 大きく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経由)


手軽に 新しいイベントの追加、 仕組みの追加 ができた


共通スクリプト関数、各種テンプレート を用意して、量産効率を高めた
→ 初めてスクリプトを触れる人間でも 悩まずにできた

→→ 増員しやすい、スキル差が抑えられ 品質が均一に



-------------------------------------------------------------------

●実際のゲーム中のスクリプトの流れ


・例  タイトル画面

GRAVITY DAZE

ゲームが起動すると、 プレイヤーキャラ と タイトル画面シーン の 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 を生成

→→ コミックデモ開始

GRAVITY DAZE



→ コミックデモ再生中の裏で イベントマネージャーSandBox を生成
  イベントマネージャーSandBox は、コミックデモ終了後のシーンのための SandoBox を作っておく



-------------------------------------------------------------------

このように シーンの切り替え毎に 全てのSandBox を捨てて 作り直す と言うようにしています。

→ 生成に時間がかかるけれども、ムービーコミックデモ を流している裏で行い 
  ローディング時間のような シームレスを阻害するような間を隠している。


しかし、ゲームオーバーからの復帰  チャレンジミッションが終了して通常のゲームシーン戻るとき のみ
ムービーやコミックデモで ごまかす事ができず 生成時間の間を生んでしまった。

→ 残念だけれども 構造上仕方なかった

http://sekigames.gg-blog.com/Entry/243/ のまとめに戻ります)





拍手[2回]

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:
せっき~
性別:
男性
職業:
ゲームプログラマ
自己紹介:
古いパソゲー、ボードゲーム、カードゲームを熱狂的に遊んでいます。


ついったー
http://twitter.com/seki_seki_seki

連絡先は
sekisekiseki(あっと)gmail.com
最新コメント
[03/28 Fatima]
[03/28 sailpolice01.Canariblogs.com]
[02/20 通りすがりの猫]
[12/01 kz]
[07/18 名無し子]
カウンター
ついったー

Copyright © [ せっき~のゲーム屋さん ] All rights reserved.
Special Template : 忍者ブログ de テンプレート and ブログアクセスアップ
Special Thanks : 忍者ブログ
Commercial message : [PR]