表を使って状態遷移を表現することもできる。transition[][]のような遷移表を作っておき、state = transition[state][input]のように現在の状態と入力から次の状態を計算するようにしておけばプログラムは簡単になる。 正確な遷移表を作ることだけ注意すれば良い。
表を使って状態遷移を表現することもできる。transition[][]のような遷移表を作っておき、state = transition[state][input]のように現在の状態と入力から次の状態を計算するようにしておけばプログラムは簡単になる。 正確な遷移表を作ることだけ注意すれば良い。
2017/06/21 JavaScriptの作成に役立つ、サンプルコード集です。 一覧2点の座標の中点を求める方法2点の座標の中点を求める公式を、JavaScriptで表現します。2点の座標の角度を求める方法2点の座標の角度を求める公式を、JavaScriptで表現します。2点の座標の距離を求める方法2点の座標の距離を求める公式を、JavaScriptで表現します。Blob(File)からData URIを作成する方法Blob(File)をData URIの文字列に変換します。CMYKをCMYに変換する方法カラーコードをCMYKからCMYに変換します。CMYをCMYKに変換する方法カラーコードをCMYからCMYKに変換します。CMYをRGBに変換する方法カラーコードをCMYからRGBに変換します。要素に適用されているCSSの値を取得する方法要素に適用されているスタイルシートの値を取得します
みなさん、こんにちは! Cygamesエンジニアの佐藤です。 季節も秋を迎えて、すっかり涼しくなってきましたね。 秋の夜長はのんびり箱庭ゲームなどいかがでしょうか? SkyrimやGTAなどのオープンワールド系の箱庭ゲームでは、 街を歩くNPC達の動きも作り込まれています。 モブキャラクターたちが街や村の中で生活感豊かに動いていると、 ゲーム世界の日常の中に実際に入り込んでいるような気持ちになれますよね! 今回の記事では、NPCの生活行動のためのAIを一例にあげつつ、 自律エージェントの考え方に基づいたキャラクター駆動の仕組みについて 御紹介したいと思います。 Ⅰ.自律エージェントとは? 周囲の環境を認識して状況を解釈し、自身の内的な方針に基づいて意思決定を行って、 環境に働きかける行動を取る能力を持つ存在を自律エージェントと呼びます。 わかりやすく、ゲームの敵キャラクターに置き換えて考え
みなさん、こんにちは! 突然ですが…皆さんには、ひいきにしている ゲームのキャラクターはいらっしゃいますでしょうか。 手ごわいボス敵や頼れるパートナー、愛嬌のある動きをするモンスター達は 一体どのような仕組みで動いているのでしょう? 今回の記事ではそんなゲームの中のキャラクター達を 魅力的に動かす仕組み、AIについて御紹介したいと思います。 改めまして本記事を担当させて頂きます、Cygamesエンジニアの佐藤です。 これまでコンシューマ機でのゲームAI開発に携わり、 ゲームならではのキャラクター表現の楽しさを追いかけてきました。 このブログを通じて、皆さんのゲームのキャラクターを より表情豊かに魅力的なものにする方法について、皆さんと一緒に考えていければ幸いです。 今回はゲームのAIをデザインするにあたって重要となる、 「知識表現を定義する」というステップと、 知識表現の一つである影響マッ
こんにちは。会員事業部ビジネス開発グループの高田です。 クックパッドは今年、株主優待制度として、プレミアムサービス一年間無料クーポンを贈呈しました。本エントリではクーポンコードを打ち間違えて、意図せず他の人のクーポンコードを使用するのを防ぐために工夫した話をご紹介します。 はじめに クーポンコードは入力のしやすさを優先して数字だけの文字列にしました。はじめは rand 関数を使って生成しようとしていたのですが、数字の打ち間違えや順序間違いで、意図せず誤使用してしまうのを防ぐためにチェックサムを加えるのがいい、と同僚から助言をもらいました。 いくつか調べて見たところ、Luhn アルゴリズムが上記を満たしていたので利用することにしました。 Luhn アルゴリズムの利用 Luhn アルゴリズムとは、誤り検出のためのチェックサム符号で、1 桁の間違いや隣接する数字の順序間違いを検出できるという特徴
現在ではREST APIはとても一般的な話題です。ほとんどすべてのWebアプリケーションの一部分となっています。シンプルで一貫性があり実際的なインターフェースは必須です。これは皆さんのAPIを他の人が使うことをとても容易にします。皆さんにとってはRESTの実践が日常的に感じられるかもしれませんが、RESTをあまり尊重しない人々もよく見かけます。これがRESTについて投稿するきっかけでした。 この記事にはRESTfulなAPIを設計する時に考慮すべきベストプラクティスがあります。 注意 : ここでのベストプラクティスは、私が過去の経験に基づいて良いと考える事例です。もし違う考えをお持ちであれば、お気軽にメールをくだされば意見交換できると思います。 APIのバージョンを示す APIのバージョンは必須であるべきです。これがあると時間が経ってAPIが変わっても影響を受けません。その方法の1つはUR
2014-03-30 安価に視線を可視化する方法 先日の記事について「やり方を教えて欲しい」というコメントが多かったので簡単にまとめてみました。手間は多少かかりますがフルプライスエロゲ1本分より安く構築できますので是非色々試して自分の性癖を公表してみて下さい。Let's 恥晒し(笑)。 赤外線暗視機能付きのWebカメラかビデオカメラ まずこれが必要です。今回は今年3月に発売されたばかりの「DC-NCR300U」を使用しました。Hanwha 314万画素 CMOSセンサー搭載 FullHD 1080p対応 赤外線 WEBカメラ DC-NCR300U [フルHD][マイク内蔵]出版社/メーカー: ハンファQセルズジャパン株式会社メディア: エレクトロニクスこの商品を含むブログを見る OGAMA(Open Gaze And Mouse Analyzer) こちらがオープンソースの視線可視化プログ
どこで売ってるのかさえ知らないが、商用の視線追跡システムは高価らしい。一方、研究レベルでは安価な視線追跡システムの提案やプロトタイピングが結構論文になっているらしい。今回使った視線追跡ソフトITU Gaze Trackerはそのひとつの成果で、主にコペンハーゲンIT大学の研究グループによって作られている。ITU Gaze Trackerは家電量販店などで手に入るウェブカメラやビデオカメラをそのまま改造なしに使って、安く簡単に視線追跡システムを構築可能にするソフトを目指している*1。 公式の動作環境は、 Windows XP SP2 .Net Framework 3.5 SP1 赤外線暗視機能付きのウェブカメラかビデオカメラ*2 それなりに性能の良いコンピュータ となっているが、OSはWindows Vista SP2(32bit)でも動作した。あと動作環境には書いてないけど、フォーラムにあ
MVC2モデルとMVCモデルの違いについて、良い記事があったのでリンクしておく。 【元ネタ】 MVCをWebに適用した「MVCモデル2」 : Java好き MVCモデルのバリエーション: プログラマの思索 (引用開始) 「MVC」と「モデル2」の違いが、「モデル」の設計に影響を与える 違いは、「モデル」が「ビュー」に状態が変わったことを通知することがWebの性質上なくなった点。 サーバー側からいきなり「モデル」の状態変更が通知されることは HTTPではできないので、必然的にそうなる。 大したことのない変化に思えるが、これにともない「モデル」の構成が「MVC」と大きく変わる。 「モデル」が状態が変わったことを通知することができないことは、 毎回最新の状態のモデルを作ることにつながる。 「MVC」では前状態を保持しつつ状態変化に対応させるといった「モデル」の使い回しが可能だった。 しかし、「モ
こんにちは、クライアントエンジニアの Sindharta Tanuwijaya(シンダルタ タヌイジャヤ)です。 今更ですが、1月の社内の勉強会で、 Behaviour Tree という AI の手法を発表させて頂きました。当時は幻塔戦記グリフォンを開発するのにあたって、1つのフィーチャーを完成させるためにこの機能を作っていましたが、今はいろいろなフィーチャーで使われています。 Behaviour Tree とは思考 AI のアルゴリズムの1つで、比較的に良く知られているステートマシンと目的が似ています。それはゲーム内のオブジェクトをどう考えさせて、行動させることです。ステートマシンも良い手法ですが、 AI が複雑になってくるのにつれて、管理の難しさが倍に増えるデメリットがあります。そこで、 Behaviour Tree を導入してみたわけです。 当日発表したスライドは以下です。 また、自
今日の話は,ARにおいて人や実物体の後方にCGがある時に,CGの一部または全体が隠れて見えなくなっている状態(オクルージョン)をきちんと表現するべく,Kinectを使ってみましょうというものです. 前回はマーカベースの手法で遮蔽を実現する方法を紹介しましたが,今回はそれのKinect版です.事前に形が知らされていない未知形状の物体や,変形する物体,人間の手や胴体に対してもオクルージョンが表現できるようになります.ビバ!Kinect! 今日はこれの作り方と原理について解説します.あ,ちなみに僕本人です. まずはソースコード いきなりですがProcessingのコードです.Kinectを扱うライブラリとしてsimple-openniを使いました.simple-openniのセットアップについては説明を省きます. import SimpleOpenNI.*; SimpleOpenNI kinec
初めに 従来のYahoo!地図アプリは、社内ではラスタ形式地図アプリと呼んでおり、サーバ上で生成された地図タイル画像(ラスタデータ)を端末側で貼り合わせることで、地図を表示していました。 しかし、画像でやり取りを行うために、次のようなデメリットもありました。それは、通信の帯域を多く占有したり、地図の回転をする場合に地名などの文字も回転してしまい、読みづらくなったりする点です。 そこで、今回フルリニューアルしたAndroid版Yahoo!地図アプリでは、サーバからベクトルデータを受信して、端末側で地図を描画するベクトル形式地図アプリに移行しました。 ベクトル形式地図アプリに移行したAndroid版Yahoo!地図アプリは、従来版と比べ、以下のような点がメリットとして挙げられます。 通信の軽量化 回転拡大縮小のスムーズ化 3Dなど新しい地図表現の追加 ベクトル形式地図アプリ ラスタ形式のデータ
[Video] http://www.youtube.com/watch?v=s1dhXamEAKQ TildのYehuda KatzのGolden Gate Ruby Conference 2013での講演。 Ruby on RailsのクリエーターであるDavid Heinemeier Hanssonが、「JavaScript勢はダブルMVCで苦しんでいる。サーバとクライアント両方にMVCが必要で複雑すぎる。」とTwitterで発言したのに対して、Yehudaは、それでは誤解を与えると危惧し、GUIプログラミングが歴史的にどのようにMVCに発展してきたかを紹介することで、ダブルMVCが本当に意味するところを解説しています。 DHHの発言は、盛り上がってきたMeteor / Node.js勢に対する単なる批判っぽいですが、それに対してYehudaはロジカルに話をまとめてます。 スライドを
図7 Mix-inによるStreamクラスの構築例<BR>クラス階層はツリー構造を保ちつつ,コードのコピーも避けている。 継承には2つの意味がある Javaのような静的型のオブジェクト指向言語の変数には,変数を介して呼び出されるメソッドを制限する働きがありました。ただし,制限がかかるのは「どのようなメソッドを持っているか」であって,「どのように実装されているか」ではありません。 今まで一まとめにして継承と呼んできましたが,実は継承には2つの異なる概念が含まれています。一つは,「どのようなメソッドを持っているか」あるいは「どのように振る舞うか」ということに着目した「仕様の継承」です。 もう一つは「どのようなデータ構造を使い,どのようなアルゴリズムで処理するか」ということに着目した「実装の継承」です。 静的型言語では両者の区別が重要になります*4。Javaでもこの2つを明確に区別しており,実装
demoscene の世界では近年 raymarching というレンダリング手法がよく用いられています。ポリゴンモデルは使わず、モデルデータは数式の図形としてシェーダコードの中で表現し、pixel shader で図形との距離を求めて可視化していく、というものです。 demoscene (4k/64k intro) の厳しい容量制限の中綺麗な絵を出すために生み出された手法ですが、従来のポリゴンベースの手法では難しい独特の絵を出すことができるという副次的効果があります。 raymarching の代表的な作品群 この手法は PS4 世代以降、小規模ゲーム開発チーム向けの有用なツールになるんじゃないかと考えていて、atomic では試しに背景にこの手法を用いています。以下はその過程や考察です。 まず、raymarching の基本については demoscene.jp の人たちが素晴らしい解説
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く