ゲームプランナーとしての仕事は多岐にわたります。
中でもプランナーとして重要なマスターデータなどの入力作業と呼ばれる作業は、非常に時間がかかります。
数値入力の過不足・入力ミスがあった際は不具合につながり、売上にも大きな影響を与えます。
そういったマスターデータの作業効率化、ヒューマンエラーは改善すべきものともいえるでしょう。
これらの改善はプランナーが最初に改善できるか、プログラマーに力を借りて改善するツールを作ってもらうかなどの検証をして進める必要が出てくるのです。
大体マスターデータはMicrosoftのエクセル・Googleスプレッドシートで作ることが多いので、プランナーが改善する際は関数などやツールの機能を用いて解決することがほとんどです。
そこで今回は
・どういう関数・ツール機能を使えばいいのか
なぜ入力作業で関数やツール機能を使いこなせる方がいいか
マスターデータはたくさんの数値が入力されています。
ほとんどのデータは文字ではなく、数値で管理されてます。
今回は適当に武器の性能をまとめたマスターデータを用意してみました。
武器名 | 武器の種類 | 属性 | レアリティ | 攻撃力 | 素早さ |
---|---|---|---|---|---|
ロングソード | 剣 | 火 | ☆1 | 120 | 30 |
木槌 | ハンマー | 土 | ☆1 | 260 | 10 |
ホワイトスピア | 槍 | 風 | ☆2 | 180 | 45 |
ロングソード | 剣 | 水 | ☆1 | 120 | 30 |
グローブ | 拳 | 土 | ☆1 | 95 | 55 |
クレイモア | 剣 | 火 | ☆1 | 100 | 35 |
ですが、これだけでは完成ではありません。
まだIDがないからです。
IDについては命名規則というものが必ず設け、入力します。
今回の例として作った武器IDの命名規則をつけるとしたら、IDを見て
・属性は何か
・レアリティ
を分かるようにしたいと考えたとしましょう。
そうすると、IDに武器の種類・属性・レアリティを盛り込むことになります。
今回の命名規則ですとこんなかんじでしょうか。
武器の種類+属性+レアリティ
武器の種類、属性、レアリティも仕様によりけりですが、仮に以下のようにしたとします。
補足をすると、
・属性も増えても10もいかないと判断したため、属性IDは1桁にした
・レアリティも武器の属性同様10もいかないと判断したため、レアリティIDは1桁にした
この調子で残りの武器にをつけてみましたが。
ID | 武器名 | 武器の種類 | 属性 | レアリティ | 攻撃力 | 素早さ |
---|---|---|---|---|---|---|
0111 | ロングソード | 剣 | 火 | 1 | 120 | 30 |
0241 | 木槌 | ハンマー | 土 | 1 | 260 | 10 |
0332 | ホワイトスピア | 槍 | 風 | 2 | 180 | 45 |
0121 | ロングソード | 剣 | 水 | 1 | 120 | 30 |
0441 | グローブ | 拳 | 土 | 1 | 95 | 55 |
0111 | クレイモア | 剣 | 火 | 1 | 100 | 35 |
同じ武器・属性・レアリティだった場合も同じIDになってしまいました。
今回ですと、
ロングソード(火属性)のレアリティ1
クレイモア(火属性)のレアリティ1
が該当します。
さらに判別できるようにするために、もう一つ命名規則を付け加えないと難しいです。
では今回は同じ武器の種類、属性、レアリティに連番を付け加えましょう。
(武器の種類+属性+レアリティ)+連番(5桁※1万個以上行くことが予測されるため)
つまりこういう風になります。
ID | 武器名 | 武器の種類 | 属性 | レアリティ | 連番 | 攻撃力 | 素早さ |
---|---|---|---|---|---|---|---|
011100001 | ロングソード | 剣 | 火 | 1 | 00001 | 120 | 30 |
024100001 | 木槌 | ハンマー | 土 | 1 | 00001 | 260 | 10 |
033200001 | ホワイトスピア | 槍 | 風 | 2 | 00001 | 180 | 45 |
012100001 | ロングソード | 剣 | 水 | 1 | 00001 | 120 | 30 |
044100001 | グローブ | 拳 | 土 | 1 | 00001 | 95 | 55 |
011100002 | クレイモア | 剣 | 火 | 1 | 00002 | 100 | 35 |
これで同じ武器の種類、属性、レアリティがたくさん増えても判別できるようになりました。
と、このようにマスターデータの入力作業は行いますが。
今回は6こしか用意してなかったのでIDが重複していることに気づきましたが、実際にはもっとたくさんあるデータ数の中から探し出さなくてはいけません。
さらにマスターデータで数値を打ち込む際、ものによってですが一度の更新に多くのデータを打ち込む必要があります。
その際に手打ちで入力していると、うっかり間違って入力することがあるわけです。
そのままマスターデータを更新して確認してみたら、自分が思っていない操作になっている。
またはエラーでゲームが進まなくなった。
ということが不具合が起きてしまうのです。
それを防ぐ方法として、関数や条件付き書式などを活用する必要があります。
どういった関数を使うのか
では、どういった関数を使えば入力ミスを防げるのか。
結論から伝えると、用途に応じて使い分けるというのが答えです。
そのため決まった答えもなければ、これが正解というのもお答えすることができません。
ただどういった用途の際に関数など使えばいいかという答えはありますので、解説していきます。
関数は時間がかかる作業・ヒューマンエラーを防ぐものとして考える
マスターデータで関数を使う場面は大体
・入力に時間がかかるものを簡略化させる
の2つの際に使うとよいです。
というのも、マスターデータで苦労する点を改善・解決の糸口になるためです。
今回の例で出した武器のマスターデータも
懸念点1:手打ちのままだと武器の種類、属性にないものを入力しそう
懸念点2:同じ武器の種類・属性・レアリティを調べて連番を振るが大変そう
懸念点3:同じIDを生成して、重複してしまいそう
というミスや手間が多くかかりそうです。
ではこれらをミスや手間を減らすとしたら、どうすればいいでしょうか。
鶴なら今回こうします。
鶴(つる)が考えた懸念点1の改善方法
この場合は、ドロップダウンリストを作ってしまえば、リストにあるもの以外入力できません。
また追加があれば、リストを更新すればいいので簡単です。
こちらの方法がとても分かりやすかったので、やり方についてはリンクを貼っておきます。
鶴(つる)が考えた懸念点2の改善方法
エクセル・スプレッドシートにあるフィルター機能を使って、該当するものを調べて手打ちで連番を振るのもできますが毎回やるのは正直面倒です。
急いでデータを大量に入力しなければいけないとなると、慌てて対応してミスの原因にも繋がる原因にもなってしまいます。
ということで、今回は
特定の条件(どの武器・属性・レアリティ)がいくつあるかを調べてくれるものをスプレッドシートで作ってみたいと思います。
そこで今回はcountifsという関数でさっそく作っていきましょう。
その前にcountifについて解説しますと。
今回は武器の種類・属性・レアリティと3つ条件があるため、複数の条件を設定できるcountifsを使用するというわけです。
なので実際に記述するなら、こんな感じです。
countifs(武器の種類が書いてる列, 検索したい武器の種類, 属性が書いている列, 検索したい属性,
レアリティが書いている列, 検索したいレアリティ)
実際にスプレッドシートでかいてみると、B列の7行目の「クレイモア」の連番が「00002」と出ました。
補足ですが、F列の数値は表示形式であらかじめ、「1」と入力されても、「00001」と表示されるように設定されています。
設定方法は
表示形式>数字>表示形式の詳細設定>カスタム数値形式で「00000」とすれば、図のように「1」が入力されても「00001」と表示されるようになります。
これで特定の条件に当てはまるものがいくつあるか分かったので、連番を振ることが簡単になりました。
鶴(つる)が考えた懸念点3の改善方法
ID重複の場合、改善策が2つ思いつきます。
そもそもID生成を機械的に行うようにして、重複を防ぐ。
もしものために重複するIDを見つけられるようにする。
こうすれば、機械的に行っている場合に仮にミスがあったとしても、見つやすくしておけば予防線を張れますね。
懸念点3の改善方法1つめ
まずID生成を自動でやるとしたら、今回の武器IDの規則ごとに数値は何かを算出する必要があります。
武器IDに含まれるのは武器の種類・属性・レアリティ・連番です。
が、レアリティはそのまま数値を参照すればいけそうなので、武器の種類と属性をそれぞれを求めるようにします。
武器の種類・属性に対して、数値を返すならばvlookup関数を使えそうです。
その前にvlookup関数について解説しますと。
一例として入力した武器の種類に対して、命名規則にのっとったIDが表示されるようにするならば。
vlookup(検索したいセル,武器の種類と何に変化するかのルールをまとめた範囲,
武器の種類IDが書いてある列, false)
と書けば、検索したいセルに書かれている武器の種類に対して武器の種類IDは何かを答えてくれます。
実際に書いてみるならこんな感じです。
今回rootと書かれているものは別シートで表みたいなものを用意して、そこの中にあるもので該当したものに対し、2列目(武器ID)を表示するようにしてます。
今後武器の種類や属性が増えれば、rootのシートに各列に追加し、武器の種類と何に変化するかのルールをまとめた範囲を広げればOKです。
これで武器の種類、属性、レアリティ、連番が自動で表示してくれるようになりました。
武器IDはこれら4つのIDを重ねたものになりますので、最後に合算する作業をしましょう。
関数などで算出した値同志をくっつけて表示する際には「&」を使います。
早速試してみると……
想定では「クレイモア」は「011100002」となるはずですが、「1112」と表示されてしまいました。
実は表示されている数値は実際は「1」とか「2」なので、ただIDをくっつけるだけではいけないのです。
そこでもう一工夫をします。
懸念点2の改善で少し話した表示形式を関数にも反映させたやり方です。
表示形式>数字>表示形式の詳細設定>カスタム数値形式で「00000」とすれば、図のように「1」が入力されても「00001」と表示されるようになります。
text関数で表示形式で設定した内容を同じことをやりました。
これで武器IDが自動生成できるようになりましたので、ミスが圧倒的に減りますね。
懸念点3の改善方法2つめ
武器IDの自動生成をできるように対応しましたが、実は問題があり、同じIDが生成されるという
今回は条件書式を使って、同じ武器IDがあったら色をつけて目立たせてみましょう。
ということで、Googleスプレッドシートでやってみました。
条件書式設定は以下の順に設定しております。
- 「範囲に適応」という箇所に今回条件書式を使いたい場所A列(武器ID)を指定します。
その際は必ずIDが入力された場所から範囲選択してください。 - 「書式のルール」はカスタム数式を選択
- その際にはcountif(武器IDが入力されている全列,武器IDが最初に入力されたセル)>1と書く。
今回ですとcountif(A:A, A2)>1となっています。 - 書式設定のスタイルで重複した時のセルや文字の色を設定
これで、重複した場合も見逃すことは少なくなりました。
関数を使いこなして、頭を使う作業に時間を使おう
以上が実際にやってみるならの例も併せたエクセル・スプレッドシートは使えた方がいいという解説でした。
マスターデータはジャンルやどういうゲームなのかによって違いがあります。
なので今回はあくまで一例としてこういう場合は、▲▲でミスを減らせそうという想定でしかありません。
実際の作業で行き詰まったり、ミスが連発する場合は今回の話を思い出して関数や条件書式を使って作業の簡略化を目指してください。
ゲーム開発のプランナーは入力作業も大事ですが、どんなゲームにするのかという考えをもってからマスターデータの入力作業を行います。
入力作業に手間取って、どんなゲームにするのか、どういう仕組みにすればいいかという考えるべき部分に時間を割けないのは本末転倒です。
またエクセル・スプレッドシートの関数だけでは作業のミスや簡略化が難しいと判断できれば、プログラマーにもっと効率的に問題解決できる仕組みを作ってもらう口実にもなりますw
その際にどういう点が問題なのかも前もって関数で試したけど、こうしたらもっといいと思ったという改善の提案も添えることができます。
なので、ゲーム開発のプランナーを目指すのであれば、エクセル・スプレッドシートの機能や関数は使いこなせるといいと思います。
それでは、またっ!
コメント