HLFX.Ru Forum
Показать все 40 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Как можно создать систему Parent? (https://hlfx.ru/forum/showthread.php?threadid=3880)


Отправлено Jarkoe 13-04-2013 в 19:26:

Half-Life Как можно создать систему Parent?

Я играл в мод Survive in catacombs.
И я там заметил присутствие системы parent.

Есть туторы на эту тему?


Отправлено Дядя Миша 13-04-2013 в 19:47:

Эх, катакомбы Мы вот помнится тоже в одни залезли по молодости, а темно, страшно. И наружу ведет ууузенькое такое окошечко - как раз пацану на пузе проползти. И всех нас конечно мысль посещала, а что если оно обвалится (там сверху уже были трещины) и нас там замурует заживо.
Но слава богу всё обошлось

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Jarkoe 13-04-2013 в 19:53:

Вот ещё момент

Там где по канатам эта штука возила)

Не помню как называется.

Вот я понял что там есть parent.

Там были func_door , func_ladder , fucn_wall.


Мне интересно как сделать систему parent?
хочу научиться)


Отправлено pRoxxx 13-04-2013 в 20:14:

Цитата:
Jarkoe писал:
Мне интересно как сделать систему parent?
хочу научиться)

Ну карочи есть энтитя и кароче она может быть парентом для другой энтити. И кароче когда парент двигается то всё энтити её детишки карочи двигаются.

А по теме есть Ксаш, исходники открыты, берешь их и учишься всему в жизни. А еще лучше берешь сам Ксаш и делаешь на нем свой мод. (=

Ксашъ даст просраться твоему любимому Сру От Страха как в два пальца об асфальт. Паленый рендер с паранои в СОС даже рядом не стоял с рендером из Ксаша.


Отправлено Jarkoe 13-04-2013 в 20:23:

Но мне бы хотелось самому бы научиться.
А не брать готовое =)


Отправлено Дядя Миша 13-04-2013 в 20:53:

Цитата:
Jarkoe писал:
Но мне бы хотелось самому бы научиться.

Скопипастить по чужому тутору еще не означает научится самому.

Начнём с простого: какие векторные операции ты знаешь? Умеешь ли работать с матрицами? Что такое афинное преобразование? Что такое плоскость?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 14-04-2013 в 04:04:

Цитата:
Jarkoe писал:
Есть туторы на эту тему?

Сомневаюсь, что кто-то станет писать туторы на такую специфическую тему. Притом что в спирите есть парент-система, а "юзай спирит" - давно уже универсальный ответ на любой вопрос.

ЗЫ: чтобы сделать нормальную парент-систему в халфе (а не говно "а ля спирит"), нужно хорошо знать устройство халфовского движка, или хотя бы ксаша.

Добавлено 14-04-2013 в 11:04:

То есть быть мной или Дядей Мишей.

Добавлено 14-04-2013 в 11:04:

Или двигаться в этом направлении.

__________________

xaerox on Vivino


Отправлено -=DrTressi=- 14-04-2013 в 07:32:

Jarkoe Навряд-ли в этих древних модах были парент-системы. Там либо всё грамотно в оригинале сделано, либо Спирит. На спирите там либо Мовевитч, либо Моушн_менеджер.

Цитата:
XaeroX писал:
То есть быть мной

Как самокритично!

__________________
How interesting, just look at that!
© Scientist


Отправлено Jarkoe 14-04-2013 в 08:14:

Дядя Миша,
Сижу учу http://padabum.com/d.php?id=2037


Отправлено ONeiLL 14-04-2013 в 08:21:

хм.. Я один не люблю книжки с названием "Для чайников" ?


Отправлено XaeroX 14-04-2013 в 08:42:

Цитата:
-=DrTressi=- писал:
Как самокритично!

Зато правда.

Добавлено 14-04-2013 в 15:42:

Цитата:
ONeiLL писал:
хм.. Я один не люблю книжки с названием "Для чайников" ?

В принципе, под этим названием может скрываться что угодно. Ведь фильм с названием "ХХХ" - как ни странно - вовсе не порнуха!
И вообще, человек ищет информацию о векторах, матрицах и плоскостях в книге "C++ для чайников" - что ж в этом плохого? Мне сразу вспомнился анекдот про алкаша, который ищет часы под фонарём не потому, что он их там потерял, а потому, что под ним светло. И ведь есть в этом логика, есть!

__________________

xaerox on Vivino


Отправлено fire64 14-04-2013 в 08:50:

Цитата:
Jarkoe писал:
Сижу учу http://padabum.com/d.php?id=2037

