タグ

algorithmに関するkjirouuのブックマーク (8)

  • JavaScript でオセロを実装する(遅延評価編) | Webシステム開発/教育ソリューションのタイムインターメディア

    これまでのあらすじ 新人の力量を測るための課題としてオセロの作成を指示したが、 指示した当人が作れないようでは話にならないので実際に作り始めた。 一先ず盤面が4×4で黒も白も人間が指す一人二役の寂しいオセロは実装できたのだが、 快適に遊ぶには大きな問題が潜んでいたのであった。 実は4×4で既に重い問題 実際に前回作成したオセロを実行すると、 ゲームが遊べるようになるまでに割りと待たされます。 それもそのはずで、あの実装は ゲーム中で取り得る局面を予め全て列挙 していたからです。 しかも4×4という最小限の盤面のオセロですらゲーム中に出現し得る局面 = ゲーム木に含まれるノード数は 284,881個 あります(※回転すると同じになる盤面等は個別に数えて、同一盤面でも手番のプレイヤーが異なるなら別と数えて、パスした場合も1個と数えています)。 そりゃあ待たされるに決まってますし、無闇矢鱈にメモ

    JavaScript でオセロを実装する(遅延評価編) | Webシステム開発/教育ソリューションのタイムインターメディア
    kjirouu
    kjirouu 2015/12/21
    シリーズものでモンテカルロ法のAI作成に続く
  • 手続き型のダンジョン生成アルゴリズム | プログラミング | POSTD

    この投稿では、以前に TinyKeepDev が こちら で述べたランダムなダンジョンを生成する技法について説明しようと思います。元の投稿に比べて、もう少し具体的に話を進めるつもりです。まずは、以下に示したアルゴリズムの一般的な動作をご覧ください。 部屋の生成 はじめに、幅と高さを持つ部屋を円の中にランダムに配置しましょう。TKdevのアルゴリズムは、各部屋のサイズを生成するのに正規分布を用いています。これは一般的にとてもいいアイデアです。なぜかと言うと、これによってより多くのパラメータを扱うことができるようになるからです。幅/高さの平均と標準偏差間の異なる比率を選ぶと、通常は見た目の違うダンジョンとなります。 ここで実行すべき関数は getRandomPointInCircle です。 function getRandomPointInCircle(radius) local t = 2

    手続き型のダンジョン生成アルゴリズム | プログラミング | POSTD
  • 幻塔戦記グリフォンの AI で使っている Behaviour Tree

    こんにちは、クライアントエンジニアの Sindharta Tanuwijaya(シンダルタ タヌイジャヤ)です。 今更ですが、1月の社内の勉強会で、 Behaviour Tree という AI の手法を発表させて頂きました。当時は幻塔戦記グリフォンを開発するのにあたって、1つのフィーチャーを完成させるためにこの機能を作っていましたが、今はいろいろなフィーチャーで使われています。 Behaviour Tree とは思考 AI のアルゴリズムの1つで、比較的に良く知られているステートマシンと目的が似ています。それはゲーム内のオブジェクトをどう考えさせて、行動させることです。ステートマシンも良い手法ですが、 AI が複雑になってくるのにつれて、管理の難しさが倍に増えるデメリットがあります。そこで、 Behaviour Tree を導入してみたわけです。 当日発表したスライドは以下です。 また、自

    幻塔戦記グリフォンの AI で使っている Behaviour Tree
  • ゲームAI -基礎編- 『知識表現と影響マップ』

    みなさん、こんにちは! 突然ですが…皆さんには、ひいきにしている ゲームのキャラクターはいらっしゃいますでしょうか。 手ごわいボス敵や頼れるパートナー、愛嬌のある動きをするモンスター達は 一体どのような仕組みで動いているのでしょう? 今回の記事ではそんなゲームの中のキャラクター達を 魅力的に動かす仕組み、AIについて御紹介したいと思います。 改めまして記事を担当させて頂きます、Cygamesエンジニアの佐藤です。 これまでコンシューマ機でのゲームAI開発に携わり、 ゲームならではのキャラクター表現の楽しさを追いかけてきました。 このブログを通じて、皆さんのゲームのキャラクターを より表情豊かに魅力的なものにする方法について、皆さんと一緒に考えていければ幸いです。 今回はゲームAIをデザインするにあたって重要となる、 「知識表現を定義する」というステップと、 知識表現の一つである影響マッ

    ゲームAI -基礎編- 『知識表現と影響マップ』
  • Buckblog: Maze Generation: Recursive Backtracking

    I’ve said before that generating mazes is a great default project when experimenting with a new programming language. I’ve yet to find a better one (but I’d love to hear recommendations). However, before you can dive into generating a maze (especially in a syntax you are unfamiliar with), you had better have a solid grasp of how the process works. With mazes, you can take your pick of a solid doub

    kjirouu
    kjirouu 2015/04/30
    “Recursive Backtracking” による迷路生成ルーチン、JSのデモを実行して、箇条書きのポイントを読めば理解できる
  • Diff algorithms

    kjirouu
    kjirouu 2014/12/27
    XML の diff アルゴリズムについて
  • VXオートタイル作ってみた - 289K

    前回の記事だけでは細かいループ関係が分かりにくい気がしたので 試しに実際にオートタイルを作ってみました。 作り方講座というより今回の自分の手順の紹介です。 もとにするのは以前作ったこのチップ。 ループ単位は32×32。 使うループのパターンはこの一種類だけです。 上画像の左端が基となるチップだとします。 説明の都合上16×16に分割してます。 2番目は前回色分けしたオートタイル。 a、b、c、dの並びを崩すとループがおかしくなってしまうので これを崩さないようチップを3番目のように配置します。 ループ単位は32×32でも、カドやフチなどパーツの構成単位は16×16なので 配置されたチップは右端のように分けられます。 内部、横のフチ、縦のフチ、外カド、内カドの5つのパーツに分けて元チップを加工していきます。 フチは縦のフチなら上下方向、横のフチなら左右方向にそれぞれループすること、 向かい

    kjirouu
    kjirouu 2012/02/16
    オートタイリングの規格についての解説
  • !!! URL changed !!! http://suac.net/**** --> http://nagasm.org/**** http://1106.suac.net/**** --> http://nagasm.org/1106/**** http://nagasm.suac.net/**** --> http://nagasm.org/ASL/**** Please renew your bookmarks (_o_)

    !!! URL changed !!! http://suac.net/**** --> http://nagasm.org/**** http://1106.suac.net/**** --> http://nagasm.org/1106/**** http://nagasm.suac.net/**** --> http://nagasm.org/ASL/**** Please renew your bookmarks (_o_)

    kjirouu
    kjirouu 2011/04/25
    同じ値が入り得る場合に array.sort(function(x, y){return x > y;}) とかくとNG、number型だとわかってれば array.sort(function(x, y){return x - y;}) とマイナスを使う。そもそも上下関係ではなく、上・下・等しい の関係を定義する必要がある
  • 1