Дядя Миша писал: К этой подборке текстур надо еще нарисовать декали HD и для моделей новые текстурки.
Для замены моделей уже имеется Half-Life Overhaul Pack, в котором собраны практически все HD/SD-модели с качественными текстурами к ним + новая озвучка. Текстуры там, конечно, вшитые и индексированные, но потери качества, в основном, минимальные. Кстати, я ещё вложил в пак сменные текстуры для рук HEV-костюма, которые как раз можно подставить с помощью Ксаша, не трогая саму модель.
thambs есть и вполне вменяемые модели. Хорошие монстры, даже если монстр из вальвовского хдпака, то у него рескин красивый. Вот модели оружия, да... Нехорошие в большинстве паков, упёртые из КС, их сразу видно по стилю анимаций: idle - никакого движения; draw - выпендрёжный, с каким-нибудь заковыристым трюком типа подбрасывания ствола; reload - резкие движения, резкое выпендрёжное передёргивание затвора, shoot - на все три штуки - одна-единственная анимация и т.п.
Но главное же - текстуры мира. Которых надо около 2000 штук. Ну примерно тыщу можно найти во всяких паках типа хл голд, только они там маленькие - 512х512. А вот паки для хл:с я не видел.
В общем, хочу вернуться к проблеме, связанной с заменой стандартных текстур на HD, а именно - к проблеме дублирующихся файлов HD-текстур. Имеется ряд случаев, когда текстуры может потребоваться продублировать, что влечёт за собой излишнее распухание папки с текстурами:
1. Рэндом-тайловые текстуры карт, которые фактически приходится заменять одной и той же текстурой, т. к. многие стыки данных текстур всё равно получаются кривыми, даже если они правильно затайлены по периметру, т. к. текстуры стыкуются в реальности не только по периметру, но и кусками, и наискосок.
2. Некоторые текстуры карт при разном названии всё же выглядят абсолютно одинаково, соответственно нет смысла делать разную текстуру на замену. Либо отличия столь незначительны, что их, в принципе (или временно), можно проигнорировать, и подставить одинаковую текстуру.
3. Детализирующие текстуры в большинстве случаев дублируются. При этом есть возможность составить файл типа mapname_detail.txt и кинуть его в папку maps, но его нужно составлять для каждой карты, что, мягко говоря, нерационально, да и сам формат этого файла не очень удобен.
4. Во многих студиомоделях используются одинаковые текстуры: текстуры оружия в p_, v_ и w_-моделях, текстуры рук в v_-моделях и т. д.
С учётом того, что потенциально дублирующиеся текстуры могут быть довольно большими по размеру, внедрение поддержки системы подстановки замещающей текстуры может серьёзно сократить вес папок с HD-текстурами (при условии изготовления достаточно полных наборов HD-текстур). Кроме того, сам процесс создания паков текстур и их обновления ускоряется, т. к. создателю пака не нужно заморачиваться над дублированием текстур каждый раз, когда он решил заменить/обновить ту или иную текстуру - меняется только 1 текстура вместо нескольких, что намного удобнее.
Соответственно, хочу предложить следующий вариант оптимальной системы подстановки дублирующихся текстур. Для каждой текстуры, которую требуется продублировать, изготавливается не текстура, а текстовый файл. Текстовик должен иметь то же название, что и исходная текстура в ваде, которую требуется заменить. Например, к текстуре -1out_rk4 создаём файл -1out_rk4.txt и кладём его в ту же папку (common, в случае общих текстур карт). В сам файл вписываем название той текстуры, которая будет подставляться, например -0out_rk4.tga. Сама указанная в текстовике текстура должна лежать в основной папке текстур, но с учётом типа. Т. е. для текстур карт это так и будет папка common, а для моделей - папка models (внутри папки materials, естественно, а не папка с самими моделями). Аналогично в случае с детализирующими текстурами и с текстурами, относящимися к какой-то конкретной карте - текстовик и замена должны лежать именно в этих папках.
Почему я предлагаю вариант с одиночными текстовыми файлами - это очень просто, наглядно и позволяет избежать процесса создания громоздких списков, включающих в себя все текстуры (коих в одном только halflife.wad более 3000). Да и намного удобнее для проверки, есть замена для какой-либо текстуры или нет. Также это позволяет быстро проконтролировать, не присутствует ли в папке текстовый файл-указатель одновременно с одноимённой HD-текстурой (чтобы выбрать, какой из этих файлов оставить, а какой удалить). Кроме того, процесс установки, скажем, обновлений паков с текстурами становится более простым, т. к. наличие файлов-списков (в которых указывается ряд текстур), потребовало бы утомительной ручной правки данных файлов, при условии поступления обновлений текстур от разных авторов, например.
Тут ничего трогать не надо. Надо только, чтобы они правильно работали в ксаше.
Цитата:
Qwertyus писал: 2. Некоторые текстуры карт при разном названии всё же выглядят абсолютно одинаково
Ну это в халфе. А в самодельном моде этого можно избежать.
Цитата:
Qwertyus писал: 3. Детализирующие текстуры в большинстве случаев дублируются. При этом есть возможность составить файл типа mapname_detail.txt и кинуть его в папку maps, но его нужно составлять для каждой карты, что, мягко говоря, нерационально, да и сам формат этого файла не очень удобен.
Очень рационально как раз таки. Для каждой карты отдельно - очень удобно.
Всё относительно тесктур, что относится к маппингу, требует прямоты рук маппера, не более. Тогда и дублироваться ничего не будет, и вес мода с HD-Текстурами будет маленький. Единственное - для бампа, глосса и прочих плюшек (где мы имеем точно такую же по размеру текстуру) нужно использовать такие же текстовики как для детальных текстур, потому что одна такая специальная текстура может подойти к десяти обычным текстурам (разноцветные двери, стены, вентиляции, которые не отличаются "объёмными" элементами).
Цитата:
Qwertyus писал: 4. Во многих студиомоделях используются одинаковые текстуры: текстуры оружия в p_, v_ и w_-моделях, текстуры рук в v_-моделях и т. д.
А вот это действительно проблема. Потому что тут дублирования текстур не избежать. По-хорошему текстуры моделей вообще должны быть внешними как в сорсе. Можно для каждой модели завести текстовик как для карты и прописывать там пути, а сами модели компилить с текстурами 16х16 для уменьшения веса..
Добавлено 22-06-2012 в 09:36:
В старом ксаше всё это можно было делать шейдерами, я заменял текстуры в моделях на маленькие, а внешние были большие. ЕМНИП, там и пути можно было прописывать какие угодно для каждой текстуры в каждой модели. Только система довольно громоздкая была, с наскоку, без чтения доков, не осилишь. Текстовики редактировать, да дубликаты обычных текстур в папку materials/common кидать проще. Вот и поплатились за свою лень. Теперь придумываем, как бы вес уменьшить, и чтобы текстуры не дублировались.
Дядя Миша, а может быть стоит текстурную систему сделать такой:
1. Грузим глобальный текстовик, в котором можно указать пути для абсолютно всех текстур, использующихся в игре (даже для текстур меню и консоли, помнится в старом ксаше вообще помехи анимированные были в окошке скриншотов сохранений, если сохранений нет).
2. Грузим текстовики для каждой модели, карты, кажого спрайта (на случай оверрайда или если в глобальном нет нужных путей).
3. По этим путям грузим нужные нам полноцветные текстуры.
Ku2zoff
Извини, но ты абсолютно не понимаешь, чего я хочу добиться путём внедрения данной схемы. Все разработчики модов думают обычно только об одном - вот запилю я свой собственный мод, сделаю в нём всё, как мне нравится, и для этого мне нужно то, то и то.
А я думаю совсем о другом - использовать возможности Ксаша, как движка, на полную катушку. А это значит - сделать универсальный пак текстур, или другие универсальные нововведения, которые бы мог увидеть любой игрок под Ксашем в любом моде. И это уже кардинальным образом поменяет ситуацию в отношении конечного пользователя, привлечёт внимание не только мододелов, но и простых игроков, даст им повод перейти на Ксаш просто потому, что есть такие качественные отличия, ради которых стоит это сделать.
Потому что сейчас большинство думает так - нахрена мне Ксаш, все интересные мне моды и под Стим-ХЛ работают. Ну запущу я свой любимый мод под Ксашем, что мне это даст? Ничего. А значит и не буду даже пытаться.
И конкретно предлагаемый мной выше вариант именно и продуман для того, чтобы имелась возможность сделать процесс создания подобного универсального пака текстур более удобным. Причём не только создание, но и последующее внесение в него каких-либо изменений. А для этого всё должно иметь максимально простую и модульную структуру. И самый удобный вариант - это отдельный файл на отдельную текстуру. Который движок сможет обработать независимо от остальных.
Глобальные текстовики - это удовольствие ниже среднего, если тебе нужно будет внести какие-либо изменения в списке, который насчитывает свыше тысячи строк. Такой дурью может себе позволить маяться только разработчик модов, а обычному игроку, читай - просто человеку, который решил внести какие-либо обновления в имеющуюся коллекцию текстур, удобно скачать несколько новых текстур и несколько новых текстовых файлов, отвечающих за подстановку текстур. Вместо того, чтобы искать по грёбаному глобальному списку, где и как там какая текстура прописана.
А если текстура может прекрасно функционировать без какого-либо списка - то зачем вообще её заносить в этот список?
Добавлено 22-06-2012 в 07:50:
Аналог эдесь, который можно привести для объяснения преимуществ предлагаемой мной схемы - это модели ХЛ. С ними ситуация какая - захотелось кому-то новую модельку сделать - он взял и сделал. А другой увидел новую модельку, скачал её себе, бросил в нужную папку и всё ОК, работает. Вот я хочу, чтобы нечто подобное было и в отношении текстур (здесь, конечно, я имею в виду конкретно ситуацию с вынужденным дублированием текстур, а не ситуацию с текстурами вообще, сейчас с с ней в Ксаше всё нормально, в принципе). Даже если глобального пака (пока ) не будет, зато любой желающий сможет создать свои текстуры и выложить их для использования другими.
А игроки посмотрят, выберут из предложенного то, что им нравится - и будут юзать. А если делать глобальные текстовики, то всё удовольствие с пополнением и изменением имеющейся коллекции текстур для игроков превратится в слишком сложное занятие. А значит все опять будут тупо ждать, пока кто-нибудь сподобится наваять такой глобальный пак, который устроит всех и каждого (что произойдёт с очень малой долей вероятности).
Вот представьте себе ситуацию, что сведения о всех моделях ХЛ внесли бы в один файл. И чтобы заменить какую-либо модель, приходилось бы этот файл заново редактировать. Как вы думаете, у многих бы людей дошли руки до того, чтобы делать модели при таких условиях, и как много бы людей захотело скачать и использовать какую-либо новинку, если б они знали, что им опять ради этого придётся лезть исправлять какой-то там глобальный текстовый файл?
Qwertyus писал: И самый удобный вариант - это отдельный файл на отдельную текстуру.
Буууэээ... В сорсе такая мешанина из этих файлов шопипец. Помнится мне, ДМ негативно отозвался о таком подходе. А сколько места на винчестере они съедят? Целый кластер на каждый маленький файлик. И фрагметация ойойёй. Тут кто-нибудь скажет, что можно эти файлы в pakX.pak положить. Но тут проблемка. Как обновить-то уже существующие? Расплодить двадцать паков в папке мода? Или добавлять файлы незапакованными?
Если уж и делать такую систему, то файл описания текстуры должен содержать в себе больше параметров, чем просто путь к полноцветной тгашке, например ещё и пути к нормалмапе, глоссмапе, детальной текстуре, скейл детальной текстуры, имя материала (для проигрывания звука, что кстати без изменения игровой дллки не сработает), флаги для сурфейса (зеркало там или что-то ещё), данные о светимости этой текстуры (было бы удобно). Короче это уже шейдер.
Дядя Миша писал: Дублирующиеся текстуры прекрасно сожмутся в рар-хиве до нуля байт.
Да, сожмутся, если жать непрерывным архивом, но на винте эта прелесть отжирает много места, это раз. И два - при изготовлении пака и манипуляциях по замене одного варианта текстур на другой (для проверки и сравнения их в игре) каждый раз приходится заменять все дублирующиеся текстуры. Т. е.. каждый раз приходится клонировать все дубликаты. А так бы можно было только 1 текстуру менять.
Цитата:
Дядя Миша писал: файлы описания детальных текстур ксаш создает автоматически.
А можно узнать, какой от этих описаний толк конкретно в приложении к заявленной проблеме? Я предлагаю сделать универсальный пак детализирующих текстур, который бы работал под каждым модом без дополнительной необходимости вмешательства юзера, точно так же, как сейчас способны работать HD-текстуры. И в данный момент технически создание такого пака невозможно.