AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

AI

10年前に作ってたレストランゲーム

もともとはてなダイアリーでやっていた私の日記ですが 10年前の記事ですが、当時、ガラケーでレストランゲームを試作していました あくまで一般公開もしてない試作なので、画像は勝手に拝借してました(^^;)mkomiya.hatenadiary.org昔は、農場ゲームとかレス…

3人でNavMeshSurface

3人で移動するので後から来た人に押されて2階から地面に落ちる場合がある 次はWayPointを入れて巡回させてみるかな? で、椅子を見つけると疲れたら座って休むみたいな。 NPC Populator モブが歩き回る$10アセット。動画見ていい感じだったんで買ってみたけ…

動的にbakeできるNavMeshSurface

試そう試そうと思いながら数年経ってしまった。・゚・(ノ∀`)・゚・。 やっと実験しましたマウスでクリックした場所にエージェントが向かう。 壁を動かしても経路変更に対応して移動できるマウスでクリックしたら改めてNavMeshをbakeし直してます。navMeshの経路の細さ…

機械学習テニスにVRoidを出してみたが色々残念な感じに

そもそもまだサービスレシーブが満足にできないうえに、FinalIKの右手にラケットを張り付けただけで、足も動いてないし、色々と残念な感じになってしまった。 せめてラリーぐらいはできるように一晩学習させてみよう

ML-Agents tennis 横移動もできるようにして学習中

X,Y軸移動だけだったのをZ軸移動も追加 ラケットもZ軸回転だけだったのをY軸回転も追加 これで斜め軌道でボールを打つこともできるようになったがしかし、学習の難度はかなり増加したのでだいぶ学習時間がかかりそう 初めZ軸がまったく移動しないので、「は…

ML-Agents tennis テニスらしくなってきた

学習200万ステップぐらいでラリーが十分続くようになった テニスらしくワンバウンドで打ち合うようになった元のサンプルと変えた部分は、 サービス位置をコートの端まで下げた(元は真ん中ぐらいで近すぎる) サーブをすぐ学習できるように、ボールの位置を…

ML-Agents 1バウンドOKのTennisの1000万回学習結果

一晩学習させて1000万ステップいきましたが、1バウンドOKなのに結局バドミントンみたいになってました 0から学習の様子を眺めて、分かったのが、学習の流れが、 サーブすらできない サーブができるようになる サーブリターンができるようになる サーブリータ…

ml-agentsのtennisを2バウンドアウトに変更して学習してみる

なぜかml-agentのサンプルのテニスは、1バウンドがアウトになってて羽子板みたいなプレイになっている 卓球は1バウンドでノーバウンドアウトだが、テニスはノーバウンドまたは1バウンドセーフでアウトなのは2バウンドということでHitWall.csを改造して1バウ…

ml-agentsで3Dballの学習にY軸回転も追加してみる

強化学習ってのは水族館でのアシカの調教と同じで、うまくやったら餌をやり、失敗したら怒る学習 教師あり学習と違って、アシカがどう動くはアシカに任せて、結果だけで評価する 初期状態では基本的にはランダムに動く 成功したら、その成功に道筋すべての行…

ML-Agentsで強化学習サンプル動かしてみる

qiita.comこの記事を参考にml-agentsのサンプルを動かしてみた Python(Anaconda3)をインストール Release ML-Agents Release 3 · Unity-Technologies/ml-agents · GitHub これをDLして、解凍し、 Anaconda上で動くPowerShellを使って、以下をインストール pi…

YouTubeのリコメンドがラムちゃん(怖すぎる)

AI

SCHOOLGIRLS OF THE DEADの動画の再生後のリコメンド動画の中に うる星やつらのラムちゃんの動画が( ゚Д゚) 最近はいっさいうる星の動画なんか見てないですから、純粋に動画の内容からのリコメンドと思いますが、 DEADみたいな単語からゾンビ動画をリコメンド…

学校シミュレーター

YandereSimulatorというかHighSchoolSimulator2017というか。 いわゆる学校シミュレーターを作ってみたくなったので、プロトタイプを作ってみた。 YandereSimulatorは本当によくできているなと思う。 主人公が殺人をしたあと、死体を発見した生徒が先生に報…

オセロゲームを作る(2) 評価関数の学習を試みる

評価関数を学習させてみました。 勝った場合は、勝った方の手による局面にプラス。負けた方の局面にマイナス。 これをやると、それぞれが打った手で変わってない配置は、プラマイゼロで評価が変わりません。 本来は、強化学習は末端から係数をかけて、だんだ…

オセロゲームを作る(1)

オセロゲームを作ってみました。minMax探索のプログラムを作るのは久しぶりです。探索はnegaMax 評価関数は、終端は石数、途中は打手可能数+星+隅を取ったかどうかってだけのシンプルです。 Unityなので深くは読めないので、5手読みです。 一応ハッシュテ…

昔作ったバックプロパゲーションのニューラルネットワークでXORの学習

AI

世の中、深層学習なのにどんだけ周回遅れだよって感じですが、 昔、作ったバックプロパゲーションのニューラルネットワークのC言語プログラムをHDDの片隅から発掘してきた。 XORは非線形 x[1]=rand()%2; x[2]=rand()%2;というランダムな入力値(0か1)を与えて…

深層学習の囲碁ソフトがプロ棋士に5戦全勝!

AI

将棋は既にプロ棋士に追いついてしまったけど、囲碁はまだまだと言われてましたが(9路は強いけど19路はまだ) いきなりプロを超えてしまった。 プロに五戦全勝だと、へたするとコンピュータ将棋よりコンピュータ囲碁の方が強いかもwかつて、探索空間的…

NPCの感情表現をコントロールするアセットがセール中

AI

Love/Hate キャラクター達の感情や人間関係、個性をシミュレーション - Unity AssetStoreまとめassetsale.hateblo.jp こちらで紹介されてましたが、こんなアセットあったんですね。 特定のキャラクターとコミュニケーションを行い感情パラメーターが変動。話…

プロシージャル技術

AI

2009年の連載ですが、すごい面白いテーマだったので読んでいます。 人工知性でコンテンツを生成するプロシージャル技術(1)3Dグラフィックス・マニアックス (77) 人工知性でコンテンツを生成するプロシージャル技術(1)news.mynavi.jpコンテンツを手動ではなく…

サッカーゲームを作る(1)

前々からサッカーゲームを作ってみたいと思っていたので 少しやってみました。 AIとAIの対戦です。 まだルールを守れてない段階なので、オフサイドも判定してません。見るだけですが、webplayer版も置いてみました。 Unity Web Player | soccer 基本的にボー…

カードゲームを作ろう(7)

プロ生ちゃんの表情が変わるようになりました。 大富豪のルール的に2が最強、3が最弱も入って、 最後までプレイできるようになりました。 まだ二枚以上出す機能はありません。あと、ニコ生ちゃんと書いてましたが、正確にはニコニコ立体ちゃんみたいですね …

カードゲームを作ろう(6)

カードが首に刺さってる(^_^;) 4で割ったら数。4で割った余りが色って感じで、トランプのカード番号から種類を特定してましたが、なんかオカシイなと思っていたら、素材のトランプが順番が狂ってました。 そのへんを修正。 パスするとうなだれるアニメショ…

カードゲームを作ろう(5)

手持ちカードをソート 場より大きくて一番小さいカードを出す 出せるカードがないときはパスする ユーザーもパスできる 全員がパスすると、最後に出した人が新たに好きなカードを出せる 手を出す前にタイマーで4秒停止して「考えてます」と表示する (本当は…

カードゲームを作ろう(4)

カードをシャッフル 4人に10枚づつ配る ユニティちゃん→プロ生ちゃん→ニコ生ちゃん→ユーザーの順番にカードを場に出す 本来は2が最強ですが、簡単なので1最低、13最強になってます。 本来は場より大きい&最小のカードを出すべきですが、見つかったら出…

カードゲームを作ろう(3)

カードをシャッフルして10枚をユーザーに配り クリックしたカードを場に捨てるまでできました。シャフル。スワップを20回程度 for(i=0;i<=20;i++) { int c1=Random.Range (1, 52); int c2=Random.Range (1, 52); int tmp = cardNo[c1]; cardNo[c1]=cardNo[c2…

カードゲームを作ろう(2)

Resourcesとして画像を読み込んで、動的生成したplaneに貼り付け成功まずmaterialとtextureを貼ってるplaneを一つ作ってresourcesに入れておく Instantiateで動的に生成 materialのtextureをトランプの該当png画像に張り替える これでスクリプトでスマートに…

カードゲームを作ろう(1)

いつもユニティちゃんなので、今回はプロ生ちゃんも登場させようと思いましたが、二人を登場させてみると大きさが違うんですね。 プロ生ちゃん1に対し、ユニティちゃん2.9ぐらいで良さそうです。 次に、DirectionLightからの肌の質感が違いすぎる。 これはsh…

次はトランプゲームを作る予定

今週は色々と忙しいのですが、終末はトランプゲームでも作ってみようと思います。 大富豪かセブンブリッジあたり。 セブンブリッジは麻雀と似てますが、大富豪の方が作りやすいかな? トランプゲームの場合、CPU側が人間の手札を覗けばいくらでも強くできま…

迂回してくるゾンビ

モブ子さんは固定ですが、 複数のゾンビが、経路探索して、モブ子さんのところを目指すようになりました。 壁に囲まれている場合は、開いている所を通って近づいてきます。 ゾンビらしからぬ賢さw 次は、モブ子さんが動いても、ゾンビの経路探索が追従する…

ゾンビからも攻撃

ゾンビからも攻撃をするようにしました。 画面上で膝を付いているのが殺られてしまったセーラー服さんです (AssetStoreのSportyGirlのモーション利用) 時間が経つと回復します←ゾンビですかw uGUIで右上に残りのゾンビ数などを表示 画面が寂しいので、Ass…

近くにいる敵の数を評価する

これまでターゲットを決めるには、一番近い敵をという距離を評価していましたが、各位が近くの敵の数を調べておいて、それをターゲットの決定評価に加えてみました。 tmpDis = Vector3.Distance (t1, t2); tmpPts = tmpDis*(float)(other.nearEnemyCount+1)/…