Ещё раз про систему материалов

 

Дядя Миша

VIP
Команда форума
28.03.2010
15 384
237
63
Награды
0
Кубань
Так товарищи, по концепции системы материалов у меня остался ровно один вопрос. Как лучше хранить описания для каждого материала?
Как в сорсе - один текстовый файлик для каждого материала, либо как в параное2 - один глобальный файл и в нём описаны все материалы. Первый метод возможно будет не слишком удобным в том плане, что нельзя будет в блокноте сделать автозамену у целого ряда материалов (если таковая потребность вдруг возникнет), а второй метод не позволит добавлять материалы в карты на конкурсы, поскольку все описания в одном файлике. Или предложите свой вариант.
 
 

ZAZA

Well-known member
08.11.2011
2 434
40
48
Награды
0
2 Дядя Миша:
Имхо, первый вариант, все таки, лучше.
 
 

gfdjr5

[NULL]
25.11.2012
563
0
0
Награды
0
Как насчёт использования глобального файла материалов для определения общих типов, и отдельных файлов для конкретных нужд, например, для тех же карт? А автозамена в ряде файлов вполне успешно выполняется в Notepad++

По сути, это может даже дать возможность изменять характеристики уже имеющихся параметров базовых материалов, определённых в общем файле, если в этом возникнет необходимость.
 
 

FiEctro

Супер Модератор
Команда форума
28.07.2006
17 147
333
83
Награды
0
27
Эквестрия
Глобальный текстовый лист материалов для каждого пользователя. Чтобы не было путаницы с кастомными картами. Можно было просто положить рядом с materials.txt какой нить mytextures.txt. Вот только надо как то исключить дупликаты, чтобы не было того говна как в ку3.
 
 

ComradeAndrew

๖ۣۜC++
02.04.2010
1 062
7
0
Награды
0
22
Кстати, gfdjr5 дело говорит.
Иметь глобальный файл, а если есть файл для отдельной карты, то он переопределяет глобальные параметры, причем только описанные в нем.
 
 

Дядя Миша

VIP
Команда форума
28.03.2010
15 384
237
63
Награды
0
Кубань
Как насчёт использования глобального файла материалов для определения общих типов, и отдельных файлов для конкретных нужд, например, для тех же карт?
Не надо, будет путаница. Общие типы в данной системе строятся налиту, т.е. неявным образом, безо всякого глобального файла. Вообщем, как я понимаю отдельный файлик для каждого материала - вполне себе выход и вы не против?

[ADDED=Дядя Миша]1426835945[/ADDED]
ЗЫ. я естественно могу написать конвертор, который нагенерит эти текстовички из обычного вада.
 
Последнее редактирование:
 

KiQ

New member
12.07.2010
397
2
0
Награды
0
2 Дядя Миша:
по префиксам чтоль?
 
 

Дядя Миша

VIP
Команда форума
28.03.2010
15 384
237
63
Награды
0
Кубань
по именам, да. Ну там довольно много необязательных моментов будет,
 
 

Raid

VIP
11.07.2006
8 319
222
63
Награды
0
27
CSM-чат
Так а разве имя вада в папке materials не есть глобальная (в рамках вадника) система материалов?
 
 

npocTo_LaM

New member
27.10.2012
1 474
47
0
Награды
0
Ну как мысль - сделать как в "Condition Zero: Deleted Scenes":
В папке с модом есть отдельная папка materials, в ней лежат файлы с имена соответствующими названиям карт и расширением mat. В них содержится соответствие названия текстуры и материала, типа так:
texture "c2a54"
[
material
{
type "slosh"
}
]
Это позволит не заморачиваться с переименованием текстур и затем заменой их на карте. Маппер не задумываясь создает текстуры, карту и этот текстовый файл, можно даже простенький редактор смастерить для удобства. Можно использовать одновременно с этим и materials.txt в папке sound для умолчальных текстур, которые идут с модом (игрой).
Не знаю как в Xash3D Engine решен вопрос particles, но можно было бы простым способом привязать к материалу:
- декали от попаданий;
- собственно партикли, которые будет выбивать к примеру попадание пули/ножа по материалу (типа пучки травы, щепки, листья и т.п.) или например взрыв гранаты на определенной поверхности или скажем аналог env_explosion;
- части объекта (модели - gibs), на которые развалится объект после нанесения заданного уровня урона и соответственно звук падения этих частей на поверхность из определенного материала;
- само собой - шаги персонажей и звуки падения.
Для воды неплохо бы сделать градацию глубины и определенный звук от шагов, падения в воду предметов, игрока, взрывов гранат, например, в воде и соответсвующего отображения брызг/фонтанов.
Ну это собственно, так инфа для размышления, то чего так не хватает той же кс 1.6 и многим модам для халвы (имхо)
 
 

gfdjr5

[NULL]
25.11.2012
563
0
0
Награды
0
npocTo_LaM сказал(а):
Ну как мысль - сделать как в "Condition Zero: Deleted Scenes":
В папке с модом есть отдельная папка materials, в ней лежат файлы с имена соответствующими названиям карт и расширением mat. В них содержится соответствие названия текстуры и материала, типа так:
texture "c2a54"
[
material
{
type "slosh"
}
]
Текстура задаёт материал? Бред.
 
 

npocTo_LaM

New member
27.10.2012
1 474
47
0
Награды
0
так собственно разницы никакой, что материал и соответствующая текстура (materials.txt), что текстура и соответствующий материал (приведенный пример)
 
 

gfdjr5

[NULL]
25.11.2012
563
0
0
Награды
0
npocTo_LaM сказал(а):
так собственно разницы никакой, что материал и соответствующая текстура (materials.txt), что текстура и соответствующий материал (приведенный пример)
Да? И насколько ты уверен в своём утверждении? И что, в 3DMax тоже на модель текстуру накладываешь, чтобы материал установить? Настройки эластичности тоже на текстуру буду накладывать? Самое главное в твоём примере - текстура, у которой есть поле материал. Но что этот материал определяет? Где его характеристики? Или захардкоденных внутри движка тебе будет достаточно? Ну и самая главная проблема будет в том, что, если у тебя будет несколько разных текстур, например, дерева, тебе придётся на каждую из них отдельно укладывать одинаковый набор параметров.
 
Последнее редактирование:
 

npocTo_LaM

New member
27.10.2012
1 474
47
0
Награды
0
омг, это, насколько я понял, вообще то тема насчет игрового движка и разговор идет не о том, как создавать модели и обтягивать их текстурами, а о картах и использовании текстур на них, так что думаю 3DMax тут не причем, там ты можешь натягивать какую угодно текстуру - вопрос, как ее обработает движок.
Если не прав, можете удалить мои высказывания.
 
 

gfdjr5

[NULL]
25.11.2012
563
0
0
Награды
0
npocTo_LaM сказал(а):
омг, это, насколько я понял, вообще то тема насчет игрового движка и разговор идет не о том, как создавать модели и обтягивать их текстурами, а о картах и использовании текстур на них, так что думаю 3DMax тут не причем, там ты можешь натягивать какую угодно текстуру - вопрос, как ее обработает движок.
Если не прав, можете удалить мои высказывания.
Я про то, что материал задаёт текстуру, а не наоборот. Частное не содержит целого. А ещё удобнее будет делать наследование материалов внутри файлов. Материал wood2 - это материал wood, но текстура у него не xyzwood, а xyzwood2, и карта нормалей у него используется (название файла берётся из названия текстуры+"_normal", например. Наследование, конечно, должно поддерживаться на уровне движка. Например, заданием параметра "BasedOn", который указывает, с какого материала взять недописанные характеристики к этому. Поэтому, если в материале wood не используется нормаль, но в wood2 она нужна, то в wood2 появится поле bUseNormal = true. Это наследование материалов. А ты предлагает использовать текстуры, имитирующие материалы. И наследование текстур - как минимум, звучит бредово. Да и как текстура может содержать в себе физические характеристики материала? Для того и говорю, что нужно представлять материал, как главного, а не текстуру.

Код:
 [material]
 name "metal"
 texture "metalpic"
 usenormal false
 usespecular false
 usebump false
 elasticity 0.0
 
 

Дядя Миша

VIP
Команда форума
28.03.2010
15 384
237
63
Награды
0
Кубань
2 Raid: предлагаешь на каждый вадник сделать свой файлик?
А если текстура вкомпилена в карту?

2 npocTo_LaM: посмотри описание материалов в параное-2. Всё что ты предложил уже сделано.
Вопрос только лишь в том, в каких файлах хранить описание параметров рендеринга.
 
 

gfdjr5

[NULL]
25.11.2012
563
0
0
Награды
0
А ты, ДМ, ориентируешь материалы только на графические характеристики, как понимаю?
 
 

Дядя Миша

VIP
Команда форума
28.03.2010
15 384
237
63
Награды
0
Кубань
2 gfdjr5: посмотри как в параное. Физические характеристики собраны в унифицированные поименованные блоки, которые задает сам юзер.
А в параметрах рендеринга текстуры есть привязка к материалу.
Это самая удобная схема, как я понял. Вопрос только в одном- как хранить физически описания параметров рендеринга текстур. Один материал = один файлик или все материалы в одном.
 
 

gfdjr5

[NULL]
25.11.2012
563
0
0
Награды
0
Дядя Миша сказал(а):
2 gfdjr5: посмотри как в параное. Физические характеристики собраны в унифицированные поименованные блоки, которые задает сам юзер.
А в параметрах рендеринга текстуры есть привязка к материалу.
Это самая удобная схема, как я понял. Вопрос только в одном- как хранить физически описания параметров рендеринга текстур. Один материал = один файлик или все материалы в одном.
Посмотрю.
Вообще - когда в разных файлах - глаза не разбегаются, всё по порядку. Хотя если их будет много - то получится каша. С другой стороны - если все в одном, то нужный не составит труда найти поиском. Можно реализовать оба варианта - юзер сам выберет себе наиболее удобный вариант хранения. Если же выбирать среди чего-то одного, то, наверное, стоит использовать разделение каждого материала на свой файл, чтобы не таскать в одном файле лишние (неиспользуемые) материалы, а быстро разделить их на нужные для карты и нет.
 
Последнее редактирование:
 

Дядя Миша

VIP
Команда форума
28.03.2010
15 384
237
63
Награды
0
Кубань
С другой стороны - если все в одном, то нужный не составит труда найти поиском.
Поиск в блокноте\поиск в винде. Непринципиально.
К тому же файлик описания материала может вовсе отсутствовать, система это предусматривает.
Да, пожалуй сделаю 1 материал = 1 файлик. А описание материалов так и оставлю в одном, но теоретически можно будет сделать кастомные материалы персонально для карты. Впрочем я так далеко пока заглядывать не будут, это и потом можно прикрутить.