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

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

2016-01-01から1年間の記事一覧

Unityからクリスマスプレゼントもらった( ゚Д゚)

Ho ho ho.... today's a good day! You have won Realistic Grass Pack by NatureManufacture as one of 45 winners today! When you share the great news on social media, be sure to thank the sponsor for their contribution. After all, you wouldn't…

FTLみたいなものを作ってみる(8) 敵艦の船員が消火活動

FTL

海賊船の船員が消火活動・修理をするようにした。 まずレーザーで特定の部屋を攻撃する (シールドがあると当たらないので、シールドは無しにしておく) レーザーが当たった部屋で、システムが壊れる。そして火災発生 狙った部屋にはO2システムがあるので、…

FTLみたいなものを作ってみる(7)

FTL

地道な機能追加中 システム毎の電源投入量の変更ができる 武器システムの電源0でLASERのチャージが0になり、使用不能に 機関システムの電源0でジャンプのチャージが0になり、使用不能に 医務システムの電源0で、医務室でのHP回復が無効 敵の艦船の表示…

FTLみたいなものを作ってみる(6)

FTL

地道に機能追加中 火災で同室の船員のHP減少 真空で同室の船員のHP減少 医務室で船員のHP上昇 O2システムの電源断で全体の酸素減少 医務室システム電源断で、船員のHP増加無し 全エアロックのオープンまたはクローズ(トグル) 1マスに一人の船員のみ入れる…

FTLみたいなものを作ってみる(5) 真空消火

FTL

真空消火を実装しました。 まず火事を起こします。 火事は徐々に延焼度が進みます(酸素が濃いほど早い) 次に外壁エアロックを開けます。 部屋の酸素濃度が下がっていきます。 酸素濃度減少で、火事の延焼速度も遅くなります。 酸素減少で、急速に火事が沈…

FTLみたいなものを作ってみる(4)

FTL

エアロック開放による酸素流出を実装しました(≧∇≦)まず空いている外壁のエアロックを調べて、見つけたら室内をスキャンして、空いているドアを通って別の部屋も調べます。 到達できる部屋は、すべて空気が抜けているとみなせるので、Leakフラグを立てて、…

FTLみたいなものを作ってみる(3)

FTL

クリックした位置に移動させる。 まだ、座標がずれてるっぽい。 配列は整数座標なんで、切り上げとか切り捨てとか、そのへんの関係でずれる。The Kestrel (Layout A)の船内を再現 船員が3人を好きな部屋に移動できる。 ただし、だれかを移動中に別の人を移動…

FTLみたいなものを作ってみる(2)

経路探索を実装。 部屋を三つにして、スタートからゴールまで移動できた。このへんは以前も作ってますが、3Dとの位置合わせが難しかった記憶がありますが、とりあえずできました。 公式チュートリアルのRogueLikeGame的でもありますね。あっちは光線なげて大…

FTLみたいなものを作ってみる(1)

周回遅れですが、インディーズの有名ゲームFTLの動画を見まくっています。 凄い。このゲームモデル。 宇宙船同士でレーザーやミサイルで撃ち合えるのだけでなく、敵戦に乗り込んで攻撃できて、しかも敵も自分の艦に乗り込んでくる。 ドアをあけて真空を使っ…

オセロゲームを作る(3) 評価値の保存

学習結果を保存するようにしました。 2500戦ぐらい自己対戦させても勝率74%ぐらいいってるので、これは絶対強くなってるはず(≧∇≦) 早く回すために3手読みで探索しています。本当はfloat配列をバイナリでそのまま保存できるといいんだけど、とりあえずテキ…

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

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

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

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

ハードエンコ支援によるデスクトップ録画

