はじめてゲームプログラミング
というわけで、はじプロでゲームを作りました。
今ちょっと生活が忙しい状況なのですけども、やっぱりどうも忙しいと、はじプロとかに逃避したくなるんですよね。
それにより睡眠時間が余計に削られるという問題もあるのですが、その一方で心の平静を保つ助けにもなっているというところでなんとも難しいところです。
……ただ、睡眠を優先すべきではあると思います。
そんな感じでしたが、このゲームを公開してみたらゲームIDがRRRと3文字続いたので少し目が覚めました。
こういうゲームです
例によって、動画を見ていただくのが早いです。
「おりひめとひこぼし」または「ひこぼしとおりひめ」が出たらすぐにAを押すというただそれだけです。
構想1年3カ月
このゲームなのですが、実は作ろうと思ったのはだいぶ前にさかのぼります。
たぶん、私が素で「七夕っておりぼしとひこぼしだったっけ……?」とか間違えたのが発端だったと思うのですけども、それをゲームにしようと思いました。
私は思いついたものとか買い物しなきゃいけないものに気づいたときは、忘れる前にすぐに自分にメールを打ち、解決するまではメールボックスに残しておく習性があるのですけども、それがご覧のとおりです。
で、そこから1年以上もかかった理由は……、
ゲームとして成立するのかというのが不安でしょうがなかった……。
メール打ってすぐ記憶から消えた後、時間を置いてメールを整理していたときに目に飛び込んできた「おりひことひこぼし」。
夜に手紙を書くと文章が変な感じになるというアレに近いんですが、「これ、この時自分、何考えてたの……。」と混乱しました。こんなのゲームになるか、と。
……しかしながらその一方で、もしかしたら作ってみたらゲームになるかもしれないとも思ったりして、一縷の望みにかけて削除はせずにとりあえずそっとメールの山に埋めておきました。
そして1年以上すっかり忘れていましたが、先日、メーラーをOutlook(new)に変えたときにこのメールが見えてしましました。
それでデスノートをもう1回触っちゃったときのように記憶が戻ってきた勢いで作ることにしました。
(なので、構想1年3カ月とは書きましたけども正確には3日とかかもしれません)
しかし、改めて考えてみると私は間違えていました。
はじプロというのは、どういうものを作ってもいいんです。たとえそれがゲームでなかったとしても。
はじプロには自由があります。恐れずに行こう。
ノードン制限があって内容変えました
すみません、はじプロは自由と言いましたけど、完全に自由だというわけでもなくてノードン数制限があったりしました。
この制限の中で作るという縛りがまた面白いんです。
(※なお、これは本当にどうでもいいんですけど、今「ノードン数制限」と書こうとして「ノードン数セーゲン」と書いてしまったのを直しました。)
今回のプログラムで悩んだところは大きくは2つありました。
表示する文字のランダム化
1つは文字を(ある程度)ランダムに並び替えるところです。
完全にランダムにすると、正解の「おりひめとひこぼし」が出る確率は天文学的なものになるでしょうから、ある程度に抑える必要があります。
今回は「おり」「ひめ」と「ひこ」「ぼし」のように2文字ずつのブロックを4つ作って、この2文字ごとにランダムに入れ替えるという形にしました。
最初に1/2の確率で「おりひめとひこぼし」または「ひこぼしとおりひめ」のどちらの正解パターンにするかを決定しておいて、
それとともに各4ブロックでそれぞれ適当にハズレパターンを抽選しておいて、
各ブロック1/2の確率で正解パターンかハズレパターンのどちらかになるようにしました。
すなわち4ブロックとも1/2で正解パターンになれば、七夕が成立します(?)。1/16のはず。
表示順序のランダム化
次の悩みはその文字をランダムな順で1文字ずつ表示したいというところでした。
1文字目から順に出していったのでは、序盤にハズレパターンが出た時点で違うとわかってしまうのでランダムに出したかったのです。
で、表示順をランダムにするという点で、おしゃれなモノノードンを9種類用意して、箱でかきまぜて1個ずつ取り出すという抽選箱方式を最初考えましたけども、ちょっとノードン数が多くなったので再検討しました。
最終的には完全なランダムではなく、ある程度ランダムっぽい雰囲気で出す形にしました。
うまく説明できないのですけども中央の「と」を除く8文字について、
2グループに分けてランダムで片方には4点、もう片方には0点を加算。
別の分け方で2グループに分けて、片方には2点、もう片方には0点を加算。
さらに別の分け方で2グループに分けて、片方には1点、もう片方には0点を加算。
のような形にして、文字ごとに別の点を与えてそれを順番に出すという感じにしました。
5文字目まで表示された状態では「?○?○と?○?○」(○は表示済、?は未表示)もしくは「○?○?と○?○?」のどちらかのパターンになります。
プログラム的にはこれはこれで結構ノードン数多くなりました。
もしかしたら最初の抽選箱方式の方が良かったのかも……?
そんなわけで
以上のような形でノードン数の残りが足りなくなってきたのでした。
……で、最初に作ろうとしていたルールは、
・「おりひめとひこぼし」が最初に出てきてAボタンを押したときのスコアがベースとなる。
・そこから「七夕ラッシュ」に突入し、7回の間、1/2の高確率で正解が出る&制限時間がすごく短い
・ベースのスコア×七夕ラッシュの成功回数が最終得点
というようなものでした。
それがちょっと厳しいかな……という感じになってきたので、ミスするまで継続&流れ星出てくるというのにしてみました。
まとめ
というわけで、とにかく私としてはとりあえず思いついたものを作り終えることができたのでさっぱりしました。
あと、最初の画面とかゲーム中とかのBGMもいい感じのが探せたと思います。
おわり。
コメント