読者です 読者をやめる 読者になる 読者になる

キノコの自省録

テクノロジーとコンテンツの融合を目指して

YMZ294で音が鳴らないときのチェック項目

一通り鳴らないやらかしをやったので、備忘録的に。

配線は間違っていないか

YMZ294以前の話というか基本中の基本ですが、何しろ線が多いので、よくミスります。例えば、Arduino NanoでPORTDを使用する時、D0とD1を逆にしないよう気を付けましょう。

また、ブレッドボードでの確認を最初にすると思いますが、配線が浮いていないか、導通しているか確認しましょう。

秋月で買った場合、C012100という水晶がついてきますが、脚を間違いやすいので、よく確認しましょう。

SO-GND間の抵抗

SOはソースフォロワだそうです。1KΩ程度の抵抗をGNDにつながないと、電圧が変化せず、音が鳴りません。

WRCS, A0

レジスタアドレスやレジスタ値を変更するときは、以下の手順で行います。

  1. /WR /CSをLOWに落とす
  2. A0やD0~D7のLOW/HIGHを設定
  3. /WR /CSをHIGHに変更

/WR /CSがLOWでセットアップ、HIGHでホールドということです。ホールド時に値を変更しないようにしましょう。

また、A0はLOWでレジスタアドレス、HIGHでレジスタ値です。逆にしないよう注意しましょう。

ボリューム、ミキサー、楽音

出力したいチャネルのボリュームを設定しましょう。チャネルAの場合、レジスタアドレス0x8に対して、0xfを書きましょう。レジスタ値を0x10とするとエンベロープモードになりますが、エンベロープは直感的にわかりにくい上、音が鳴らない原因にもなるので、音出し確認までは避けた方が無難です。

ミキサーの設定(0x7)は、鳴らしたいチャネルのビットを0にします。チャネルAのみを出力するのであれば、とりあえず0x7に対して0x3e(=0b00111110)を書き込みます。

楽音の設定は、チャネルAの場合、鳴らしたい音をレジスタ0x0, 0x1に書き込みます。秋月の資料にならって、0x0に0x1c, 0x1に0x1を書くのがとりあえず良いかと思います。

ソフト的には、これらボリューム、ミキサー、楽音の設定が最低限必要です。

Raspberry piでYMZ294を鳴らす

ArduinoでYMZ294を鳴らした記事はよく見ますが、Raspberry piで試した人は見当たらなかったので試してみました。

ちゃんと鳴ります。

3.3V問題

Raspberry piのGPIOは3.3Vです。YMZ294は基本5V動作っぽいので、3.3Vで大丈夫か、と思ったのですが、大丈夫でした。

データシート的には、こうなっています。

  • 4/6, /IC, /TEST以外は最小2.2Vでラッチ
  • 4/6, /IC, /TESTは最小3.5Vでラッチ

なので、ロジック電圧を印加するD0~D7, /WR, /CS, A0は2.2V以上でラッチします。/TESTは無接続、4/6はロジックで弄らない、ということで、/IC(リセット)が使えない程度です。

リセット使えなくても特に問題ないですし、どうしても使いたい場合でも1ピンだけなら割と何とでもなるでしょう。

Arduinoとの違い

鳴るとはいえ、正直YMZ294を扱うなら、Arduinoの方が楽です。理由としてはこんな感じです。

  • ピン配が面倒(ラズパイだとD0~D7がどうしても飛び飛びになる)
  • YMZ294のデータ入力に、ArduinoだとPORTDがそのまま使える
  • リセットがラズパイGPIO直だと動かない

ただし、Arduinoだと、PSG鳴らしながら何かするのは結構しんどいと思います。 Rasperry piはプロセス切っちゃえばいいので、その辺は楽ですね。

動作映像

とりあえずやっつけでドレミファソラシド

youtu.be

f:id:kinokorori:20170331234554j:plain

回路図も書こうと思いましたが、要らなさそうだしGPIOピン書くの面倒なので省略。

ちなみに、スピーカーは直結ではなく、D級アンプを嚙ませています。SOはドレイン接地かなにかだと思うんですが、SO-GND間に抵抗を挟まないと、圧電スピーカーが鳴らないので注意してください。