IntelのSkylate世代のCPUは動画のハードエンコ支援を搭載してますが、フリー録画ソフトのocamで録画してみようと思ったら、nVidiaのNVENCしか対応してなかった(´・ω・`) 対応コーデックで選ぶ | PC録画ソフト.jp ↑にまとまってるけど、Bandicamしか対応して…

ThirdPersonShooterを作る(8)

RTSのRoyal Revolt2みたいな感じで作ってみようと思います。 今はまだまっすぐな1本道ですが、途中で道が曲がったりする感じの自動マップをやろうと思います。ローグライクみたいなフラクタル構造の部屋割りとかではないので単純ですね。 途中に敵のSpawnポ…

戦車のキャタピラが起伏にそって波打つ仕組み

AssetStoreにKawaiiTankとして無料の戦車が配布されているのでDownloadして動かしてみました。 起伏はterrainで作られていますが、戦車を起伏の上で動かすと、戦車は波打ちながら起伏を乗り越えて移動します。 そのへんの仕組みを見てみました。"Kawaii" Tan…

選択したキャラを特定の場所に移動させる

RTSでよくあるような選択したキャラを特定の場所に移動させる処理を作ってみました。 選択は、マウスクリックからドラッグして離した四角形で選択、再度クリックで、そこに移動させます。NavMeshは使わずに、自前の経路探索ルーチンを使っています。同じ座標…

激安カラーレーザーNEC 5600Cをコンビニレーザーと比較

9800円程度で購入できる激安のカラーレーザープリンタ NEC MultiWriter 5600Cを買ってみました。 正確にはLEDです。 NECのプリンター買うの生まれて初めてです 実際はXeroxのOEMらしいですが。 売価1万円切りは凄いですね。日本電気 A4カラーページ(LED)プ…

ClothコンポーネントとSpringBoneの比較

Clothコンポーネントでスカート、髪の毛などを揺らしてみました。 これってまず全体を固定で赤くして、動くとこだけ緑に塗る方がいいかもね。固定が足りなくて、髪とか服が全部ぶっ飛んでビビった( ゚Д゚) 左がSpringBone、右がClothコンポーネント まだCloth…

簡単にSpringBoneを仕込めるスクリプト

PMCAで作ったモブ子さんに簡単にSpringBoneを仕込んで揺らせるようになりました。 debug=trueだとスプリングボーンのコライダーが黄色で見えます。 緑色はスプリングコライダーです。 初めにColliderを登録 髪の毛やスカートなどは、それぞれのルートの親ボ…

SpringBoneでの運動方程式の近似処理

SpringBoneでの計算処理について バネなので、F = K・X(t) が運動方程式Verlet 法の計算原理 https://www1.doshisha.ac.jp/~bukka/lecture/jikkenn/simulation/verlet-3.html curr=x(t+h) prev=x(t)hが十分小さいとして、Taylor展開してx(t+h)=x(t)+ h*dx(t)…

最近の買い物

東北ずん子で覚える! アニメキャラクターモデリング作者: 榊正宗出版社/メーカー: ボーンデジタル発売日: 2016/05/26メディア: 大型本この商品を含むブログ (1件) を見るamazonで買いました。Blenderで東北ずん子モデリング。 「ブレンダーからはじめよう!…

SpringBoneを実験中

髪の毛やスカートなど、3Dモデルにとって揺れものは避けて取れない。 ということで、次はこれに取り組んでみます。 ricopinさんが初めに作られたSpringBone.csは、物理エンジンを使わずにコードで物体同士の衝突を計算して揺れものを動かしている。 これは改…

簡単コードで光線飛ばして経路探索(3)

実際にクマさんを経路探索で見つけたパスにそって動かしました。 Vector3 next = Navi.GetNextPath(transform.position, goal);現在地、ゴールを引数で渡すと、次のポイントの座標を返値で返してきます。 次のポイントにつくと、次のポイントを返します。 渡…

簡単コードで光線飛ばして経路探索(2)

もうちょっと複雑な経路にしてみました。navi5からNavi6に行きます。画像の球にナンバーが振ってないので分かりにくいですね(´・ω・`)反復深化6回目から解が得られてますね。dist=60.6初め、下から回っていく経路を先に見つけて、次に真ん中の道を通る経路…

簡単コードで光線飛ばして経路探索

簡単な仕組みで自前で経路探索をやってみました。 画面上のWaypointに球をおいておくと、球と球の間で光線が飛ぶ=通行可能という仕組みで、経路パスを求めます。 次に、スタート球とゴール球を指定して、経路探索を呼ぶと、通行可能なパスを探索して最短経…

商店UIのフォーカスを移動できるようにする

アイテムのリストをCSVファイルで用意しておいて、商店の商品一覧に表示できるようにしました。1画面に6アイテムごとで、PREV/NEXTボタンでページを遷移できます。 ゲームパッドでの操作を考えるとフォーカスが必要ですが、初めはフォーカスはありませんで…

手足にコライダーを付けて、キックやパンチ攻撃を実現

手足にコライダーをつけてキックやパンチの判定に使います。剣にコライダーをつけて斬撃を判定するのと仕組みは同じです。 UI的に手動でコライダーをつけることもできますが、それだとキャラを追加するごとに作業が要ります。 プログラムでコライダーを装着…

コードで商店UIを動的生成する

コードによるUI作成で行いたいと思って試作中です。 NPCキャラが商店になっていて、キャラクターに近づくと商店のウインドウが表示されます。 状態遷移としては、 商品一覧を表示する 一覧:キャンセルを押すと画面は消える 一覧:購入を押すと、確認ダイア…

武器によって手の位置をIKで微調整

PMCAで女子キャラを増やしました。メガネのおばさんキャラも作ったので、お店のNPC店員にしようと思います。 右手に持たせる武器の塊位置がPMCAキャラで共通化できるので、キャラを増やした場合の作業が少なくて楽です。 使用するアニメーションはピストルを…

複数の武器をもたせて切り替える処理

実行時に、Startで武器の塊を読み込んで、右手の骨にセットする。 キャラクターによって位置や向きが微妙に違うので、キャラごとに微調整する void Start () { rb = GetComponent<Rigidbody>(); anim = GetComponent<Animator>(); Transform Rhand = anim.GetBoneTransform(HumanB</animator></rigidbody>…