070 · 生成
monster
パーツを選んで重ねる
モンスターを一体ずつ手で描く代わりに、パーツのカタログを用意して seed で組み合わせる。体型・目・口・頬・角・足をカテゴリごとに並べ、seed から部品を選んで 16x16 のグリッドに重ねる。すべて左右対称に置く。体を塗ってから、目や口はその体をくり抜いた穴として開け、角と足だけ体の外へ生やす。
形が崩れないように、体型は丸の1種に固定し、目・口・頬も決まった位置に置く。seed で変わるのは瞳の大きさ、頬の有無、角と足の形、そして色相だけ。崩れる組み合わせを最初から作らないので、どれも同じ顔立ちの仲間に見える。
レイヤーを重ねて1枚を作る組み合わせ生成。各レイヤーが独立に選ばれるので、部品を1つ足すと種類が掛け算で増える。ただ完全に自由へ組み合わせるとパーツ同士が噛み合わず形が破綻しやすい。土台の体型と顔(目・口・頬)を固定し、外側の飾り(角・足)と色だけを振ると、破綻を抑えながら個体差を出せる。乱数は mulberry32 のような決定的な疑似乱数を使い、seed から毎回同じ一体を引く。
下は体型と目と角を選ぶ仕組みだけを取り出した例。種を変えるたびに別の一体が組み上がる。
色
sky 単色の制約をこの一枚だけ外して、パーツごとに色を分けた。体は個体ごとの色相、白目は白、瞳と口は暗い色、頬はピンク。グリッドには 1=体 2=白目 3=瞳と口 4=頬 と種類を書き込んでおき、描くときに種類を色へ写す。黒目の左上には白を1ドット残してハイライトにする。
ピクセルパーフェクト
低い解像度の canvas に1ドット=1pxで描き、表示だけを整数倍へ引き伸ばす。座標も大きさもすべて整数ドットに揃え、サブピクセルのにじみや中途半端な縮みが出ないようにした。動きは付けず、16x16 の枠の中で形を立てることに絞っている。