はじめてゲームプログラミング『メタルボーラー!RPG!』連載 第4回 ゲームの設計図作り「フローチャートってなんだ?」の巻

はじプロ オリジナルゲーム
この記事は約13分で読めます。
コンじゃぶろー
コンじゃぶろー

こんにちは!コンじゃぶろーです!

ハロウィンまっただなかの更新です。

ご無沙汰してました!前回から1カ月くらいあいてしまいましたね。

どういう順番で説明したらいいかなぁなんて思ったり、色々とブログ作成や文章作成に関する本を読んだり、ゴロゴロゲームしているうちに、1カ月以上も記事の更新を休んでしまっていました。

コンじゃぶろー
コンじゃぶろー

時の流れるスピードが・・・速すぎる。

もぐお
もぐお

タイムリープできれば・・・。

時をかける、もぐお・・・。

これからは、もっと小さなテーマでたくさん更新していこうと思います。

さぁ、前回はゲームストーリーに関して投稿しました。

今回は、ゲーム作りに便利なフローチャートの解説をしていきたいと思います。

もぐお
もぐお

ストーリの基本は前回やったけれど、次は何をしたらいいの?

コンじゃぶろー
コンじゃぶろー

ゲームは、正直どこからでも作れてしまうので、何からはじめようか・・・、

かなり悩んだけれど・・・。

フローチャートからはじめていこうかなと思います。

もぐお
もぐお

フローチャート!?

何それっ!おいしいのっ!?

冷たくて甘いやつ?

コンじゃぶろー
コンじゃぶろー

・・・フローチャートは、プログラムの流れを図にしたものの事だよ。

もぐお
もぐお

えぇ・・・!?

なんだかめんどくさそう・・・。

きくのやめておこうかな・・・。

コンじゃぶろー
コンじゃぶろー

めんどくさい・・・と思うかもしれないけれど、プログラムが楽になる魔法のツールだから、覚えておいて損はしないよ。

もぐお
もぐお

で、でも、知らなくても、ゲームは作れるんでしょ?

コンじゃぶろー
コンじゃぶろー

作れるよ。

でも、これを知っているだけで、プログラムの開発効率はとてもアップするんだ。

もぐお
もぐお

う、ううん・・・便利なんだ・・・でも今回はちょっと眠いから・・・パス。

コンじゃぶろー
コンじゃぶろー

がびーん!・・・おねがい、寝るのはまって!

色々、かいつまんで・・・大事な所だけにするから!

もぐお
もぐお

そこまで言うなら、・・・聞いてあげてもいいけど・・・。

つまらなかったら即寝るからなっ!

コンじゃぶろー
コンじゃぶろー

世の中には、たくさんのプログラム言語があるけれど、このフローチャートは、どのプログラムを勉強していても、役に立つから覚えておいて損はないよ!

もぐお
もぐお

フローチャートを学べば、スーパープログラマーって事だね!

はじめてゲームプログラミング『メタルボーラー!RPG!』連載 第4回 ゲームの設計図作り「フローチャートってなんだ?」の巻

フローチャートって何?

まず、フローチャートという言葉を聞いた事もない人もいると思います。

プログラミングをし始めると、触れ合う機会もあるので覚えておいて損はありません。

フローチャートとは

フローチャートとは、四角形やひし形といった図形や矢印を使って、ゲームの流れを図にしたものです。

プログラムを作る前に、流れや考えを整理したりするのに便利なツール。

まずは、どんなモノが見てみよう。

コンじゃぶろー
コンじゃぶろー

これが、フローチャートだ!

フローチャートサンプル
もぐお
もぐお

これが、フローチャート!?

不思議と、意味が分かる。

シンプルなので、『フローチャート』を見た事が無くてもカンの鋭い人であれば、これでだいたい何をあらわしているのか分かると思います。

宝箱をゲットしたら、ゲームクリア画面が表示されるゲームを表現しています。

こんな簡単な流れのものでも、プログラミングしてしまうと、内容がわかりづらくなってしまいます。

フローチャートを見るだけで、プログラムをしていない人にも全体のボリュームが、分かりやすくなるんです。

コンじゃぶろー
コンじゃぶろー

言葉だけで説明するのも大変だよね。そんな時は、図にすれば簡単に説明できる!

