月別アーカイブ: 2018年4月

タワーディフェンスゲームを作る(6)

今回は敵が攻撃できるようにするあたりと、体力がゼロになった味方がリスポーンするあたりを実装しました。

今の所「こういう雰囲気にしたい」ってのが実現できてていい感じです。
ただ、マウスによる操作が自分でもわかりにくいのはなんとかしたいです。

今後はステージ作成もだけど、光源とかシェーダーとかの見た目の調整もしていきたいです。

タワーディフェンスゲームを作る(5)

今日は、敵味方ユニットの攻撃まわりを実装していきます。
具体的には

  • アニメーションイベントにダメージ計算の関数呼び出しを追加する。
  • 今は攻撃後にすぐ次の攻撃を開始してしまうのでウェイトを入れる。

を実装していきたいと思います。
そして、実装したのがこちらです。

Archer, Sniper 以外のユニットが攻撃するようになった。
本当は敵味方ユニットの次の行動を決める処理も作り直したかったけど、それは次回にします。

いい感じです。

 

小田原城

城跡が好きです。特に石垣と水堀が好きです。
というわけで、小田原城に行ってきました。たまりませんでした。

たまりませんでした。
石垣欲求と水堀欲求が高まってきたら、また別の城跡に行きたいと思います。

いい感じでした。

江ノ島

江ノ島に行って歩き回ったり、海を眺めたり、しらす丼を食べたりしてきた。のんびりできて良かった。

これはトンビが観光客の手元の食べ物を狙って滑空してたときの写真です。

タワーディフェンスゲームを作る(4)

今日は、昨日までの実装で「あれ? なんかこの動作おかしくね?」って思った箇所を修正してた。具体的には

  • タワーを移動先に指定できるのを修正した。
  • 近接ユニットが攻撃しないのを修正した。

です。
大きな進捗じゃないけど、毎日少しずつ開発が進んで行くのを楽しみたい。

あとゲームのストーリーを考えてた。電子の世界のクエリちゃんがバグ(敵)を倒すという流れにしたい。で、ストーリーというかそのあたりは、とりあえず書き出してみないと評価できない。どんどん書いていこうと思う。

楽しみながら開発します。

タワーディフェンスゲームを作る(3)

今回は、RallyToFlag (移動先を示すフラッグ)に味方ユニットが移動するあたりを実装します。敵ユニットが移動するあたりは実装済みなので、そのあたりを参考にすればいいかなと思いながら実装開始です。

思ってたよりも修正点が多くて実装に時間がかかった。
「ああなってるコードをこう修正しよう」って具体的な実装が思い浮かばないときには、楽観的な見積もりになりがちだよなと思った。

ともあれ、とりあえず動作するようになった。

気づいた点

  • 目的地まで移動できないときの挙動がおかしい。(想定外)
  • 兵舎占拠の進捗が表示されない。(実装したはずなのに)
  • ゲームの途中で占拠した兵舎の目的地が (0, 0) になってる。

まぁ、このあたりは見直せば修正できると思うのでチケット管理システムに登録しておく。

次は、敵と味方が互いに攻撃するあたりを実装していきたい。

HotS のミニマップみようツールの作成(3)

今回は、視線検出した結果に基づいてミニマップを見てないときに警告音を出力するあたりを実装します。

で、実装したメインのロジックはこのあたり。

        private void UpdateWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            int nextAudioPlayMsec = NoCheckMsec;
            var noCheckElapsed = new System.Diagnostics.Stopwatch();
            noCheckElapsed.Start();

            var previousGameState = state;
            while (!updateWorker.CancellationPending)
            {
                System.Threading.Thread.Sleep(20);
                
                if (IsLookingMinimap)
                {
                    if (nextAudioPlayMsec != NoCheckMsec)
                    {
                        okSound.Play();
                    }

                    noCheckElapsed.Restart();
                    nextAudioPlayMsec = NoCheckMsec;
                }
                else if (noCheckElapsed.ElapsedMilliseconds > nextAudioPlayMsec)
                {
                    warningSound.Play();
                    nextAudioPlayMsec += 2000;
                }
                ...
             }
        }

抜粋でないソースコードはこちら。 https://bitbucket.org/satofumi/hots_tools/src/cf889c6dc2389ea045709e29c03e4e7bf9093a75/hots_minimap_instructor/hots_minimap_instructor/MainWindow.xaml.cs?at=default&fileviewer=file-view-default

このコードでは、定期的に視線がミニマップの中にあるかをチェックした結果の IsLookingMinimap プロパティを利用して、「見てないね効果音」や「見たね効果音」を鳴らしてる。
定期的にポーリングしてるのが微妙によくないけど気にしないことにしたい。イベントトリガをがんがん使ったコードは私には読みにくいので。

で、ここまででとりあえずゲームで使えるレベルのツールにはなったので利用していこうと思う。
次回は、ゲームのロード中か死んでないかを判断するための処理をスクリーンショットから取得するあたりのコードを作成していこうと思う。

いい感じです!

ボイスチェンジャー作成(2)

ボイスチェンジャーというか、誰かの声に似るようにするのを「統計的声質変換」と呼ぶらしい。このあたりについて調べてみる。

読んだブログ記事

  • http://kivantium.hateblo.jp/entry/2015/12/19/000631
  • http://sesenosannko.hatenablog.com/category/%E7%B5%B1%E8%A8%88%E7%9A%84%E5%A3%B0%E8%B3%AA%E5%A4%89%E6%8F%9B
  • http://r9y9.github.io/blog/2014/11/12/statistical-voice-conversion-code/
  • https://www.slideshare.net/NU_I_TODALAB/ss-76323512

ブログを読んだ感想としては「専門用語が多いですね」「思ってたよりも大変そうですね」「みなさん楽しそうですね」だったので、私もこれら記事にある内容をなぞっていこうと思います。まずはブログ中の専門用語がどういう意味なのかの概略がわかるように調べていこうと思います。

具体的な作業については次の記事でやっていく予定です。
とりあえず、適当でいいんで音を変質させたりしてみたいです。

HotS のミニマップみようツールの作成(2)

今回は Tobii Eye Tracking 4C から視線位置を取得するあたりを実装します。
で、作ったのがこれです。作ってみるとわかる。私は C# の勉強が不足している。 理解が Thread までで止まってて少し恥ずかしい。
https://bitbucket.org/satofumi/hots_tools/src/8548dbecc7af809faf053d7d173b2d73ce3afecf/hots_minimap_instructor/hots_minimap_instructor/EyeTracking.cs?at=default&fileviewer=file-view-default

まぁ、とりあえずこれで動くので良いことにする。気になったらまた修正すればいい。
次回は、この得られた視線情報を用いてミニマップの領域を見ているかどうかで警告音を鳴らすあたりを実装します。

タワーディフェンスゲームを作る(2)

今日は、クリックしたさきに移動先を示すフラッグを表示するあたりを実装します。
フラッグ自体は少し前に Cube, Sphere, Cylinder を駆使して作った。

で、建物を右クリックした後にフィールド上を左クリックすると、そこに移動先の旗が配置できるようになった。やったぜ!

次は、味方ユニットを移動目標に移動させるあたりを実装したい。
いい感じだ。