うつろぐ

文章

Google検索した際のデータを、自分のページのサーバーのMySQLに投げるChrome拡張をつくる

動機

ゼミで「サーバーサイドをやっていこう」って感じになって、phpやってMySQLやって、みたいな感じになった。そのときに「何かデータベースを作ってこい」という課題が出たので変なデータベースを作ってやろう、となって、Google検索をした際のキーワード・日時をデータベースにしたら何となく面白そうかな、と思ったのでめちゃくちゃ苦戦しながらやってみました
何せサーバーサイド自体初めてなので酷くグダりました

試行錯誤の大まかな流れ

まあGoogle検索をかけると動作するようなChrome拡張だろうとなる
Chrome拡張の内部には流石にphpは書けないので別phpページで送信しようとなる
Chrome拡張からphpページへhttpリクエストを飛ばそうとしてみる
phpページがhttpなのでhttpsGoogle検索ページからhttpリクエストを送るとだめっぽい
→GETを含めたリダイレクト(Google検索→phpページ→Google検索)で何とかならないかな?となる
Google検索のページの仕様を利用して何とかなる

GETの値でMySQLにデータを投げてGoogle検索ページにリダイレクトするphpページ

まずはここですね。 そこまで説明は要らないと思います。
日時はphpのdateにあるものをつかう
リダイレクトはjsで書く方がすきなのでそうしています

<!DOCTYPE html>
<html lang="ja">
<head>
  <title>SUBMIT</title>
  <meta charset="utf-8"></meta>
</head>

<body>
  <?php
  $mysqli=new mysqli("localhost","username","password");
  $mysqli->set_charset("utf8");
  $mysqli->select_db("user_db");

  $query=$_GET["q"];
  $year=date("Y");
  $month=date("n");
  $day=date("j");
  $hour=date("G");
  $minute=date("i");
  if($query!=""){ //キーワードが空の場合はデータベースに挿入しない
    $sql="INSERT into GoogleQuery_table (query,year,month,day,hour,minute) values ('$query',$year,$month,$day,$hour,$minute)";
  }
  $mysqli->query($sql);

  $close_flag=$mysqli->close();
  if($close_flag){
    if($query!=""){
      //phpのリダイレクトはめんどいのでjsで書いてしまう
      echo "<script>window.location.href='https://www.google.co.jp/search?first=false&q=";
      echo $que;
      echo "';</script>";
    }
  }
   ?>
</body>
</html>

リダイレクト先の「first=false」はリダイレクトの無限ループを防ぐためのフラグのようなものです。(勝手に追加した)
これについては後述します

Chrome拡張

まずmanifestファイルから。これは何も難しいことやってません
example.comはさっきのphpページが置いてあるドメイン名にあたります

{
  "manifest_version": 2,
  "name": "検索ログくん",
  "description": "検索ログをおれのMySQLに送る。自分用。",
  "version": "1.0.0",

  "content_scripts": [{
    "matches": ["https://www.google.co.jp/search*"],
    "js": ["myscript.js"]
  }],

  "permissions": [
    "http://www.google.com/",
    "https://www.google.com/",
    "http://example.com/"
  ],

  "icons": {
    "16": "./がぞう.png",
    "48": "./がぞう.png",
    "128": "./がぞう.png"
  }
}

次にjs。今回の肝です
思いついた瞬間に「あああああ!」となって書いたのでかなり汚いです
submit.phpはさっきのphpページです

var url=window.location.href;
var query;

//qを抜き出してそれを用いてリダイレクト
if((url.indexOf("https://www.google.co.jp/search?q")!=-1) && (url.indexOf("#q=")==-1)){
  //新規タブ初めての検索のとき(first=falseなし、#qなし)
  query=url.substring(url.indexOf("q")+2,url.indexOf("&"));
  window.location.href="http://example.com/submit.php?q="+query;
}else if ((url.indexOf("https://www.google.co.jp/search?first=false")!=-1) && (url.indexOf("#q=")!=-1)) {
  //二回目以降の検索のとき(first=falseあり、#qあり)
  query=url.substr(url.indexOf("#q")+3);
  window.location.href="http://example.com/submit.php?q="+query;
}

