さいきん、iOS + OpenGLで、ドット絵のゲームを作っているのですが、描いた絵をプログラムで動かすまでに以下のフローをふんでいます。
- Pixen でドット絵を描く&アニメーションを編集する
- 編集したアニメーションをgifアニメで保存
- ImageMagickでgifアニメをバラバラのpngファイルにする
- TexturePacker でスプライトシートにする。
iOS向けだと、Retina用に2倍のサイズもこしらえないといけなので絵を直すたびにこれをするのは手間です。
TexturePackerはとても気が効いているツールで、コマンドラインインターフェイスも提供しているので、この手順は全部コマンドラインからできます。
数ステップあるので、rakeタスクをこしらえました。
cocos2dユーザ は、--format
をcocos2dにすればそのままつかえるとおもう。
require 'rake/clean'
require 'pathname'
ROOT = `git rev-parse --show-toplevel`.chomp
ASSETS = "#{ROOT}/assets"
FRAMES = "#{ROOT}/assets/frames"
RESOURCES = "#{ROOT}/Resources"
CLEAN.include "#{RESOURCES}/*.json", "#{RESOURCES}/*.png"
directory FRAMES
task :default => [:split, :tp]
desc "gif animation split to png files"
task :split => FRAMES do
Dir["#{ASSETS}/*.gif"].each do |gif|
png = File.basename(gif).sub(/\.gif/, '.png')
sh "convert +adjoin #{gif} #{File.join FRAMES, png}"
end
end
desc "TexturePacker packing"
task :tp do
sh "TexturePacker "<<
" --smart-update " <<
" --scale 2.0 " <<
" --scale-mode Fast " <<
" --format json-array " <<
" --data #{RESOURCES}/entities@x2.json " <<
" --sheet #{RESOURCES}/entities@x2.png " <<
FRAMES
sh "TexturePacker "<<
" --smart-update " <<
" --format json-array " <<
" --data #{RESOURCES}/entities.json " <<
" --sheet #{RESOURCES}/entities.png " <<
FRAMES
end
$ rake -T
rake clean # Remove any temporary products.
rake clobber # Remove any generated file.
rake split # gif animation split to png files
rake tp # TexturePacker packing
TexturePacker をインストールしたら、ツールバーメニューからTexturePacker → Install Command Line Tool で、TexturePackerコマンドをインストール。
公式サイトや以下でヘルプがみれる。
TexturePacker --help