竹林ソフト 2024/02/11 20:00

再建を繰り返す街づくりゲーム開発(建物の画像を雑に用意する)

再建を繰り返す街作りゲームで、建物の画像を雑に生成して用意しました。
最初は 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回は記事投稿したいと思います。がんばります。

月別アーカイブ

限定特典から探す

記事を検索