量子ゲームを開発した話 - エムスリーテックブログ

エムスリーテックブログ

エムスリー(m3)のエンジニア・開発メンバーによる技術ブログです

量子ゲームを開発した話

この記事は エムスリー Advent Calendar 2019 の 9日目の記事です。

エンジニアリンググループ AI・機械学習チームの安田です。

現在、未踏で「web開発向けオープンソース量子計算ライブラリの開発」をしており、今回はそれに関連して量子タワーディフェンスを開発した開発中... なのでその話とそれに絡めて量子ゲームについてお話しします。

量子ゲームとは

ここでいう量子ゲームとは、ゲート式の量子コンピュータを使った or 量子コンピュータの原理をネタにしたゲームになります。 今回は開発しているゲームは、未踏で開発しているqramanaというシミュレータを使って、タワーディフェンスに量子要素を取り込んだものです。

github.com

なぜ量子ゲームか

なぜ量子ゲームかというと、単純に面白いものが作れるかもしれないという考えがあります。しかし、それより面白いテーマとして教育的な観点があります。

簡単にいうと、量子現象が直感的じゃないので、ゲーム体験の中から量子ネイティブな人がでてきたら量子コンピュータももっと発展しそうだよね、というわけです。

例えば、以下は量子コンピュータ界隈のPreskill氏の論文ですがそこでも言及があります。

arxiv.org

6.11 Quantum games

Advances in classical computing launched a new world of digital games, touching the lives of millions and generating billions in revenue. Could quantum computers do the same? Physicists often say that the quantum world is counter-intuitive because it is so foreign to ordinary experience. That’s true now, but might it be different in the future? Perhaps kids who grow up playing quantum games will acquire a visceral understanding of quantum phenomena that our generation lacks. Furthermore, quantum games could open a niche for quantum machine learning methods, which might seize the opportunity to improve game play in situations where quantum entanglement has an essential role.

この点は、量子力学を学んでいる際にもボーアやファインマンが量子力学わかってるっていう奴は量子力学わかってない的なセリフを言っていたと目にしていたので、共感できるとともに個人的に関心のある理由です。

なので、ライブラリへのFBも兼ねつつ個人的に量子ゲームを開発しているというのが今回の開発の発端になります。

既存の量子ゲーム

そんな量子ゲームですが今現在どんなものがあるのか、またその辺の活動事情について簡単に紹介します。

まず有名どころですが、IBMのHello Quantumです。

Hello Quantum

pc.watch.impress.co.jp

こちらはスマホで量子ビットを学べるパズルです。Qubitにどのような演算を作用させるとどのように状態が変化するか、ということをパズルを通して体感できるゲームになっています。インストールもスマホということでお手軽なので、ぜひ一度遊んでみてください!

他にQiskit Campにて量子ゲームを開発するイベントなどもあります。

medium.com

また、Qiskit Campの話も含めここ数年の動向をまとめた記事があるのでついでに紹介します。

medium.com

このように、これまでも多くはないものの開発されたゲームや開発イベントなどが開催されているゲームジャンルになっています。

今回開発しているゲームについて

前述の通り、今回開発しているゲームは量子タワーディフェンスです。

技術選定としては

  • TypeScript
  • Phaser3
  • qramana

を使用したブラウザ上で動くゲームです。

github.com

簡単なゲームと画面説明

f:id:sora_sakaki:20191209121839p:plain

このゲームは、

  • 敵が自分の陣地(一番左の青い1マス)に入らないように排除するゲームです
  • 敵は上か右の赤い陣地から出現します
  • 敵はゴールまで最短経路で移動します
  • プレイヤーは以下のコマをマップ上に配置して敵の排除を狙ってください
    • 何種類かのレーザーが出る塔
    • 弱った敵を排除するなんかすごい場を作る塔
  • 敵は、レーザーを浴びると強くなったり弱ったりします
    • 色でその状態がわかります
    • どのレーザーを当てれば敵が弱るのかは遊んで研究しよう!

みたいなゲームです。

画面の説明をすると、

  • 黒い画面端の部分: 通り抜け不可能な壁
  • 左端の青い1マス: プレイヤーの陣地(侵入されたら負け)
  • 画面上と画面右の赤いマス: 敵の出現位置
  • マップ上の白い丸: レーザー塔
  • マップ上の小さい赤い丸: 敵(状態で色が変わる)

という風になっています。

コンセプト

これまでリリースされているゲームを見たところ、量子ゲートや量子ビットを知っている前提で作られているように感じたため、

  • 量子ゲートを知らなくても遊べる

ことをコンセプトにしました。

その結果、内部的には以下のような設定を上のように表現できるようになりました(なった気がする)

  • 敵が1Qubitの状態を持っている
  • その状態を攻撃して(レーザーで操作して)変更する
  • その後観測して0になれば敵が消える
  • 敵の色はブロッホ球の3軸をRGBで表現する

これおもしろいの?

f:id:sora_sakaki:20191209180236g:plain

ぜんぜんわかんないです。少なくとも開発を進めている中で開発前には

  • |1>な敵が出てきたら、その経路に反転して|0>にするようなレーザーと観測器を並べれば戦略的にあそべるのでは

とか思ってたのですが、

  • レーザーは距離等に応じてランダムな回数敵を攻撃するため、ある敵に狙った回数狙ったレーザーを当てるのはむり

ということがわかっていて、開発前に考えていた1つの戦略は崩壊しています....

実際のところもう少し作り込んで遊んでみないと、どのような遊び方ができるのかはよくわからないのが実際です。

まとめ

今回は、申し訳ないことに開発途中のため量子ゲーム自体の紹介と今回作っているゲームを簡単に紹介する形になりました。もし興味を持たれた方は、紹介した通りいくつか公開されているゲームがあるので是非遊んでみてください! 量子の世界が少し身近になるかもしれません。

We're hiring!

エムスリーでは業務に限らず量子計算や自宅IoTやVtuberなどなど色々なことをしている人が沢山います! ディープな仲間募集中です!

jobs.m3.com