何やら奇っ怪な条件のもとでリダイレクトしています。
これを説明するより、Google検索ページの仕様を説明したほうがわかりやすいのでそうします

Chromeで新しいタブからキーワードtestでGoogle検索をするとこんな感じのURLになります。
https://www.google.co.jp/search?q=test&oq=test&aqs=chrome.よくわかんねえ数字と記号の羅列&sourceid=chrome&ie=UTF-8
ここからこのようによくわからん箇所を省いても同じページが出ます
https://www.google.co.jp/search?q=test
更にここからこのように架空のGET変数を追加しても同じページが出ます
https://www.google.co.jp/search?first=false&q=test
で、上の三つのURLのとき新しくtest2で検索すると、URLの末尾に「#q=test2」というのが付加されます
こうなるとq=testがあってもtest2の検索結果を示すようです

…以上の仕様を上手いこと利用してGET込みのURLをフラグとして用い、リダイレクトの無限ループから抜け出すコードが
上のコード(+さっきのphp)になります 説明がへたくそすぎてもう読んでくれとしか言えない

おわりに

今回httpリクエスト辺りを試しているところで「セキュリティ関連むずすぎる」になりました むずすぎる ご唱和ください むずすぎる
やはりローカルでものを作っていたときより遥かに足止めを食らう確率が上がりましたね
ローカルでのプログラミング経験がない人はプログラムの書き方でも足止めを食らうことになるので、稀にいるサーバーサイドから始める人ってめちゃくちゃコーディング嫌いになりそうだなとおもいました

おわり

【雑記】Audacityのステレオミキサー録音がイヤホンを挿してるときだけうまくいかない謎の現象の解決

もうちょっと雑にブログをやっていきたいよね、ということで雑記を書くことに。いや雑はよくないんだけど。気軽にの方が正しい?

 

「作業用BGMが電波に依存するの駄目すぎるな~」と思ってAudacityでステレオミキサー録音して何曲か私的利用の元に音源を取ろう、ってなって前のPCと同じノリでステレオミキサー録音したら、何も録音されず無音だった。「無」が録音された ウケる ウケない

それで解決策を適当に調べていると、まず「そもそもステレオミキサーが無効になってるのでは」になった 早速スタートメニューの検索窓に「サウンド」と入力し(以下たぶんこれを「"サウンド"でサーチ」とか言う)サウンド設定を確認しました(ちなみに今回はWindows 10の場合です)

f:id:Distorted_Unchi:20170205004838j:plain

マジなのかお前

無効になってました

「ステレオミキサー」の上で右クリック→有効で有効にする。

f:id:Distorted_Unchi:20170205005100j:plain

f:id:Distorted_Unchi:20170205005147j:plain

(ここではマイクを無効にしてるけど規定のデバイスにしなければ無効にしなくても何でもいい)

これで録音いけるかな~と思ってもう一度やってみたけど、また無を録音した。そこからは色々試行錯誤した結果、イヤホンを外して録音するとうまくいく謎の現象に遭遇。ここまでにRealtekの周りの設定の存在とかを認識していたので、「これはもしや...?」と思ってある設定をいじったら無事解決しました

そのある設定ですが、結論から言うと

f:id:Distorted_Unchi:20170205010107j:plain

 これ

えーっとこれはどこにあるというと、まず"realtek"とかでサーチして「Realtek HD オーディオマネージャ」を開く

f:id:Distorted_Unchi:20170205010310j:plain

赤で囲んである「デバイス詳細設定」

f:id:Distorted_Unchi:20170205010107j:plain

 (使い回し)

赤丸のところをチェック 自分の場合これで解決しました たぶん「録音デバイス」はこっちじゃなくてもよかったけど、「再生デバイス」が重要なんだと思う

 

 

ちょっと解説・推測

このデバイス詳細設定の「再生デバイス」で上にチェックした場合、サウンド出力を一つのオーディオストリーム(スピーカー)で行います 下は「Realtek HD Audio 2nd output」というオーディオストリームを別に用意してそれを外部デバイス(イヤホンとか)用に割り当てます

僕の場合初期状態では下になっていた。 「じゃあスピーカーとイヤホン両方から音が鳴るんとちゃうんかい」という感じですが、

