IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> GameDev лаборатория, Движки, тулзы и технические вопросы.
Axolotl
сообщение 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д платформеров. Вот видео.


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Axolotl
сообщение 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 (или я чего-то недопонимаю), видимо еще должна быть одна карта с глобальной глубиной...хммм


--------------------


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
AlexYeCu
сообщение 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"


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Guevara-chan
сообщение 30 Mar 2015, 19:57
Сообщение #4

•●Revolucionario●•
Сообщений: 2 467
Спасибо сказали: 5936 раз




http://www.nosoapradio.us/ - очень неплохой сборник стоковой музыки для игр, допускается коммерческое использование.


--------------------
life MOV.I #life+1, *life
האם יש זמן לעצור ?


Спасибо сказали:
Go to the top of the pageAdd Nick
 
+Quote Post
Axolotl
сообщение 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дшник и то офигел и крайне возбудился воодушевился - каково 2дшникам?

Еще обнаружил аналог (если я правильно понял он попроще в плане чудо фич, чем Spine)- Spriter
Но тоже может с костями, ригом, IK и.т.п

P.S. Кстати и Spine, и Spriter, а также, упомянутая в первом посте Sprite Delight - плоды Кикстартера.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post
Agar
сообщение 15 Oct 2015, 15:49
Сообщение #6

Immortal
Сообщений: 10 431
Спасибо сказали: 7833 раза




Ладно, лень было полностью сейчас вникать, но выглядит интересно, да.


--------------------
Go to the top of the pageAdd Nick
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 2 November 2025 - 13:39
Copyright by Алексей Крючков
Strategy Gamez by GrayMage
Programming by Degtyarev Dmitry
  Яндекс.Метрика