インタラクティブ・ゲーム制作 <プログラミングコース>

Slides:



Advertisements
Similar presentations
UGUI を 使ってみよう ( 導入・紹介?編 ) 1. uGUI とは O Unity 4.6 から使えるようになった UI (ユー ザーインターフェース)システム O 8 月: Unity4.6 β uGUI 試用版公開 O 11 月: Unity4.6 uGUI 正式版公開 正式版公開で、 機能紹介ブロ.
Advertisements

C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
Othello Let us cling together. メンバー 班長 杉本友宏 プログラマー 京谷貴平 アルゴリズム 佐野祐之 パワーポイント 菊澤遼平 発表 川本敏和.
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作 第4回 マルチスレッドとネットワーク. 今日の内容 マルチスレッド – ローディングの進捗表示とか – 処理高速化も見込めます ネットワーク通信 – 必然的にマルチスレッドを扱います.
 C 川船 美帆.  強い人工知能の作成 o 「遺伝的アルゴリズム」  「どうぶつしょうぎ」のアプリケーショ ン作成 o スマートフォン向けアプリケーション.
プログラミング 平成24年1月11日 森田 彦.
ゲーム理論・ゲーム理論Ⅰ(第2回) 第2章 戦略形ゲームの基礎
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
ML 演習 第 8 回 2007/07/17 飯塚 大輔, 後藤 哲志, 前田 俊行
コンピュータ囲碁の仕組み ~ 将棋との違い ~
基礎プログラミングおよび演習 第8回.
技術トピックス 2014/08.
2004年度JAVAゼミコンテスト作品 「Othello」
クイズ 「インターネットを使う前に」 ネチケット(情報モラル)について学ぼう.
コンピュータ・リテラシ b 第12回 簡単な画像処理.
モンテカルロ法によるミニ囲碁 増井拓視 情報理論工学研究所.
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
第5回C言語講座 ~ポインタと配列.
単位 おねだり ☆オセロ おねだり隊☆D班.
インタラクティブ・ゲーム制作 <プログラミングコース>
近畿大学理工学部情報学科 情報論理研究室 井藤 雄太
アルゴリズムとデータ構造 補足資料10-2 「nクイーン」
情報学部 プログラミング体験教室 (初級編)
データベース設計 データベース設計 第0回 オリエンテーション 坂口利裕.
JAVAでつくるオセロ 伊東飛鳥、宮島雄一 長畑弘樹、ソギ原直人.
スライド資料 C4 ICT機器を活用した授業づくり ④特別支援学校における ICT活用 兵庫教育大学の小川です。一応作者です。
VBScriptで ユニットテストをやってみる
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
プログラミング 平成23年12月21日 森田 彦.
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
人工知能特論 9.パーセプトロン 北陸先端科学技術大学院大学 鶴岡 慶雅.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
インタラクティブ・ゲーム制作 <プログラミングコース>
4人版リバーシYoninの解析 情報論理研究室 藤本 侑花
BLACK JACKの作成 ブラックジャックのルール 概要 勝敗の判定 開発中の問題点 Aの扱いについて 配り直し(DEAL) 工夫した点
近畿大学理工学部情報学科 情報論理研究室 松浦 美里
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
近畿大学理工学部情報学科 情報論理工学研究室 赤井 隆純
プロジェクト演習Ⅱ インタラクティブゲーム制作
モンテカルロ法を用いた 立体四目並べの対戦プログラム
疑似乱数, モンテカルロ法によるシミュレーション
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
プロジェクト演習Ⅳ インタラクティブゲーム制作 プログラミング4
麻雀ゲームにおけるAIの開発    日高大地   近畿大学理工学部情報学科  
情報処理基礎A・B 坂口利裕 横浜市立大学・商学部
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
オブジェクト指向プログラミング クラス 継承
プロジェクト演習Ⅳ・Ⅵ インタラクティブゲーム制作
数値解析ⅡーI ~オセロゲームのプログラム~
Othelloのプログラム 班長:佐々木 悠二 班員:石黒 護     井上 雄滋     齊藤 良裕     清水 裕亮.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
問題 あなたはポケモンGOをやっています. これから5か所のポケモンの巣(ポケモンがよく出る場所)を回って レアポケモンを捕まえに行こうと思っています. しかし,持ち物を見たらハイパーボール1つしかありませんでした. なるべくCPが高い(強い)レアポケモンを 捕まえたいのですが, 何か所目で捕まえれば.
F班 メンバー 班長 雨堤 智宏 アルゴリズム解析 角田 泰彬 竹林 秀高 ppt作成 清水 貴史
数値解析Ⅱ ~五目並べのプログラミング~ C班.
近畿大学理工学部情報学科 情報論理工学研究室 段野健太
or-8. ゲーム理論 (オペレーションズリサーチを Excel で実習するシリーズ)
モグラたたき.
情報処理技法(リテラシ)II 第2回:チーム活動 産業技術大学院大学 情報アーキテクチャ専攻 助教  柴田 淳司 パソコンの基本操作.
標準入出力、変数、演算子、エスケープシーケンス
Othello G班         山崎 木下 山本 上手      .
cp-15. 疑似乱数とシミュレーション (C プログラミング演習,Visual Studio 2019 対応)
プログラミング 平成24年12月11日 森田 彦.
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
応用プロジェクト後半 第5回 (12/17) 担当:奥田教授
プロジェクト演習Ⅱ インタラクティブゲーム制作
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
プロジェクト演習III,V <インタラクティブ・ゲーム制作> プログラミングコース
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
Presentation transcript:

インタラクティブ・ゲーム制作 <プログラミングコース> 第10回 AI設計入門 (最終課題アナウンス)

先週は本当にごめんなさい ご覧の有様です 私が身体を張って皆さんに伝えたいのは次の2つ カルシウムは大事 焦るとあんまりいいことない

授業の再リスケジュール 海外出張キャンセル Kinectを来週に ラスト2回前は、 AIにも使えそうな ところを中心に 最終回で対決 海外でこの足はね… なので当初の予定通り Kinectを来週に ラスト2回前は、 AIにも使えそうな ところを中心に 最終回で対決 AI設計入門 Kinect体験 Boostと数学 オセロAI対決

今日の内容 AIの作り方を考えていく コーディングよりも考え方メイン 雑魚AIを試しに作ってみる

今回のプロジェクトの変更点 決着が付くようになっている 盤面の状況そのものを表すデータを BoardInfoクラスに分離 それに伴いいくつか関数追加 先々週ライブコーディングした内容の反映 盤面の状況そのものを表すデータを BoardInfoクラスに分離 AI実装を見越しての変更

まずは考え方から AI設計入門

AI(人工知能) 本当はゲームの思考ルーチン程度を 人工知能呼ばわりすると怒られる 確率によって適当な選択をするもの 選択肢に対するリスクやリターンを考えて、 選択をするもの

そもそも選択肢とは トランプや将棋のような思考AI アクションゲームなどの場合 手番単位で進行していくので分かりやすい 完全情報ゲームに分類される もっと言うと二人零和有限確定完全情報ゲーム アクションゲームなどの場合 フレーム単位での選択肢はキー操作 だがキー操作単位で行動制御すると不審な挙動に 戦術・戦略レベルでの状態によって管理

まずは選択肢を列挙しよう これをしないと打てないところに 打とうとするクソAIになってしまう まずは実装 幸い、前回の時点でBoard::isPuttable()という関数は作ったので、これを利用したい まずは実装

まずは初級編 今の状態だけで判断する

選択肢が列挙できたので… とりあえず最初の選択肢を選ぶ 適当に選ぶ 端っこが取れそうなら取りたい 思考放棄型その1 思考放棄型その2 だが、何となく人間味は出る そして超級に通じる方法だったりする 端っこが取れそうなら取りたい 多少強くなる、かもしれない

乱数の使い方 srand()で種を初期化 rand()が0~RAND_MAXの値を返す もっといい乱数が必要な場合 その時点での時刻を使うのが一般的 srand((unsigned int)time(NULL)); rand()が0~RAND_MAXの値を返す 実数にキャストして0.0~1.0の値にする もしくは%演算子で好みの範囲の値にする ただし、バラツキが出るようになるので注意 もっといい乱数が必要な場合 メルセンヌ・ツイスター法などを利用

中級~上級といったところ 先読みして判断する

実際に置いたらどうなるか 考えて手を決める 一番たくさんひっくり返せる手 目先の欲を追う型 次の自分の番で選択肢が一番多くなる手 オセロのセオリーにのっとる型 特に2.では「相手の手を推測する」というロジックが必要になるので、 これをどうしようか?

ミニマックス法 (ネガマックス法とも) 取り得る選択肢に評価点を付けて、 自分に有利、相手に不利になるような 選択肢を選ぶ 評価基準は、個数か、置ける場所数か、 あるいはその複合かで好きに選ぶ これなら数手先まで深読みが可能

超級 賢くはないが、腕尽くで

モンテカルロ法 乱数でシミュレーションを進める総称 オセロの場合 ある手を打つ その後勝負が付くまでお互いランダムに打つ これを数百回~数千回繰り返し、手ごとに 勝率を出す 一番勝率の高い手を採用する

最終回にむけて ルール確認

ルール(1) 来週月曜に対決用プロジェクトを公開 AIBaseクラスを継承し、 自分のアルゴリズムを実装 それ以外のファイルには手を加えては いけない getHand()で渡されてくる情報以外は 参照禁止 1手の計算に使える時間は30秒まで 私のMBAでの経過時間基準

ルール(2) 難易度は4段階用意 提出期限は7/23(火)23:59まで 自分に合った難易度で挑戦してね! Sチャレンジができるのは最高難易度 漏れなくライブで実況します 提出期限は7/23(火)23:59まで 組み込みチェックなどが必要なので、 それ以降は受け付けません

To be continued…