PDA

Просмотр полной версии : Как вырезать спрайты



Bedazzle
06.03.2016, 11:31
Подозреваю, что уже сто раз такое делали, и есть готовый инструмент.

Имеется картинка с набором спрайтов, например такая (https://s-media-cache-ak0.pinimg.com/736x/73/80/08/73800830259208a7f506ae3a7220172b.jpg). Тыкните пожалуйста носом в консольную утилитку для винды, которой можно передать координаты, размер спрайта, имя файла, и она это дело сохранит в виде последовательности байт.
Хорошо, чтобы были ключики: выводить поколоночно или построчно, линии подряд, или через 8, как в экране.

Смотрел Cutter от Jerry, но в хелпе ни слова про местоположение спрайта.

goodboy
06.03.2016, 11:57
наверно проще перегнать на-спек (bmp/png2scr), а там хоть через peek/poke

Bedazzle
06.03.2016, 12:13
наверно проще перегнать на-спек (bmp/png2scr), а там хоть через peek/poke

Тогда уж проще свою приблуду наваять :)
Но я ж ленивый. :)

Eagle
06.03.2016, 16:43
Есть же SpriteGrabber

Bedazzle
06.03.2016, 17:15
Есть же SpriteGrabber

Спасибо, но не пойдёт, мне для автоматизации консольная вещь нужна.

jerri
09.03.2016, 23:17
Bedazzle, если подправишь спрайты то бери вот эту
http://zx-pk.ru/showthread.php?t=24919&highlight=

Bedazzle
10.03.2016, 00:20
Bedazzle, если подправишь спрайты то бери вот эту
http://zx-pk.ru/showthread.php?t=24919&highlight=

я так и не вкурил, как указать где в картинке находится какой спрайт :/

- - - Добавлено - - -

Если вдруг кому надо, скрипт на питоне с элементами хардкода для вырезания спрайтов.



import Image

im = Image.open('spritesheet.png')
rgb_im = im.convert('RGB')

def extractbyte(xfrom, yfrom, width, height, strFilename):
lst = bytearray()

for y in range(yfrom * 8, (yfrom + height) * 8):
for x in range(xfrom, (xfrom + width)):
byte = 0
for bit in range(8):
r, g, b = rgb_im.getpixel((x*8 + bit, y))

if r+g+b != 0:
byte = byte + 2**(7-bit)

byte = 255 - byte

lst.append(byte)

newFile = open (strFilename, "wb")
newFile.write(lst)


extractbyte(16, 25, 4, 3, "head.bin") # head
extractbyte(16, 28, 4, 3, "legs.bin") # legs

extractbyte(21, 25, 4, 3, "head2.bin") # head2
extractbyte(26, 25, 4, 3, "headmask.bin") # head mask

jerri
10.03.2016, 21:53
Bedazzle, вся картинка спрайт или набор спрайтов

вот как то так
56368

и при запуске создается бинарь где этот файл в выбранном формате

Bedazzle
11.03.2016, 11:34
Bedazzle, вся картинка спрайт или набор спрайтов

У меня разной ширины спрайты. :) Ну, и удобно, когда вся графика в одном файле - крути как хочешь, копируй/заменяй.
Так что пока буду костыльками. :)

jerri
11.03.2016, 13:22
Bedazzle, на каждый набор спрайтов - своя картинка
т.е hero.png, enemy_tincan.png

Epsilon
11.03.2016, 16:17
Вы хочете command-line? У нас есть их :v2_dizzy_roll:

Небольшая утилитка на php, которая берёт картинку png/jpg/bmp и конвертит её в спектрумский битмап, при этом цвета также конвертятся и дописываются в конец каждого ряда. Цвета подбираются из соображений максимальной подобности. Не стоит, впрочем, требовать от неё идеального преобразования RGB-воллпапера в ZX screen :) Она расчитана на то, что ваши спрайты уже нарисованы с использованием спектрумской палитры и с соблюдением правила "больше двух цветов в одно знакоместо не давать" ))

56377

Использование:

php -f extractspr.php output.bin -b spritemap.png

