Sidebar

"AllocBlock: full", нервы и Великая перестройка

}I{ u B 4 u K

Active member
09.03.22
543
137
43
Добрый день! Строю карту, и столкнулся с проблемой, старой как мир: "AllocBlock: full". Почитав на форуме, я понял, что дело именно в масштабе текстур.
Придется мне практически полностью перестраивать карту, максимально подгоняя ее под все стандарты карты "de_storm", по мотивам которой я строю.
И так, строительство у меня уже год идет, вперемешку с перерывами, большими и маленькими, а тут такие дела...
Поэтому у меня назрел ряд вопросов. Очень надеюсь, что вы мне поможете их решить.

Программы:
1. Какой редактор лучше использовать? Самый последний, не принципиально "VHE".
2. Какие компиляторы лучше использовать? С какими параметрами?

Оптимизация:
3. Нужно ли текстурам "null" и "sky" менять масштаб для уменьшения "wpoly"? "3" и "3" по осям "X" и "Y" не много будет?
4. Возможно ли выделить определенную текстуру, но только не на одной поверхности, а сразу во всех случаях, где она используется? Разом. Возможно ли задать этим всем поверхностям разом определенный масштаб?
5. Приемы для оптимизации, в целом: правильное небо, невидимые стороны браша закрашивать "null", зазор в один юнит, изменение масштаба текстур, перевод брашей в "func_wall или "func_detail". Ничего не забыл?

Хочу все это учесть, провести Великую перестройку и довести дело до конца. Прошу помощи, коллеги.
 
VIP
12.08.04
18 877
462
83
  • Бронзовая медаль 103
  • Деревянный домик Скааржа
  • Серебряная медаль 213
  • Золотая медаль 136
  • Бронзовая медаль 141
  • Серебряная медаль 125
  • Золотая медаль 221
  • Золотая медаль 213
  • Золотая медаль 232
  • Серебряная медаль 132
1. Без разницы.
2. https://gamebanana.com/tools/5391 параметры вис-full, рад-extra.
3. Не нужно.
4. В режиме наложения текстур нажать "обзор", в тестур броузере выделить нужную и внизу того же окна кнопку "выделить".
5. Нулл на все невидимые поверхности, не использовать коробку с текстурой sky вокруг всей карты, всякие мелочи в func_detail, скейл текстур от 1.0 до 0.5.
 
  • Like
Reactions: }I{ u B 4 u K

}I{ u B 4 u K

Active member
09.03.22
543
137
43
1. Без разницы.
2. https://gamebanana.com/tools/5391 параметры вис-full, рад-extra.
3. Не нужно.
4. В режиме наложения текстур нажать "обзор", в тестур броузере выделить нужную и внизу того же окна кнопку "выделить".
5. Нулл на все невидимые поверхности, не использовать коробку с текстурой sky вокруг всей карты, всякие мелочи в func_detail, скейл текстур от 1.0 до 0.5.
Спасибо!)
5. А какая градация? 1.0, 0.9, 0.8... Шаг какой? А "2" и более не стоит?
 
VIP
12.08.04
18 877
462
83
  • Бронзовая медаль 103
  • Деревянный домик Скааржа
  • Серебряная медаль 213
  • Золотая медаль 136
  • Бронзовая медаль 141
  • Серебряная медаль 125
  • Золотая медаль 221
  • Золотая медаль 213
  • Золотая медаль 232
  • Серебряная медаль 132
Всё зависит от самих текстур и мест, где они используются и как оно выглядит вообще.
Для большинства текстур и поверхностей можно обойтись конкретно этими 2-мя значениями 1.0 и 0.5.
К остальным случаям надо подходить индивидуально, например может потребоваться скейл аж с тремя знаками после запятой для более правильного и красивого отображения кладки кирпичей или какого бордюра.
И функция "Fit", заполняющая поверхность ровно одним тайлом текстуры, может на выходе показать совсем дикое значение скейла, это норма. Даже менее 0.5 для деталей не критично, хоть и не желательно.
Большие значения скейла более 1.0 можно, а вот качество картинки пострадает, опять же, надо рассматривать каждый случай отдельно, гдето оно может оказаться уместным.
Если совсем грубо и в общих чертах: текстура 128х128 - скейл 1.0, текстура 256х256 - скейл 0.5.
Конечно, для небольших деталей по типу кнопок использовать текстуру 256х256 глупо, там и скейл может улететь в значение менее 0.1, если требуется заполнить эту мизерную поверхность аж всей текстурой.
 
Останнє редагування:
  • Like