パーティクルで魔法エフェクト(1) - 炎魔法編

f:id:kinokorori:20170327235357p:plain

ウィッチクライドでは、いくつかの魔法をParticle Systemを使って表現しています。

今回は炎魔法を紹介。

動画の1:02あたりで、炎魔法が発動しています。火炎弾ですね。手元でポッと点火して、モンスターに向かって発射、着弾と同時に破裂といったエフェクトです。

ちなみにウィッチクライドはCocos-2dを使っていますが、パーティクルの基本的な考え方は、どのSDKでも一緒です。例えば、Qtにもパーティクルシステムが用意されていますが、パラメタが若干異なるものの、使い方や考え方はやはり一緒です。

CCParticleSun

Cocos-2dでは、いくつかのパーティクルがテンプレートとして用意されていますが、火炎弾は、すべてCCParticleSunをベースに作っています。

CCParticleSunは、ある点を中心とした所定半径内に、速度・加速度ともに0の赤色パーティクルを発生させ続けるテンプレートです。ブレンド条件がスクリーンなため、重なれば重なるほど色が白くなります。そのため、中心部は白色に発光して、円周部は若干赤みを帯びます。円周もいい感じで揺らぐため、さながら太陽のように見えます。

着火エフェクト

CCParticleSunをベースに、いくつかパラメータをいじっています。

CCParticleSun* charge = [CCParticleSun node];
charge.scale = .8f;
charge.position = ccp(startPos.x+40, startPos.y);
charge.texture = [[CCTextureCache sharedTextureCache] addImage:@"flame@2x.png"];
charge.startSpinVar = 360;
charge.endSpinVar = 360;
charge.totalParticles = 100;
charge.duration = 0.8f;
charge.gravity = ccp(charge.position.x, charge.position.y + 100);

動画で確認すると、手元の炎が若干左上に流れているのがわかると思います。

これは、charge.gravity = ccp(charge.position.x, charge.position.y + 100);で、左上に重力点を置いているため、パーティクルがそっちに引き寄せられています。

また、パーティクル自体も、通常のCCParticleSunは半透明の正円(fire.png)ですが、ここではブーメランに近い形状のパーティクルを使用しています。

これがそうですが、真っ白で見えませんね。

f:id:kinokorori:20170330213530p:plain

射出エフェクト

着火エフェクトとは別のCCParticleSunインスタンスを使用しています。これは、CCParticleSunのパラメータそのままで、サイズだけ小さくしています。

そのCCParticleSunをそのままターゲットに向かって移動(CCMoveTo)させているだけです。中心点を移動しながらパーティクルを発生させ続けているため、いい感じに炎の尻尾が表現されています。

爆発エフェクト

これも素のCCParticleSunです。サイズを0.6から3.0倍に150msでアニメーションしているだけです。

魔法詠唱ゲーのキャラデザ遷移

f:id:kinokorori:20170327235357p:plain

今回はゆるく、ウィッチクライドのキャラデザ遷移を紹介するなど。

ウィッチクライド ~君の声が魔法となる~を App Store で

バージョン1

f:id:kinokorori:20170328232439p:plain

一番最初に描いたバージョンです。名前も決まっておらず、とりあえずマジ子と呼んでいました。ピンクの髪と魔法使いの三角帽は最初の段階から固定。結構飄々とした性格という設定でキャラデしたので、なんだかちょっとイラっとくる顔をしています。

バージョン2

f:id:kinokorori:20170328232725p:plain

これは今でも戦闘画面で使用しています。ゲーム画面で使用する絵を先に描いた感じです。コートが半脱ぎなのかは永遠の謎。

バージョン3

f:id:kinokorori:20170328232952p:plain

バージョン1が幼過ぎたので、少し年齢を上げたらなんか変な感じになったバージョンです。純粋に変な絵なので割と即お蔵入りに。

バージョン4

f:id:kinokorori:20170328233149p:plain

バージョン3が変にねっとりしてしまったので、バトルの3頭身キャラに合わせて幼くしたバージョンです。ちょっと幼くし過ぎたので、再びボツ。

バージョン5

