+# Vector images to rasterize without resizing
+
+SIMPLE_DIRS=roach_management vehicles splash
+SIMPLE_SVGS=$(shell find $(patsubst %, $(VPATH)/vector/%, $(SIMPLE_DIRS)) -name "*.svg")
+SIMPLE_PNGS=$(patsubst $(VPATH)/vector/%.svg, %.png, $(SIMPLE_SVGS))
+
+# Aggregate cockroach sprites
+
+ROACH=$(filter roach/%, $(TILE_PNGS))
+ROACH_32=$(patsubst roach/%, roach_32/%, $(ROACH))
+ROACH_21=$(patsubst roach/%, roach_21/%, $(ROACH))
+ROACH_QUARTET=$(patsubst roach/%, roach_quartet/%, $(ROACH))
+ROACH_NONET=$(patsubst roach/%, roach_nonet/%, $(ROACH))
+ROACH_BIG=$(patsubst roach/%, roach_big/%, $(ROACH))
+
+# Aggregate serum sprites
+
+SERUM=$(filter serum/%, $(TILE_PNGS))
+SERUM_BIG=$(patsubst serum/%, serum_big/%, $(SERUM))
+
+# Big vehicles
+
+VEHICLE=$(filter vehicle_tiles/%_1.png, $(TILE_PNGS))
+VEHICLE_BIG=$(patsubst vehicle_tiles/%, vehicle_big/%, $(VEHICLE))
+
+# Default target with everything
+
+all: $(TILE_PNGS) $(BTILE_PNGS) $(SIMPLE_PNGS)\
+ $(ROACH_32) $(ROACH_21) $(ROACH_QUARTET) $(ROACH_NONET) $(ROACH_BIG)\
+ $(SERUM_BIG) $(VEHICLE_BIG)
+
+# Vector tile rule
+
+define tile
+$(1)/%.png: vector/$(1)/%.svg
+ @mkdir -p `dirname $$@`
+ @inkscape -z -e $$@ -w 64 -h 64 $$<
+endef
+
+$(foreach tiledir,$(TILE_DIRS),$(eval $(call tile,$(tiledir))))
+
+# No resize rule
+
+define simple
+$(1)/%.png: vector/$(1)/%.svg
+ @mkdir -p `dirname $$@`
+ @inkscape -z -e $$@ $$<
+endef
+
+$(foreach simpledir,$(SIMPLE_DIRS),$(eval $(call simple,$(simpledir))))
+
+# Bitmap tile rule
+
+define btile
+bunker/$(1)/%.png: bitmap/$(1)/%.png
+ @mkdir -p `dirname $$@`
+ @convert $$< -resize 64x64 $$@
+endef
+
+$(foreach tiledir,$(BTILE_DIRS),$(eval $(call btile,$(tiledir))))