背景
twitterを眺めていると、toioの「Do!コン」~キッズ審査員が思わず笑顔に!楽しいプログラムコンテスト~が開催されているという情報をキャッチしました。
イベントの流れとして、まずはアイデアを公式におくり、採用されれば、以下の「toioモニター機材」が提供され開発→審査という流れになります。
- toio本体セット(モニター専用 toio機材)
- ビジュアルプログラミングマット
- toioムック本
SONYはプログラミングをかねたデバイスとしてSPRESENSEやMESHなどを何度もMaker Faireなどで見てきました。
が、やはり、toioはより触れるもの、動くものという点で他のデバイスとは一線を画していると思っており、触れるかもしれないチャンスということでダメもとでチャレンジしてみることにしました。
イベント概要
- 3/17~4/12:アイデア応募
- 4月中旬:作品をつくる
- ~5/10:作品応募&拡散
- ~5/20:審査通知
- 5月下旬:決勝審査会
とりあえず4/12までのアイデア応募で採用されなければはじまらないので、アイデアをまとめてみます。
アイデア
概要
「toio コア キューブ」をストーンとし、交互にストーンを投げ合って、ポイントを競い合うカーリングゲーム
なぜこのアイデアか?
toioの特徴はやはり「デバイスが自走すること」と「デバイスの位置がわかる」事だと思います。
せっかくtoioを使ってものをつくるので、できるだけこの特徴を活かしたものを作りたいと考えました。
公式のyoutubeを調べるとトイカーリングがありましたが、ルールや実装、体験は異なるものと判断し、このアイデアでいこうと思いました。
コアルール
- プレイヤーはAさん,Bさんの2名とします
- Xゲームを実施し、Aさん、Bさんのうち、獲得したポイント数が多いほうが勝ちとします
(Xゲームは偶数回ならば何回でも良い) - 1ゲームにおける投ストーン回数はプレイヤーごとに1回とします
- ゲームの奇数回目と偶数回目の投げる順番は入れ替えます
(1ゲーム目に「Aさん→Bさん」と投げた場合には、2ゲーム目は「Bさん→Aさん」とする)
調整ルール(実機で試しながら調整する部分)
- 中心にどのくらい近づくと何ポイントか?というルールは操作感、使用感を試しながら決めていきたいと思います
- 例えば1試合6ゲームとすると、6ゲーム目でも厳しいコースに投げ込めば逆転できるような設計にしたいと考えています
- ストーンが相手ストーンに当たった際にはストーンははじかれます。どの程度はじかれると面白いかについては実機で確認しながらになると思います
オプション(チャレンジ)ルール・動作
開発時間がどの程度取れるかわからないので、以下の内容はチャレンジ内容としておきます
- 障害物の設置
- 本物のカーリングでは1ゲーム10投ですが、このときにゲームを面白くしているのが自分のストーンを守るために、前位置に置くガードストーンです
- 本ゲームでもその要素を追加するために、ガードストーン相当のものをストーンを投げる前に置けるものとします
- 投げ始める位置の変更
- 毎回同じ場所から投げると面白くない可能性があるので「サイコロ」「コアプログラムの乱数」そのほかの何かによって、投げるストーン位置を指定するルールがあると面白いかなと考えています
- カーブ
- カーリングの醍醐味の一つがストーンを投げ込んだ後、曲がりながら障害物の後ろに入れることだと考えています。(いわゆるカム・アラウンド)
toioの「toio コア キューブ」ならばこの動きが可能になると考えています - どのくらいの角度でまげるか、どの地点から曲がっていくのかなどを、「どうやって入力するか」「どうやって曲がっている感を出すか」実機を使いながら検討する余地があるかと思っています
- 現時点でのアイデアはtoioリングの傾きで少しだけ曲がるというものです
- カーリングの醍醐味の一つがストーンを投げ込んだ後、曲がりながら障害物の後ろに入れることだと考えています。(いわゆるカム・アラウンド)
今回はデバイスがないので実施できないけど将来の拡張性
- 氷の設置
- ストーンである「toio コア キューブ」が踏むとスリップして自走距離が延びてしまう
- 今回の提供物には自走中の「toio コア キューブ」が踏んでアクションを起こす「スカンクシート」のようなものがないので、実装は見送りとします
アイデアの実装方法
※toioを触ったことがない状態での検討内容となります。
投げる動作の実装
- toioリングの何かしらの入力を受け取ってどのくらい強く投げるか決定します(現時点でこの部分の仕様が見当たらなかったため、実装できない場合は違う方法で実装する)代案は以下の通り
- コンソールからの入力
- キューブへの入力
ゲーム進行の実装
- コンソールアプリ(かなにかで)2つ投げたタイミングで、中心位置からの2つの「toio コア キューブ」の位置を算出しポイントを加算します。これをXゲーム回繰り返した後、トータルのスコアで競います
「toio コア キューブ」同士の衝突の実装
toio™コア キューブ 技術仕様 モーションセンサーより、「衝突検出」がBLEセントラルに通知されます。
衝突を検出したタイミングでPosition IDの通知かPosition IDの読み出し操作により現在地点がわかるはずなので、到達予定地点との比較から衝突後のの地点を求めて、そこに移動すれば良いと考えています。
衝突の仮想モーションの動画があるのでこの辺りを参考に実装できればと思います。
所感
あとは実物を触ってみないと何とも言えないかと思います。