ひどい問題
いきなりひどい問題であることをここで懺悔させてください。
文字ばかりではツマラナイ。絵を使った問題にしようと思い、プログラムを作った。
そこで私が選んだ題材は、なぜか麻雀牌でした。しかも、
麻雀牌ならイラレで絵がつくれそう!(勉強したい)
問題を作る(自動生成する)のが適度に難しく、プログラムの歯ごたえありそう!
この頃はまだ、「誰かが遊ぶ」ことよりも「作っている自分が楽しめる」ことをモチベーションにしていました。そのため、
- 短時間で判断するには情報量が多すぎる
- そもそも麻雀を知らない人には全く面白くない(答えがわからない)
こういった事を無視して突き進んだんですよね…。
この問題、最新版からは消えています。
自動生成プログラムも作ったし、愛着がないわけではありません。
でも、面白いと思う人は限りなく少ない。
冷静に考えて、闇に葬ることにしました。
以下はお蔵入りにしたコード。チートイツを自動生成するプログラムです。
static void createMahjongChiitoitsu(Questions_Table.Row row) { string[] toitsu_ctg = new string[mahjongList.Count]; string tehai = ""; // 使用牌カウンタ var used = new HashSet<ePaiName>(); for (int i = 0; i < 7; ) { int ctg = Rand.Range(0, mahjongList.Count); int no = Rand.Range(0, mahjongList[ctg].Count); ePaiName name = mahjongList[ctg][no]; if (used.Contains(name) == false) { toitsu_ctg[ctg] += $" {name} {name}"; used.Add(name); i++; } } for (int i = 0; i < toitsu_ctg.Length; i++) { if (string.IsNullOrEmpty(toitsu_ctg[i]) == true) { continue; } if (tehai.Length > 0) { tehai += " "; } tehai += toitsu_ctg[i].Trim(); } row.Question2 = $"{tehai}"; }
後悔と、感懐
麻雀の問題はあまりにも作り手の都合だけで作ってしまったので、
あれ? 私の作った問題面白くない?
自分でプレイしながら後悔していました。
でも、なぜ後悔してるんだろう?
マネするだけじゃ、つまらない。
魔改造と唄った通り、別のゲームに仕上げていくのはいい。
でも、つまらないと自分ですら思うものを作るのがゴールなのだろうか。
…。
…。
どうやら、そういうわけじゃありませんでした。
別のゲームとして仕上げていくならば、誰かに遊んでもらいたい。
楽しいものにしたい。
そういう気持ちが(ある意味、この問題で)ハッキリしました。
キャラや絵は完全に変えて、ゲームとして公開できるようにしよう
誰もが楽しめる問題を作ろう
誰もが遊べるようにしよう
親しみやすい問題
キャラについては、私には絵心がないのでお友達に泣きついてみました(苦笑)。
家に転がってたペンタブをあげたり、Win - Win になるようには考えましt
問題については、時間のある時ボーッと考えて、浮かんだのがダイスでした。
これが 3 + 1 + 1 + 2 + 1 + 1 って問題だったらどうでしょうか。
同じはずですが、ダイスにすると親しみがわきやすいですよね。
また、難易度の高い問題に思考がよりがちなので、簡単な問題も考えました。「視力検査」。
オリジナルは「どちらが数字が大きいか」なので、自分と相手の2か所を見る必要がありますが、この問題は自分があっているかどうかだけを見ればOKです。
入門に適していると思い、一番最初の問題にしました。
なお、最初に作った時、指マークは単なる矢印で表示していました。
初めて問題をプレイした人が「矢印だと一瞬 え? ってなる」と話してくれたので、指マークに変更しました。その方が「視力検査」と連想しやすい…そう思ったからです。
問題はある程度ルールを持ちつつ、自動生成しています。
自動生成は実装がひと手間ですが、プログラムが間違えていると問題と答えのミスがわかりやすくていいですね。
これが全て問題手打ちだった場合、問題と答えが合っているか、とても確認できなかったと思います💦
自動生成でも間違いがないとは言い切れませんが!
問題は、パターン数だけで言えば 10,000 をゆうに超えていると思います。
最初 1,000 もあればいいと思っていたので、だいぶ増えました。
問題のスピード
段々速くなるのが基本として。
「速くなる」とはどういうことか。
時速 140km/h で走ったとして、それが狭い街中と、高速道路では全くスピード感が違うと思います。
けして、試さないでください。
最初と最後の問題のスピードを決める
遅すぎれば間延びしますし、速すぎると人間には答えられません。
公開するのが恥ずかしいですが、40 代、私のようなロートルの反応速度は 0.4sec ~0.7sec でしたので、最初の問題の解答猶予を 1.5sec 程度、最後の問題については 0.45sec 程度としました。
厳密にいえば問題によっても反応速度は違います。後で細かく調整するかも…。
間のスピードを決める
まずは単純に中割りしたものを試してみます。こんな感じ。
(最後の問題が 0.6 になっているのは、例という事でご容赦ください)
例1)1.5 -> 1.4 -> 1.3 -> 1.2 -> 1.1 -> 1.0 -> 0.9 -> 0.8 -> 0.7 -> 0.6
これでプレイしてみると、確かに少しずつ速くなってはいるのですが、気がついたら速くなっているものの、スピードの変化を感じることができません。
これは人間の性質に深く関係があります。
ゲームが 8800 円と 10800 円だとずいぶん差があると思います。
でも車の購入代金が 300 万円だったとして「この追加オプション、購入されるお客様多いんですよ。5 万円で…」と言われるとたいして高く感じなかったり。
ドラクエでもそうですよね。どうのつるぎになると急に強くなった気がするのは数値に落差があり、ダメージの数字が1桁から、どっしり2桁になるからです。
人間は相対的に、落差のある部分を強く意識します。
一定速度で少しずつ速くなると「一定」のため、落差を感じることが出来辛いのです。
この落差を演出するために、値の変化をこのように変えました。
例2)1.5 -> 1.5 -> 1.5 -> 1.2 ->1.2 ->1.2 -> 0.9 -> 0.9 -> 0.9 -> 0.6
3問ごとに、急激にスピードを上げるのです。
こうすると、4問めは例1と例2で同じにもかかわらず、例2の方では「はやっ」と実感することができるようになります。
3問めまで同じ速度で脳を慣らし、その差を認識しやすくする、という作戦です。
厳しい速度になった後、緩やかにする
その昔一世を風靡したテトリス。
中でも私が面白く遊べたのは、セガがアーケードに出したテトリスでした。
このゲーム、レベル 9 までどんどん速くなるんですが、レベル 10 になると一気に遅くなるんですよね。
そこまで頑張ったプレイヤーへのご褒美、といった感じでフッと息の抜ける瞬間が好きでした。
レベル 15 以上は延々ときついスピードのままでしたが(笑)
速度への緊張感がだいぶ強いゲームです。
なので、あの好きだった瞬間を産み出すように、スピードを調整できるようにしました。
出来上がったテーブル
ピ、ピ、ピ、ピのインターバル時間なので今まで語った数値とは異なりますが、こんなテーブルになりました。
プログラムをやってると、こういうテーブルは数式化したくなるんですが、数式化した途端、微妙な数値の調整が出来なくなるんですよね。
一見無駄そうに見えるこのようなテーブルを手で一つ一つ修正していくことが、人がプレイして面白いと実感できるバランスを産み出すんじゃないかと思います。
さて、問題は少しずつ増やしていくとして、「それをやりたくなる」理由が欲しいところです。
正直ここは今でも迷っていますが…またの機会に。