個人でゲーム開発をしている中で、実装に苦労した部分が多かったので、テクニックとして紹介していこうと思います。
今回は「画像読み込み」について書きます。
問題点
gifアニメーションを実行しようと思ったのですが、標準では無理でした。
そこでgifを複数の画像に分割し、それを順番に表示しようと思いました。
しかし実装してみると激重で、改善が必要でした。
改善
# 高速化
self.IMG = self.IMG.convert()
for i in range(0, 120, 1):
self.IMG_LIST[i] = self.IMG_LIST[i].convert_alpha()
clock = pg3.time.Clock()
# GIF画像をアニメーションさせる
for i in range(len(self.IMG_LIST)):
self.screen.blit(self.IMG, self.INIT_POS)
self.screen.blit(self.IMG_LIST[i], (400, 350))
pg3.display.update()
clock.tick(90)
「self.IMG」には背景画像が入っています。
「self.IMG_LIST」が分割したGIF画像です。
最初は画像をロードしてfor文の処理を実行していました。
しかしながら、画像をロードしただけでは内部的に未変換という状態らしく、描画時に変換処理が走るということがわかりました。
なので、変換処理を予め実行するように、「convert」「convert_alpha」を利用しました。
「convert_alpha」は透過画像を利用する際に使うようです。
これだけで劇的にアニメーションが速くなりました。
「画像読み込み」に関しては以上となります。
リリース済みのゲームはこちら
・PC向け無料ゲーム
『LAbyrinth』(2Dの迷路探索ゲーム)
●Freem!
https://www.freem.ne.jp/win/game/33791
●Unityroom
https://unityroom.com/games/2025-labyrinth-isukaka