MUDAなことをしよう。MUDAなことをしよう。ご無沙汰しております、約四ヶ月ぶりの更新になります。過去最長の更新停止になってしまいました。この期間、何もしていなかったのかというとそんなことはなく、平常運転で粛々とモノを作っておりました。なんでこんなに時間がかかってしまったかというと、もちろん本業や育児が忙しかったというのもあったのですが、何より今回題材に選んでしまったものの特性によるところが大きいです。いうわけで、お待たせ致しました。今回作った作品、『ネオディケイドライドウォッチ』と『ネオディエンドライドウォッチ』のご紹介です。『ネオディケイドライドウォッチ』は、DX版ディケイドライドウォッチのシンプルな強化版という位置付けです。元々のDX版玩具でも主役ライダーのライドウォッチについては個別認識できていますが(※サブライダーは主役ライダーと同音声)、それでも名前の読み上げが変わる程度の変化でちょっと物足りない気がしましたので、以下の音声を強化致しました。カメンライド(新規追加)ファイナルアタックライド(新規追加)ファイナルフォームライド(新規追加)ファイナルフォームタイム(中間フォーム変身音声追加)ファイナルアタックタイムブレイク(中間フォーム攻撃音追加)ジクウドライバーに装填していない状態でライドウォッチを読み込ませるとカメンライド、そこから上部ボタン1回でファイナルアタックライド、さらにもう一回ボタンを押すとファイナルフォームライド、以後繰り返し、という動作になります。ファイナルアタックライドは、カメンライドでそのライダーの姿に変身しているという想定なので、「ボルテックフィニッシュ!」などの必殺技名の読み上げ音声も入れています。◯◯フォーム』という状態で発動する必殺技なので、「ファイナルアタックタイムブレイク!スパークリングフィニッシュ!」と必殺技名の読み上げが続くのは何だか冗長な気がして、意図的に「スパークリングフィニッシュ!」などの必殺技名は読み上げないようにしています。それでも可能な限り、「ファイナルアタックタイムブレイク!」の後の攻撃音は、玩具や映像の音声をベースに、各ライダーの中間フォームの固有のものにしています。しても固有の音声データを作成できなかったライダーについては、元々のDX版の共通攻撃音を使用したり、あるいは自分で勝手にそれっぽい音声を合成したりしています(←ブレイドのライトニングスラッシュとか)。あと地味な特徴として、上部ボタンが認識したライダーの色に変化する、というギミックも追加しています。ボタンがクリアブラック色なので、正面からだとちょっと見にくいですが。こちらが対になる存在、『ネオディエンドライドウォッチ』です。先に『ネオディケイドライドウォッチ』で紹介した音声強化を、サブライダー(2号、3号、敵ライダーなど)に対応させたものになります。再生可能な音声はネオディケイドライドウォッチと同様の5種類ですが、ディエンド仕様ということでカメンライド/ファイナルフォームタイムには召喚音が追加されていたり、ジオウではなくゲイツが使用する前提で、必殺技音声が『ファイナルアタックタイムブレイク』ではなく『ファイナルアタックタイムバースト』に代わっていたりします。ベースはもちろんDX版ディケイドライドウォッチで、顔の部分を極力ディエンドに近づけるよう、ディケイドの顔下半分のバーコード部分のパーツを切り取ってしまって、それを上に持ってきて接着することで、頭のバーコード部分の高さの並び順を変化させています。そんな感じの簡単な工作なので、強い衝撃を与えると継ぎ足した部分がポロっと外れてしまうのが玉にキズですが、見た目にはそれっぽくできたかなと思っています。ちなみにバーコード部分に入っているレッド/シルバーのメタリックラインは、塗装ではなく百均で買ってきたテープを使って表現しています。ネオディケイド/ネオディエンドで対応しているライドウォッチは以下になります。今回は過去にない取り組みを2つ行なっています。一つは、2作品の同時並行作成。一つは、他の方とのコラボレーションです。これらを行うことになった経緯についてご説明します。元々は素直に『全ライダーに対応したネオディケイドライドウォッチをつくる』という構想で開発をスタートさせました。この構想段階で兄と話をした際に、「サブライダーはディエンド(の持分)では?」とのコメントがあり、「それもそうだ」と思いましたので、大変ではありますが2つに分離して製作することに致しました。分けて製作したことにはもう一つの狙いがあったのですが、それについては最後に改めて触れたいと思います。ネオディエンドライドウォッチを製作することを決めたのは良いのですが、一つ大きな問題がありました。ディケイドライドウォッチを改造するだけなら特に塗装は必要なかったのですが、ディエンド版を作るとなると、彼のベースカラーであるシアン色での全面塗装がほぼ必須になります。いつも塗装する時は、なんとなくそれっぽい色のスプレー缶を適当に買ってきて吹っかけていたのですが、今回はそれをやってしまうと「何かコレじゃない」モノになってしまう恐れが非常に高いと感じました。シアンは原色なので、「なんとなくそれっぽい」で誤魔化すのはおそらく困難だろうと思ったのです。そこで、以前から玩具の塗装界隈で精力的に活動されていて、カッコ良い塗装作品を量産されていた#りんちゃんねるのK様にご相談させて頂いたところ、ディケイドの方と併せてディエンドの塗装を引き受けてくださることになりました。以前、万丈ライドウォッチを作成した際に、「クローズの目の部分を白くしたラベルを作る」という作業をひかり様にお願いしたことはありましたが、自分の作品の結構大きな部分を完全に他の方にお任せするというのは、今回が初めてです。最悪失敗しても良いや」と軽い気持ちで作品を作ってきましたが、他の人を巻き込んでしまった以上は、失敗はもちろん、適当なものを作ってしまうわけにもいきません。こちらの期待以上に、K様は塗装をカッコ良く仕上げてくださいました。塗装後に私が中身を作り込んでいく形で作業を進めていたので、正直中々のプレッシャーでした。ハードウェア解説ここではハードウェア構成について、簡単にですがご説明します。いつものごとく、使用した具材の紹介からです。これまでの作品と全く変わっていません。TS4GUSDHC10リチウムイオンポリマー電池110mAhディテクタスイッチESE22MH4XDK(10個入)(←ドライバー認識用)あとは適当に電源ON/OFF用のスライドスイッチや、配線用のコードなどです。スピーカーや上部ボタン、顔部分の白色LED、それからライドウォッチの配列ピンの認識用のスイッチは、DX版ディケイドライドウォッチに初めから組み込まれているものをそのまま流用します。ハードウェア構成はネオディケイドもネオディエンドも全く同一なので、当然必要な具材も同じです。回路図としては、こんな感じになります。実際に配線したものが、こんな感じになります。相変わらずのいい加減さです。今回少し気を配ったのは、メンテナンス性の良さを確保することです。このネオディケイド/ネオディエンドライドウォッチは、その特性上、対応するライダーを後から編集したり追加したりするケースが出てくることは容易に想像がつきましたので、完成後もプログラムの書き換えや音声の追加が容易に行えるよう、本来ボタン電池がセットされていたスペースから必要部位に全てアクセスできるように部品を配置しました。リチウムイオンポリマー充電池への充電もここから行えるようにしています。Arduinoのプログラムの書き換えは、ちょっと見辛いですが、ここにソケットを設けているので、ここから行うことができます。ソフトウェア解説ソースコードのベースになっているのは、万丈ライドウォッチのときに紹介したソースコードです。「ライドウォッチ認識」という新たなイベントが発生することによる、状態遷移の修正を行なったものが、今回のソースコードになります。ライドウォッチの配列ピンの読み取り機能のプログラムを書くためには、当然ライドウォッチの配列ピンのルール(=配列ピンからの、個別の識別番号の計算方法)を知る必要がありますが、これについては『ネオディケイドライドウォッチ』の動画の17:50あたりから詳しく解説していますので、そちらを参照頂くのが良いと思います。動画内でも言及していますが、このルールの理解には、クレーンの丈様が提供してくださった解析情報を大いに活用させて頂いております。この場を借りてお礼申し上げます、ありがとうございます。ソースコードの全文はこの記事の最後に掲載しますが、ネオディケイドとネオディエンドでほぼ一緒なので、ネオディケイドのソースのみ掲載致します。ソースコード上でネオディケイドとネオディエンドで異なっているのは、電源ON時のボタン発光色の定義と、固有音声(←「〜は、ディエンドだ!」や「アーマータイム!」)の違いによる、顔部分の白色LEDの発光パターンの定義だけです。大きく異なるのは、ソースコードではなく、再生する音声ファイルの方です。ディエンドの動画の解説内(17:10あたり)にて、「主役ライダーの識別番号を読み取ったら、主役ライダーの音声の代わりにサブライダーの音声を再生するだけ」みたいなことを書いていますが、実装の実態としては、それだけで済む話ではありません。先の作品内容説明のところで、ネオディケイドライドウォッチは以下の5つの音声を再生可能であることを述べました。カメンライドファイナルアタックライドファイナルフォームライドファイナルフォームタイムファイナルアタックタイムブレイクこれは、もう少し詳細に書くと、こうなります。カメンライド(「カメンライド!」+「ライダー名」+「変身音」)ファイナルアタックライド(「ファイナルアタックライド!」+「ライダー名」+「攻撃音」)ファイナルフォームライド(「ファイナルフォームライド!」+「ライダー名」+「変形音」)ファイナルフォームタイム(「ファイナルフォームタイム!」+「ライダー名」+「中間フォーム変身音」)ファイナルアタックタイムブレイク(「ライダー名」+「ファイナルアタックタイムブレイク!」+「中間フォーム攻撃音」)一方、ネオディエンドライドウォッチではこれがどうなるかというと、こうなります。カメンライド(「カメンライド!」+「ライダー名」+「召喚音」+「変身音」)ファイナルアタックライド(「ファイナルアタックライド!」+「ライダー名」+「攻撃音」)ファイナルフォームライド(「ファイナルフォームライド!」+「ライダー名」+「変形音」)ファイナルフォームタイム(「ファイナルフォームタイム!」+「ライダー名」+「召喚音」+「中間フォーム変身音」)ファイナルアタックタイムバースト(「ライダー名」+「ファイナルアタックタイムバースト!」+「中間フォーム攻撃音」)つまり、5種類の音声中3種類がディケイドとディエンドで音声の仕様が異なることになります。結果、「主役ライダーの音声の代わりにサブライダーの音声を再生する」だけでなく、ネオディケイドライドウォッチで対応していた全てのライダーについて、5種類中3種類の音声ファイルをディエンド用に作り変える必要がありました。この結果、今回、ネオディケイド/ネオディエンドライドウォッチ向けに、音声ファイルを全部で530個ぐらい作成することになりました。これが、今回こんなに時間がかかってしまった主要因です。音声ファイルは途中で何度か作り直しているので、多分修正前のものまで含めたら600個ぐらい音声ファイルを編集したと思います。終わってみれば狂気の沙汰の気がしています。これは備忘録的な記述ですが、音声ファイル関係のトライ&エラー(←SDカード上のファイルの削除、追加、上書き保存)を何度も繰り返しているうちに、ボタンを押したあとやライドウォッチをセットしたときの音声再生がどんどん遅延していくという現象が発生しました。最大で1s近く遅れるようになってしまったので非常に焦りましたが、DFPlayerに挿しているマイクロSDカードをフォーマット用のアプリで完全に上書きフォーマットして、それから再度音声ファイルをSDカードにコピーすると、遅延が解消されました。音声ファイルの削除・追加を繰り返している内に、SDカード上に何かしらのゴミデータが溜まっていって、それが何か悪さをしていたのだと思います。以前にDFPlayerで大量の音声ファイルを扱ったときにも発生していた現象なので、DFPlayerを使って数百レベルの音声ファイルを扱うときの特有の問題なのかもしれません。試される方は、ご注意ください。完成品のソフトウェアとしての解説は以上なのですが、実は今回の作品、自分の当初目標からするとデグレした形での完成となっています。ネオディエンドの完成品では「主役ライダーの音声の代わりにサブライダーの音声を再生する」という形でサブライダーに対応させており、その結果として「主役ライダーの音声は再生できない」ということになってしまいましたが、本当は主役ライダーの音声も再生可能な方向で完成させる予定でした。その方法は、サブライダー用の認識番号とピン配列を新規で独自に定義するというものです。ライドウォッチの製品仕様では識別パターンは全部で120通りですが、これは動画でも解説しているとおり3つのピンが立っているパターンは、認識読み取りのサインのため、通常は出現しない一度出現したパターンは二度と出現しないという2つの制約から来ています。そのルールに縛られなければ、理屈の上では7x7x7=343通りのパターンの識別が可能なはずです。決まっている製品仕様を崩さないように拡張しようとする場合は、「先頭が『|||』の並びのときのみ、同一パターンの出現を許可する」という新たなルール(というよりは、制限緩和)を加えることで、元々の6x5x4=120通りの認識パターンにさらに1x7x7=49通りの認識パターンが追加される形になり、合計で169通りの認識パターンになります。初めはこの考え方でプログラムを組んでいたのですが、自分のプログラムの組み方では169通りに対応させると誤認識が発生しやすくなりそうでしたので、最終的には「先頭のみ『|||』の並びを許可する」というルール(制限緩和)だけを加えることで、6x5x4+1x6x5=150通りの認識パターンを読み取れるプログラムを作成しました。本来は存在していないNo.121以降にサブライダーの音声を割り当て、またそのNo.に対応する認識ピンのプレートを新規に作成することで、主役ライダーとサブライダーの音声を両立させる予定でした。ところが、これを実際に動作させると、誤認識が多発してしまいました。原因を精査したところ、問題はプログラムではなく認識ピンのプレート側にあることがわかりました。新規の認識プレートは、既存商品のプレートに自分でピンを追加してマスタープレートを作成したのち、それをシリコンで型取りしてレジンで複製するという手法で量産したのですが、どうも「マスタープレート」のピン追加の精度が悪かったようです。見は3つのピンが揃って並んでいるように見えても、実際はその中のどれかが先に読み取りスイッチに当たってしまう、というようなケースが多発しているようでした。新規にシリコン型を作り直すという方向性もありましたが、それだと満足いく精度の型がいつできるかの目処が立たず、また全てのサブライダーのライドウォッチの認識プレートを交換するというのも決して楽な作業ではなく、遊びにくいことは遊びにくいため、今回は主役ライダーの音声には対応しないものの、ライドウォッチ側は無改造で遊べる現行方式を採用することにしました。プログラム自体はNo.150まで読み取れる状態のままになっていて、ネオディケイドの動画の『おまけ』の音声はNo.128に割り当てています。No.128の認識プレートは、2段目・3段目の配列ピンがそれぞれ1つずつしか立たないため、誤認識が発生しにくく、何とか実用に耐え得る程度のものにはなっています。プログラムには問題はないとしたものの、同じようにレジン複製で作成したネオディエンドライドウォッチ自体の認識プレートは、ジクウドライバーは正しく『ディエンド』と認識してくれているため、プログラムの方も認識ピンの精度の良し悪しに左右されない、もっとノイズに強いロジックの組み方があるのかもしれません。それは、今後の改善ポイントです。まとめというわけで、『ネオディケイドライドウォッチ』と『ネオディエンドライドウォッチ』のご紹介でした。今回はどちらも発想としては素直ですが、ディケイド&ディエンドの「他のライダーに変身/他のライダーを召喚」という特性のせいで、音声を用意するのがただただひたすら面倒でした。いう意味では、真似されにくい、価値のあるものにはなったのではないかと思います(←あまりに面倒なので多分誰もやらない、という意味で)。今回の作品は、塗装は#りんちゃんねるのK様、認識ピンの解析はクレーンの丈様と、他の方々の協力あってこそ完成したものですが、もう一人、兄にも多大に協力を頂きました。冒頭の「開発経緯」で、兄のアドバイスからネオディエンドライドウォッチが生まれることになったのは既に述べましたが、今回の作品ではとにかくいろんなライダーの変身音&攻撃音が必要で、その音声の録音に、兄が所有していた玩具コレクションが大いに役に立ちました。私:「あ、パーフェクトゼクターもあるやん。兄:「あるで」こんな感じでした。最近はYouTubeの動画の中で作品のポイントについての説明はしているため、大半の方は動画だけ見てこちらの詳細記事は見ていないと思うのですが、せっかくここを訪れてくださった方向けに、最後に動画では説明していなかった、今回の作品の裏テーマについてお話しておきたいと思います。今回裏テーマは2つあって、まず1つは『トランスチームガン・カスタムのリベンジ』です。『トランスチームガン・カスタム』というのは、一年と少し前に私が作った作品で、フルボトルの認識ピンをプログラムで読み取り、自分自身で好きなフルボトル同士の組み合わせ、ベストマッチを作り出せるという作品です。これは自分的には結構画期的で、すごいものができたと思っていたのですが、自分の他の作品(マリオガシャット、スマブラガシャット、ジーニアスフルボトル、カイザフォンXなど)と比べると、かなり低い評価に終わってしまいました。その要因としては、最終的に出来上がったものの詰めが甘く、挙動が全体的にもっさりしたものになってしまって完成度が低くなってしまったというのもあるのですが、それ以上に、『見た目がただのトランスチームガンと何も変わらない』というところが大きかったのではないかと、個人的には思っています。中で凄いことをやっていても、パッと見ではそれが何も伝わらない、それを痛感する出来事でした。いうこともあって、『トランスチームガン・カスタム』を作ったときに作成した『認識ピンを読み取るプログラム』の要素は、いつか他の作品作りに活かしたいというのは、ずっと思っていたことでした。それを活かすときには『トランスチームガン・カスタム』と同じ轍は踏むまい、ということも考えていました。今回、ネオディケイドライドウォッチの作成によって『認識ピンを読み取るプログラム』を使った作品は出来上がるだろうとは考えましたが、これもやはり、『トランスチームガン・カスタム』と同様に『見た目はただのディケイドライドウォッチ』で終わってしまう可能性が高いという懸念はありました。そんな折、兄のコメントからネオディエンドライドウォッチの作成という方向が示され、それがあれば見た目のインパクトという問題も、ディケイド単品で臨むよりは遥かにマシだろうと思いましたので、今回2つのライドウォッチを製作することにしました。1つの裏テーマは、これは些細なものですが、『カービィへの贖罪』です。ネオディケイドの方の動画を見ていただいているという前提で話を進めますが、『おまけ』のコーナーで『星のカービィ』の主人公であるカービィを題材とした『カービィライドウォッチ』が出てきます。これは、ディケイドとカービィが共に『ピンクの悪魔』と称されることがあることに因んだジョークなのですが、カービィへの個人的な『お詫び』でもあります。いうのも、実は過去にカービィを題材にしたガシャットを作るという構想があったものの、結局それを実現できずじまいになってしまっていたからです。『スマッシュブラザーズガシャット』を作ったときにカービィを対応させることができなかったため、その後に『マキシマムマイティXガシャット』が出た時に、「あ、これでロボボプラネット版のカービィのガシャットを作ればピッタリじゃん!」というアイデアは思いついていたのですが、自分がそこまでカービィのゲームの熱心なファンでもなかったというのと、あとちょうどその頃から長男との生活が始まって製作の時間がとれなくなってしまい、今日の今日まで来てしまいました。今回の機会に、ガシャットを作ってあげられなかったことに対するお詫びが少しでもできれば良いなあと思い、カービィだけ特別にライドウォッチを作成してみた次第です。説明は以上になります。長文に最後までお付き合い頂きありがとうございました。次の作品の構想については、なんとなくイメージはあるものの、自分の今の技術レベルだと非常に困難なので、実際に作るとなると、今回以上に時間がかかってしまうかもしれません。失敗する可能性も現状だと非常に高そうなので、正直やるかやらないかは迷い中、といったところです。それとは別に、これまでの延長線上でまだ少しやり残していることもあるので、そちらに先に取り組むことになるかもしれません。いつものごとく予定は未定ですが、今回はかなりしんどめの作品作りになってしまったので、できれば次はもっと簡単なのをサクッとやってしまいたいなあと思っています。追加で最大49個の番号(121〜169)を設定可能。121番目以降も同一ピン配列の出現は許可していない。この場合、追加できる番号は30個(121〜150)になる。コメントをキャンセルメールアドレスが公開されることはありません。hidaka_hirojiAmazonほしいものリストこちら自身の工作用に使いたいものがメインですが、必ずしも工作に使うわけではないのでご了承ください。MUDAなことをしよう。