MyMiniCity で踏んで欲しい URL が変動しすぎる - にぽたん研究所

December 26, 2007

このエントリーをはてなブックマークに追加
今更感がありますし、まぁどうせすぐ人気がなくなるんだろうなーとか思いつつ、MyMiniCity が最近面白いです。
みなさんよりちょっと遅めに始めたんですが、なかなか街が成長させるのが難しくて面白い。

nipotan - MyMiniCity

MyMiniCity とは何ぞや的な話については、既に語りつくされているので、ここでは詳細を端折りますけど、まぁ、ザックリ言えば誰かにアクセスしてもらって、アクセスの都度人口が増えていくわけですよ。
同日に 1 IP アドレスからしか受け付けないっぽいので、何回リロードしても無駄なのですが。
人口が増えるにつれて、色々問題が起こって、段階に応じて「その問題を解決させるための URL」が登場し、今度は人口を増やさないが問題を解決するための URL を踏ませないと人口が飽和状態になって色々な問題が起こります。

人口が増えると…
  1. 失業率が増える → 工場を作る /ind
  2. 交通渋滞が起こる → 交通を整備する /tra
  3. 犯罪が増える → 警官を配備する /sec
  4. 汚染が拡大する → 公園を作る /env
結局、アクセスする URL が http://ユーザ名.myminicity.com に続いて、"/" だと人口増え、それ以外だと上記の効果が起きます。

で、色々工夫して色々な人にアクセスしてもらうよう頑張っているのですが、どうも人口増やそうと思って "/" にアクセスしてもらうと、無駄に人口が増えて環境が破壊されていく。
例えば失業者が増えていって、失業者救済のために "/ind" にアクセスしてもらうと人を誘導しようとすると、明らかに人口とはアンバランスなほどの工場が出来てしまうし、人口も伸び悩む。
結局、環境が破壊されない限りは人口を増やすのがいいんだけど、そのバランスや誘導方法が異常に難しいな…と思ってます。

「こっち見て!」
「こんどはこっち見て!」

って、人を振り回すのが面倒くさかったので、その時の街の状況に応じて自動的にアクセスさせる先を選んでリダイレクトするようにできないかなって思い付いたので、ざっと適当に作ってみました。
もしよかったら、どんどんアクセスしてみてください。
環境のバランスが崩れた時に自浄作用が働きますんで。

http://mmc.nipotan.org/

ちなみに、URL を
http://mmc.nipotan.org/街の ID/

みたいにすると、問題が起こっている限りその街で、一番バランス悪いところに重点的にリダイレクトし、そうでなければ人口を増やす URL にリダイレクトするようになります。

MyMiniCity を使ってる方は、もしよかったら使ってみてください。
一応コードも晒しておきますね。



package MMC::Dispatcher;

use strict;
use LWP::Simple ();
use Apache::Constants qw(:response);
use Apache::Request;

use constant DEFAULT_USER => 'nipotan';

our %URI_MAPPING = (
    unemployment => '/ind',
    transport    => '/tra',
    criminality  => '/sec',
    pollution    => '/env',
);

sub handler {
    my $r = Apache::Request->new(shift);
    my $user = $r->param('u') || default_user($r);
    my $url = determine_url($user);
    $r->header_out(Location => $url);
    return REDIRECT;
}

sub default_user {
    my $r = shift;
    return $r->dir_config('MMCDefaultUser') || DEFAULT_USER;
}

sub determine_url {
    my $user = shift;
    my $user_url = sprintf('http://%s.myminicity.com', $user);
    my $xml_url  = $user_url . '/xml';
    my $xml = LWP::Simple::get($xml_url);
    return $user_url . '/' unless $xml;
    my %statistics = ();
    $statistics{$1} = $2 while $xml =~ m{<([^<>]+?)>(\d+)</\1>}g;
    my @rand_table = ();
    my $total = 0;
    for my $name (qw(unemployment transport criminality pollution)) {
        my $percent = $name eq 'transport' ?
            100 - $statistics{$name} : $statistics{$name};
        next unless $percent;
        $total += $percent;
        push @rand_table, [$total - 1, $name];
    }
    return $user_url . '/' unless $total;
    return $user_url . $URI_MAPPING{$rand_table[0]->[1]} if @rand_table == 1;
    my $emphasis;
    my $random = int(rand($total));
    for my $data (@rand_table) {
        return $user_url . $URI_MAPPING{$data->[1]} if $random <= $data->[0];
    }
    return $user_url . '/'; # XXX
}

1;


nipotan at 18:05 | Comments(0) | TrackBack(8) | 技術 
このエントリーをはてなブックマークに追加

Trackback URL for this entry

Trackbacks

1. MyMiniCity というゲーム(?)で遊んでいます  [ ばれにゅ☆どっとねっと ]   December 26, 2007 22:05
「MyMiniCity」というゲームがあります。いや、ゲームと呼んで良いものなのかどうかいまいちはっきりしないのですが、簡単に言うと、自分の街を作って、その成長を眺めて楽しむゲームです。
2. MyMiniCity始めますた  [ 天井冴太的つれづれblog [天井の染み] ]   January 05, 2008 23:23
友達にURLを渡してアクセスしてもらうと街が育っていくゲーム『MyMinCity』 | 100SHIKI.COMで紹介されていて面白そうだったんで、作った。 MyMinCityで登録すると、あなた専用のURLをもらうことが出来る。すると、そのURL自体が一つの街になり、そこにアクセスするたびに街....
3. MyMiniCityの便利ツール  [ Hori's Weblog ]   January 05, 2008 23:59
街が発展してくると、アクセスするURLを変えないといけないのですが、これをアナウンスするのが面倒だな...
4. [other]myminicity  [ m_pixyの読書日記 ]   January 08, 2008 14:45
http://blog.livedoor.jp/nipotan/archives/50905810.html 上記のところで書かれているやり方。人口を増やすことを基本にしつつ、他のパラメータが悪化していたらそちらを改善するというロジックらしいです。ちなみに下記のようなURLでアクセス可能らしい。(ついでにクリッ
5. 単独ぺうにっき  [ ★マルガリータ★ ]   January 11, 2008 17:13
ぺうにっきはオマケみたいなつもりだったんだけど、なんかちょっと右往左往してるので単独ぺうにっきを書きます。 今の気持ちは、ビックリマンチョコ...
6. 素晴らしい物を見つけてしまった  [ 毒男のオナニー部屋('A`) ]   January 30, 2008 13:13
MyMiniCityの何か良いツールは無いものかと 検索しているとこんな物見つけました。 にぽたん研究所 コレを使えば問題に対応したURLを選んで飛んでくれるというなんて素晴らしいのでしょう! にぽたんさんの町に行ってみると何の問題も無く7千人以上の素晴らしい町でした(...
7. MyMiniCityを便利にするURL  [ ななぼん日記略して「ななろぐ」 ]   October 19, 2008 14:26
さて、このblogの左下の方にも付けているのですが、おいら、MyMiniCity やってまして。 http://nanabonjapan.myminicity.com/ 結構面白げなのですが、何しろこのサービス、人口増加に伴いいろいろな補完をしてあげる必要があるんですね。 やれ工場を造ったり、やれ道路....
8. MyMiniCityのアクセス先URLを自動決定してくれるスクリプト  [ ななろぐ@ココログ ]   October 19, 2008 14:38
今日はつかの間の休息、会社も休みなので、Windows Livw Writer

Post a comment

Name:
URL:
  Remember info?: Rate: Face    Star