Dear!くろうどぃあ!

このブログでは、私、くろうどの趣味に関する事を記述します。
当面は、「RPGツクールMV」をメインにします。

バグを減らすために考えておくこと

2017-12-06 11:50:01 | RPGツクールMV
  • はじめに

さて皆さん。
この記事は、「ツクール Advent Calendar 2017 ( https://adventar.org/calendars/2748 )」の12月6日の記事です。
創作関連アドベントカレンダーとの事らしいです。

この記事では、創作ツールとしてRPGツクールMVを取り上げて、その中でもテストについて書きます。

ちなみに、RPGツクールMVのアドベントカレンダーに関しては、( https://adventar.org/calendars/2288 )もありますので、見てください。



  • バグとは?

さて、バグとは何でしょうか?
ココでは、「作者の想定する動作と異なる動作をする事」としておきましょう。
つまり、理想と現実が異なるわけですから、「問題」なわけですね。
「問題」であれば「解決」しましょう。

「問題」とは、理想と現実のギャップの事です。
※ちなみに、某所ではバグの事を「故障」って呼んだりしますね。

それから、この記事では、RPGツクールMVに関しての内容になりますので、コンピュータゲームにおけるバグという事になります。

そして、バグを見つける作業を「テスト」と呼ぶ事にしておきます。

※当然ですが、「想定する動作(理想)」がどういう物なのか、つまり「仕様」は、把握または決めておいてください。

 

  • テスト手法

前述の通り、バグが発生するという事は、ゲームの故障であり問題であるわけですから、なるべく発見して解決しておきたいものです。

バグを発見するためには、多くの場合、ゲームのテストプレイをする事になるでしょう。

では、どのようにテストプレイすれば良いのでしょうか?

闇雲にテストプレイしても時間だけが過ぎて行き、バグが見つけられない可能性があります。
そこで、テスト項目(どのようにテストプレイするのか)という物を考えます。

テスト項目を考える上で押さえておきたいのが、「同値分割」「境界値分析」という考え方です。

例えば、「変数A > 0」かつ「変数A < 5」という条件があるとします。
同値分割だと、「0以下、1以上5未満、5以上」の3つに分かれ、それぞれのグループに含まれる値をテストするという考え方です。
境界値分析だと、条件の境界値である「0、1、4、5」の4つの値をテストするという考え方です。
これを組合せてテスト項目を作ります。


とは言え、これは一番細かい部分のテスト手法なので、ゲームのテストプレイでどこまでやるのか……というのはあります。
ですがまぁ、この記事では、このテスト手法を元に話をします。


  • バグを発見するためのテストプレイ

それでは、実際にゲームを見てみましょう。

村人5人に話しかけてから村長に話しかけたらクリアになるゲームです。

RPGツクールMVの初心者講座に「複数の人から情報を聞かないと先に進まないイベントを作る」というページがあるので、それを元に説明します。
https://tkool.jp/mv/guide/006_005e.html

 



テスト項目は以下です。

  1. ゲーム開始時(話しかけた村人の数→0人)
  2. 村人1人に話しかけた(1人)
  3. 同じ村人に5回話しかけた(増えない)
  4. 村人4人に話しかけた(4人)
  5. 村人5人に話しかけた(5人)
  6. 村人が6人以上いるなら6人に話しかけた(6人)

※上記のそれぞれで村長に話す(5人以上ならクリア)

この場合、村長に話しかけるテストプレイを6回する事になります。

※テスト項目の2番は省略してもいいかもしれません。


  • ゲーム作成段階でバグを減らす

さて、ゲーム作成やプログラミングに慣れてくると、どういう所にバグが潜んでいるかが分かるようになってきます。

前述の村人5人のゲームで考えてみましょう。

このゲームのイベントは、村長と、村人5人以上で作られます。
この時、村人はセリフこそ違えど、話しかけた数のカウント処理は同じです。
それぞれの処理を見てみましょう。

    • 村長

村長に必要なのは、変数(話しかけた村人の数)が 5 以上であるかどうかの条件分岐イベントです。



    • 村人

村人に必要なのは、変数(話しかけた村人の数)を 1 加算する処理です。
同じ村人に話しかけた時には加算しないようにする必要があります。



慣れてくると、これらのイベントを作る時に、前述の6個のテスト項目が頭に浮かびます。
例えば、「同じ村人に2回話しかけたらどうなるんだろうか?」という疑問が浮かぶわけです。
その疑問を元にして、イベントコマンドを見た時に、「同じ村人に2回以上話しかけた時には加算しないようにする」処理を加える事が出来れば、バグを事前に減らせた事になります。

 

  • おわりに

テストは地味で面倒くさい作業ですが、品質を向上させるために必要な作業です。
この記事で書いたように、テストにもやり方があります。
上手にテストをする事で、効率よくバグを発見し、やがては、作成時にバグを減らす事も出来ます。
テストを意識する、つまり、どのようにゲームを動かしたいのかをイメージして作成しましょう。

それでは~。