f:id:Distorted_Unchi:20170205012312j:plain

 こうなってて、イヤホンを挿すとイヤホン用のストリームしか出力してない 自分がいじった感じだと片方しか出力できないっぽい

 

(ここから推測)そうすると、初期状態では「再生デバイス」の設定が下、かつイヤホンを挿したときスピーカーが使われない状態だったわけですが、ここで録音することを考えると、録音の入力としてどちらのオーディオストリームを取るのか選ぶ必要が出てきます(オーディオストリームが二つあるので)

それをピンポイントに指定する設定は見当たらなかったので、どちらかを勝手に選んでると思われるけど、ここで使われていない「スピーカー」を常に選んでいるために無を録音しているんではなかろうか、という結論に至りました

 

この推測の元に「再生デバイス」の設定を上にしてオーディオストリームを「スピーカー」単一にして、それをステレオミキサーで録音させることによって解決しました たぶん正しい たぶんこう

 

なんかもうほんとに自分の文脈で発生した問題への解決メモなので、自分の文脈の文章になってしまってぐちゃぐちゃですが、同様の問題を抱えている方の助けになればなと思います といっても殆ど自分用になってしまった

P演習Ⅱのゲームのランチャとか

うつです。午前5時です いえい 

ア パソコン買えました ドスパラさんのAltair F-13というやつです 「タッチパネル対応とか指紋認証とかいらんから標準的な安いやつくれ」つって色々探してたらたどり着きました 安いしかっこいいしよいです シンプルイズベストなあなたに是非 i5-7200U、SSD256GB/RAM8GBで本体税抜きで9万切るんですこれ まあOfficeとか色々入れてたら税込み13万とかになった

f:id:Distorted_Unchi:20170122042736j:plain

f:id:Distorted_Unchi:20170122042746j:plain

こいつの難点としてはけっこうキーボードが意味不明な配置をしてるところですかね あとは充電中の状態を表示するようなランプがどこにも見当たらない 電源ランプは電源ボタンと一緒になってます(電源ボタンが光る)

f:id:Distorted_Unchi:20170122044321j:plain

キーボード氏です 思ったことを列挙すると

・スペースキーがめっちゃでかい

・左のシフト小さすぎ

・というか左端のキーが全体的に小さい

・¥、ろの位置が謎

こんな感じです 他は快適でした

 

ふつうにAltair F-13のレビューをした

本題に入りますか

1/16にプログラミング演習Ⅱの発表会があって、そこでわたしたちは「WaveHopper」という声を使ったゲームを作り、その中である種のランチャーを導入したのですが、そこで起こったうんちなこととかも含めてメモしておきたいぜ、というのが今回のメインの話です ブログとしてのコンテンツ力がゴミ以下

ゲーム氏はこんな感じです

f:id:Distorted_Unchi:20170122060013g:plain

マイクからの音声入力をフーリエ変換して、Hz帯ごとのdB値を地面のY座標に対応させて地面が動くようになっていて、それと左右キーでの横移動(自力での上下移動はない)で敵をかわすゲームです 実装はProcessing フーリエ変換とか難しそうなこと言いましたが実際はMinimのFFTというクラスがけっこうやってくれます 物理演算はFisica

そんでこのゲームには対戦モードもあって、今は片方が敵(3種類いる)を送ってもう片方が自機を操作する感じになってます 「今は」というのは、当初は双方が敵を送り合いつつ時期を操作する白熱バトルにする予定だったのですが、締め切りがやばかったのでより実装が簡単そうな分業スタイルになりました、というだけです うんち

 

ここからが大事なとこで、「敵を相手に送る」という操作は、最初はこんなふうに「送りたい敵のゲージをクリックしてから送りたい位置をクリックする」というものでした

f:id:Distorted_Unchi:20170122055735g:plain

前述の通り当初は双方が自機を操作しながら敵を送り合うバトルにする予定だったので、この方式だと(とくに上のほうに敵を配置するときに)マウスの移動量、とそれに伴う操作の手間が大きすぎてまともに自機を操作できないのでは、という感じになりました 実際つらかったです 声とキーとマウスの三つの操作がある中でこの手間は大きかったです そうして敵配置ランチャーができました

