HLFX.Ru Forum Страницы (8): [1] 2 3 4 5 » ... Последняя »
Показать все 110 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Hull'ы (https://hlfx.ru/forum/showthread.php?threadid=4587)


Отправлено Ku2zoff 21-04-2015 в 10:40:

Hull'ы

В коде компиляторов и функциях GetHullBounds на сервере и клиенте задефайнены размеры хуллов игрока. Три штуки: в полный рост, в присяде и точечный нулевой. Чтобы изменить размер игрока, надо поменять значения во всех трёх местах. Сегодня убедился экспериментально, пересобрав ещё и компиляторы. Это не беда, сделать не сложно. Но можно ли добавить ещё один хулл для лежачего игрока? Подозреваю, что нет, и это ограничение формата карт и движка. А для чего юзается точечный хулл? С первыми двумя понятно - для размеров игрока сидя и стоя. Ну а третий для чего? Для дохлого игрока? Можно ли его заюзать для своих целей?


Отправлено ~ X ~ 21-04-2015 в 11:04:

Ku2zoff для всего юзается. Просто прям для всего. Особенно для трейсов, вроде.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 21-04-2015 в 11:27:

~ X ~ понял. Трейс он ведь точечный. Значит и все точечные энтити, тоже его юзают. И монстры, им ведь можно без труда задавать произвольный размер, в отличие от игрока.

Добавлено 21-04-2015 в 17:15:

Можно модифицировать компиляторы и добавить ещё один хулл, только вот прожуёт ли это дело движок? Я тут в DoD поэкспериментировал. Хулл у лежачего игрока такой же как и у сидячего. Забавно наверное выглядит со стороны, когда один игрок запрыгивает на другого в таком случае.

Добавлено 21-04-2015 в 17:27:

Похоже, нельзя добавить. Всего движок юзает 4 хулла: 3 для коллизии, про которые и идёт речь и один визуальный.
Есть мысль сделать хулл в присяде изначально маленьким, для лежачего игрока и как-то искусственно блокировать движение, когда игрок в присяде, а пространство не позволяет пролезть.


Отправлено XaeroX 21-04-2015 в 11:30:

На самом деле нулевого хулла не существует.

Цитата:
Ku2zoff писал:
Похоже, нельзя добавить.

Только если перекомпилировать движок. Там тоже есть дефайн на число хуллов.

__________________

xaerox on Vivino


Отправлено Ku2zoff 21-04-2015 в 14:10:

Цитата:
XaeroX писал:
На самом деле нулевого хулла не существует.

Это не шутка?


Отправлено JPEG 21-04-2015 в 15:15:

ДМ вот чё мне писал "в pm_shared функция pmove->usehull.
Там есть нулевой - это обычный хулл игрока, есть первый - это присевший игрок и есть второй - точечный. Засада в том, что третий хитрая халфа может вообще не добавить в эту структуру.
Так что попробуй pmove->usehull = 3, но предупреждаю - может и не сработать."

__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))


Отправлено XaeroX 21-04-2015 в 15:37:

Цитата:
Ku2zoff писал:
Это не шутка?

Ну посмотри сорцы кваки. Он строится при загрузке уровня.

__________________

xaerox on Vivino


Отправлено Ku2zoff 21-04-2015 в 17:12:

Почитал на русском форуме, посвящённом AMX. У чувака получилось хакнуть GetHullBounds и применить к игроку второй (третий по счёту) Vector(0,0,0), нулевой хулл. На скрине видно, что залез в узенькую щель (юнита 3) между ящиками на дедасте. Значит для игрока сработает usehull = 2.
Я боюсь, что если изменю его размеры в компиляторах и в движке, то что-нибудь изломаю.

Цитата:
~ X ~ писал:
для всего юзается. Просто прям для всего. Особенно для трейсов, вроде.

Цитата:
XaeroX писал:
На самом деле нулевого хулла не существует.
Он строится при загрузке уровня.

Так он юзается для чего-то или нет?
Где-то краем глаза видел чью-то писанину про то, что если менять какой-то из существующих хуллов, чтобы сделать его для лежачего игрока, то изломается коллизия монстров...

Добавлено 21-04-2015 в 23:12:

C++ Source Code:
1
/*
2
================================
3
GetHullBounds
4
 
5
  Engine calls this to enumerate player collision hulls, for prediction.  Return 0 if the hullnumber doesn't exist.
6
================================
7
*/.

Ключевая фраза PLAYER collision hulls. Попробую поковырять код, может только на игрока и действует.