Тут
output.bin
бинарный файл, в который запишутся битовые данные и/или атрибуты
spritemap.png
исходный png со спрайтами
-b
B/W mode - ключик, который нужно поставить, если вам не нужны атрибуты

Есть также версия, которая берёт не всё изображение целиком, а "выкусывает" спрайты разного размера и пишет их в bin друг за другом. Она, правда, ещё не докручена, но если интересно, я её закончу сегодня-завтра.

jerri
11.03.2016, 17:36
Epsilon, это не совсем то что он хотель
такое и моя умеет

Epsilon
11.03.2016, 18:25
Так я и предлагаю допилить, чтобы можно было выдёргивать разные всякие спрайты из картинки и складывать в один бинарник.

Кажись, у Mojon Twins была какая-то утилита, которую они для Чурреры делали, но там далеко не любые спрайты можно с PNG тащить.

jerri
11.03.2016, 18:45
Epsilon, там также вся картинка нарезается.

Bedazzle
11.03.2016, 18:58
Уважаемые, именно для меня не надо париться, я уже скрипт наваял, пока хватает.

Но думаю, для народа (кто не умеет, или брезгует питоном) было бы неплохо допилить cutter, чтобы он умел принимать координаты и размер спрайта, чтобы сохранять в файл. Тогда вызвав его энное количество раз из батника можно будет сохранять спрайты раздельно из одной большой картинки.

Сейчас исходник в таком виде, в шопе по слоям разнесено, удобно добавлять, или менять графику.
https://i.imgur.com/1hMNEEj.png

hero.png, enemy_tincan.png в данном конкретном случае не подходит, потому как в оригинале спрайты идут не всегда в логическом порядке, и кроме того, некоторые маски используются разными спрайтами.

papa_Lev
18.01.2018, 17:28
Так подскажите пожалуйста, как всё-таки лучше. Есть желание портировать на мобильные платформы спектрумовскую игру. Нужны просто фоны png и там, где спрайты - их вырезать также в формате png, потом сам склею в анимации. Пока только есть идея поработать GIMP, вырезав спрайты и закрасив места под них фоном. Или может подскажете, как делались эти игры:
https://play.google.com/store/apps/details?id=com.clivetownsend.saboteur2
https://play.google.com/store/apps/details?id=com.potassiumfrog.com.slightlymagic
Спасибо.

Epsilon
18.01.2018, 19:05
Так подскажите пожалуйста, как всё-таки лучше. Есть желание портировать на мобильные платформы спектрумовскую игру. Нужны просто фоны png и там, где спрайты - их вырезать также в формате png, потом сам склею в анимации. Пока только есть идея поработать GIMP, вырезав спрайты и закрасив места под них фоном. Или может подскажете, как делались эти игры:
Спасибо.

Какой смысл делать игру для Android, в точности похожую на спектрумский оригинал? Если можно оригинал запустить под эмулятором на том же Android'е и это будет гораздо аутентичнее...

papa_Lev
20.01.2018, 08:25
Нашёл карты игр вроде этой: http://dizzy.ucoz.ru/dizzy_images/maps/Dizzy2_Speccy.png
Кто подскажет, как (с помощью чего) они были сделаны?

Shiny
20.01.2018, 09:02
Нашёл карты игр вроде этой: http://dizzy.ucoz.ru/dizzy_images/maps/Dizzy2_Speccy.png
Кто подскажет, как (с помощью чего) они были сделаны?

Либо есть утилита составления карты из картинок, либо ручками собрали.

- - - Добавлено - - -


Какой смысл делать игру для Android, в точности похожую на спектрумский оригинал? Если можно оригинал запустить под эмулятором на том же Android'е и это будет гораздо аутентичнее...

Ремейк можно сделать няшнее.

goodboy
20.01.2018, 10:27
Нашёл карты игр.Кто подскажет, как (с помощью чего) они были сделаны?
http://www.pavero.wz.cz/index.php?pg=title.php%3Fid%3Dscreensnap
http://www.pavero.wz.cz/index.php?pg=title.php%3Fid%3Dmapscreator

rasmer
09.02.2019, 21:27
Может кому поможет и моя вырезалка:
https://zx-pk.ru/threads/30083-konsolnaya-vyrezalka-sprajtov-iz-scr-fajlov.html