再建を繰り返す街づくりゲーム開発(建物の画像を雑に用意する)
再建を繰り返す街作りゲームで、建物の画像を雑に生成して用意しました。
最初は Medieval Building Pack 2 CorCore アセットから適当に選んで使おうと思っていたのですが「市場はこの画像にするか、いや違うよなぁ」とか選ぶのに時間がかかりすぎるのに気付いたので、建物名が文字で描画された画像を作って使うことにしました。
やったこと
ゲームの設定ファイルから必要な画像サイズを読み込み、Python の PIL モジュールを駆使して画像を作ります。
import yaml
from PIL import Image, ImageDraw, ImageFont
if __name__ == '__main__':
fontFile = '../RR/Assets/RR/Fonts/NotoSansJP-Light.ttf'
with open('../RR/Assets/RR/Resources/Parameters/buildings.yaml') as f:
data = yaml.safe_load(f)
for name, parameters in data['Buildings'].items():
size = parameters['Size']
width = 32 * size['x']
height = 32 * size['y']
image = Image.new("RGBA", (width, height), (255-32, 255-32, 255-32, 255))
font_size = 24
draw = ImageDraw.Draw(image)
text_offset = 4
text_position = (0, 0)
while True:
font = ImageFont.truetype(fontFile, font_size)
text_size = draw.textbbox((0, 0), name, font=font)
text_position = ((width - text_size[2]) / 2, ((height - text_size[3]) / 2) - ((text_size[1]) / 2))
if width - text_offset > text_size[2]:
break
font_size -= 1
draw.text(text_position, name, fill=(0, 0, 0), font=font)
image.save(name + '.png')
そして「これが作ったスクリプトです」以上に説明することがないので、以上になります。
↓ 作ったスクリプトと、参照した建物の設定ファイル
create_building_image_templates.py (1.14kB)
ダウンロードbuildings.yaml (469.00B)
ダウンロード↓ 生成された建物の画像
あとは、これを「建物幅を考慮して順番に建築していく」というデモシーンで動かしたものがこれです。
よいです。
この実行結果を見ると「境界線がほしい。画像で塗りつぶす範囲を少し狭くすればいいかな」と思ったので、そのうち調整します。
まとめと今後の予定
今回は建物用の仮画像を作成しました。よいです。
ゲームが完成する頃になったら、どなたか 2D ドット絵が得意な方を探して外注するか、自作しようと思います。
年度末は本業のサラリーマン仕事の納期が重なってて心がしんどいのですが、2週に1回は記事投稿したいと思います。がんばります。