見出し画像

SQLを作るカードゲームを開発中

現在(2022年12月)ゲームマーケット2023春に向けて新作を作成中です。
今回のゲームはSQLをテーマにしています。
ずっと前からSQLをテーマのゲームを作ろうとしていたのですが、なかなかアイデアがまとまらずにいました。
ふとこの間頭の中でまとまったので、サンプルを作り一人で遊んでみたところイケる感触があったので、BGEngineでテストプレイができるように準備を進めています。

最初はSQLコマンドが書かれたカードを場に無作為にばらまき、共通のお題カード(どういうSQLかが日本語で書いてある)に対して、それぞれのプレイヤーが早い者勝ちでカードを組み合わせて作るというものを考えました。
しかし、SQLのワードはいろんな種類があるので、これだとカード数が膨大になるか、キーカードを最初に抑えられるともう何もできなくなるプレイヤーが出てしまいます。

それを解決する方法として個人個人で同じ手札を持つことを考えました。ナインタイルなどと同じシステムです。しかし用意したいワードは40種類くらいあるのでこれだとすごい枚数になってしまいます。

そこで一枚のカードに上下にわけてワードを書き、さらに両面に書くことで4ワードを1枚に収めることにしました。これで10枚程度で抑えることができます。

また、下半分を重ねておくことで不要な部分を隠すことを思いつきました。

サンプル

テーブル名と最後のセミコロンはどのSQLでも必ず出てくるので、この2つは固定としてそれだけが書いてあるカードを2枚用意します。

ワードは細かすぎない粒度にわけて、かついろんな種類のSQLで流用がきくように工夫しました。例えばid=1はWHEREの条件としても使えますし、UPDATE文のSETの後にも使えます。

この手のゲームは一番早い人だけが得点をとれますが、だいたいその時のグループで1人だけ早い人がいたりするものです。そうなるとその人だけが毎回得点をとって終わるなんてことがあったりします。
その対処策として、できない人が最後の一人になるまで続けて最後の一人だけが得点できないようにしようと思います(テストして様子を見る)
ただし、答え合わせしたときに間違えていたらマイナス点になるようにしようと思います。

縦に重ねるのが良いと思いましたが、SQLとしては横にしたほうがわかりやすいかもしれないですね。これは好きな方を選んでよい、というルールにするかもしれません。

横配置の例

作成するのは簡単なSQLです。サブクエリや結合とかはありません。
ただ、1枚のカードに書かれた4種類のワードから必要なものを選んで配置するのはなかなかの難易度です。
もし日本語からSQLを考えて作るのが難しい場合は、裏面のSQLを直接見て競うのもアリでしょう。

左側が問題面(日本語)、右側が回答面(SQL)
ANDやORもあり、このくらいになると9枚のカードを並べないといけない。

今までの揚げピーナッツのアイテムと同様にエンジニア会合のアイスブレイクや勉強会の余興などで遊んでいただけたらなあと思っています。

この記事が気に入ったらサポートをしてみませんか?