物語におけるキャラ同士のやり取りをシーケンス図で整理する
はじめに
FF6みたいに複数のチームを切り替えながら操作するシーンであったり 世界崩壊後の仲間が散り散りになったシーンで、 キャラ同士のやり取りの整合性をキチンと取りながらストーリーを考えるにはどうすればいいだろう。
って考えた時に、シーケンス図を書くと割といい感じに整理できることに気づいた。 Twitterに数カ月前にちょろっとだけ載せたけれど、 せっかくだったのでキチンと整理して公開しておこうと思った次第。
目次
わかりにくいストーリーの例
あるところ日、青年田中は精霊祭の日に神のお告げを聞いた。
その日、田中は町をでた。100年に一度復活を遂げる魔王を倒すために。
田中は最初の町で魔王の手先を倒した。
田中は2つめの町で魔王の手先と対峙した、しかし敵は強かった。
その時、偶然居合わせた山田と鈴木が助けてくれて、協力して敵を倒した。
山田と鈴木の話を聞くに、彼らの故郷は魔王の手下に滅ぼされたそうだ。
なんやかんやあって、いい感じにストーリーが進んで海の神殿についた。
そこには封印された勇者が眠っていた。
田中はそのとき、なんかすごいパワーが覚醒して封印を解き放った。
おまけに敵も復活したけれど、いい感じに倒せた。
山田と鈴木は勇者が居眠りぶっこいていたせいで故郷を滅ぼされたことに激昂して問い詰めた。
勇者は魔王に単身挑んだものの返りうちにされたこととか諸々説明して無罪放免。
あとはなんかいい感じに魔王を倒してハッピーエンド。
適当に書いたからすごくわかりにくいけれど、わかりにくいことが伝わったなら十分。 ストーリーを思いついた順番に説明してもいい感じに伝わるわけがない。 そんな時こそシーケンス図。
たぶんわかりやすくまとまったストーリー図の例
こうしてみると、キャラが裏でどういうことしてたのかがよくわかる。 プレイヤーが操作可能になるまえから、物語は始まっていた。 これがシーケンス図のパワー。
シーケンス図ってなんぞや
Wikipediaを読めばわかる
もともとはシステム設計をする時のデータのやり取りや オブジェクトの振る舞いを定義するためのモデリング言語であって ゲームのシナリオを整理するためのものじゃない。
こんな複雑な図を書けというのか?
PlantUMLを使うとすごく簡単に書ける。
Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams.
手軽にWebブラウザ上で試したいなら以下のサイトがすごく便利。
テキストファイルとして管理できるのでGitHubとの相性も良い。 ちなみに前述の図は以下のテキストから生成されている。
@startuml img/chara_seq.png title 仲間が全員合流するまでの行動 actor 田中 as tanaka actor 山田 as yamada actor 鈴木 as suzuki actor 勇者山勇者太郎 as hogeyama actor ラスボス as last_boss activate last_boss last_boss -> last_boss : 復活した last_boss -> last_boss : 世界侵略を開始 activate hogeyama hogeyama -> hogeyama : 100年の眠りから目覚める note right : ほげ山は過去の勇者とかそのへん activate yamada hogeyama -> last_boss : 一人で戦いに挑む yamada -> suzuki : 一緒に遠方の街に\n買い出しにでかける deactivate yamada activate suzuki last_boss -> yamada : 手下だけ向かわせて故郷を焼き討ちにかける suzuki -> yamada : 故郷に戻ってきた activate yamada yamada -> yamada : 壊滅した故郷を目の当たりにする yamada -> yamada : last_bossの手先を撃退する yamada -> yamada : 魔王討伐のたびにでる last_boss -> hogeyama : 返り討ちにして、\n海底神殿に封印する deactivate hogeyama suzuki -> yamada : 同行する deactivate suzuki === ゲーム開始 === activate tanaka tanaka -> tanaka : 年に一度の精霊祭に参加する hogeyama -> tanaka : 封印されながらも根性と神通力で語りかける tanaka -> tanaka : 始まりの街をでる tanaka -> tanaka : 最初のボスを倒す tanaka -> tanaka : 第二の街に到着する tanaka -> tanaka : 第二の街を襲っている魔物と対峙する yamada -> tanaka : 戦いに参加する deactivate yamada deactivate suzuki tanaka -> team : チーム結成 deactivate tanaka activate team team -> team : なんやかんやある team -> team : 海底神殿につく team -> hogeyama : 田中のなんかすごいフォースで\n封印を解く activate hogeyama team -> team : 一緒にボスも復活 hogeyama -> team : 共闘でボスを倒す hogeyama -> team : チーム加入 deactivate hogeyama team -> team : なんやかんや team -> team : ラスボス城に到達 team -> last_boss : 決戦に挑む team -> last_boss : 勝利 deactivate last_boss deactivate team @enduml
すごく簡単というわけではないけれど、 パワーポイントよりは簡単なはず。
以上