f:id:Distorted_Unchi:20170122055847g:plain

(何故か自分のところに送ってるのは気にしないでください)

マウスの左ボタンを押すとランチャーが固定されて、そこから送りたい敵のゲージがある方向に少し移動して離すと敵を送ることができます。敵を送るときに円形ゲージの外に出て離すとキャンセルされます このランチャーを採用して、攻守を分業したものがとりあえず発表したときのUIだったんですが、これもいくつか難があって、まずマウスパッド勢にこの小さい操作は難しいかもなぁと思います 発表まではマウス勢の自分は全然気になってなかったのですが、今になってだいぶ難しさがわかってきました ただこのへんは円の大きさを微調整すればよさそうかな~という感じはある

 

もう一つの難点としては、本当に小さいことかもしれないんですが、この発表時の仕様だと「敵を送ったときのフィードバックが『送った敵のゲージが0になる』以外に何もない」、かつ「敵を送った直後にランチャーがマウスの座標に瞬間移動する」ので、「敵を送る直前にランチャーの指定座標がずれて、ずれた位置に送られた感覚」に襲われるのではないか、という懸念があります さっきのランチャーのGIFをよく見てるとわかるかも まあゲームとしてはワイワイやる感じでシリアスなものではないし、どちらかというと慎重にならなくてもいい側である攻撃側だし、ずれたと感じるときのずれの程度も小さいのでこのゲームの本質からすると大した問題ではないのですが、ほかのシリアスなゲームにこのずれがあったらたぶん終わりだろうし、何より「自分の操作が報われていない」感じがして個人的に本当にムカつきます

 

これを解消するのに

f:id:Distorted_Unchi:20170122073514g:plain

こうとかかな、と思ったけどどうなんだろう。フィードバックは良さげだけど、すぐマウスを次の位置に動かしたい人にとっては一時停止するのは違うかもしれない。わからん。解散。

...というのが今回書きたかったことです。ブログにする必要あったんだろうか...

 

あ、今回はプログラムはこっちで公開とかはしません。うんちなので

場と欲求について

はい うつです 発表会以外でブログを書いていなくて「発表会にしか思うことがないのかよ 発表会大好きかよ」となってしまったので書いています まあ他にきっかけもあったりするんですけどだいたいそんな感じです いかに自分が何もしてないか伺い知れますね

 

まずそのきっかけから書こうと思います

きっかけ

僕が入った学科ではパソコンがまあ必須なのですが、一年生のうちはVAIOくんを学校側が貸してくれます 今もそれでこの記事を書いてます 二年次からは自分で買ったパソコンを使わなきゃならんのですけど...早く買いたいですね 僕の家には一応家族のパソコンが一台あってそれを使ってウディタいじるくらいはやってたのですが、自分のパソコンを所有したことがなかったのでVAIOくんが来たときはそりゃあもうテンション上がりましたね そのころはコーディングも「やっていくぞ!!!」という感じでしたね 僕は受験期とかは自分の部屋では色々なもの(ゲームとか)が目に入って勉強できずにずっと図書館で勉強してたような人なんですが、このころのパソコンに関してはもうテンションが上がりすぎて自分の部屋でもコーディングとかにほぼ100%集中できていました すごい。 

ただ、最近になって「自分のパソコンを(買ったわけではないけど)所有している」という新鮮さもなくなってきて、部屋でコーディングするとゲーム(主にモンハン)が気になって、結果無限にモンハンをしている、という状況になってきたので、「これは自分を取り巻く環境について考えるべきなのでは...?」となって、「場と欲求について」というタイトルの記事でそれを考えようとしています。ほぼ自分用なので、皆さんに当てはまらない部分が多々あるし殆ど箇条書きなのですが、皆さんに当てはまることも少しあるかと思います いやなんでこんなに自信があるの

「場」ってなに

ようするに「自分を取り巻く環境」のことです なんか「場」がかっこよかったのでこういう表現にしました 中二病なので 「『もの』を保有している空間」みたいな定義もできそう この先「もの」が重要になるのでこういう書き方もしておきます

欲求に勝つのがつらい

この記事の前提として「できるだけ欲求に気の持ちようのゴリ押しで打ち勝つことはしたくない」というのがあります 僕の単なる欲求です 中毒体質なので