プログラムが分からない人でも、理解できるって素晴らしいですよね。これが作れると、プログラム言語が分からなくても、ゲームの仕様書が書けるようになります。

フローチャートは、ゲームに限らずエンジニア界を中心に幅広く使われている便利な道具です。

<フローチャートの便利な部分>

  • 処理の流れを整理できる
  • 足りないところを、プログラミングする前に見つける事ができる(想定漏れがわかる)。
  • プログラムを作る前に、プログラムを作った後と同等のディスカッション(作る前に議論)ができる。
  • 作る前に、全体のボリュームがわかる

こういったメリットがあげられるでしょうか。(後で詳しく解説を入れていきますね。)

ゲームを作る前に「フローチャート」を作れば、事前に構造の問題が洗い出せるので、作り直しが減って時短になります。

作りなおしが、一番もったいないですから。

ゲーム開発は、絵を描いたり、音楽を作ったり、プログラミングしたりと、1つずつがかなり時間がかかります。

数時間から数日間かかるような作業になるので、絵を描いたあとに「あ、これいらなかった!!」ってなると、数日間の作業が無駄になったりすんですよね。

人が作ってるので、作ったのに使われなかったらかなりのストレスになります。

行き当たりばったりの開発を進めると、人間関係にヒビが入ってもおかしくないです

色々問題を解決するのに便利なので、時短の為や品質を上げる為に使われています。

フローチャートの例

お買い物ロボットをフローチャートで書いてみた

コンじゃぶろー
コンじゃぶろー

これは、自動でお買い物をしてきてくれるロボットのフローチャートだ!

何か、気になる点はありませんか?

お買い物ロボットフローチャート
もぐお
もぐお

な、なんだコレは・・・。

色々、つっこみたくなる。

うずうず・・・。

コンじゃぶろー
コンじゃぶろー

うずうずする・・・。実は、そこが一番重要な事なんだよ。

声に出してみて。

もぐお
もぐお

捨て台詞「てやんでぃ!」じゃなくて

「すみません、お金足りません」じゃない?

それに、今のままじゃ・・・、他のお客さんとぶつかった時や、レジに人がならんでいた時に、他のお客さんと喧嘩になりそう・・・。最初の立ち位置が変わったら、変な動きしそう。

コンじゃぶろー
コンじゃぶろー

そうだね!色々おかしいよね!

もし、プログラム組んでからだと、パっと見で分かりづらいから

そういった意見がでづらいんだよね。

もぐお
もぐお

なるほど、プログラムしてから

「ほかのお客とぶつかった時どうするの?」なんて言われたら

「そんなの想定してないよっ!」って、エンジニアと喧嘩になっちゃう。

コンじゃぶろー
コンじゃぶろー

無用な争いが無くなる・・・なんてすばらしいツールなんだ!

ゲームの仕組みをフローチャートで書いてみた

あとは、イメージしづらいものもフローチャートで考えると分かりやすくなるよ。

意外とイメージしづらい、ゲームの基本構造を、フローチャートにしてみるね。

コンじゃぶろー
コンじゃぶろー

ゲームの構造は、めっちゃ複雑なので色々と複雑な部分をはしょって、ぶっとばして最低限の部分だけを書いてみるとこんな感じ

ゲームフローチャート
もぐお
もぐお

シンプルだけど・・・

なんだかおかしくない?普段ゲームしていて、ボタンを押した時と、移動と、画面表示ってほとんど同時な気がする。

これじゃあボタン入力している最中に、動きがとまっちゃうんじゃ・・・。

コンじゃぶろー
コンじゃぶろー

そうだね、そうおもっちゃうけれど、この動きが1秒間に30回から60回のスピードで動いているから、ほぼ同時に処理されているように見えるんだよ。

もぐお
もぐお

い、1秒間に60回!?

凄い・・・!!

コンじゃぶ
ろー

そう、めっちゃ速い!

色々、例外もあるけれど、プログラムは1度に1つずつしか処理できない。

だけど、すごく速く処理できるから、フローチャートを使って、シンプルな処理を順序良くフローにしてあげれば、凄く便利なサービスが実現できるんだね。

コンじゃぶ
ろー

NintendoSwitchソフト「ナビつきはじめてゲームプログラミング」では、このあたりの処理をあまり意識しなくても作れてしまいます。興味がある人は調べてみてね。