f:id:kinokorori:20170328233554p:plain

最終バージョン。ちょっとサイドの髪が気になるんですが、それ以外は大体イメージ通りになったので、これでFix.

こうして見比べてみると、バージョン4とバージョン5は結構似てますね。

その他

姫様はバージョン2、師匠はバージョン3、マリは1発。ということで実は結構描き直してます。描いているうちに画力が上がったり、前の描き方から変えたりしたので、そういう意味でも安定しませんでした。

ちなみにキノコ兵も一発です。素晴らしい。

f:id:kinokorori:20170328234256p:plain

規模の大きな個人ゲームを作る時に大切だと思ったこと

f:id:kinokorori:20170327235357p:plain

ウィッチクライドを開発して感じたことです。

ウィッチクライドはこちら。

ウィッチクライド ~君の声が魔法となる~を App Store で

個人開発だと、思いついたまま適当に開発してしまうことがほとんどだと思います。なにしろ結局全部自分でやるので、業務管理なんか面倒なことはしないでしょう。せいぜい機能の○×表やリソース管理表くらいじゃないですかね。

しかし、ラン系のミニゲーム程度ならば、適当に作り始めてもなんとかなってしまいますが、ウィッチクライドくらいの作品規模になると、適当に作ると途中でわけがわからなくなる、というか気持ちが乗ってこなくなります。

イデアを膨らませるために

ウィッチクライドの基本のアイデアはこうです。

「自分の声で魔法詠唱がしたい。魔法で敵を倒したい。」

魔法詠唱機能は、魔法作成フェーズと魔法実行フェーズとを明確に分けることを初期段階から考えていたので、認識エンジンの方向性についてはある程度ブレませんでした。

問題は、魔法実行フェーズ、つまりゲームでどう魔法を使うか?ゲーム性を持たせるか?というところについては、右から来る敵を適当に倒せばいいんじゃない?程度にしか考えませんでした。

ということで、ろくにゲーム性を検討せずに、ゲーム画面を適当に実装してしまい、結果酷いものが出来上がりました。それがこれです。

f:id:kinokorori:20170327235133j:plain

これはもう、次に何をすればいいのかも頭に浮かばず、完全に開発の手が止まりました。魔法エフェクトはとか敵とか主人公の動きとか、ノーデザインでプログラムで適当にやろうと思ったのが間違い。

そもそも魔法作成が必要なのに、そっちの画面を考えずに、いきなりゲーム画面出しても仕方ないのですが、画面遷移とか設計とか後回しでいいやとか思った結果、こんな適当なゲーム画面をまず作ってしまいました。

画面設計をしよう

途轍もなく当たり前の話ではありますが、プログラミングしながら画面デザインはできません。「とりあえず四角い箱動かせばいいや」はNGです。四角い箱を出すことすら面倒くさいです。

ということで、まず画面設計をする。これが物凄く重要だと感じました。Unreal Engineがブループリントという簡易画面設計ツールを用意しているように、画面の叩き台は最初に作っておくべきものなんですよね。

最低限必要な画面遷移と、各画面の画面設計をして、必要な部品をプロジェクトに取り込み、配置する。これを先にやらないと、気持ちが萎えます。

そんなわけで、まずは絵で画面設計とゲームデザインをしました。次に作ったのがこちらの画面。

f:id:kinokorori:20140501135530j:plain

右にモンスターを配置、左サイドの前衛キャラが防衛しつつ、魔法使いが魔法を撃ち込むという感じです。もうほぼ今の形に近いです。

もう少しデザインを詰めて、できたのがこちら。

f:id:kinokorori:20170328224521p:plain

キャラクターの絵柄やヒロインの位置など、デザイン面は大きく違いますが、ゲームコンセプトとなるベース部分はほぼほぼリリース版と一緒です。とりあえず、初期段階でここまで詰めました。

いきなり戦闘画面に行っても魔法が撃てないので、戦闘画面は一旦置いておいて、メニュー画面系も作りました。初期イメージはこんな感じです。

f:id:kinokorori:20170328225029j:plain

f:id:kinokorori:20170328225028j:plain

