タグ

ブックマーク / yaneurao.hatenadiary.com (32)

  • ソーシャルゲーム運営地獄 - やねうらおブログ(移転しました)

    実際に関係者から聞いた話なのだが、いま、底辺のソーシャルゲーム会社は大変なことになっているらしい。底辺じゃない会社もそれなりに大変なものかも知れないが、底辺の会社はそれどころの騒ぎではないようだ。 まず、プログラマーの力量に合っていない。 「ソーシャルゲーム(の開発を)舐めんな」みたいな話は大手の開発会社のプログラマーからよく聞くが、人数がある日突然何万ユーザーも増える。このへんの流入する人数の調整が利かない。 もともと何十万人規模の接続をさばくには、MMORPGなどのオンラインゲームよりもシビアであり(普通、MMORPGでもワールドがわかれていて、1つのサーバーの常時接続人数は数千人規模に収まるので)、大人数になったときにうまくスケールアウトするように設計するためには、ゲームシステム自体がそのへんを考慮してうまく練られていないといけない。 ところが、底辺ゲーム会社だと、社長がそのへんの理

    ソーシャルゲーム運営地獄 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2013/09/17
  • 古くて新しい自動迷路生成アルゴリズム - やねうらおブログ(移転しました)

    最近、ゲーム界隈ではプロシージャルテクスチャー生成だとか、プロシージャルマップ生成だとか、手続き的にゲーム上で必要なデータを生成してしまおうというのが流行りであるが、その起源はどこにあるのだろうか。 メガデモでは初期のころから少ないデータでなるべくど派手な演出をするためにプロシージャルな生成は活用されてきたが、ゲームの世界でプロシージャル生成が初めて導入されたのは、もしかするとドルアーガの塔(1984年/ナムコ)の迷路の自動生成かも知れない。 なぜ私が迷路のことを突然思い出したのかと言うと、最近、Twitterで「30年前、父が7年と数ヶ月の歳月をかけて描いたA1サイズの迷路を、誰かゴールさせませんか。」というツイートが話題になっていたからである。 この迷路を見て「ああ、俺様も迷路のことを書かねば!俺様しか知らない(?)自動迷路生成のことを後世に書き残さねば!」と誰も求めちゃいない使命感が

    古くて新しい自動迷路生成アルゴリズム - やねうらおブログ(移転しました)
    xmx3
    xmx3 2013/07/01
  • エンターテイメントとしての将棋 - やねうらおブログ(移転しました)

    「XXXは観るものか(試合を観戦して楽しむものか)、(自分で)やるものか」という設問はなかなか興味深い。 「プロレスは観るものか、やるものか」と言えば多くの人は前者だろう。 「野球は観るものか、やるものか」 「陸上競技は観るものか、やるものか」 「セックスは観るものか、やるものか」 など、話題は尽きない。 とりわけ「将棋は観るものか、やるものか」 この疑問が長年、私のなかでくすぶっていたのだが、先日、一つの結末に辿り着いたのでそれを今日は書いてみたい。 プロの試合の指し手の意味を理解するにはそこそこの棋力が必要である。NHK将棋対局などを見ていても、少なくともアマ五級程度の棋力がなければ解説者の言っている意味が理解できない。そういう意味では、ずぶの素人が見て楽しめるものではない。 ただ、将棋人口のうち、このレベル以上の級位者の占める割合はかなり多い。野球で言うと「俺、昔、草野球やってた」

    エンターテイメントとしての将棋 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2013/03/25
  • ゲームの世界の経済学が現実世界に通用するという話 - やねうらおブログ(移転しました)

    最近、私の会社では年商1,000億円ぐらいの規模の会社の販売管理系のシステムを開発しているのだが、どうもこのシステムの設計意図が私にとってはまさにデジャヴというか、「もうかれこれ10年ぐらい前にこれと同じこと考えてたよなー」と思ったので、そのあたりのことをだらだらと書いてみる。 いま、話を単純化するために店頭販売価格をいくらにすればいいかを決定するシステムを作りたいとしよう。 まず、経済学の教科書によく載っている需要曲線というのは次図のような反比例っぽいグラフである。 経済学の教科書では、これと供給曲線とを重ね合わせて、その交点が均衡価格(市場価格)だと説明がある。 販売する側の視点に立った場合、最適な価格(利益を最大化できる価格)というのは、均衡価格では決してない。そこで、いま供給曲線については考えないことにして、利益を最大化できる価格で売る、とだけ考えよう。 近年、インターネットの価格

    ゲームの世界の経済学が現実世界に通用するという話 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2013/02/09
  • コンピュータ囲碁 ―モンテカルロ法の理論と実践 - やねうらおブログ(移転しました)

    amazonで予約しておいた「コンピュータ囲碁 ―モンテカルロ法の理論と実践」(asin:4320123271)が今日届いた。 モンテカルロ法について、理論を美添 一樹氏、実践を山下 宏氏(囲碁プログラム彩の作者)が担当。 コンピューター囲碁のアルゴリズムとしては2012年現在、モンテカルロ法が最強。モンテカルロ法が使われる以前はプロ棋士に勝つにはあと50年はかかると言われていたが、モンテカルロ法によって、あと10年かかるかどうかぐらいにまで短縮化された。 書で紹介されている手法の多くは、評価関数の設計が難しいとされている他の類似のゲームでもそのまま使えるものが多い。評価関数の設計の難しいゲーム等に取り組んでいる人にはお勧め。 近年のコンピューター囲碁に関して言えば、モンテカルロ法に加えて、並列化と機械学習が主流だと思うのだが、書は機械学習については触れておらず、その点は少し寂しいもの

    コンピュータ囲碁 ―モンテカルロ法の理論と実践 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2012/11/19
  • 人間に勝つコンピュータ将棋の作り方 - やねうらおブログ(移転しました)

    「人間に勝つコンピュータ将棋の作り方」(asin:4774153265)のほう、ようやく読み終わった。 このは読み物の側面が強いのだが、習甦がどんな評価関数にしているか詳しく書いてあったりして、コンピューター将棋開発者にとっても他にはない貴重な資料だと思う。 …とだけ書いてもコンピューター将棋開発者以外には何のことだかわからないと思うので以下に少し捕捉する。 コンピューター将棋開発者の間では、2011年まではBonanzaの3駒の位置関係による評価関数が決定打と思われていた。極めて単純な(計算しやすく差分計算もしやすい)評価関数で、かなりうまく局面を評価でき、実際強かった。 一方、GPS将棋は評価関数を非常に凝った形にしていたが、長年、開発の手間のわりにはなかなか強くならなかった。評価関数の計算に時間がかかるようになるとその分、単位時間に探索できる局面の数が減るので単に3駒関係よりうまく

    人間に勝つコンピュータ将棋の作り方 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2012/11/19
  • 定期的に繰り返し実行する簡単ではないお仕事 - やねうらおブログ(移転しました)

    いやー、この問題は当に難しい。難しすぎて、どうやって解決すればいいかいまだによくわからない。わからないので、ここに書いてみる。 最初、とあるお客さんのために「ひよこの餌やりプログラム(仮)」を作っていたんだ。開始ボタンを押すとひよこの餌が出てくる。たったそれだけのプログラム。 今回は、これを「定期的に実行する機能が欲しい」と言われた。 この要望を実現するのがすこぶる難しかったんだ。 「やねうらおってそんなプログラムすら書けないの?老害なの?」 とか言わないで欲しい。この問題、当に難しいんだよ! ■ 1度目のひよこの全滅 まず、この要望に沿って、私の会社のプログラマが当初、次のようなダイアログをつけたわけだ。 繰り返し実行のところにチェックを入れた場合、ここで指定された時間後にも繰り返し実行する。単位は分で指定する。1日ならば60×24 = 1440を指定する。そうすると、ひよこの餌やり

    xmx3
    xmx3 2012/06/28
  • やねうらお将棋講座 その2 - やねうらおブログ(移転しました)

    前回(→ http://d.hatena.ne.jp/yaneurao/20110603 )の続き。 今回は、玉の安全度についての考察。 ■ 玉の安全度とは? 玉周辺に金や銀などの駒がたくさんあるほうが「玉は固い」と言われる。 対して、玉の退路が確保されているほうが良いとも言われる。これは「玉の広さ」である。 つまり玉の安全度を見極めるためには、固さ(玉周辺に駒が密集していること)と広さ(玉の退路があること)という一見すると相反する二つの概念が必要になる。 従来の将棋の入門書などではこの二つの概念が相反しているため、うまく言語化できておらず、それゆえ、「優秀な囲い」(矢倉囲い・舟囲い・美濃囲いetc…)をサンプルとして提示されるに留まることが多かった。 しかしそのような代表的な囲い以外の形や、囲う前段階の形については評価軸が与えられていないため、初心者はそれらの形が良いのか悪いのかを判断で

    やねうらお将棋講座 その2 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2012/01/23
  • 電王戦リアルタイム実況 by やねうらお - やねうらおブログ(移転しました)

    [14:10] いまからこのブログで電王戦のリアルタイム実況をいまからやっていきます。twitterにしようかと思ったのですが、長文になると思うので、ブログですることにしました。 [14:20] まず、電王戦が何であるかというところから解説します。電王戦とは、コンピューター将棋とプロ棋士との対局です。この対局のスポンサーにはドワンゴがついています。 コンピューター将棋側は、ボンクラーズという、去年の第21回世界コンピューター将棋選手権の優勝ソフトです。ボンクラーズは将棋倶楽部24で196連勝して、将棋倶楽部24で最高レーティングR3364に到達しました。 将棋倶楽部24はプロ棋士もお忍びで指していますから、早指しでは実質的に人間のトップと同等以上と言えるのではないでしょうか。 遠山五段によると「プロ棋士ならば(将棋倶楽部24で)R2800以上」*1らしく、プロ棋士もお忍びで参加している将棋

    電王戦リアルタイム実況 by やねうらお - やねうらおブログ(移転しました)
    xmx3
    xmx3 2012/01/23
  • メールは電子の海に消ゆ - やねうらおブログ(移転しました)

    以前、将棋のプロ棋士の神吉先生と仕事でご一緒させていただいたときに、神吉先生に私が送ったメールが届いていなかった。私が手入力した神吉先生のメアドが間違っているのか?ということになって、その場でメールを私が神吉先生に送ってみた。その場で神吉先生がメーラーで受信していただいたのだが、やはり届かない。 どうもおかしいなと思い、私が神吉先生のOutlookの設定を確認したところ、スパムを自動判定するになっていて、迷惑メールフォルダに入ったメールは自動的に(即座に)削除する設定になっていた。また迷惑メールの判定レベルは「高」で運用されていたので、差出人セーフリストに入っていなければかなりの確率で迷惑メール行きだ。これには私も白目をむいた。 私 「神吉先生!この設定ですと迷惑メールに判定されてしまった場合、メールが届いたかどうかすらわかりませんよ。」 神吉「迷惑メールのフォルダに迷惑メールがどんどんた

    メールは電子の海に消ゆ - やねうらおブログ(移転しました)
    xmx3
    xmx3 2011/08/03
  • 本格的に本書く - やねうらおブログ(移転しました)

    最近、どうも頭の調子が良すぎる。このブログのここ三ヶ月ぐらいの記事を読めば「あれ?やねうらおの中の人、変わったのか?」と思えるぐらいの変わりっぷりだ。自分でも驚いている。 このチャンスにを書かなくてはもったいない。4冊ぐらい一気に書く。 まずは来年の春に技術評論社から「上級プログラマならこれだけは知っておきたい13のアルゴリズム(仮)」を出します。

    本格的に本書く - やねうらおブログ(移転しました)
    xmx3
    xmx3 2011/07/23
  • ponanzaが将棋倶楽部24で大暴れ - やねうらおブログ(移転しました)

    先日の世界コンピュータ将棋選手権*1で5位だったponanzaが将棋倶楽部24*2で大暴れ中。 ponanzaは大会5位とは言ってもマシンスペックの差などから考えるに、マシンが同条件なら優勝の可能性も十分あったソフトだし、レーティング的に見ても大会で1位〜4位のソフトともほとんど遜色は無いと思われる。 そんなponanzaがプロ棋士もお忍びで指していると言われている将棋倶楽部24に参戦。 ※ コンピュータ将棋ソフト開発者のソフト指し参加は公認。 ponanzaはR2400からスタートして、5日目である現時点(2011年5月14日9時現在)で62勝2敗。勝率0.96875。 ponanzaは将棋倶楽部24のR3000(トップアマか奨励会3段以上だと思う)前後に連戦戦勝。 現在R3172で、将棋倶楽部24の最高R保持者となった。 しかも、このまま指し続ければいまの勝率から言ってR3300ぐらい

    ponanzaが将棋倶楽部24で大暴れ - やねうらおブログ(移転しました)
    xmx3
    xmx3 2011/06/01
  • アナライジング・マルウェア - やねうらおブログ(移転しました)

    オライリーの編集の人に献していただいた。アナライジング・マルウェア ―フリーツールを使った感染事案対処 (Art Of Reversing) 内容は、まあ、逆アセしてソフトウェアを解析する系のと被っている気はする。マルウェアなのでProcess Explorerとかで書き換えているファイルとかを追跡する部分が違うが、筋において同じだ。 の後半以降の1/3ぐらいがカーネルモードで動作するマルウェアの解析で、カーネルモードで動作するドライバとか書いてデバッグした経験のある人になら常識だと思うけど、そうでない人には目新しい内容だと思う。 このは、発売日前にオライリーの人に送っていただいたのだが、このブログで取り上げるのが遅くなった。当、申し訳ない。 偶然にも、このが私の家に到着した日に行った忘年会で国内初の商用アンチウイルスソフトの作者とお会いした。この話はとても長くなるので別の記

    アナライジング・マルウェア - やねうらおブログ(移転しました)
    xmx3
    xmx3 2011/01/11
  • 増玉将棋 - やねうらおブログ(移転しました)

    その昔、将棋で、自分は弱いのでハンデは欲しいけど相手に駒を落としてもらうのは嫌だというプライドの高い将軍様が、自分の8三の歩を落とし、「こっちが駒落としたから先手ね」と言って初手8七飛成でいきなり優勢という将棋をどっかで見たことがある。(出典ど忘れ) 「駒を落としたほうが優勢になる」という不思議な将棋だ。 では「駒を入れたほうが劣勢になる」ようなケースは無いだろうか? と考えていたら突如ひらめいた。これだ。 5八にも玉を入れる。増玉将棋! 二つある玉のうち、どちらかの玉をとられたら負け。 当然増玉しているほうが不利。 しかし、二つある玉のうち、両方の玉をとられたら負け(取った玉は手駒としては使えない)というルールにすれば、増玉している側は玉の一つを金とか馬の代わり使えるので、増玉してるほうが有利。 前者を増玉将棋A、後者を増玉将棋Bと名付ける。 飛車落ちぐらいの手合いの人とやるなら、この増

    増玉将棋 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2011/01/04
  • 美しすぎるプログラムを解読せよの巻 - やねうらおブログ(移転しました)

    #include <iostream> #include <cstring> using namespace std; long long dp[18][4][4][4][4][4][4][4][4][4][4]; #define FORN( n ) for ( int i##n = 0; i##n < 4; i##n ++ ) int main() { memset( dp, 0, sizeof( dp ) ); FORN( 0 ) FORN( 1 ) FORN( 2 ) FORN( 3 ) FORN( 4 ) FORN( 5 ) FORN( 6 ) FORN( 7 ) FORN( 8 ) FORN( 9 ) dp[0][i0][i1][i2][i3][i4][i5][i6][i7][i8][i9] = 1; for ( int r = 1; r <= 17; r ++ ) { FORN

    美しすぎるプログラムを解読せよの巻 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2010/10/18
  • C#のvarとtry〜catchが糞すぎる - やねうらおブログ(移転しました)

    C#3.0からはvarと書くと型を明示的に指定しなくても済む。 var hoge = new HogeClass(); しかし例外処理をするためにこれをtry〜catchで囲みたいとする。 try { var hoge = new HogeClass(); hoge.XXX(); } catch { if (hoge!=null) hoge.YYY(); } このプログラムはコンパイルが通らない。catchのなかでは変数hogeにアクセスできない。try節が終わっているため、hogeのスコープが終わってしまうのだ。仕方ないのでhogeを外部のブロックに出す。 var hoge; try { hoge = new HogeClass(); hoge.XXX(); } catch { if (hoge!=null) hoge.YYY(); } しかしこれまたコンパイルが通らない。var hog

    C#のvarとtry〜catchが糞すぎる - やねうらおブログ(移転しました)
    xmx3
    xmx3 2010/10/05
  • ぬるぬる動くドールの動画を制作中 - やねうらおブログ(移転しました)

    そんなわけで、世間ではCEDECで盛り上がっているさなかに、ぬるぬる動くドールの動画をひっそりと作っているわけである。ひとりCEDECである。(←寂しい) ここで言う「ぬるぬる」とは「滑らかに」という程度の意味だ。それでは、ひとりCEDECの名に恥じぬよう技術的な部分を詳しく書いていく。 ★ 何故、突然ドールの動画? ニコニコ動画にupされているMMD(MikuMikuDance)/PMDで作られた動画は完成度が高いものが多い。いまや特殊で高価なアプリなしに、フリーソフトだけでこれだけのものが作れるというのは驚くべきことだ。 書籍のほうも充実していて、キャラクターをつくろう! 3DCG日和。 vol.2 - MikuMikuDanceで踊る、ユーザーモデル制作 を見ればモデルの作り方がわかるし、MMDの使い方や動画作成の手引きなら、MikuMikuDanceスターターパックやMikuMik

    ぬるぬる動くドールの動画を制作中 - やねうらおブログ(移転しました)
    xmx3
    xmx3 2010/09/08
  • エンジニアに英語力は必要か? - やねうらおブログ(移転しました)

    たいていのビジネスアプリを作るのにプログラミングの知識ってたいして必要ではなくて、英語がわからなくてもほとんど問題とならない。 いまや主要なプログラミング書籍は日語訳されているし、中身の無い駄目なまで含めて過剰に翻訳されているのが実情だ。 たぶん、業務でプログラミングをしている人の99%ぐらいの人は英語が読み書きできなくとも何ら問題はない。英語を自由に読み書き出来ないために、数%の業務上のロスは出るかも知れないが、それはまあ許容範囲だろう。 一流のエンジニアや一流のエンジニアを目指す人が「エンジニア英語が出来なければ」なんて言っているのを真に受けないほうがいいと思う。二流か三流のエンジニアになるのが能力的、時間的に精一杯の人にとっては、英語以外にやらなければならないことはたくさんあるわけであまり英語のために個人的なリソースを裂くべきじゃないと思う。 しかし「では、英語の不自由なエンジ

    エンジニアに英語力は必要か? - やねうらおブログ(移転しました)
  • virtualを「仮想」と訳していいものか - やねうらおブログ(移転しました)

    私は「virtual」を「仮想」と訳すのにすごく抵抗がある。 「virtual」って英語来の意味は、「実質上の」「実際上の」というような意味だ。「表面的にはそうではないが実質的にはこれなんだ」というような時に使う。 「virtual memory」を「仮想記憶」と訳すと「実際は存在しないメモリ」であるかのように思える。現実的に存在しないのなら無くても構わないようにすら思える。確かに物理的には存在しないから実在はしないんだけど、かと言って不要というわけでもなく、「virtual memory」来の意味は「(ユーザーアプリなどが)実際に使うときのメモリ」みたいなニュアンスで「無くても構わないメモリ」とは、ちょうど真逆の意味だ。 「仮想」という言葉が、「存在しない」という否定っぽい語感なのに対して、「virtual」来の意味は「実質上(は、これだ)」という肯定っぽい意味だからどうもギャップ

    virtualを「仮想」と訳していいものか - やねうらおブログ(移転しました)
  • BOTを作るということ - やねうらおブログ(移転しました)

    オンラインゲームで自動的に狩りをして経験値を稼いだりするプログラムはBOTと呼ばれる。BOTはたいていのオンラインゲームの利用規約では禁止されており、ゲームバランスを崩壊されるという意味で一般プレイヤーからは忌み嫌われる存在である。 しかし私はBOTを作るというのはそれ自体がゲームなのではないかと思う。 スキルビルドだけすれば戦闘は半自動のゲームRPGでよく見かける。ドラクエやFFにしても条件によっては自キャラを移動させて敵と遭遇すれば戦闘ボタンを連打しているだけで済むことがある。 それだけならばBOTを作るのは簡単だが、実際のオンラインゲームでは事情はもっと複雑だ。それはほとんどのオンラインゲームはレベル上げ(=経験値稼ぎ)をエンドコンテンツとしているので、戦闘自体を結構作り込んであって、そこまで単純化できないからだ。 普通BOTを作るときは効率をいくらか下げて、すなわち狩場のランクを

    BOTを作るということ - やねうらおブログ(移転しました)