(補足:タイマーを作ったりする時には意識してみるとおもしろいですよ)

それでは、ここで終わると中途半端なのでもう少し詳しく解説しておきますね。

どうしてフローチャートを使うの?

フローチャートを使うと、作る前に問題を見つける事が出来る。

フローチャートは、品質を上げるツール

複雑な流れが、整理できる

コンじゃぶ
ろー

シンプルにする!必要最小限の労力で作る!

それには、整理整頓が重要です。

文字だけのプログラムを1万行眺めていて、中身が全て把握できるのは本人だけ

場合によっては、本人でも理解できていないかもしれない。

そんな時に、フローチャートを書けば自分でも間違いに気づきやすいし、後から追加する時にも問題なく追加出来るようになります。

また、本人が気づかなくても、他の人がフローチャートをみれば気づける問題もあります。

不足している要素を見つける事が出来る

コンじゃぶ
ろー

あれもない!これもない!

あとからどんどんつけ足す・・・!何でも後からつけ足せてしまうのがゲーム作りの罠

想定外の要素を後で追加すると、バグが生まれやすい。

フローチャートを書いてみると、想定していない処理が見えるようになります。

ゲームでは、フローチャートに出来ないものは実現できません。

逆にフローチャートとして図に出来れば、何でも作る事ができます。

<応用テクニック>

フローチャートを書いたあと、ゲーム画面や入力方法を1ステップずつイメージすると、足りないモノがどんどん見えてきます。それらを全て作れば、ゲームを作る前に必要な素材が全部わかっちゃいます。(最初に工数が出るってすばらしい)

作る前に、問題を見つける事が出来る

コンじゃぶ
ろー

プログラムを組む前に、熟練プログラマーにフローチャートを見てもらうだけで

かなり品質が向上します。

見てもらう人の負担を軽減するのも、かけだしプログラマーのつとめ!

プログラミングをする上で、プログラムする前に問題を見つけれるのは、非常に優位です。

作る前から構造上の問題があったら、いつか必ず崩壊します。

いきあたりばったりでプログラムすると、あとからあとから想定外の処理を盛り込む事になり、最悪の場合(というより、絶対に)作り直しになってしまいます。(作り直せないケースもあり・・・途中で開発中止になる場合もあります。)

そうなる前に、フローチャートをほかの人に見せて、問題を減らしてから挑みましょう。

コンじゃぶ
ろー

最初に想定して作るのと、後から追加するのとでは、品質にかなりの差がでます。

家を建てる時にたとえると分かりやすい。(建てたあとから増築しまくって、壊れそうな家見た事ありませんか?)

フローチャートの作り方

簡単なゲームでフローチャートを作ってみよう

世の中のあらゆる事は、フローチャートに出来ます。

試しに、自分の身の回りの行動やサービスをフローチャートにしてみましょう。

一回作ってみると非常に理解しやすくなります。

最低限のルール

フローチャートを書く際に、ちょっとだけルールを決めておきましょう。

極めると、ものすごく深いのですが、ゲームの仕様書を書くだけであれば、覚えるものは5種類くらいでいいでしょう。

フローチャートを作る無料ツールは山ほどありますが、最初は紙と鉛筆で十分です。

①スタート:端子(開始)
端子(開始)
コンじゃぶ
ろー

すべてのはじまり。例外もありますが基本的には、1つだけにしましょう。

複数あったらバグりやすい。くらいに考えておきましょう。