※ヒロインの絵柄がバラバラですが、なかなか納得がいかず、最終バージョンになるまで、何度もリテイクしました……。

デザインの差はあれ、ここはそれほど大きく変わる部分ではないので、こちらも基本は大差ないです。

ここまであれば、ゲーム性を確認できるまでの基本画面は繋がります。コード開発はそこからが本番、といった感じです。

ということで、まずは最低限ゲームが成り立つまでの画面設計をすることをお勧めします。特に多少規模が大きいゲームで画面設計がないと、どうにもうまくいかなくなります。

実際、ウィッチクライドの前に別のゲームを作りかけていたのですが、ゲームとしての全体像を最初に作らなかったために、途中で心が折れてしまいました。

個人での特許出願のために必要なプロセス(4) - 出願編

残すは出願のみです。

個人での特許出願のために必要なプロセス(1) - 識別番号取得編 - キノコの自省録

個人での特許出願のために必要なプロセス(2) - 提案書作成編 - キノコの自省録

個人での特許出願のために必要なプロセス(3) - 出願費用の支払い編 - キノコの自省録

1. 特許庁のWebページから、電子出願サポートソフトをダウンロードしてインストールする

2. 電子証明書をゲットする

3. 申請人登録を行い、識別番号を取得する

4. 提案書ひな形ファイルをダウンロードして、ガイドラインに沿って提案書を作成する

5. 出願費用を支払って、提案書に納付番号を記載する

6. インターネット出願アプリで出願を行う

6-a. 記載不備がある場合は修正して再度出願

出願処理

インターネット出願アプリから行います。

出願アプリを立ち上げて、「出願」タブを選択し、「送信ファイル」フォルダを選択します。

すると、左上の「文書入力」ボタンと「合成入力」ボタンが有効になります。

f:id:kinokorori:20170327223148p:plain

1つのhtmlファイルを送信ファイルに変換する場合は「文書入力」ボタンを、複数のhtmlファイルを合成して送信ファイルに変換する場合は「合成入力」ボタンを選択して、提案書ファイルを入力します。

提案書ファイルを入力すると、変換処理とともに、チェッカーが走ります。なお、この段階では特許庁にファイルは送られません。

f:id:kinokorori:20170327223618p:plain

正常ならOK, 警告なら内容を確認して、問題なければ特許庁に出願OK、エラーがあるならば修正して再度変換処理を行う必要があります。

この例の場合は警告ですので、中身をチェックして、必要に応じて修正を行います。警告やエラーの具体的な内容は、html形式で出力されます。

f:id:kinokorori:20170327224258p:plain

大抵の場合、一発じゃうまくいかないと思います。頑張って修正しましょう。特に、【国際特許分類】は、全角スペースを使って正しく桁数を合わせないといけないので、蹴られた場合は良くチェックしてみましょう。

また、一度は印刷して確認してみることをお勧めします。特に図が意図通り出ているか、潰れていないか、小さすぎないかを確かめましょう。

f:id:kinokorori:20170327223150p:plain

もう問題なしという場合、出願したい提案書ファイルを選択して、「オンライン出願」ボタンを選択します。これでようやく特許庁に実際に出願が行われます。

ちゃんと受理されていれば、2, 3日もすると、ステータスが「接受」に変わります。これが完了状態です。

もし、チェッカーには引っかからない類の書類不備等ある場合、「接受」にならず、差し戻しされるようです。

f:id:kinokorori:20170327224920p:plain

出願までの一連の流れは以上です。かなり手間は多いですが、それほど難しくはないという感想です。

出願までならば費用もそれほどかからないので、(業務発明に該当しない)良い特許ネタがあれば、出願してみるのもよいと思います。

なお、審査請求は10万飛ぶので注意してください……。

個人での特許出願のために必要なプロセス(3) - 出願費用の支払い編

続き

個人での特許出願のために必要なプロセス(1) - 識別番号取得編 - キノコの自省録

個人での特許出願のために必要なプロセス(2) - 提案書作成編 - キノコの自省録

1. 特許庁のWebページから、電子出願サポートソフトをダウンロードしてインストールする

2. 電子証明書をゲットする

3. 申請人登録を行い、識別番号を取得する

