プチコン3号ではスマイルブーム運営の専用サーバを利用してプログラムを公開する。サーバを経由せず、たとえばニンテンドー3DS間でプログラムをやりとりすることは想定されていない。
話は変わるが、プチコン3号ではワイヤレス通信がサポートされた。接続できる台数は最大4台で、1台が親機、その他が子機という扱いになる。ただし、機能としては親機・子機の違いはなく、ワイヤレス通信開始時に決定する。扱いは非常に簡単で、「MPSTART」でセッションを開始した後はブロードキャストで行われる通信を2系統の命令でやりとりする。
1つはデバイス入力関数そのもの。ボタン入力の「BUTTON」、タッチパネルの「TOUCH」、スライドパッドの「STICK」、拡張スライドパッドの「STICKEX」は端末IDを引数としてとることができる。プログラムの先頭にセッション開始の命令を追加し、すべての「BUTTON」命令を一括置換するだけで別のニンテンドー3DSから操作できるようになる手軽さだ(意味があるかどうかはさておき)。
なお、デバイス入力関数では端末IDを省略した場合と、自端末IDをセットした場合はどちらも自端末の入力情報を取得するが、内部処理が異なる。端末IDを省略するとデバイスから直接取得するのに対し、自端末IDをセットすると通信データとして取得する。対戦など自端末/他端末の両方から入力を受け付ける場合は、通信データとして取得しないと他端末側とタイミングがずれるので注意しよう。
もう1つの命令系統は明示的にデータの送受信を行う「MPSEND/MPRECV」だ。最大256バイトまでの文字列を送受信することができる。MPRECVは明示的に相手先を指定して受信するのではなく、受信したデータの1つとして送信元の端末IDが返ってくる。プロミスキャスモードのイメージに近いかもしれないが、自分自身がMPSENDで送ったデータもMPRECVで受けてしまうということには注意が必要だ。
説明
ワイヤレス通信セッションの開始
・セッションはMPSTARTのパラメータが同じプログラム間でのみ接続可能
・セッションが構築できたかどうかはRESULTシステム変数で取得
※スリープモードに入ると通信は切断されます
引数
最大接続ユーザー数
2〜4:同時に接続するユーザーの数
通信識別文字列
認証用の任意の文字列
説明
ワイヤレス通信のセッション参加者全員へデータを送信
・送信データは確実に配送されるが、遅延が発生する
・短時間に大量のMPSENDを呼ぶと、Communication buffer overflowエラーが発生する
※スリープモードに入ると通信は切断されます
引数
送信文字列
最大256バイトまでの文字列
説明
MPSENDからのデータを受信
・受信データがない場合は送信元IDに-1が入る
※スリープモードに入ると通信は切断されます
引数
送信元ID
0〜3:文字列を送信する接続先番号
受信用文字列変数
受信されたデータを受け取る文字列変数
説明
ワイヤレス通信の指定端末の接続状況を取得
※スリープモードに入ると通信は切断されます
引数
端末ID
0〜3:ワイヤレス通信による他の端末ID(省略時:セッション全体)
戻り
0:未接続 1:接続
説明
ワイヤレス通信のユーザー定義データへの書き込み
※スリープモードに入ると通信は切断されます
引数
内部管理番号
0〜8:対象となるデータの管理番号
数値
登録する数値(整数値のみ受け付け)
(著者注:MPSETは自端末に対して書き込みを行う)
説明
ワイヤレス通信の指定端末のユーザー定義データを取得
※スリープモードに入ると通信は切断されます
引数
端末ID
0〜3:ワイヤレス通信による他の端末ID
内部管理番号
0〜8:対象となるデータの管理番号
戻り
指定されたデータの数値(整数値)
(著者注:MPSETによって各端末が書き込んだ情報を取得する)
説明
ワイヤレス通信セッションを終了
・参加者全員が同期して終了するための待ち合わせ用ダイアログが表示される
変数=BUTTON([機能ID[,端末ID]])
ハードウェアボタンの状態取得
引数
機能ID
0:押され続けている状態
1:押された瞬間(リピート機能付き)
2:押された瞬間(リピート機能なし)
3:放された瞬間
端末ID(0〜3)
ワイヤレス通信で他の端末のボタンを取得する場合に指定
戻り
bit0〜bit12に各ボタンが対応し、押されたbitが1となる
bit0:十字ボタン上
bit1:十字ボタン下
bit2:十字ボタン左
bit3:十字ボタン右
bit4:Aボタン
bit5:Bボタン
bit6:Xボタン
bit7:Yボタン
bit8:Lボタン
bit9:Rボタン
bit10:未使用
bit11:ZRボタン
bit12:ZLボタン
※ZRボタン、ZLボタンは拡張スライドパッド使用時
各ボタンが単独で押された場合の10進数戻り値は以下のとおり
1:十字ボタン上
2:十字ボタン下
4:十字ボタン左
8:十字ボタン右
16:Aボタン
32:Bボタン
64:Xボタン
128:Yボタン
256:Lボタン
512:Rボタン
1024:未使用
2048:ZRボタン
4096:ZLボタン
説明
タッチ情報取得
引数
端末ID(0〜3)
ワイヤレス通信で他の端末の情報を取得する際に指定
STTM
タッチされた時間を受け取る変数(0=タッチなし)
TX,TY
タッチされたドット座標を受け取る変数(TX:0〜399、TY:0〜239)
説明
スライドパッドの情報取得
引数
端末ID(0〜3)
ワイヤレス通信で他の端末の情報を取得する際に指定
X,Y
変化量を受け取る変数(X:±1.0、Y:±1.0)
※実際に返る値は±約0.86ぐらい
説明
拡張スライドパッドのスティック情報取得
・事前にXON EXPADで拡張スライドパッドを有効にする必要がある
(有効にしない場合、X,Yは常に0となる)
引数
端末ID(0〜3)
ワイヤレス通信で他の端末の情報を取得する際に指定
X,Y
変化量を受け取る変数(X:±1.0、Y:±1.0)
説明
ワイヤレス通信時のセッション参加人数
説明
ワイヤレス通信時の親機の端末ID
説明
ワイヤレス通信時の自分の端末ID
次回はライブラリの構築、利用に便利な仕組みを紹介する。
Copyright © ITmedia, Inc. All Rights Reserved.