UnityLT大会2018スライド「(Unityに)エモさをもたらす シリアル通信のはなし」

>100 Views

September 22, 22

スライド概要

Unity+Arduino+シリアル通信でUnityゲームから制御できる電光掲示板を作ったおはなしです。

profile-image

一番艇フライング欠場!▼D.N.A.Softwares▼デジゲー博▼その他▼Unityぜんぜんわからん

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

(Unityに)エモさをもたらす シリアル通信のはなし D.N.A. (D.N.A. Softwares) Background Designed by Brgfx

2.

自己紹介    サークル D.N.A. Softwares 代表 同人・インディゲームオンリー 「デジゲー博」代表 Twitter: @dnasoftwares

3.

さっそく 本題

4.

エモさ #とは

5.

   いつもの画面以外の表示器 ゲームと連動して光る電飾 そのゲームの世界観に沿った特別な コントローラー

6.

   いつもの画面以外の表示器 ゲームと連動して光る電飾 そのゲームの世界観に沿った特別な コントローラー → 画面外からの刺激 → 感情を揺さぶる → エモい!

7.

そんなエモさをUnityでも 醸し出したい!!!

8.

実際にやってみた “デジゲー博2018” にて展示

9.

諸元  8桁7セグ表示器×3行  8桁16セグ表示器×1行  制御:Arduino Nanoに独自スケッチを書き込み   インタフェース:USB (Micro-Bコネクタ)経由の シリアル通信 電源:USB or DC7.5V~9V 1A

10.

設計・試作  evive というプロトタイプキットで試作  Arduino搭載かつ入出力が豊富でデバッグがしやすい   本番用Arduinoへの 移行も比較的簡単だった サイト(Shopあり):  https://thestempedia.com/

11.

動いた • シリアル通信でコマンド を送る • →の出力を得るコマンド例 l01st 1000 l12nd 900 l23rd 800 先頭1文字目lがコマンド、2文字目0は書き換え行 残りが表示文字列 • バッファに余裕が無いのでコマンド書式 はツメツメで

12.

Unity側のコード  ArduinoのUSBシリアルポートをC#から叩く   System.IO.Ports.SerialPortクラスを使う (Api Compatibility Level の設定を「.NET 2.0」にすると使用可能) Qiitaの記事「UnityとArduinoをシリアル通信」(@yjiro0403氏)が参考になる •  https://qiita.com/yjiro0403/items/54e9518b5624c0030531 デバイスが繋がっているポートを 自動スキャンする機構  シリアルポートを列挙し、それぞれのポートに所定のコマンドを送って期待通りの応答を返 すポートを見つける  (ファームのバージョン情報を返すコマンドを入れておく)

13.

あとは…… • ゲーム内に実装!ただし……   PC側を全力でぶん回すとコマンド処理が追いつかない  コマンド処理より早くリングバッファが溜まる→未処理のバッファが新しいコマンドに上書きされ て文字化け  データ送信は秒間20コマンド程度になるように適宜間引く 例外処理はザックリでもいいから入れておこう  デバイスがないときの動作はどうか?   外部デバイス用のコードとゲーム本体のコードをキッチリ分離する シリアルポートがないPCでの動作はどうか?

14.

できあがり

15.

結論 (制御された光り物は) エモい ありがとうございました