4. 提案書ひな形ファイルをダウンロードして、ガイドラインに沿って提案書を作成する

5. 出願費用を支払って、提案書に納付番号を記載する

6. インターネット出願アプリで出願を行う

6-a. 記載不備がある場合は修正して再度出願

今回は出願費用の支払いについて。

出願費用の支払い

特許出願費用は、前払いです。出願処理をする前に払う必要があります。

支払い方法は次の4つがあります。

手数料の納付方法 | 経済産業省 特許庁

特に理由がない限り、電子現金納付をお勧めします。お勧めしますというか電子現金納付一択です。

電子現金納付以外は特許庁に対して事前の手続きが必要なので、めちゃくちゃ面倒くさいです。

電子現金納付

ペイジーを使って支払いを行います。

「いつでも、どこでも、ペイジー。」日本マルチペイメントネットワーク推進協議会

電子現金納付 | 経済産業省 特許庁

複雑そうに見えますが、そうでもないです。ワンタイムパスワード程度。

まず、「インターネット出願」アプリを立ち上げます。

f:id:kinokorori:20170325150245p:plain

※初回はどこかで「電子現金納付専用パスワード」と「電子現金納付者カナ氏名」の登録処理が入りますので、適切に入力して、パスワードを保管しましょう。

補助タブを押して、納付番号取得を選択します。

納付ログイン画面が出てくるので、電子現金納付専用パスワードを入力してログインします。

f:id:kinokorori:20170325151716p:plain

f:id:kinokorori:20170325150246p:plain

次に納付番号請求画面が出てくるので、四法を「特許」、手続種別を「出願関係」に選択します。

手続料金自動計算システムのリンクから、正確な金額を確認します。2017年3月現在は14000円です。

実行すると、「収納機関番号」「収納機関」「納付番号」「確認番号」が返ってくるのでメモします。

(申請する気ないのに実行すると、虚偽申請になって怒られるので、スクショはなしです)

これらの番号を使ってインターネットバンキング、またはATMから30分以内に振り込みます。

大抵、ペイジー専用メニューが用意されているはずですので、探してみてください。

例えば、三菱東京UFJダイレクトでは、「税金・各種料金払い込み」がペイジーです。

完了したら、特許提案書の表紙の【手数料の表示】を次のように修正します。

【手数料の表示】      
    【納付番号】  XXXX-XXXX-XXXX-XXXX

XXXX-XXXX-XXXX-XXXXには、先ほど支払った納付番号を記入します。

これで完了です。

他の支払い方法

せっかくなんで、その他の支払い方法も一応紹介しておきます。

予納

予納は予納口座を作成して、予めそこにお金を入れておく仕組みです。

都度支払い処理をする必要がなくなるため、大量に出願する企業などはこちらの方が便利かもしれませんが、個人ならばここまでする必要はないでしょう。

インターネット出願ソフトで初回の申請人利用登録時に予納台帳番号を取得します。※取得できるのは、初回のみです。
...(略)...
『予納書』に手数料等の見込額に相当する特許印紙をはり付けて特許庁へ提出します。

ということで、予納台帳の作成は簡単ですが、残高追加には特許印紙を特許庁へ提出する必要があります。

現金納付
初めて特許庁専用「納付書」を請求する場合は、『現金納付に係る識別番号付与請求書』を提出します。
2回目以降は、『納付書交付請求書』を提出します。
提出後、7日から10日程度で特許庁専用「納付書」が送付されます。

この納付書を日本銀行の窓口に持って行って振り込みを行います。

日本銀行の窓口で振り込む機会なんかそうそうないので、やってみるのも面白いかもしれませんが。

口座振替
特許庁へ『特許料等手数料ダイレクト方式預金口座振替納付申出書兼特許料等手数料ダイレクト方式預金口座振替依頼書(新規)』(以下、『申出書』という。)を提出します。

申出書を提出して3週間から4週間後に「振替番号通知」が送付されます。

提出も面倒ですが、そもそも時間がかかり過ぎるのであまりやりたいとは思いません。

次回

個人での特許出願のために必要なプロセス(4) - 出願編 - キノコの自省録