一つずつ増える自動演奏の配列を正確に追いかけていく、スマートウォッチで動く記憶力ゲーム。
以下の Twitter のツイートに動画を載せてある。
https://twitter.com/tannakaken/status/1855613545892941860
Amazfit Bip 5 Unity という、1 万円以下でかえるスマートウォッチのアプリ開発環境で作成した。
Amazfit は zepp os という OS で動いている。
zepp os は
- アプリを JavaScript で開発できる。
- sdk を npm でインストールできる。
- シミュレータがある。
など、手軽に開発できる環境が揃っている。
とはいえ、
- ドキュメントが足りない。
- そもそも SDK の機能が足りていない気がする。
- GUI の配置が不自由すぎる(もしくは GUI の配置を自由に行う方法を知るためのドキュメントがない or 辿り着けない)。
- ログを見る方法すらよくわからない(もしくはログが見えない)。
- example も今のところかなり不親切(音声ファイルのパスの参照方法もよくわからなかった)。
- ある種のクラスのインスタンスを複数作ると(おそらくメモリが足りなくなって)落ちる。
など、今後の発展に期待したい。
環境構築は本家を参考にした
https://docs.zepp.com/docs/guides/quick-start/
面倒くさいが、本家に書いてあるように、zeus-cli はグローバルにインストールした方が良いようだ(node_modules にインストールしたらエラーが出た)。
npm i @zeppos/zeus-cli -g
node が 16 系だとエラーが出たが、node が 20 系なら動いた。
simulator が windows だと qemu(エミュレータ)がパスのエラーを起こしていた。多分、パスに非 ascii 文字が含まれてるからだと思う。 なので mac で動かすことにした(無事動いた)。
SoundPlayer などのクラスのインスタンスを複数作成するとアプリが落ちることがある。 すると、その部分を改善して preview してもアプリが落ちてしまうことがあるが、Amazfit 自体を再起動することで治った。
アプリのテンプレートの作成方法は
zeus create hello-world
アプリをシミュレータで走らせる方法は、
https://docs.zepp.com/docs/guides/tools/simulator/download/
からダウンロードしてインストールしたシミュレータを走らせた状態で、
zeus dev
実機でテストする方法は、
https://docs.zepp.com/docs/guides/tools/zepp-app/
を参考に Amazfit を開発者モードにして、
zeus preview
で生成された QR コードを、開発者モードの画面の中にあるアプリ追加機能で QR コードをスキャンする。
このアプリでは音声が関わり、音声はどうやら現状のシミュレータでは出ないため、もっぱら実機でテストした。
実機テストでも、ビルドもインストールもそれほど時間はかからず、快適に作業できた。
ピアノの音はランダムに音を並べても、そこそこ自然に聞こえるように、ペンタトニックを選んだ。 C5 のドの音が変になってしまったので、もう少し調節する必要がある。
ピアノの音の音声ファイルは以下のアイオワ大学のサイトからダウンロードした。
https://theremin.music.uiowa.edu/MISpiano.html
mp3 に変換してトリミングをするために、ffmpeg を利用している。
assets フォルダにあるファイルはインストール時に実機にコピーされるため、ここのフォルダが大容量になると、 インストールに時間がかかるようだ(なので、できるだけファイルを軽くした方が開発体験がよくなる)。
不正解時の効果音は OtoLogic のサイトよりダウンロードした。 アプリを Amazfit のアプリストアなどで公開するならば、OtoLogic のクレジットを表示する必要がある。
https://otologic.jp/free/se/quiz01.html
アイコンは imagemagick を使って生成している。
このリポジトリを CC BY 4.0 で公開する。
淡中 圏 tannakaken@gmail.com