人間はその「場」にある「もの」に対する欲求でしか動かないのではないか、と思います 図書館で勉強しているときにスマホがあるのとないのとではだいぶ効率が違うと思います そういうことです 自分自身、勉強をそんなに楽しいものだと思っていないはずなのにスマホがないだけで勉強が楽しくなる体験を何度もしています ただ長時間やっていると飽きるので限度がありますが... 

こういう意味ではその「もの」に対する欲求の強さというのがすごく大事です 前述のように、家という「場」には色々な「もの」があって、作業の欲求より強い欲求が向いている「もの」があると十中八九そっちに吸い取られてしまいます こういう意味では図書館は最強の作業空間と言えると思います(図書館は静かすぎて勉強しずらい...みたいな人もいるみたいです わりとわかる ただ欲求とは別の観点なのでおいておきます)

ここからはかなり個人的な話なので小文字で書きます 僕は人のいないところでは当然のように独り言を垂れ流すタイプの人間で、独り言を言って自然に言葉にすることで考えがまとまったりします 個人的に黙々と書き出していくより好き なので、それができない図書館などではモヤモヤすることがあり、しかし自宅ではモンハンに吸い取られてしまうので、自分としては「机と椅子しかなくて自分しかいない空間」が真の理想の作業空間だったりします

また、こういう観点で考えるとゲームセンターはめちゃくちゃヤバい場であることがすぐにわかります ゲームしかないんだもの 僕はゲーセンに行くと有り金を全部はたいてチュウニズムやってることとか結構あります めちゃくちゃ体力消耗するし時間も溶けるしやめたい めっちゃ混んでたりするとすんなりやめられたりするので逆に助かったりします

「移動」

地味に重要なのですが、「移動」は何も「もの」を含んでいない「場」だと捉えることができます この点では図書館と同じなのですが、「移動」では両手が塞がっていたり座れなかったり机がなかったりするので基本的になにもできません この「移動」にいる時間が長かったりするともう完全に無ですよね 欲求不満が爆発する なので人間は「移動」から基本的には逃れたいと思っていると思います

ただ、「移動」にも利用価値があって、「移動」にいる間は基本的に頭しか使えないので、無限に考え事をすることができます 何の邪魔もないので最高 しかし、移動中にノートに考えたことをきっちりまとめたりすることはなかなか出来ないと思います スマホにメモればよさそうですね スマホすごい ただ自分は紙やノートにまとめる方が好きなので、これも不満だったりします めんどくさい人間だ

この「移動」の無から逃れる方法は、本を読んだりスマホをいじったりとかしかないと思います スマホすごい(2回目) 飽きない限りは「移動」の無から逃れることができます

 

ここでめちゃくちゃ個人的な話をします

スマホ壊れました

 

アーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

あと自分は本にあまり興味がなく、なかなか電車の中で読むような本を探す機会が取れません...

なのでここからは完全に個人的な話になりますが、「移動」を完全な「無」だとしたときの一日の中での「場」について考えていきたいと思います

「場」の分析(うつくんの場合)

「移動」が完全に無だと、移動途中に「もの」を含んだ別の「場」があるときに、欲求を叶えるためにその「場」に寄り道しがちです 僕は十中八九そうなります

それを中心に、「午後のみ授業がある日(バイトなどほかの予定はなし)」を考えていきたいと思います

まず、出発地点が家で、あまり作業ができないので、出来れば早めに大学に着いて大学の図書館で作業をして進捗を出したいのですが、家の先には「移動」という「無」が待っているのであんまり家を出たくありません ここで「授業に間に合うギリギリの時間まで家から出ない(①)」と「頑張って早く家を出る(②)」の2パターンを考えたいと思います

f:id:Distorted_Unchi:20161118202953j:plain

 

手書きのきったねえ図

図の見方ですが、行動が進行するにつれて上の「家」から下か左右に移動していき、最終的に下の「家」にたどり着いて終わり、という感じです 因みに大学に行くまでの途中の駅や大学の最寄り駅にゲーセンが山ほどあります

この図を書くにあたって思い付く限りの「場」を考えてみましたがこんなもんでした