Не то читаешь, не то.
Тебе в данном случае нужно изучить векторную алгебру.

Вот хороший учебник: Высшая математика. Векторная алгебра и аналитическая геометрия.
http://elib.sfu-kras.ru/bitstream/2...1/m_vectors.pdf

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено ONeiLL 14-04-2013 в 08:57:

fire64 ничего такого не читал, но как-то разобрался в векторах. ИМХО если подумать то можно и самому догадаться когда вектора будут коллинеарные, когда перпендикулярные и т.д. Даже длину вектора я через теорему Пифагора выводил.


Отправлено XaeroX 14-04-2013 в 09:00:

По правде говоря, матрицы и вектора там не нужны.
Ну то есть нужны, но как инструмент решения той или иной задачи (которая, вообще говоря, может иметь разные способы решения).
Сначала же надо сформулировать саму задачу.

Фундаментальная задача такова: как перемещать одну систему отсчёта относительно другой системы отсчёта? Скажу честно - я не знаю, как решить такую задачу. В хлфх 0.7 решена частная задача: как перемещать одну инерциальную систему отсчёта относительно другой инерциальной системы отсчёта? Её решение напрямую следует из принципа относительности Галилея.
Ограничения такого решения очевидны - нельзя заставить мовевитчиться дверь с пушаблей, или пушаблю с другой пушаблей, чтобы при этом пушабля могла произвольно двигаться игроком. Но в реальной игре такие ситуации возникают крайне редко, если вообще возникают.
В общем, если нужны конкретные ответы - задавай конкретные вопросы, поможем чем сможем.

Добавлено 14-04-2013 в 16:00:

Цитата:
ONeiLL писал:
ИМХО если подумать то можно и самому догадаться когда вектора будут коллинеарные, когда перпендикулярные и т.д.

Можно и СТО самому вывести, подобно Эйнштейну, но у кого на нашем форуме достаточно для этого мозга? Правильно, ни у кого.

__________________

xaerox on Vivino


Отправлено nemyax 14-04-2013 в 09:05:

Векторы дают в школьном курсе, есличё. Сложение, вычитание, произведение такое, произведение сякое.
Матриц и преобразований не дают, надо искать учебник. "3D Math Primer for Graphics and Game Development" неплохой и доходчивый.


Отправлено ONeiLL 14-04-2013 в 09:08:

Я вот думал, в чём сложность мовевитча? Вот представим: Есть два тела, одно присобачено к другому. И чтобы они не отсоединились, надо просто смещать одно тело на столько, на сколько сместилось второе. С поворотом та же фигня... В чём сложность? Это ж легко


Отправлено XaeroX 14-04-2013 в 09:11:

Цитата:
nemyax писал:
Матриц и преобразований не дают

Их дают в институте на первом курсе, есличё.
А школьникам незачем писать код, им надо в ВоВ играть, ну или там я не знаю, ретрибушен делать (как я в своё время)

Добавлено 14-04-2013 в 16:11:

Цитата:
ONeiLL писал:
В чём сложность?

Основная сложность - понять, куда вставлять код.
Но опять же, это зависит от того, как именно будет решаться задача.

__________________

xaerox on Vivino


Отправлено ONeiLL 14-04-2013 в 09:19:

Цитата:
XaeroX писал:
Основная сложность - понять, куда вставлять код.
Но опять же, это зависит от того, как именно будет решаться задача

В ХЛ в какой нить тчинк? Считаем изменение поворота и положения, и применяем это ко всем присобаченным ентитям...


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

Цитата:
ONeiLL писал:
Считаем изменение поворота и положения, и применяем это ко всем присобаченным ентитям...

Наивный. А как тогда приаттаченная дверь будет блокироваться другими энтитями? Нет, там надо со скоростями работать. а не тупо изменять положение.

Добавлено 14-04-2013 в 16:22:

Да вы попробуйте, попробуйте. Тут надо не просто фантазировать, а сразу код писать и смотреть, что к чему.

__________________

xaerox on Vivino


Отправлено ONeiLL 14-04-2013 в 09:23:

Но у себя в движке вообще очень легко делать. Я вот просто брал и объединял все тела в одно целое, и дальше физику считал уже для одного целого тела, а не для 100 приатаченых


Отправлено nemyax 14-04-2013 в 09:30:

Цитата:
XaeroX писал:
Их дают в институте на первом курсе, есличё.

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


Отправлено ONeiLL 14-04-2013 в 09:36:

Цитата:
XaeroX писал:
А как тогда приаттаченная дверь будет блокироваться другими энтитями? Нет, там надо со скоростями работать. а не тупо изменять положение.

Кстати есть идея запустить рекурсивно всё это дело. Создать фанк
Vector Move( Vector ololo );
Она принимает вектор, на который надо переместить тело, а возвращает значение, на которое получилось тело переместить...

C++ Source Code:
1
Vector Move( Vector ololo )
2
{
3
  int MIN;
4
  // тут надо опредилить на сколько мы можем сдвинуть тело, но я не знаю как
5
  for( int i = 1; i <= количество приатаченых ентитей, i++ )
6
    MIN = min( MIN, приатаченные[ i ]->Move() );
7
  this->origin += MIN;
8
  return MIN;
9
}


Отправлено XaeroX 14-04-2013 в 09:43:

Цитата:
nemyax писал:
Парент-система разве не заключается в перемножении матриц согласно заданной иерархии?

Не совсем, т.к. надо взаимно учитывать колоизацию.
Цитата:
ONeiLL писал:
Она принимает вектор, на который надо переместить тело, а возвращает значение, на которое получилось тело переместить...

Молодец, а теперь реализуй это в рамках движка хл1.

Добавлено 14-04-2013 в 16:43:

Цитата:
nemyax писал:
Так то ж на технических факультетах, а не на гомо... как их там.

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

__________________

xaerox on Vivino


Отправлено ONeiLL 14-04-2013 в 10:50:

Цитата:
XaeroX писал:
Молодец, а теперь реализуй это в рамках движка хл1.

Появилась одна идея...

// тут надо опредилить на сколько мы можем сдвинуть тело, но я не знаю как

вот тут перемещать тело вдоль вектора ololo на очень малую величину, пока это тело ни к чему не прикоснется.


Отправлено Jarkoe 14-04-2013 в 10:54:

Цитата:
-=DrTressi=- писал:
Jarkoe Навряд-ли в этих древних модах были парент-системы. Там либо всё грамотно в оригинале сделано, либо Спирит. На спирите там либо Мовевитч, либо Моушн_менеджер.



http://www.youtube.com/watch?v=hmUQ...eature=youtu.be

А это что?


Отправлено XaeroX 14-04-2013 в 10:59:

Jarkoe
Вероятно, это таки уже спирит.

__________________

xaerox on Vivino


Отправлено Ku2zoff 14-04-2013 в 11:51:

Цитата:
-=DrTressi=- писал:
Там либо всё грамотно в оригинале сделано, либо Спирит.

Выдержка из readme этого мода, прошу прощения за проблемы с кодировкой:
Цитата:
Efekty ohnщ a kouшщ(Vytvoшeno pro SIC, Zaloћeno na engine spirit of Half-life 1.2)

Вот тут как бы гадания и заканчиваются.
Jarkoe если уж так охота собственную парент-систему, то поищи старый-старый Дядь Мишин тутор по Xash MoveWith System. Там описано что куда вставлять, так сказать принцип поймёшь. ИМХО, у тебя слишком много времени уйдёт на написание этой системы. Лучше возьми готовый тулкит (спирит 1.2, спирит 1.9 или ксашмод) и делай мод в своё удовольствие. Если всё-таки хочешь что-то действительно хорошее в этом плане (для самообразования), то лучше делать свой собственный движок или модифицировать чужой (у нас тут на форуме есть один, очень похож на халфовский ).


Отправлено XaeroX 14-04-2013 в 12:06:

Если хочешь что-то освоить - напиши код сам, тут без вариантов.

__________________

xaerox on Vivino


Отправлено ONeiLL 14-04-2013 в 12:07:

http://hlfx.ru/forum/showthread.php...MoveWith+System
Я так понял что этот мовевитч такой как я писал(тоесть без учёта колоизации)?


Отправлено pRoxxx 14-04-2013 в 12:19:

Цитата:
ONeiLL писал:
Я вот думал, в чём сложность мовевитча? Вот представим: Есть два тела, одно присобачено к другому. И чтобы они не отсоединились, надо просто смещать одно тело на столько, на сколько сместилось второе. С поворотом та же фигня... В чём сложность? Это ж легко

Это конечно всё хорошо, но допустим кто то присабачил функ_валл. Сместить его оригин не составит труда, а вот повернешь ты из под халфы как? pev->angles будет его крутить вокруг его оригина который находиться в точке 0,0,0.


Отправлено ONeiLL 14-04-2013 в 12:21:

Цитата:
pRoxxx писал:
Это конечно всё хорошо, но допустим кто то присабачил функ_валл. Сместить его оригин не составит труда, а вот повернешь ты из под халфы как? pev->angles будет его крутить его вокруг его оригина который находиться в точке 0,0,0.

Легко.
1) Смещаем ВАЛЛ на столько, чтобы наша ось воокруг которой хотим крутить сместилась в (0, 0, 0)
2) Крутим нашу стенку
3) Перемещаем назад
Думаю так можно... Но всё равно проще написать свой двиг и не парится


Отправлено XaeroX 14-04-2013 в 13:48:

Цитата:
ONeiLL писал:
Но всё равно проще написать свой двиг и не парится

Или дождаться HLFX 0.7, где все эти детские задачки решены.

__________________

xaerox on Vivino


Отправлено Ku2zoff 14-04-2013 в 13:51:

Цитата:
pRoxxx писал:
вокруг его оригина который находиться в точке 0,0,0

origin-браши зачем придуманы, а? Правильно, чтобы указать брашевой энтите центр вращения в произвольном месте, а не в начале координат. Вот отсюда и ограничение в спирите - чтобы браши вращались вместе с другими энтитями, им нужен ориджин-браш. Можно конечно центр рассчитывать программно (как у XaeroX'a в новом HLFX (он вроде обмолвился об этом)).

Добавлено 14-04-2013 в 20:51:

Цитата:
XaeroX писал:
Или дождаться HLFX 0.7, где все эти детские задачки решены.

Это если и дальше охота делать однообразные моды на ХЛ- и околоХЛ-тематику. А если нет, можно и на сорс или что-то другое перейти.


Отправлено XaeroX 14-04-2013 в 13:54:

Цитата:
Ku2zoff писал:
А если нет, можно и на сорс или что-то другое перейти.

А смысл? И то и другое жутко устаревшее, но халфа проще и привычнее. Лично мне на первой халфе гораздо проще разные алгоритмы отлаживать, чем на навороченном и запутанном сорсе.

Добавлено 14-04-2013 в 20:54:

Цитата:
Ku2zoff писал:
как у XaeroX'a в новом HLFX

Да, в новом хлфх оригин-браши нужны только самим вращающимся энтитям (исключительно с целью отметить ось вращения). Их детям - они не обязательны, их оси будут рассчитаны автоматически.

__________________

xaerox on Vivino


Отправлено ONeiLL 14-04-2013 в 14:00:

Цитата:
XaeroX писал:
Да, в новом хлфх оригин-браши нужны только самим вращающимся энтитям (исключительно с целью отметить ось вращения). Их детям - они не обязательны, их оси будут рассчитаны автоматически.

Мне кажется что у детей должна быть та же ось вращения что и у парента


Отправлено XaeroX 14-04-2013 в 14:03:

ONeiLL
У детей несколько осей вращения: собственная, от парента, от парента парента и т.д. Соответственно, дитя вращается вокруг каждой из этих осей.
Ну, в спирите всё это, разумеется, невозможно. Я же не просто так говорю, что спиритовский мовевич - говно.

__________________

xaerox on Vivino


Отправлено Ku2zoff 14-04-2013 в 14:07:

Цитата:
XaeroX писал:
А смысл? И то и другое жутко устаревшее, но халфа проще и привычнее.

Верно. При создании собственной игры всё упирается в контент. Если собственного контента нет, то и продвинутый движок не нужен, можно хоть на кваке делать. Беда в том, что талантливые кодеры пишут движки, на которых не делают привычные игры, а талантливые мапперы, моделеры и текстурщики создают контент для привычных игр на проприетарных движках. Если только представить, какую игру могли бы сделать толпы народа, клепающие барахло для КС на протяжении 10 лет, обомлеть можно.


Отправлено pRoxxx 14-04-2013 в 14:57:

Цитата:
XaeroX писал:
Или дождаться HLFX 0.7, где все эти детские задачки решены.

Ну дак это для ХЛФКС со своим рендером это детская задачка, а для чистого ХЛСДК это задача не детская и врятли выполнимая.


Отправлено XaeroX 14-04-2013 в 15:05:

pRoxxx
В HLFX нет никакого "своего рендера", там всё реализовано исключительно на возможностях движка халфы. В том числе недокументированных (декомпилировал, реверсил - каюсь, грешен).

__________________

xaerox on Vivino


Отправлено Дядя Миша 14-04-2013 в 21:43:

Оно всегда кажется просто, когда сидишь и рассуждаешь.
Но дьявол как обычно кроется в деталях.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 02:12.
Показать все 40 сообщений этой темы на одной странице

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