Reactions: }I{ u B 4 u K

Aynekko

Маппер
Команда форуму
Супер Модератор
07.06.10
4 562
32
  • Золотая медаль 153
  • Золотая медаль RC
  • Бронзовая медаль 216
1. Какой редактор лучше использовать? Самый последний, не принципиально "VHE".
Советую J.A.C.K., но только steam-версию (а она платная). В бесплатной много багов, в таком случае лучше хаммер использовать.
зазор в один юнит <...> перевод брашей в "func_wall или "func_detail"
Если переводишь в func_wall или func_detail, то этим объектам зазор не нужен. Советую использовать по возможности именно detail, т.к. он не использует лимит энтитей.
 
  • Like
Reactions: }I{ u B 4 u K

Blackcock

Active member
19.02.22
140
35
Советую J.A.C.K., но только steam-версию (а она платная). В бесплатной много багов, в таком случае лучше хаммер использовать.
О каких багах идет речь?
Пользуюсь уже давненько бесплатным Джеком, глюки/баги, конечно, проскакивали, но они были незначительны и на работу не влияли сильно.
 
  • Like
Reactions: }I{ u B 4 u K

npocTo_LaM

Well-known member
27.10.12
2 166
387
83
  • Золотая медаль 311
невидимые стороны браша закрашивать "null"
Немного дополню:
1. Стороны брашевых энтитей, покрытых не служебными текстурами и не видимые (или видимсоть их для игрока маловероятна или малозаметна) игроку - текстура null.
2. Поверхности брашей соприкасающиеся с брашевыми энтитями и func_detail и не видимые игроку - текстура null.
3. Не объединять в одну энтитю набор соприкасающихся брашей получим ненужные полигоны.
Для func_wall/func_illusionary - или чередуем через один браш в рамках одной конструкции или делаем отдельными энтитями. Если рядом группа брашей, которые нужно перевести в энтитю, то либо делаем кучу энтитей, либо группируем с соблюдением принципа чередования. Для группы возможно понадобится наблюдение за тем как движок отрисовывает эту группу энтитей, но это скорее уже финальная доводка. Смысл только в случае если больше уже нет способов, а понизить в_поли желательно. Либо вообще на этот момент забить.
Для func_detail - в наборе брашей, которые планируется перевести в func_detail, самый большой браш - func_detail (level 1), примыкающий к нему размером поменьше - func_detail (level 2), следующий примыкающий маленького размера - func_detail (level 3) и так далее аналогично. Уровень (level) с больштм номером не разбивает на полигоны меньший номер.
4. Если будет превышен лимит clipnode'ов (что весьма непросто сотворить) для ряда энтитей, которые не доступный "физически" игроку в процессе игры, а только видны можно вставить Passable - Yes.
 

Aynekko

Маппер
Команда форуму
Супер Модератор
07.06.10
4 562
32
  • Золотая медаль 153
  • Золотая медаль RC
  • Бронзовая медаль 216
О каких багах идет речь?
Постоянные вылеты при открытии свойств энтити.
Незаметное дублирование объектов (выделить объект, нажать CTRL+X, CTRL+Z, CTRL+C и объект появится прямо на том же месте; и то, что их 2, заметить будет очень сложно).
Перенос всех параметров энтити при смене класса, что приводит к поломке скриптов в некоторых случаях.
Как у тебя с этим не знаю, но я сталкивался с этим постоянно и работать было невозможно. Сейчас это все пофикшено, а так же появились удобные фишки - например, прописанные параметры видно сразу (не нужно отжимать кнопку smartedit), а также видно в 3д виде движение объекта, когда его перетаскиваешь в 2д - удобно подгонять.
 
  • Wow
Reactions: Blackcock

Blackcock

Active member
19.02.22
140
35
Постоянные вылеты при открытии свойств энтити.
Незаметное дублирование объектов (выделить объект, нажать CTRL+X, CTRL+Z, CTRL+C и объект появится прямо на том же месте; и то, что их 2, заметить будет очень сложно).
Перенос всех параметров энтити при смене класса, что приводит к поломке скриптов в некоторых случаях.
Как у тебя с этим не знаю, но я сталкивался с этим постоянно и работать было невозможно. Сейчас это все пофикшено, а так же появились удобные фишки - например, прописанные параметры видно сразу (не нужно отжимать кнопку smartedit), а также видно в 3д виде движение объекта, когда его перетаскиваешь в 2д - удобно подгонять.
Из всего этого у меня вылеты при открытии свойств энтити были, но очень редко это случается.
 

}I{ u B 4 u K

Active member
09.03.22
543
137
43
Немного дополню:
1. Стороны брашевых энтитей, покрытых не служебными текстурами и не видимые (или видимсоть их для игрока маловероятна или малозаметна) игроку - текстура null.
2. Поверхности брашей соприкасающиеся с брашевыми энтитями и func_detail и не видимые игроку - текстура null.
3. Не объединять в одну энтитю набор соприкасающихся брашей получим ненужные полигоны.
Для func_wall/func_illusionary - или чередуем через один браш в рамках одной конструкции или делаем отдельными энтитями. Если рядом группа брашей, которые нужно перевести в энтитю, то либо делаем кучу энтитей, либо группируем с соблюдением принципа чередования. Для группы возможно понадобится наблюдение за тем как движок отрисовывает эту группу энтитей, но это скорее уже финальная доводка. Смысл только в случае если больше уже нет способов, а понизить в_поли желательно. Либо вообще на этот момент забить.
Для func_detail - в наборе брашей, которые планируется перевести в func_detail, самый большой браш - func_detail (level 1), примыкающий к нему размером поменьше - func_detail (level 2), следующий примыкающий маленького размера - func_detail (level 3) и так далее аналогично. Уровень (level) с больштм номером не разбивает на полигоны меньший номер.
4. Если будет превышен лимит clipnode'ов (что весьма непросто сотворить) для ряда энтитей, которые не доступный "физически" игроку в процессе игры, а только видны можно вставить Passable - Yes.
А получится сделать такой трюк: из текстуры на 64 юнита я сделаю текстуры на 96, 64 и 48, затем натяну 96 текстуру на ящик 96х96х96, 64 на 64х64х64 и 48 на 48х48х48. Масштабы у всех трех ящиков будут 1:1. Это поможет уменьшить максимально AllocBlock? Ящиков немало по всей карте.
 

}I{ u B 4 u K

Active member
09.03.22
543
137
43

Вкладення

npocTo_LaM

Well-known member
27.10.12
2 166
387
83
  • Золотая медаль 311
А получится сделать такой трюк: из текстуры на 64 юнита я сделаю текстуры на 96, 64 и 48, затем натяну 96 текстуру на ящик 96х96х96, 64 на 64х64х64 и 48 на 48х48х48. Масштабы у всех трех ящиков будут 1:1. Это поможет уменьшить максимально AllocBlock? Ящиков немало по всей карте.
Предположу, что никак не повлияет. Карту бы уже давно показал, может чего и посоветовали дельного.
Приведенные выше примеры текстур ящиков - 64х64 пикселя. По идее можно просто ничего не делать, максимум: объединить в одну текстуру 128х64 юнита, хотя, думаю, это ничего особенного в плане allocblock не даст.
 

}I{ u B 4 u K

Active member
09.03.22
543
137
43
Как уменьшить размер текстуры с 256х256 до 192х192 без потери качества? Это нужно для задания масштаба 1:1.
 

npocTo_LaM

Well-known member
27.10.12
2 166
387
83
  • Золотая медаль 311
Качество все равно хоть немного, но будет потеряно, если это не двух цветная картинка. Просто перед изменением размера переведи тектуру в полный цвет 24 бита, или выше, потом после изменения размера обратно в 256 цветов.
Не сомневаюсь, что есть технологии, позволяющие уменьшить потерю качества (на форуме есть люди, соображающие в графоне), но пока хватает и самого простого способа.
Самый лучщий вариант, если текстура не из ГС, а, например, из Сорса. Там цветность текстур выше, результат после уменьшения будет лучше, чем когда уменьшаешь размер текстуры из ГС.
 

ZGreen

Navarro
15.06.06
3 643
37
  • Спец медаль MM18
Не надо делать текстуры со сторонами не равными степеням двойки, они в игре выглядят как говно, потому что преобразуются все равно.
 

}I{ u B 4 u K

Active member
09.03.22
543
137
43
Не надо делать текстуры со сторонами не равными степеням двойки, они в игре выглядят как говно, потому что преобразуются все равно.
Добрый вечер! А по какому принципу заполняется лайтмапа? Я могу как-то высчитать, к примеру, сколько памяти займет браш 512х512 с текстурой 512х512? Это нужно для того, чтобы прикинуть, уложусь ли в пределы.
 

npocTo_LaM

Well-known member
27.10.12
2 166
387
83
  • Золотая медаль 311
Лучше не заниматься работой за компиляторы, а просто строить и если вдруг возникнет проблема, решать ее. Ключевое слово - если вдруг ;-)
 

}I{ u B 4 u K

Active member
09.03.22
543
137
43
Лучше не заниматься работой за компиляторы, а просто строить и если вдруг возникнет проблема, решать ее. Ключевое слово - если вдруг ;-)
Это понятно) Но все равно приходиться следить за строкой "* AllocBlock 11/64 0/0 (17.2%)".
 

Game Server

Доноры Красавчики

Користувачі онлайн