①では行きは時間ギリギリなのでゲーセンに行く余裕がなく「移動」から「ゲーセン」への道はありません 帰りがやばそうですね

②では行きにも時間の余裕があるので行きもゲーセンに行ってしまいそう 欲求に飲まれてしまう

どちらにしても、「移動」からの「ゲーセン」を防ぐ構造はあまり無かったので、もうとっととスマホを修理するなり本に興味を持って本を借りるなりするしかなさそうでした 残念

なんか

「移動」の「無」のことを考えていると、「結局スマホのソシャゲは「移動」の「無」から逃れたい人たちが続々と沼に沈んでいっているのでは?」みたいなかんじになりました 確かにスマホである程度楽しいゲームができるのはこの「移動」の「無」を覆す画期的なものでめちゃくちゃすごいと思うけど、自分はソシャゲの面白さはゲームの面白さと全く別のところにあると思っているので、「無を覆せても絶対ソシャゲはやらないぞ」と思いました

 

おわり

 

 

 

 

P演習「Pyocap」(中野キャンパスのペットボトルキャップ回収Boxの模倣+α)について

P演習発表会での成果物です。 

 

www.dropbox.com

 

まああんまり書くことないんですが。とりあえず公開する上で分かりやすい場所ということでここに置いておきたいのです Githubは使えるようになったらやります

 

少しだけ書きます

 

今回の発表会のテーマが「中野キャンパスにあるものの模倣」だったのですが、発表会が始まるまで僕は「模倣に色々と付随されたものが見れるんだろうな」と思ったので僕も模倣に何かを付随させたものを作ろうとなりました。

僕はDAN-BALLさんの「粉遊び」や「メタ水」(どちらも現象を再現した物理シミュレーションゲーム)がすごく好きなので、そこから模倣に物理エンジンをくっつけて、物理シミュレーションゲームっぽいものを作ろうと思ってました。そこでペットボトルキャップ回収Boxと出会ってしまったので、作りました

ここで「模倣に色々と付随されたものが見れるんだろうな」の話に戻るんですが、いざ発表会が始まると「模倣」そのもののクオリティがやばいのとか、「模倣」が視覚的なものだけではなく感触とかにまで及んでいるもの(コンセントプラグのアレとかそう)とかが散見されて、宮下先生からも「現実とバーチャルの区別がつかなくなる」という話があって、「模倣」そのものの良さで勝負してみたさもあったなあ、となってしまいました なんというかもうすごくもやもやしてしまいました まあそれでも自分が今回の発表で身につけたものをしっかり確認して次に進むべきなのだとおもいます

 

こだわり氏なんですが、まずボムの実装は頑張りました というか僕はそこまで強くないのでそもそもライブラリをちゃんと使うのが大変だったんですがね Fisicaではものを置くまでは簡単にできるのですが、置いた後のものを制御するにはオブジェクト指向のさわりの部分が理解できていないとダメだったのでボムの実装には苦労しました。

あと地味にUI凝りました キャップをリサイクルするボタンにあまりスペースが取れなかった(本来もっとボタンを配置する予定だったので)ので、ボタンを「Recycled Caps:」の近くに配置し、ボタンには最低限「リサイクル」だとわかるマークを描いた結果、割と分かりやすい感じにはなったと思います ただ、発表会でもすごく良いUIの作品を何個も見てウオオとなったのでさらにUIについては考えていきたいです

 

おしまーい

 

 

音ゲー×タワーディフェンス「めっちゃ守る(体験版)」について

はじめに

EP演習で音ゲータワーディフェンス(当時「防衛ゲーム」と広義に言っていたけどタワーディフェンスでいい気がする)を発表したのですが、「ゲーム制作たのしい」とか言って全然プレゼンの練習も準備もしなくて本番で失敗してしまったためここで色々このゲームについてフォローをしたいと思います

 

公開

体験版(EPでやったものと同一)公開します。というか置いておきます。

www.dropbox.com

 

Readmeとこの記事の下の方の説明を読めばどうにかなると思います。公開期限はまた決めます

着想

