次ログ

次ログ

ゆるりと働いているSREの技術ブログのような何か。趣味の話も書く

物語におけるキャラ同士のやり取りをシーケンス図で整理する

はじめに

FF6みたいに複数のチームを切り替えながら操作するシーンであったり 世界崩壊後の仲間が散り散りになったシーンで、 キャラ同士のやり取りの整合性をキチンと取りながらストーリーを考えるにはどうすればいいだろう。

って考えた時に、シーケンス図を書くと割といい感じに整理できることに気づいた。 Twitterに数カ月前にちょろっとだけ載せたけれど、 せっかくだったのでキチンと整理して公開しておこうと思った次第。

目次

わかりにくいストーリーの例

あるところ日、青年田中は精霊祭の日に神のお告げを聞いた。 その日、田中は町をでた。100年に一度復活を遂げる魔王を倒すために。 田中は最初の町で魔王の手先を倒した。
田中は2つめの町で魔王の手先と対峙した、しかし敵は強かった。
その時、偶然居合わせた山田と鈴木が助けてくれて、協力して敵を倒した。
山田と鈴木の話を聞くに、彼らの故郷は魔王の手下に滅ぼされたそうだ。

なんやかんやあって、いい感じにストーリーが進んで海の神殿についた。 そこには封印された勇者が眠っていた。
田中はそのとき、なんかすごいパワーが覚醒して封印を解き放った。 おまけに敵も復活したけれど、いい感じに倒せた。
山田と鈴木は勇者が居眠りぶっこいていたせいで故郷を滅ぼされたことに激昂して問い詰めた。 勇者は魔王に単身挑んだものの返りうちにされたこととか諸々説明して無罪放免。

あとはなんかいい感じに魔王を倒してハッピーエンド。


適当に書いたからすごくわかりにくいけれど、わかりにくいことが伝わったなら十分。 ストーリーを思いついた順番に説明してもいい感じに伝わるわけがない。 そんな時こそシーケンス図。

たぶんわかりやすくまとまったストーリー図の例

シーケンス図

こうしてみると、キャラが裏でどういうことしてたのかがよくわかる。 プレイヤーが操作可能になるまえから、物語は始まっていた。 これがシーケンス図のパワー。

シーケンス図ってなんぞや

Wikipediaを読めばわかる

シーケンス図 - Wikipedia

UML図の一種なのでUML図のリンクも貼る。

統一モデリング言語 - Wikipedia

もともとはシステム設計をする時のデータのやり取りや オブジェクトの振る舞いを定義するためのモデリング言語であって ゲームのシナリオを整理するためのものじゃない。

こんな複雑な図を書けというのか?

PlantUMLを使うとすごく簡単に書ける。

Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams.

手軽にWebブラウザ上で試したいなら以下のサイトがすごく便利。

sujoyu.github.io

テキストファイルとして管理できるので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

すごく簡単というわけではないけれど、 パワーポイントよりは簡単なはず。

以上