トップ «前の日記(2010/07/08) 最新 次の日記(2010/07/10)» 編集

SikabaneWorksが関係するコンテンツ(主に*band系ローグライク)の開発近況・補足から全く個人的な雑記まで。

[WEB:屍の見える丘公園]| [RSS]

Angband | Badiashimshe | C# | CRAUZEL | D'angband/小説草稿 | D'angband/開発 | DarkSouls | Demon'sSouls | DungeonCrawl | ElvenUteruses | Haskell | Hengband | J9シリーズ | LEGO | LineDrawing | MISC | MTG | Mac | Math | Moria | R-18 | Roguelike | Rough | RoughSketch | Ruby | SDL | UNIX | VMware | WarHammer | Zangband | アタシラヂョウヲウ | イラスト | ガジェット | ゲーム | ゲーム紹介 | ゲーム製作技術 | ゲーム論 | スケッチ | ツクール | テクノロジー | ニコニコ動画 | ファルコム | ファンタジー | マリオ | ヴィーヤウトゥムノ | 別記事追加予定 | 変愚蛮怒 | 変愚蛮怒/スポイラー | 変愚蛮怒/元ネタ探訪 | 変愚蛮怒/攻略 | 変愚蛮怒/開発 | 宗教 | 情報 | 政治 | 文字コード | 日ペ昔話 | 東方 | 東方ワンドロ | 東方外法漢女 | 歴史 | 漫画製作 | 版権絵 | 画像処理 | 翻訳 | 自然言語 | 艦隊これくしょん | 落書き | 言語解析 | 読書 | 超人ロック | 追記予定 | 通信 | 鉄獄旅慕情 | 阿片窟 | 馬鹿馬鹿蛮怒/開発 | 魔法少女まどか☆マギカ | 魚類版深夜の真剣お絵描き60分一本勝負


2010/07/09

[ファルコム]BrandishVT(4)の黒クレール

本来選択次第でキャラの善悪アライメントが変化していって、それでエンディングが決定するゲームなのだが、このキャラも含めて全員DARKエンドにありえないほどの清々しいカタルシスがあるので、こういうバージョンしか書けない。うへへ。

塔の天辺

[変愚蛮怒/スポイラー]身長体重の決め方について

ゲームバランスになんとも関わらない要素であるが、体格の小さい@達ピザっぷりや、逆に体格の大きい@のガリガリぶりが気になる人が私以外にもいるだろうし、一応検証しておく。

とりあえず種族上の特徴をまとめるtype.hのplayer_race構造体は以下の要素が存在する。どれも基本値に分散値の形で決定されている。

byte m_b_ht;		/* base height (males) */
byte m_m_ht;		/* mod height (males) */
byte m_b_wt;		/* base weight (males) */
byte m_m_wt;		/* mod weight (males) */

byte f_b_ht;		/* base height (females) */
byte f_m_ht;		/* mod height (females)	  */
byte f_b_wt;		/* base weight (females) */
byte f_m_wt;		/* mod weight (females) */

これに対応する人間のパラメータは以下の通りである。

72,  6, 180, 25,
66,  4, 150, 20,

身長、体重の数値がおかしく思えるが、これはインチとポンドで表現されているため。基本的に内部処理ではこの値で処理され、日本語版のダンプ表記のみcmとkgで表示される。

そして実際に@を生成する際、身長体重を決める関数はbirth.cのget_height_weightにある。十行ちょっとの簡単な式である。

void get_height_weight(void)
{
int h_percent; /* 身長が平均にくらべてどのくらい違うか. */

/* Calculate the height/weight for males */
if (p_ptr->psex == SEX_MALE)
{
	p_ptr->ht = randnor(rp_ptr->m_b_ht, rp_ptr->m_m_ht);
	h_percent = (int)(p_ptr->ht) * 100 / (int)(rp_ptr->m_b_ht);
	p_ptr->wt = randnor((int)(rp_ptr->m_b_wt) * h_percent /100
			    , (int)(rp_ptr->m_m_wt) * h_percent / 300 );
}

/* Calculate the height/weight for females */
else if (p_ptr->psex == SEX_FEMALE)
{
	p_ptr->ht = randnor(rp_ptr->f_b_ht, rp_ptr->f_m_ht);
	h_percent = (int)(p_ptr->ht) * 100 / (int)(rp_ptr->f_b_ht);
	p_ptr->wt = randnor((int)(rp_ptr->f_b_wt) * h_percent /100
			    , (int)(rp_ptr->f_m_wt) * h_percent / 300 );
}
}

randnorはz-rand.cに存在する擬似的な正規乱数生成関数で、第一引数が中央値、第二引数が分散値にあたる。よって基本的な生成の流れは、正規乱数で身長の決定>身長の種族下端の対する比を計算>比に合わせて体重の基本値と分散を修正した上で正規乱数生成、の流れである。正直何のひねりもない。

結局体重の原因は、基準の決め方にあるようだ。そもそも人間女の身長体重は中央値に対応させた場合、167cmの67kgになる。BMI24.02。これを標準にするのは多少@がガチムチであることを考慮しても厳しいだろう。ともかく種族的なイメージと共に現実的な基準値に修正しなおすのが一番の対策のようだ。