Example 2021.10.20

Joystick Game 対戦Joystick回転ゲーム

Joystickを使って対戦できるゲームを作りました! Joystickを使って対戦できるゲームを作りました!

タグ一覧 Tag List

こんなゲームです

ランダムに変化して指示される方向(時計回り or 反時計回り)に合わせて、VIVIWARE Cell Joystick(以降、Joystick Cell)を回す。

Up始点で一回転して1カウント、たくさんまわしてカウントをためる。

制限時間内に多くカウント獲得したプレーヤーの勝ち!

回転方向が切り替わる時は音が鳴り、手元のVIVIWARE Cell Message Board(以降、Message Board Cell)に方向が表示されるのでその通りに回す。

対戦!

ということで、さっそく対戦です。



お互い自宅におりますので、Zoomで繋いで、スタンバイ!
本気になると指がつりそうになりますが、とっても楽しかったです! 
(実はこれ、VIVIWAREの機能であるRemote Pairingを活用して対戦したので、だいぶタイムラグが出てしまいました・・・)  

それでは、仕組みを見ていきましょう!

カウントをためる

Joystick Cellの回転はUpから始めて、時計回り( -> ) or 反時計回り( <- )に一周してUpに戻ると1カウント。

時計回り( -> )

反時計回り( <- )

使っているVIVIWARE Cell

オプションBがあれば、2人同時プレイが可能。

さらに、オプションCがあればゲーム時間調整・残り時間表示が可能。

・必須セットA(1st Player用)
 VIVIWARE Cell Core(以降、Core Cell), Message Board Cell A, Joystick Cell A

・オプションB(2nd Player用)
 Core Cell, Message Board Cell B, Joystick Cell B

・オプションC(時間設定表示装置&スタートボタン)
 Core Cell, Message Board Cell C, VIVIWARE Cell Rotator(以降、Rotator Cell)

実行方法

方法は2通り。

・Rotator Cellでトータルゲーム時間を調整し、ノブのPushでゲームスタート

・Rotator Cellが用意できない場合は、プログラム左上のButtonをタップしてゲームスタート

プログラム

このQRコードを「ハードウェアを追加」で起動するカメラで読み込むと、プログラムをダウンロードできます。

上図を参考に、お手持ちのVIVIWARE Cellをそれぞれアサインしたら、すぐに遊べます!

細かい動作仕様

・ゲームスタートで爆発音が鳴り、Message Board Cell Cの残り時間が減っている間のみカウント
 (ゲーム時間が終わった後も回し続けてカウント稼ぐようなズルはできない!)

・方向が変わるときはシャキーン!、1カウントごとにスネア、終了時はクラクション音が鳴る

・Up/Down/Left/Right、各々の方向に最大傾斜の約6割以上倒さないと一回転とみなされない

・1ゲーム終了後は回転成功した累積カウンタ値が表示されたまま
 ゲームストップ状態でJoystick CellPushを押すとカウンタ値がクリアされる

・設定できるトータルゲーム時間のデフォルトは20~120秒

・回転方向変更のタイミングはデフォルトでランダム2~6秒

おおまかな仕組み

全体像

大きく「時間制御部」、「1st Player回転カウント部」、「2nd Player回転カウント部」に分かれています。

時間制御部

「ゲーム時間経過カウンタ」と「方向切替のランダム時間カウンタ」は、Routineモジュールで1秒毎にクロックを生成してカウントがたまり、トータルゲーム時間到達判定と、ランダム時間で回転方向を逆転させる処理をしています。

切替ランダム時間調整パラメーター部分でどのくらいの間隔・頻度で方向切替が発生するか調整できるので、カスタマイズしてみては?

1st/2nd Player回転カウント部

この部分は1st/2ndで基本共通のロジックです。

「1st Player回転カウント部」を複製して「2nd Player回転カウント部」を作成しています。

上部が時計回り検知部、下部が反時計回り検知部です。

時計回り方向の検出ロジックを拡大したものです。

赤枠部分はそれぞれ、ひとつ前がUp/Down/Left/Rightの場合にtrueになるようになっています。

さらに「ひとつ前のUp」を記憶する部分のモジュール連結が分かりやすいようにレイアウトしたものです。

現在のUp信号が入った時点でExclusionモジュールに一時メモリとして記憶させ、これがtrueかつ次の信号がUp以外の場合のみ(=つまりひとつ前がUpの場合のみ)、Logical Operationモジュールtrueパルスを発生させるようにしています。


これを後段のIn/Out端子5個のExclusionモジュールOut5Reset)につないで、ひとつ前がどの方向だったかを記憶するようにしています。

「現在入力している方向」と、上記で検出した「ひとつ前の方向」を後段のLogical OperationAND演算して、指定された回転方向でUp/Down/Left/Right一周後のUpが入力されたかを検出しています。

ここで、どの方向のひとつ前とAND演算するかが、時計回り/反時計回りを検出するポイントです。

(但し、回転を始める最初のUpはひとつ前の方向関係なくそのままスルーしています)

 

 

 

(Created by Tomohiro Hayashi)

 

 

こんなゲームです

ランダムに変化して指示される方向(時計回り or 反時計回り)に合わせて、VIVIWARE Cell Joystick(以降、Joystick Cell)を回す。

Up始点で一回転して1カウント、たくさんまわしてカウントをためる。

制限時間内に多くカウント獲得したプレーヤーの勝ち!

回転方向が切り替わる時は音が鳴り、手元のVIVIWARE Cell Message Board(以降、Message Board Cell)に方向が表示されるのでその通りに回す。

対戦!

ということで、さっそく対戦です。



お互い自宅におりますので、Zoomで繋いで、スタンバイ!
本気になると指がつりそうになりますが、とっても楽しかったです! 
(実はこれ、VIVIWAREの機能であるRemote Pairingを活用して対戦したので、だいぶタイムラグが出てしまいました・・・)  

それでは、仕組みを見ていきましょう!

カウントをためる

Joystick Cellの回転はUpから始めて、時計回り( -> ) or 反時計回り( <- )に一周してUpに戻ると1カウント。

時計回り( -> )

反時計回り( <- )

使っているVIVIWARE Cell

オプションBがあれば、2人同時プレイが可能。

さらに、オプションCがあればゲーム時間調整・残り時間表示が可能。

・必須セットA(1st Player用)
 VIVIWARE Cell Core(以降、Core Cell), Message Board Cell A, Joystick Cell A

・オプションB(2nd Player用)
 Core Cell, Message Board Cell B, Joystick Cell B

・オプションC(時間設定表示装置&スタートボタン)
 Core Cell, Message Board Cell C, VIVIWARE Cell Rotator(以降、Rotator Cell)

実行方法

方法は2通り。

・Rotator Cellでトータルゲーム時間を調整し、ノブのPushでゲームスタート

・Rotator Cellが用意できない場合は、プログラム左上のButtonをタップしてゲームスタート

プログラム

このQRコードを「ハードウェアを追加」で起動するカメラで読み込むと、プログラムをダウンロードできます。

上図を参考に、お手持ちのVIVIWARE Cellをそれぞれアサインしたら、すぐに遊べます!

細かい動作仕様

・ゲームスタートで爆発音が鳴り、Message Board Cell Cの残り時間が減っている間のみカウント
 (ゲーム時間が終わった後も回し続けてカウント稼ぐようなズルはできない!)

・方向が変わるときはシャキーン!、1カウントごとにスネア、終了時はクラクション音が鳴る

・Up/Down/Left/Right、各々の方向に最大傾斜の約6割以上倒さないと一回転とみなされない

・1ゲーム終了後は回転成功した累積カウンタ値が表示されたまま
 ゲームストップ状態でJoystick CellPushを押すとカウンタ値がクリアされる

・設定できるトータルゲーム時間のデフォルトは20~120秒

・回転方向変更のタイミングはデフォルトでランダム2~6秒

おおまかな仕組み

全体像

大きく「時間制御部」、「1st Player回転カウント部」、「2nd Player回転カウント部」に分かれています。

時間制御部

「ゲーム時間経過カウンタ」と「方向切替のランダム時間カウンタ」は、Routineモジュールで1秒毎にクロックを生成してカウントがたまり、トータルゲーム時間到達判定と、ランダム時間で回転方向を逆転させる処理をしています。

切替ランダム時間調整パラメーター部分でどのくらいの間隔・頻度で方向切替が発生するか調整できるので、カスタマイズしてみては?

1st/2nd Player回転カウント部

この部分は1st/2ndで基本共通のロジックです。

「1st Player回転カウント部」を複製して「2nd Player回転カウント部」を作成しています。

上部が時計回り検知部、下部が反時計回り検知部です。

時計回り方向の検出ロジックを拡大したものです。

赤枠部分はそれぞれ、ひとつ前がUp/Down/Left/Rightの場合にtrueになるようになっています。

さらに「ひとつ前のUp」を記憶する部分のモジュール連結が分かりやすいようにレイアウトしたものです。

現在のUp信号が入った時点でExclusionモジュールに一時メモリとして記憶させ、これがtrueかつ次の信号がUp以外の場合のみ(=つまりひとつ前がUpの場合のみ)、Logical Operationモジュールtrueパルスを発生させるようにしています。


これを後段のIn/Out端子5個のExclusionモジュールOut5Reset)につないで、ひとつ前がどの方向だったかを記憶するようにしています。

「現在入力している方向」と、上記で検出した「ひとつ前の方向」を後段のLogical OperationAND演算して、指定された回転方向でUp/Down/Left/Right一周後のUpが入力されたかを検出しています。

ここで、どの方向のひとつ前とAND演算するかが、時計回り/反時計回りを検出するポイントです。

(但し、回転を始める最初のUpはひとつ前の方向関係なくそのままスルーしています)

(Created by Tomohiro Hayashi)

share
close