Просмотр полной версии : Как вырезать спрайты
Bedazzle
06.03.2016, 11:31
Подозреваю, что уже сто раз такое делали, и есть готовый инструмент.
Имеется картинка с набором спрайтов, например такая (https://s-media-cache-ak0.pinimg.com/736x/73/80/08/73800830259208a7f506ae3a7220172b.jpg). Тыкните пожалуйста носом в консольную утилитку для винды, которой можно передать координаты, размер спрайта, имя файла, и она это дело сохранит в виде последовательности байт.
Хорошо, чтобы были ключики: выводить поколоночно или построчно, линии подряд, или через 8, как в экране.
Смотрел Cutter от Jerry, но в хелпе ни слова про местоположение спрайта.
наверно проще перегнать на-спек (bmp/png2scr), а там хоть через peek/poke
Bedazzle
06.03.2016, 12:13
наверно проще перегнать на-спек (bmp/png2scr), а там хоть через peek/poke
Тогда уж проще свою приблуду наваять :)
Но я ж ленивый. :)
Bedazzle
06.03.2016, 17:15
Есть же SpriteGrabber
Спасибо, но не пойдёт, мне для автоматизации консольная вещь нужна.
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
Bedazzle, вся картинка спрайт или набор спрайтов
вот как то так
56368
и при запуске создается бинарь где этот файл в выбранном формате
Bedazzle
11.03.2016, 11:34
Bedazzle, вся картинка спрайт или набор спрайтов
У меня разной ширины спрайты. :) Ну, и удобно, когда вся графика в одном файле - крути как хочешь, копируй/заменяй.
Так что пока буду костыльками. :)
Bedazzle, на каждый набор спрайтов - своя картинка
т.е hero.png, enemy_tincan.png
Вы хочете 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 друг за другом. Она, правда, ещё не докручена, но если интересно, я её закончу сегодня-завтра.
Epsilon, это не совсем то что он хотель
такое и моя умеет
Так я и предлагаю допилить, чтобы можно было выдёргивать разные всякие спрайты из картинки и складывать в один бинарник.
Кажись, у Mojon Twins была какая-то утилита, которую они для Чурреры делали, но там далеко не любые спрайты можно с PNG тащить.
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
Спасибо.
Так подскажите пожалуйста, как всё-таки лучше. Есть желание портировать на мобильные платформы спектрумовскую игру. Нужны просто фоны png и там, где спрайты - их вырезать также в формате png, потом сам склею в анимации. Пока только есть идея поработать GIMP, вырезав спрайты и закрасив места под них фоном. Или может подскажете, как делались эти игры:
Спасибо.
Какой смысл делать игру для Android, в точности похожую на спектрумский оригинал? Если можно оригинал запустить под эмулятором на том же Android'е и это будет гораздо аутентичнее...
papa_Lev
20.01.2018, 08:25
Нашёл карты игр вроде этой: http://dizzy.ucoz.ru/dizzy_images/maps/Dizzy2_Speccy.png
Кто подскажет, как (с помощью чего) они были сделаны?
Нашёл карты игр вроде этой: http://dizzy.ucoz.ru/dizzy_images/maps/Dizzy2_Speccy.png
Кто подскажет, как (с помощью чего) они были сделаны?
Либо есть утилита составления карты из картинок, либо ручками собрали.
- - - Добавлено - - -
Какой смысл делать игру для Android, в точности похожую на спектрумский оригинал? Если можно оригинал запустить под эмулятором на том же Android'е и это будет гораздо аутентичнее...
Ремейк можно сделать няшнее.
Нашёл карты игр.Кто подскажет, как (с помощью чего) они были сделаны?
http://www.pavero.wz.cz/index.php?pg=title.php%3Fid%3Dscreensnap
http://www.pavero.wz.cz/index.php?pg=title.php%3Fid%3Dmapscreator
Может кому поможет и моя вырезалка:
https://zx-pk.ru/threads/30083-konsolnaya-vyrezalka-sprajtov-iz-scr-fajlov.html
Powered by vBulletin® Version 4.2.5 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot