Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
27 Mar 2015, 11:27
(Сообщение отредактировал Axolotl - 27 Mar 2015, 12:30)
Сообщение
#1
|
|
![]() I must gather my party before venturing forth Сообщений: 5 129 Спасибо сказали: 17833 раза |
Еще одна тема, которую хорошо бы тут иметь. Моддинг одной игры очень часто перерастает в собственный проект. Да и на форуме несколько людей активно занимаются, занимались или хотят создать свою игру.
Чтобы не создавать пустую тему, кину инфу про пару тулзов , которые мне попадались и которые мне показались интересными. Перове - плагин к фотошопу Pablo the Pixel Art Builder . Предназначен, чтобы облегчить создание изометрической графики. Сам его не пробовал, т.к. не мой путь, но по видео выглядит интересно. И сам способ необычный. Второй тул - Sprite Delight (который, кстати, успешно собрал финансы на Кикстартере). Делает он такую штуку, как карты нормалей из 2д спрайтов, с возможностью твиканья и всяческих динамических тестов на лету. Нужно это для того, чтобы хоть как-то иметь возможность динамически освещать и применять эффекты для рисованной графики. Опять же, лично мне это не нужно, но для 2дшников польза точно есть. Вот страница в Стим Гринлайт и вот, если интересно страничка кампании на Кике И еще одна, встреченная мной штука Ferr2d для unity. Это интересно устроенный редактор уровней для 2д платформеров. Вот видео. -------------------- |
|
|
|
28 Mar 2015, 23:26
(Сообщение отредактировал Axolotl - 28 Mar 2015, 23:58)
Сообщение
#2
|
|
![]() I must gather my party before venturing forth Сообщений: 5 129 Спасибо сказали: 17833 раза |
Вот, по поводу выхода Pillars Of Eternity, интересная статья (точнее ее перевод - там внизу есть ссылка на оригинал) - я думаю ей скорее место тут, нежели в теме про игру.
http://rutab.net/blogs/video-games/2014/06...-apdeyt-79.html P.S. Не совсем я там правда понял про карту глубины - не такая же она должна быть. Из такой карты глубины и Flat Сolor Diffuse (тут это Альбедо называется) не выжать таких вот теней как на Final (или я чего-то недопонимаю), видимо еще должна быть одна карта с глобальной глубиной...хммм -------------------- |
|
|
|
29 Mar 2015, 00:02
(Сообщение отредактировал AlexYeCu - 29 Mar 2015, 00:07)
Сообщение
#3
|
|
![]() Immortal Сообщений: 989 Спасибо сказали: 851 раз |
Скриптовые мелочи, из тех, что сам использую.
Скрипт для создания базы данных инвентаря, который я написал для своего проекта. Требует для работы bash и odt2txt. База заполняется в calc из состава Libre/Open Office (это второй фрагмент кода, каждая новая строка — ячейка в calc`овской строке), затем файлик скармливается скрипту и получается третий фрагмент, удобный для использования с движком love2d. Код #!/bin/bash rm inv_db.lua odt2txt inv_to_db.ods --output=inv.txt --width=-1 sed '/./!d' inv.txt > temp.txt sed '1,13d' temp.txt > temp2.txt sed 's/$/,/g' temp2.txt > temp3.txt sed '1~13s/^/{/g' temp3.txt > temp4.txt sed '13~13s/.$//' temp4.txt > temp5.txt sed '13~13s/$/},/g' temp5.txt > temp6.txt sed -i -e '1 s/^/inventory_ttx={\n/;' temp6.txt sed -i -e '1 s/^/function inventory_load ()\n/;' temp6.txt sed '$s/.$//' temp6.txt > temp7.txt sed -i '$ a \}\' temp7.txt sed -i '$ a \end\' temp7.txt cp temp7.txt inventory.lua rm inv.txt temp.txt temp2.txt temp3.txt temp4.txt temp5.txt temp6.txt temp7.txt exit 0 Код id=1 x=0,y=0,w=2,h=6 skill="sword" class="sword" subclass="longsword" classtitle="меч" subclasstitle="длинный меч" title="Грубый меч" a=1,b=4,c=3,atk=0 rt=30,range=7,clip=0 level=1,material=30,price=50,weight=1.2 quest=0,special=0,artifact=0,relic=0 story="Длинный меч, изготовленный по сварной технологии: две полоски дрянного, подверженного коррозии железа и стальная полоса между ними." Код function inventory_load () inventory_ttx={ {id=1, x=0,y=0,w=2,h=6, skill="sword", class="sword", subclass="longsword", classtitle="меч", subclasstitle="длинный меч", title="Грубый меч", a=1,b=4,c=3,atk=0, rt=30,range=7,clip=0, level=1,material=30,price=50,weight=1.2, quest=0,special=0,artifact=0,relic=0, story="Длинный меч, изготовленный по сварной технологии: две полоски дрянного, подверженного коррозии железа и стальная полоса между ними."} } end Скрипты для вращения камеры в blender`е, для 6-и и 8-и направлений. Для использования необходимо создать объект с названием Rotor, привязать к нему камеру и, если надо, свет, подгрузить и выполнить скрипт. Обратите внимание на углы — они проектоспецифичны. Начальный угол вращения камеры по Z — 60°. Код import bpy import mathutils from math import radians if "Rotor" in bpy.data.objects: obj = bpy.data.objects["Rotor"] obj.rotation_euler.z = obj.rotation_euler.z + radians(60.0) bpy.data.scenes[0].render.filepath = '/tmp/1' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(90.0) bpy.data.scenes[0].render.filepath = '/tmp/2' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(120.0) bpy.data.scenes[0].render.filepath = '/tmp/3' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(240.0) bpy.data.scenes[0].render.filepath = '/tmp/4' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(270.0) bpy.data.scenes[0].render.filepath = '/tmp/5' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(300.0) bpy.data.scenes[0].render.filepath = '/tmp/6' bpy.ops.render.render(animation=True) obj.rotation_euler.z = 0 Код import bpy import mathutils from math import radians if "Rotor" in bpy.data.objects: obj = bpy.data.objects["Rotor"] obj.rotation_euler.z = obj.rotation_euler.z + radians(60.0) bpy.data.scenes[0].render.filepath = '/tmp/1' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(90.0) bpy.data.scenes[0].render.filepath = '/tmp/2' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(120.0) bpy.data.scenes[0].render.filepath = '/tmp/3' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(240.0) bpy.data.scenes[0].render.filepath = '/tmp/4' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(270.0) bpy.data.scenes[0].render.filepath = '/tmp/5' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(300.0) bpy.data.scenes[0].render.filepath = '/tmp/6' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(0.0) bpy.data.scenes[0].render.filepath = '/tmp/7' bpy.ops.render.render(animation=True) obj.rotation_euler.z = obj.rotation_euler.z + radians(180.0) bpy.data.scenes[0].render.filepath = '/tmp/8' bpy.ops.render.render(animation=True) obj.rotation_euler.z = 0 Скрипт для asymptote, расчерчивающий гексагональное поле. Вроде бы работают варианты как со сплющённой, так и с обычной гексой, а также горизонтальный и вертикальный (см. закомментированные строки), но проверять лень — писалось давно, уже не помню. Если кто обнаружит неправильную работу — поправлю. Код import graph; import settings; outformat="png"; unitsize(1bp); size(1000,1000, IgnoreAspect); real dx=10; real dy=40; real w=64; real hw=w/2; real qw=w/4; //real h=32; real h=64; real hh=h/2; real qh=h/4; for (int j=0; j <10; ++j){ dy =40 +j*h+j*10; for (int i=0; i <10; ++i){ dx=10+i*w+i*10; //vertical //draw((dx,dy)--(dx+qw,dy+hh)--(dx+qw+hw,dy+hh)--(dx+w,dy)--(dx+qw+hw,dy-hh)--(dx+qw,dy-hh)--cycle); //horizontal draw((dx,dy)--(dx+hw,dy-qh)--(dx+w,dy)--(dx+w,dy+hh)--(dx+hw,dy+hh+qh)--(dx,dy+hh)--cycle); } } Ещё один простенький скрипт для asymptote, генерит 2560x2560 портянку, расчерченую 32x32 клеточками. Код import graph; import settings; outformat="png"; unitsize(1bp); size(2560,2560, IgnoreAspect); real startx=0; real starty=32; real stepx=32; real stepy=32; for (int i=0; i <80; ++i){ draw((0,stepy*i)--(2560,stepy*i)); } for (int h=0; h <80; ++h){ draw((stepx*h,0)--(stepx*h,2560)); } Скрипт для ImageMagick, из кучи графических файлов вырезает квадратики 160x160, ресайзит их до 32x32 и склеивает в 6x8 портянку для анимации: Код sizew=0
sizeh=0 for file in $(ls) do convert $file -monitor -trim $file convert $file -background none -gravity Center -extent 160x160 $file convert $file -resize 32x32 $file done montage *.png -background none -tile 6x8 -geometry '32x32+0+0' result.png echo "done" |
|
|
|
30 Mar 2015, 19:57
Сообщение
#4
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз |
http://www.nosoapradio.us/ - очень неплохой сборник стоковой музыки для игр, допускается коммерческое использование.
-------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
|
15 Oct 2015, 15:26
(Сообщение отредактировал Axolotl - 15 Oct 2015, 17:33)
Сообщение
#5
|
|
![]() I must gather my party before venturing forth Сообщений: 5 129 Спасибо сказали: 17833 раза |
Вчера вот случайно узнал о существовании такой вот чудной проги. Spine.
Оф.Сайт. Видео: Выглядит очень круто конечно. Т.е. это по сути 3D'шный подход обычной костевой/риговой анимации, но только для 2д и с какими-то хитрыми решениями на этот счет. Т.е. из того, что я распарсил по видео - там можно по слоям в глубину делать элементы и навешивать их на кости. Особенно показателен в этом плане момент с крыльями летающего зверя на 3:05. Ну и конечно нормальный риг, IK - все это в распоряжении. Какая-то хитрая штука, которая эмулирует небольшие !Повороты! как будто это 3д. Та самая штука в видео, где с двумя няшами. Вот тут про это подробнее. Чего я не понял, так это то, как именно организована штука с подменой элементов спрайтов, например на 2:37, где викинг поднимает-опускает руку. Примерно можно догадаться конечно, но хз. Что еще супер супер круто, так это то, что итоговый результат можно экспортить не только в виде Спрайтщитов и.т.п, а в хитром формате, где хранятся только кусочки спрайтов и ключи костевой анимации. Т.е. можно вообще не заморачиваясь с итоговым объемом картинок делать длинные, плавные анимации для 2д спрайтов. Как я понял, всякие dll и описание как это все в код воткнуть прилагается. Я хоть и не 2дшник и то офигел и крайне Еще обнаружил аналог (если я правильно понял он попроще в плане чудо фич, чем Spine)- Spriter Но тоже может с костями, ригом, IK и.т.п P.S. Кстати и Spine, и Spriter, а также, упомянутая в первом посте Sprite Delight - плоды Кикстартера. -------------------- |
|
|
|
15 Oct 2015, 15:49
Сообщение
#6
|
|
![]() Immortal Сообщений: 10 431 Спасибо сказали: 7833 раза |
Ладно, лень было полностью сейчас вникать, но выглядит интересно, да.
-------------------- ![]() |
|
|
|
![]() ![]() |
| Текстовая версия | Сейчас: 2 November 2025 - 13:39 |
|
Copyright by Алексей Крючков
Programming by Degtyarev Dmitry |
|