見出し画像

ゲーム開発の道標(企画から完成まで)その9・チュートリアルの実装

こんにちは「つけらっとゲームス」プログラム担当のとちです。
この記事は何もないゼロの状態から完成までをドキュメンタリー風に手順に沿ってまとめたモノです。

※この記事は「ゲーム開発の道標(企画から完成まで)」の「その9」に当たります。前回までの記事を読んでいない方は「まとめ」⇩からどうぞ!

前回の記事では「地域おこし」「地域の歴史教育」のために、GPS機能を利用した「城跡探訪」機能を実装するお話でした。

今回は「チュートリアル」を実装するお話をしたいと思います。


取扱説明書

この記事の前提条件として「津軽為信統一記」ではUnityで作られています。
また、作る人によって「作り方」は違います。この記事ではあくまでわたしの作り方です。

もちろん真似しても参考にしても構いませんが自分なりのやり方が見つかったら(恐らく)そっちの方がやりやすいですよー。

さて「チュートリアル」ですが、いつ頃から普通になったのかゲームを購入して起動するとゲームの遊び方について色々と教えてくれるやつですね。
以前はゲームのカートリッジなりCDやDVDなどを購入すると箱の中に小冊子が一緒に入っていました。

わたし個人的にはこの「取扱説明書」が結構好きだったんですよね。
凝った取説にはキャラやアイテムのイラストなんかも載っていて読んでて飽きないんです。

しかし、現在はダウンロード販売もありますから取扱説明書をユーザーのおてもとに届けるのが難しくなりましたよね。

ゲームによってはWebマニュアルがあったり、PDFで配布されていたりと取扱説明書が全く無くなったわけではありませんが、いま世の中に流通しているゲームは、ゲームの中のチュートリアルで内容を覚えてもらう流れになっています。

そこで「津軽為信統一記」もゲーム中に遊び方を説明することにしました。

こんな感じ! ゲーム中にゲームの説明をします!

チュートリアルを制御するために

これはゲーム作っている方の多くが共感してくれると思うんですが、
ぶっちゃけると…

ゲーム本編を作るより、チュートリアル作る方が面倒くさい!

と思いませんか?
既にプレイヤーの操作によって正しく動作するようにプログラムしてあるのに、チュートリアルはそれを一部制限し(作ってる人はもう何百回も試しに動かした機能等を)説明しないといけません。

複雑なプログラムに場合によっては不要ともいえる機能を追加するんですから面倒くさいに決まっています。しかしチュートリアルがないと遊ぶ人にとっては不便です……頑張って作りましょう。

// ◆チュートリアル関連
// ├[30] チュートリアルフラグ	     [0]未解説	[1]Tutorial終了 [2]Tutorial終了確認済
// ├[31] チュートリアル概要・政略	 [0]未解説	[1]解説済
// ├[32] チュートリアル合戦		 [0]未解説	[1]解説済
// ├[33] チュートリアル編成		 [0]未解説	[1]解説済
// └[34] チュートリアル軍備		 [0]未解説	[1]解説済

        ~ 略 ~

public struct CDB52Memo
{
	static public int[]   MemoNo = new int[IxCDB52];		// 01 メモ-数字データ
	static public short[] ChkDS  = new short[IxCDB52];		// 02 Check-Digit-Sum
}

チュートリアルはゲームに慣れた方には不要なモノです。
説明をしているウィンドウには必ず「不要」のチェックボックスを設けて、いつでもチュートリアルから抜け出せるように準備しておきましょう。

わたしのやり方としては上記のコードのとおり、public変数配列を作っておいて各シーンのチュートリアルの制御をするようにしました。

Index30番はチュートリアル全体の制御。
Index31番は概要・政略画面での解説をしたかどうか?
Index32番は合戦画面での解説をしたかどうか?

それぞれの場所に「0」が入っていたら未解説(チュートリアル表示する)
「1」が入っていたら解説済または不要を選んだ場合となります。

//───────────────────────────────────────────────────
//	チュートリアル
//───────────────────────────────────────────────────
int TutoSW    = 0;		// チュートリアルスイッチ [1~2]説明矢印左右移動
int TutoCnt   = 0;		// チュートリアルの進み具合
int TutoCntSv = 0;		// チュートリアルの進み具合(保持)

各シーンにもチュートリアル制御の変数を持っていてスクリプト側で制御しています。

コチラの記事でも触れた、ControlSwitch(何の処理中か?)EnterSwitch(押されたボタンは何か?)によってユーザーの入力とそれに対するリアクションも制御します。例えばこんな感じ…

//─────────────────────────────────────────────────
//	[CtrlSW = 700]	チュートリアル ゲームの目的
//─────────────────────────────────────────────────
if(CtrlSW == 700)
{
	if(wRayOBJName == "TutoCkA")
	{
		CDB.CDB52Memo.MemoNo[30] = 1;
		GameObject.Find("SEPlayer").GetComponent<CSePlay>().SE02Play();
		GameObject.Find("Button22").GetComponent<Collider>().enabled = true;
		GameObject.Find("TutoCk0").GetComponent<Renderer>().enabled  = false;
		GameObject.Find("TutoCk1").GetComponent<Renderer>().enabled  = true;
		CKansu1.ObjectUPD("TutoCk1",255,255,0,0,0,0);
		TutoCntSv = TutoCnt;
		CtrlSW    = 799;
		EnterSW   = 791;
		return;
	}
	if(wRayOBJName == "Button22"){BEffectSW = 701; BEffectSWSub = 1; wSEOn = 1;}	// クリック >> 次の項目
	if(wRayOBJName == "Button01"){BEffectSW = 731; BEffectSWSub = 1; wSEOn = 2;}	// クリック >> 出陣
	if(wSEOn == 1){GameObject.Find("SEPlayer").GetComponent<CSePlay>().SE02Play();} // 陣太鼓
	if(wSEOn == 2){GameObject.Find("SEPlayer").GetComponent<CSePlay>().SE05Play();}	// 法螺貝
}

CtrlSW(ControlSwitch)が700で、クリックされた(Rayが当たった)オブジェクト名「TutoCkA」だった場合は、チュートリアルを途中で終了させています。

ゲームオブジェクト変数を使わず、その都度Findしているのでスクリプト的には悪い例となってしまいますが、これはチュートリアルを作ったのが開発の終盤で時間に追われていたのもあったのでしょう…

当時のわたしも大変だったんだろうなぁ~


飽きないチュートリアルを作る

ただ文字で解説するチュートリアルは飽きてくるんですよね。
そこで少しだけ工夫。

次のスクショでは、解説ウィンドウにもイラストを表示したり、画面右上の「<<」マークのアイコンが左右にピコンピコンと移動して、どこに表示されているのかを視覚的に説明しています。

文字だけだと飽きちゃう…

表示するタイミングも少し工夫してみました。
同じ政略画面の説明ですが、上のスクショには画面左に表示される各コマンドアイコンが表示されていません。それに対して下のスクショを見ると…

こちらはコマンドボタンの説明

コマンドボタンを「1つ表示したら、いま表示されたボタンの説明を表示する」という工夫をしてみました。「出陣」を表示したら「出陣の説明」を表示するという感じです。

画面に変化があると少しは賑やかになるかなぁ?


ユーザーが動かすチュートリアルを作る

飽きないチュートリアルとして画像やタイミングも大事ですが、やはりユーザーが動かせるチュートリアルの方が中身を理解しやすいでしょう。

津軽為信統一記での合戦シーンでも以下のような工夫をしてみました。
敵の「攻撃」に対して「迎撃」する場面です。
ここでは2枚の「長弓札」を上にフリックするように解説しています。
実際にユーザーに操作させることで覚えて貰えたらいいですよね。

黒い矢印アイコンのとおり、長弓札を上に動かします。

また、ユーザーが操作したことで、どんな結果になるのかも表示しちゃうと更に覚えやすくなりますよね。

長弓2枚で迎撃した結果は以下のように表示されます。

それぞれの攻撃力を比較します!

最後に…

チュートリアルについて、いかがでしたでしょうか?

記事内でも触れていますがチュートリアルを作るのは結構大変です。でも紙の取説をユーザーさんに届けるのも難しいですし、既にゲームを作っている方も少々苦戦しながら実装しているのではないでしょうか?

さて、これで「津軽為信統一記」は完成と言っていいでしょう。
……と言いたいところですが最後にもうひとつだけお話したいと考えていた要素があります。

ということで、次回「隠し要素」についてです!
これで「ゲーム開発の道標(企画から完成まで)」も終わりになるのかな?
ちょうど10回目なのでキリも良さそう!!

そんな「津軽為信統一記」が気になった方はコチラからどうぞ!

iPhone・iPadの方はコチラ(↓)

Androidの方はコチラ(↓)

この記事が参加している募集

#ゲームの作り方

863件

この記事が気に入ったらサポートをしてみませんか?