②ゴール:端子(終了)
端子(終了
コンじゃぶ
ろー

ゲームの終了。複数作っても問題ありません。

③処理
処理
コンじゃぶ
ろー

四角形の中に、処理の内容を書きましょう。こまかく書くときりがないので、シンプルで分かりやすいものにしましょう。なれないうちは、ゲーム画面で分けるのがいいです。

できるかぎりこまかく書いて、慣れたら減らしていくのもいいでしょう。

④分岐:判断 条件分岐
判断 条件分岐
コンじゃぶ
ろー

条件分岐は、ゲームやプログラミングのだいご味です。これがあるから、小説や映画とは違うゲームの魅力が表現できる部分だったりします。

ひし形の中に「判断する要素」を書いて、「はい」「いいえ」の矢印をひっぱりましょう。

今は、あまりみかけませんが、「ゲームブック」なんかがイメージしやすいと思います。

⑤矢印:結合子(けつごうし)
結合子
コンじゃぶ
ろー

最後は、矢印です。一番よく使うやつです。

矢印の上に、何をしたら進むか書いておくと分かりやすくなります。

以上です。とてもシンプルな作りなので、覚えてしまいましょう。

他にも、色んな記号がありますので、興味のおもむくままどんどん調べていくと良いです。

これらは、世界共通の言語だったりするので、違う国の人にも理解してもらえたりします。

フローチャート例題

フローチャートにするといい練習になりそうなものをピックアップします。

身の回りのモノを、どんどんフローチャートにして自分の武器にしましょう。

フローチャートに出来るものは、プログラミングできる。

フローチャートに出来ないものは、プログラミングできない。

●初級例題

  • サイコロをふって、出た目を叫ぶ
  • 自動足し算機、2つの数字を入力すると合計した数字を叫ぶ
  • ひよこのオスメス判断、ひよこがセンサーを通過した時に「オス」「メス」叫ぶ。1万匹に対応。

●中級例題

  • 自動販売機 お金を入れて、5種類のジュースから選んで買うと、ジュースが出てくる。そして叫ぶ。払い戻し機能あり。
  • 自動扉のセンサー 自動扉に近づくと、扉がひらく。しばらくセンサーに反応がないと、扉がしまる。はさまれたら叫ぶ。センサーが反応しないとちょっとすねる。
  • コンビニにおいてある自動コーヒーマシン 注文して紙コップを置いてから、抽出して取り出すまで。コーヒーが出来上がったら叫ぶ。コーヒー豆やミルクの残量を判断して、補充エラー機能つき。

●上級例題

  • 地雷原での爆弾探索 キャラクターの目の前のマスに地雷がうまっているか調べる。調べた時の地雷の距離で、音の強さを変える。地雷の上に移動すると爆発。そして叫ぶ。
  • 塗り絵ツールのドットぬりつぶし 指定したマスの色を変える。隣のマスも同じ色だった場合は塗りつぶす。隣接マス全てチェックしたら、塗りつぶし処理を完了する。そしてやっぱり叫ぶ。
  • 自動返答ツール(自動解答・自動返信) きたメールに対して、自動的に文言を返す。メールの種類は、「問い合わせ」「クレーム」「送り間違い」「いたずら」「ウィルス」の5種類を想定する。メールを送る時は、3回に1回叫ぶ。

フローチャート 最後の注意点

コンじゃぶ
ろー

はい、おつかれさまでした。

ここまで、読めたあなたはすばらしい!

もぐお
もぐお

ふー、

盛りだくさんだったけれど・・・

メタボールRPGの話は全然できなかったね。

コンじゃぶ
ろー

しまった・・・!

フローチャートのボリュームが多すぎて、全然書けなかった!

もぐお
もぐお

おなかいっぱいだから、今から話されても

正直きついけれど・・・。

コンじゃぶ
ろー

1歩ずつ進んでいきましょう。

こつこつやるのが大切。

フローチャートに関して解説してきましたが、あまり細かく作らないというのも大切だったりしますので、フローチャートを作るのに1週間や2週間かけたりはしないようにしましょう。

1時間程、手書きで書いてスタートするくらいでもいいと思います。

プログラムしている最中に問題が発生したら、フローチャートに戻って考えましょう。どうしようもなければ、つくりなおせばいいんです。

絶対に問題が無い状態にする必要もありません。僕の場合は、ゲーム開発の予算が決まっていたので、それを超える事がどうしてもできなかった。だから、1日で全体のフローを書いて1日かけて担当プログラマーとつめて、3日目にはもう作り始めていました。

フローチャート主義でいく場合のデメリットも覚えておいてください。

●フローチャート主義のデメリット

  • フローチャートを完璧にすると、遊び部分がなくなりやすい。大きく変更しづらい。
  • フローチャート以上のものが生まれにくい。固くなりやすい。
  • 決められた処理を作るだけになり、エンジニアのモチベーションがあがりづらい。

あるていど大雑把に作って、エンジニアに託す。

こういう考えもあっていいと思います。

それでは、長々とご清聴ありがとうございました。

良いゲーム作りライフを!

メタボーラーRPGまとめ

コメント

タイトルとURLをコピーしました