Отправлено Ku2zoff 22-04-2015 в 09:09:

Методом тыка выяснил, что в GetHullBounds можно подставлять любые значения (и в любой кейс), лишь бы они совпадали с хуллами, задефайнеными в компиляторах, и кейс соответствовал pmove->usehull.

C++ Source Code:
1
vec3_t          g_hull_size[NUM_HULLS][2] =
2
{
3
  {// 0x0x0
4
  {0, 0, 0},          {0, 0, 0}
5
}
6
,
7
{// 32x32x72
8
{-16, -16, -36},    {16, 16, 36}
9
}
10
,
11
{// 64x64x64
12
{-32, -32, -32},    {32, 32, 32}
13
}
14
,
15
{// 32x32x36
16
{-16, -16, -18},    {16, 16, 18}
17
}
18
};

Из компилятора. Первый хулл для точечных объектов. Второй для стоячего игрока, третий ХЗ для чего, вроде пишут что для монстров, четвёртый для сидячего игрока. Поясните пожалуйста, для коллизий чего конкретно нужен третий хулл, куб 64х64х64? Ну не для монстров ведь. Им же задаётся произвольный размер: хедкраб, гаргантюа или барник пролезают в разные дырки, и ни одна из них не соответствует кубу со стороной 64. Может это какой-то рудимент от кваки? Да и размеры монстрам задаются совсем не так:
C++ Source Code:
1
для игрока
2
mins = Vector(-16, -16, -36);
3
maxs = Vector(16, 16, 36);
4
потому что ориджин в пузе

C++ Source Code:
1
для монстра, ростом с игрока
2
mins = Vector(-16, -16, 0);
3
maxs = Vector(16, 16, 72);
4
потому что ориджин в ногах


Отправлено XaeroX 22-04-2015 в 09:51:

Цитата:
Ku2zoff писал:
для коллизий чего конкретно нужен третий хулл, куб 64х64х64?

Для пушаблей, гаргов и т.п.
Движок сам подбирает наиболее близкий хулл.
Но ты не путай коллизию игрока с монстром (она точная, по боксу или даже хитбоксам) и монстра с миром (она приближённая - но обычно достаточно. Хотя бывает, что нод вроде бы вот он, а монстр к нему не идёт).

__________________

xaerox on Vivino


Отправлено thambs 22-04-2015 в 10:13:

>Хотя бывает, что нод вроде бы вот он, а монстр к нему не идёт).

оох, как же это выматывает.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Ku2zoff 22-04-2015 в 10:59:

Цитата:
XaeroX писал:
Для пушаблей, гаргов и т.п.

Цитата:
XaeroX писал:
и монстра с миром

Ага, ясненько. Значит этот хулл трогать всё равно нельзя. А может есть способ обойтись без хулла? Сделать в pm_shared проверку и считать коллизии там? Или это придётся тащить из движка недостающую физику?


Отправлено PLut 22-04-2015 в 11:38:

Замечал, кстати, если менять UTIL_SetSize монстрикам на свои, более подходящие к модельке, то бывает монстры перестают ходить по лестнице, высота ступенек которой равны 16 юнитам. В итоге у меня все монстрики размером 32х32х72. Ходят по ступенькам хорошо, но вот когда прыгают в сторону стены, то наполовину в стену уходят. Есть какое-то решение?

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 22-04-2015 в 11:50:

Цитата:
Ku2zoff писал:
Значит этот хулл трогать всё равно нельзя.

Почему? Можно. Просто движок подберёт для пушабля и гарга другой хулл, наиболее близкий по размерам. А что будет в итоге в игре - надо проверять.
Цитата:
Ku2zoff писал:
А может есть способ обойтись без хулла?

Ну.. можно написать волатилу, которая использует точную колоизацию по боксам. Как вариант. Халфа на хуллах завязана очень прочно.
Цитата:
Ku2zoff писал:
Так он юзается для чего-то или нет?

Юзается, конечно - это и есть точечный хулл. Но клипнодов для него в бсп нет, потому и говорю, что он на самом деле не существует.
Цитата:
PLut писал:
Есть какое-то решение?

Отказаться от хуллов.

__________________

xaerox on Vivino


Отправлено ~ X ~ 25-04-2015 в 11:57:

Цитата:
XaeroX писал:
Отказаться от хуллов.

Мечта детства, блин.

Хуллы - зло. КвакаГовно. Интересно, как оно в У сделано.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Временная зона GMT. Текущее время 16:39. Страницы (8): [1] 2 3 4 5 » ... Последняя »
Показать все 110 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024