まああの形態が決まったのは発表でも説明した(説明できた)、メジャーな音ゲータワーディフェンスに見られる「降りてきたものを叩く」という共通した事項に気付いたときだったんですが、最初は「ゲームのジャンルを2つ掛け合わせられたらかっこいいよね~~~」みたいなノリでした。ゆるゆるだったのでそれから暫く発展がなかった。

たぶん最初の進展はCHUNITHM(チュウニズム)という音ゲーを始めたのがきっかけだと思います。CHUNITHMという音ゲー、調べてもらえばわかると思うんですが、曲をプレイする際にキャラとスキルを選んで、それらがクリアゲージや新曲の解禁に影響するようになっています。ただしノーツの判定やスコアには影響しません(このへんがよくできてるな~と思う)。で、ここで「音ゲー」と「キャラのステータス」のクロスに良さを感じて、「自分もこんなの作りたいなぁ」と思った(中二病なので)ことが最初のきっかけだったと思います。そのあと暫くして前述の「降りてきたものを叩く」の発想も合わさって勝手にテンションが上がってました

 

ゲームの説明

かなり複雑というか新しいゲームを作った自覚があるので、あそこまで説明できないと大量の謎が残ったと思います。なので説明します

 

f:id:Distorted_Unchi:20160528213817j:plain

パワポくんさんです これ、2分以内に収めるために文章をはしょったのでわけがわからない

 

まず「敵の拠点」から敵(今回はスライム)が出てきて「自分の拠点」に向かって進んでいきます。途中に三つある四角いのが防衛エリアで、それぞれに8個ずつ砲台が置いてあります。上の防衛エリアから順に1、2、3と番号をつけるとすると、敵の集団は1、2、3と順番に通っていくのでこちらは1、2、3で順番に防衛していくわけです。敵はまとまって来るので1で防衛している間に2に敵が来ることはないことになっています。

敵には普通の強さのスライムと、強いけど水には異常に弱いファイアスライムの二種がいます。ファイアスライムには水属性の青い砲台が有効です(ちなみに砲台をクリックすると砲台のタイプを変えられます)が、これは通常の砲台より基本攻撃力が低いためこればかり置いてると普通のスライムが倒しきれなくなります。このへんがタワーディフェンスっぽい要素のつもりで、このへんを今後発展させることが出来たらいいな~と思ってます。

 

f:id:Distorted_Unchi:20160528231405j:plain

f:id:Distorted_Unchi:20160528231529j:plain

f:id:Distorted_Unchi:20160528231540j:plain

プレイ画面です。上から1、2、3での防衛になります。「順に防衛していく」という設定のため、全てのフェーズで敵の数(=ノーツ数)は同じであり、敵の種類ごとの数も同じです。また、当然ではありますが前のフェーズで敵が受けたダメージは次のフェーズの開始時に引き継がれます。こうして防衛していった結果HPがゼロになった敵は倒されて「幽霊ノーツ」(3つ目の画像の下の方にいるやつ)として表示されます。この状態の敵は前進することはできますが、死んでいるので「自分の拠点」を攻撃できなくなります。最後のフェーズが終わった段階で70%以上の敵を倒せていると「自分の拠点」が攻撃に耐えられるので(そういう設定)防衛成功となり、それ未満だと防衛失敗となります。

最後のフェーズ(防衛エリア3での防衛)ではボスキャラが出てきます。と言ってもこの子は直接突っ込んでくるわけではなく、視覚的な邪魔をする攻撃をしてきます。このへんは太鼓の達人DS版(システム)とか東方(ビジュアル)とか色々なものに影響を受けました。

こんな感じで説明おわり。クソ横暴

 

感想というか

中二病なので昔からこういう雰囲気のゲームが大好きで、でも既存のゲームを真似するようなゲームを作ること(東方に乗じてSTGを作るようなこと)はやりたくない、みたいなめんどくさいことをずっと思ってきたので、今回新しい形でこういう雰囲気のあるゲームが作れて完全に自己満足できたのでとりあえずはよかったとおもいました ただ、EP演習は発表がきちんとできてこそ、という授業なのでそこの準備をしなかったこと(例えば別ウィンドウで同時進行で解説していくプログラムを組んでおくとか)は反省点

 

今後

ステージ、機能、敵や砲台の種類、曲などもろもろを増やした完成版が1年以内にできればな~~~ みたいな感じです おわり