BlockReel スキン
BlockReelフォルダ($BLOCKREEL_HOME、blockreelスキルのブートストラップを参照)で作業します。各スキンは work/skins/<name>/(gitignore済み)または films/<name>/skins/ に配置します。他人のスキンをコピーしないでください。アイデアは取り入れても、ピクセルはそのまま使いません。
0. ユーザーがスキンを送信した場合
送信されたスキンをそのまま使用します。フィルムフォルダにコピーし、python core/skin.py validate で検証し(レガシー64x32を新しいファイルに変換)、story.json で参照します。ユーザーが依頼しない限り、スキンを再描画してはいけません。スキンがない場合にのみ、新しいスキンをデザインします。
1. ブリーフィング(最大1つの短い質問)
以下の項目を決めます:キャラクター(誰か、役割、ムード)、スタイル、モデル。
| スタイル | 目指すもの |
|---|---|
| クリーンピクセルアート | マテリアルあたり3~4トーンランプ、ノイズなし、1pxのハイライト/シャドウ、判読可能なシルエット |
| カートゥーン | 彩度の高い色、顔/オーバーレイの端に1pxの暗い輪郭、大きくてシンプルな目、強い色のブロッキング |
| リアリスティック | 落ち着いたパレット、微妙なノイズ(noise=0.03-0.05)、折り目や縫い目、素材のバリエーション(布、革、金属) |
| アニメ | 大きな目(2pxの虹彩+ハイライトピクセルを使用)、パステル/彩度の高い髪を3トーンでハイライトストランド付き、シンプルな服 |
classic = 4pxの腕(スティーブ風)、slim = 3pxの腕。ユーザーが明示しない場合はクラシックを選択しその旨を伝え、スリムバリアントも提案します。
2. リサーチ(Web)、research.md にリンク付きで記述
以下を検索して読みます:スキンのUVレイアウトとレイヤールール(Minecraft Wiki: Skin;リポジトリ独自のマップは docs/SKINS.md / references/skin-layout.png)、ピクセルアートのシェーディングとパレット技法(色相シフト、ランプ、ピロウシェーディングの回避)、およびキャラクタータイプのスタイルリファレンス。リンクと、何に使うかを記録します。サードパーティのスキンやアートのコピーは禁止です。
3. パレット計画
描画前に計画を書きます:マテリアルごとに1つのベースカラーと、そこからの3~4トーンのランプ(skin.ramp(base, 4, hue_shift=0.04):影はやや冷たく、光はやや暖かく)。一般的なマテリアル:肌、髪、2つの布地の色、革、金属、ブーツ、アクセント。合計で約24色以下に抑え、アクセントカラーは1つで十分です。
4. レイヤー描画(core/skin.py の SkinCanvas)
最初にベースレイヤー(頭、体、腕、脚)、次にオーバーレイレイヤー(帽子=フード/髪のボリューム、ジャケット=マント/コート、袖、ズボン)。便利なヘルパー:shaded_box(part, ramp)(上/前からの光)、rect、px、line、edge_light、clear、mirror_limbs()(右側を描画して左側にミラーコピー)。顔の相対座標を使用するため、アトラス位置を手計算する必要はありません。BlockReelフィルムの顔ルール:目は前面の4行目(眉毛は3行目)、口は6行目に配置します。エンジンの顔状態(blink、wide、glow、リップシンク)がこれらの行を再描画し、頬(5行目)からスキンカラーをサンプリングするためです。examples/skin-demo/paint_skin.py を開始点として、パレット計画とパーツごとのブロックを変更します。
5. 検証
python core/skin.py validate out.png:サイズ、model(classic/slim)、および透過ベースピクセルが0であること(ベースレイヤーはJavaで完全に不透明である必要があります)。すべての面を個別の画像として出力するには python core/skin.py unwrap out.png parts/ を使用します。
6. プレビューと反復(必須、最低2ラウンド)
python tools/turntable.py skin.png --out tt.png [--pose idle|wave|stance] [--model slim] [--eyes wide --mouth smile]
tt.png を開いて4つのビューすべてを確認します。チェック項目:シルエット、ゲームスケールで顔が読めるか、フード/髪のオーバーレイが浮いていないか、継ぎ目とミラーリングされた手足、背面と側面が空白でないか、シェーディング方向が一貫しているか、ぼやけていないか。問題点を書き出し、修正し、再度レンダリングします。各ラウンドの画像は保存します(examples/skin-demo/iterations/ を参照)。1回のレンダリングで終了しないでください。
7. エクスポート
最終PNG(および必要に応じてもう一方のモデル:slim=True/False で再描画。自動のクラシック↔スリム変換はありません)。ファイル名は <character>.png および <character>-slim.png とします。両方を validate でチェックします。
8. ゲームへのインストール(ユーザーに伝えること;テストはしていません)
- Java Edition: minecraft.netのプロフィールページまたはランチャーのスキンタブにPNG(64x64、またはレガシー64x32)をアップロードし、3pxまたは4pxの腕を選択します。ゲームを所有しているアカウントのみスキンを変更できます。オフラインモードのプレイヤーはMODなしではカスタムスキンを使用できません。参考:Minecraft Wiki: Skin。Mojangの公式ヘルプページは作成時点で読み込めなかったため、現在のメニュー名についてはhelp.minecraft.netを確認してください。
- Bedrock Edition: 別のプロセスです(Wikiによると、128x128のような大きなテンプレートもサポートしています)。Javaの手順をBedrockに適用しないでください。ユーザーをMojangの現在のBedrockヘルプページに誘導してください。
- BlockReelフィルム内ではインストールは不要です。
story.jsonでPNGを参照するだけです。
ルール
- スキンがゲーム内でテストされたとは決して主張しないでください。「BlockReelエンジンで検証およびプレビュー済み」と伝えてください。
- ゲームスキンや他人のスキンを出荷またはコミットしないでください。リポジトリのデモスキンはオリジナル(CC0)です。
- ユーザーが3Dスキンレンダリングのスクリーンショットを提供した場合、それをテクスチャにすることはできません(
docs/SKINS.md)。代わりに類似のルックを構築してください。