みんなでアドベンチャーゲームを作ってみませんか?

これは何?

「みんなでアドベンチャーゲームを作ったらどうなるのだろうか?」

f:id:inajob:20200208133330p:plain

ふと浮かんだ、この試みを実際に始めてみました。

 

↓↓↓早速プロジェクト自体を見たい方はこちら↓↓↓

github.com

 

アドベンチャーゲームとは?

ここで言うアドベンチャーゲームというのは、テキストと選択肢によって構成される物語で、選択肢に応じて物語が分岐し、プレイヤー毎に異なるストーリーを楽しむことができるゲームのことです。

 

単なる小説とは違い、選択肢による分岐ごとに異なるストーリを展開することができるため「みんなで作る」のに向いているのでは?と考えました。

みんなで作るために工夫していること

 Git/GitHubを使う

みんなでアドベンチャーゲームを作るためには、差分を取り込む仕組みが必要です。今回はこれを簡単に解決するためにGit/GitHubを使うことにしました。

差分はGitで管理し、GitHub上で取り込みのためのコミュニケーションができます。

ブラウザですぐに遊べる

みんなで作るためには、「みんなで遊べる」ことが重要です。特定の環境に依存していたり、インストールが必要であったりすると、遊ぶためのハードルが高くなります。

またストーリを作る際も、さっと動作を試せることが重要です。

そのため、今回はブラウザで動作するようにゲームエンジンを作成しました。これによりGitHub Pagesで簡単にホスティングすることもできました。

またgit cloneしてきたhtmlをブラウザで開くだけで遊ぶことができるので、開発時も簡単に動作確認できます。

 

↓ちょっと味気ないですが、Webブラウザで誰でも遊べます。

f:id:inajob:20200208133519p:plain

https://inajob.github.io/cyoa-experiment/

アドベンチャーゲームの仕様を最小限にする

昨今のアドベンチャーゲームエンジンは多機能です。背景画像、音声、BGM、書式設定などなど、アドベンチャーゲームを盛り上げるための様々な機能を搭載しています。

しかし、「みんなで作る」という観点では、これらの機能が利用できることで、アドベンチャーゲームにクォリティが求められるようになり、参入の障壁が高くなってしまうことが予想されました。

そこで、今回はシンプルなゲームエンジンを自作し、本当にストーリーだけに注力してアドベンチャーゲームを開発できるようにしました。

ゲームエンジンから揉めそうな要素を排除

それでもゲームエンジンには、いくつかの機能があります。選択肢でジャンプする先を表す「ラベル」や、状態を表す「フラグ」、フラグによる「条件分岐」などです。

ここで「ラベル」と「フラグ」に関してはそれぞれ固有の名前が必要です。

一般的なゲームエンジンでは「場面1」「学校のシーン」「ライフルを持っているか」など、「ラベル」「フラグ」にはわかりやすい名前を付けます。

しかし、みんなでアドベンチャーゲームを作る場合、これらの名前が衝突したり、一定のルールを強制するなど、わかりやすい名前にしたいがためにもめごとが起きることが予想されました。

そこで、今回はUUIDをベースとした名前を採用することで、わかりやすい名前という利点とは引き換えに、命名が衝突するという問題を回避しました。

ライセンスを明記

アドベンチャーゲームをみんなで作るということは、そのシナリオのライセンスで揉めることが予想されました。そこでリポジトリにあらかじめCC BY-SAのライセンスを明記しています。

このライセンスにより、誰でもこのストーリーを利用することができ、またこのストーリーから派生したストーリについても同様のライセンスを強制することを実現しています。

ゲームエンジン紹介

 このゲームエンジンの雰囲気を知ってもらうためにストーリの例を紹介します。

下に示したように、基本的にはストーリを書いていくだけです。選択肢は「:」で始め、選択肢の文字列と、飛び先ラベルIDを記載します。

ラベルIDは暗号のようですが、これは自動生成したものです。このようにラベルIDを自動生成することで、命名で揉めないようにしています。ラベルは「*」で始め、ラベルIDとそれに続けて人間がわかるラベルの名前を記載します。このラベルの名前は他と被っても大丈夫です。

「%」で始まるのはその他の命令で、ここでは「%end」というゲーム終了の命令を利用しています。今のところ他には「%set」と「%eqif」があります。(詳しく知りたい方はリポジトリの説明を読んでください。)

*l972e5150755648f9abe435c10df2d231,初めのシーン
みんなで作るゲームエンジンのサンプルです。

このプロジェクトに興味がありますか?

:はい, l1b8a48cf456f43c69241cdf40b7a1417
:いいえ, ld21c8d7d9a2e42828c6f8fed022bb593

*l1b8a48cf456f43c69241cdf40b7a1417,はいの場合

やったー!
今すぐ https://github.com/inajob/cyoa-experiment をForkして物語を作ってみてください!

%end

*ld21c8d7d9a2e42828c6f8fed022bb593,いいえの場合
そんなぁ~

周りにこういうのが好きそうな人がいたら紹介してほしいです!

%end

 

少し運用してみて感じたこと

1週間ほど運用してみて、ストーリー周りに関して4つのPull Requestをいただきました。

自分でもいくつかのストーリーのPull Requestを作成したのですが、変更の仕方によってずいぶん印象が違うように思いました。

既に存在しているストーリーを少しだけ変更することは、様々な整合性を考慮する必要があり、普通に0からストーリーを作るのとはまた違った難しさを感じました。しかし、選択肢を増やすだけで、またすぐ元の流れに合流するような変更は変更差分が少ないためストーリーそのものを考えるほどの想像力や労力はかからないように思いました。

f:id:inajob:20200208161459p:plain

一方、既に存在しているストーリーから分岐するものの、その後の展開は完全にオリジナルというようなストーリーを作るのは、整合性に関する難しさはほとんどない代わりに、新たなストーリを考えるという想像力と比較的長い文章を書くための労力が必要だと感じました。

f:id:inajob:20200208161514p:plain

このように、このみんなでアドベンチャーゲームを作るという試みでは、従来の1人でストーリを作るのとはまた違ったスタイルで開発が行えることがわかりました。

まとめ

とりあえずはじめてみたこのプロジェクトですが、既にいくつかの方からPull Requestをいただき、一応コラボレーションできているという状態まで持ってこれました。

 

今後ものんびりと進めていければと考えていますので、この記事を読んでみて「面白そうだな」と思った方は、ぜひプロジェクトをforkして物語を追加してみてください。

f:id:inajob:20200208161727p:plain