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

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Гейтсеквенции монстров (https://hlfx.ru/forum/showthread.php?threadid=4629)


Отправлено Ku2zoff 08-07-2015 в 12:39:

Гейтсеквенции монстров

Я вплотную занялся передвижением и стрельбой монстров одновременно. Очень уж впечатлили алиен гранты из свенкоопа, стреляющие на бегу. На данный момент ещё толком ничего не готово, но я научил барника ходить независимо от анимации. То есть, если мы возьмём, и обрежем все кадры, кроме нулевого в анимациях run и walk, то наш ходячий монстр (алиен грант, хьюман грант, барник, хаундай и т.д.) не будет двигаться. Если убрать motion extraction из анимации, то скорее всего тоже, я не проверял. Так уж устроен халфовский ИИ, даже движение завязано на анимациях. Что получилось: барник двигается, не передвигаясь в самой анимации, как раньше. Так двигаются летающие монстры, например алиен контроллер. Приятно удивило прокладывание маршрута в этом случае. Барник намного лучше ориентируется на карте без нодов, может "обходить" небольшие углы, когда видит игрока. До навигации, как в свенкоопе ещё далеко. Там вообще наверное ноды не нужны. Барник догоняет игрока, спрятавшегося чёрти где.
Зачем нужно менять код передвижения? Потому, что по стандарту он завязан на фреймрейте и кадрах анимации. А так как анимация не будет совпадать с анимацией ног (гейтсеквенцией), то и движения не будет. Я решил пойти для начала именно таким путём. Потом можно будет написать "честный" механизм, основанный на гейтсеквенции и гейтфрейме.


Отправлено XaeroX 08-07-2015 в 12:45:

Цитата:
Ku2zoff писал:
Приятно удивило прокладывание маршрута в этом случае. Барник намного лучше ориентируется на карте без нодов, может "обходить" небольшие углы, когда видит игрока.

Подожди. Я не понял, а это-то как связано с анимациями?

Добавлено 08-07-2015 в 18:45:

Цитата:
Ku2zoff писал:
Там вообще наверное ноды не нужны

Как же без нодов построить путь до объекта, скажем, на другом конце карты?

__________________

xaerox on Vivino


Отправлено Ku2zoff 08-07-2015 в 12:52:

Цитата:
XaeroX писал:
Подожди. Я не понял, а это-то как связано с анимациями?

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


Отправлено Ku2zoff 08-07-2015 в 19:35:

Поэкспериментировав ещё, я понял, что придётся переписывать код движения (функцию Move). У ходячих монстров из неё вызывается MoveExecute( pTargetEnt, vecDir, flInterval ), где flInterval = StudioFrameAdvance(). StudioFrameAdvance завязан на sequence. Если sequence будет, к примеру, анимацией стрельбы, то получим совершенно неподходящий результат. Как будет двигаться монстр в таком случае, даже не представляю. У летающих MoveExecute вызывается так: MoveExecute( pTargetEnt, vecDir, flMoveDist / m_flGroundSpeed ), где flMoveDist - расстояние, которое нужно преодолеть, а m_flGroundSpeed - скорость, с которой это нужно сделать. Можно заюзать этот механизм, но тогда двигаться монстр будет рывками, скорость не будет соответствовать скорости анимации ног. Как вариант, думаю вставить вместо m_flGroundSpeed m_flGaitMovement. Должно заработать, если юзать модуль m_flGaitMovement, чтобы значения всегда были положительными.

Добавлено 09-07-2015 в 01:35:

Научил гейтсеквенцию монстра анимироваться. Почему-то нет интерполяции. Всё как-то дёрганно.


Отправлено Chyvachok 08-07-2015 в 20:57:

Правильное дело делаешь, странно что вальвы скорость движения сделали зависящей от анимации, а не как у игрока. Кстати убрав это то по идее легче сделать стрейфищся монстров, типа скаржей в Анриле, еще бы класно барников всяких по лестницах научить лазить, и перепрыгивать препятствия. Я помню играл в один мод на анрил торнамент, там были дружественные солдаты, боты которые бегают за игроком, они могли за игроком на трубу или через небольшой обрыв к примеру перепрыгнуть, но тупые до ужаса, если они сами свалились то залезть сами уже не смогут, кстати этот мод, Project Xenome, использует много текстур и звуков с халвы, даже некоторые боты используют скины солдат из Оппозинг Форса, и еще какой-то игры, выглядит прикольно, этот мод есть в полной версии, где много карт, даже карта с дамбой есть, но ее сложней найти, и более новой переделаной который First Day.


Отправлено Ku2zoff 09-07-2015 в 09:31:

Прогресс идёт. Сделал интерполяцию для гейтсеквенции монстра. Всё оказалось очень просто. Для игрока в движении используется такой код:

C++ Source Code:
m_pPlayerInfo->gaitframe += (m_flGaitMovement / pseqdesc->linearmovement[0]) * pseqdesc->numframes;

То есть здесь есть прямая зависимость от скорости движения и пройденного расстояния. Для не двигающегося игрока используется такой код:
C++ Source Code:
m_pPlayerInfo->gaitframe += pseqdesc->fps * dt;

Кадры просто прибавляются с поправкой на delta time, чтобы анимации имели одинаковую длительность при любом фпс. Так вот, для монстров первое не нужно. Они всегда движутся с фиксированной скоростью, в отличие от игрока. Поэтому, я оставил для монстров только один вариант кода:
C++ Source Code:
m_flGaitframeMonster += pseqdesc->fps * dt;

Вот тестовое видео. Обратите внимание, что для верхней половины барника всегда используется только одна анимация. Ноги анимируются отдельно.


Добавлено 09-07-2015 в 15:03:

Осталось только разобраться с серверным кодом: научить активности совмещаться, чтобы монстр мог стрелять в движении. Тут придётся переписывать таски и скедьюлы. В коде алиен гранта, к примеру, для совершения атаки нужна остановка:
C++ Source Code:
1
Task_t	tlAGruntSuppressHornet[] =
2
{
3
  [u]{ TASK_STOP_MOVING,		(float)0		},[/u]
4
  { TASK_RANGE_ATTACK1,	(float)0		},
5
};
6
 
7
Task_t	tlAGruntRangeAttack1[] =
8
{
9
  [u]{ TASK_STOP_MOVING,			(float)0		},[/u]
10
  { TASK_FACE_ENEMY,			(float)0		},
11
  { TASK_RANGE_ATTACK1,		(float)0		},
12
};


Добавлено 09-07-2015 в 15:31:

Вот видео с алиен грантами, стреляющими на бегу. Почти что без косяков И это не свенкооп!

Ещё немного, и доделаю. Реквестируйте тутор, кому надо


Отправлено KiQ 09-07-2015 в 09:39:

Ku2zoff реквестирую

__________________
-Brain is dead-


Отправлено Ku2zoff 09-07-2015 в 09:58:

Вот ещё с барником видео.

Код весь написан на скорую руку, поэтому с анимированием гейтсеквенций проблемы. Ну и с движением барника тоже, он не останавливается, когда подбегает к игроку вплотную. Это всё фигня. Для чего я вообще захотел сделать такую фичу монстрам? Чтобы они могли пятиться назад, когда противник подходит близко. Но это уже в тутор не войдёт. Как и стрейфящиеся хьюман гранты. Только в сорцах мода, когда будет готово.


Отправлено Cybermax 09-07-2015 в 10:24:

Цитата:
Ku2zoff писал:
Вот видео с алиен грантами, стреляющими на бегу. Почти что без косяков И это не свенкооп!

Молодей автор за проделанную работу.
Цитата:
Ku2zoff писал:

Ещё немного, и доделаю. Реквестируйте тутор, кому надо

Ты сколько раз храстался какой-то нароботкой, пишешь мол если кому надо, напишешь тутор, тебя просят а тутора нема.

Добавлено 09-07-2015 в 13:24:

Цитата:
Ku2zoff писал:
Вот ещё с барником видео.

Выглядит комично


Отправлено Ku2zoff 09-07-2015 в 11:02:

Цитата:
Cybermax писал:
Ты сколько раз храстался какой-то нароботкой, пишешь мол если кому надо, напишешь тутор, тебя просят а тутора нема.

А теперь давай перечислим, сколько обещанных туторов я не написал и почему:
1. 9-way blending. Просил только ~X~, но он ему на самом деле не нужен, т.к. он не будет переделывать модели игроков в XDM. Расчёт гейтсеквенции на сервере (то, что ему действительно нужно) можно сделать и без этого тутора. Вон, есть реверсеннные сорцы кс, в обычном клиенте из хлсдк код. Бери не хочу.
2. Зажигалка, комбинирующаяся с оружиями. Тут всё просто. Мне не сделали модель этой зажигалки, хотя вроде бы начали. Наработки не выброшены, лежат на винчестере, ждут.
3. Ползание. Сомнительная полезность. При том, что хулл игрока не меняется, а так и остаётся "сидячим", в сингле пользы нет. В мультиплеере, без моделей с нужными анимациями, тоже нет пользы.
4. Что-то ещё? Напиши, а я объясню причину.
Если написание тутора зависит только от меня, то я пишу тутор. Если он не нужен, либо ещё не достаточно готов, то я откладываю написание. Исключение - тутор с ногами от 1 лица.


Отправлено Chyvachok 09-07-2015 в 11:07:

Цитата:
Ku2zoff писал:
свенкоопа


В свен копе неплохо вырезаный кингпин сделан еще: https://www.youtube.com/watch?v=dHaQS79q_V0

Вообще вульвы много прикольных монстров вырезали, пантера с бетки классно бы получилась с этой фичей атаки на бегу и длинными прыжками.

Добавлено 09-07-2015 в 13:07:

Ku2zoff кстати в свенкоопе скорострельность солдат не от длины анимации зависит и евентов в ней, а такая же скорострельность как у оружия игрока, то есть стрельба через интервал времени, из-за чего они могут полностью автоматический огонь вести, такое планируется? Я это делал без кода, просто укоротить анимацию чтобы она за 0.1 секунды проигрывалась, но выглядит тогда она не очень.


Отправлено Ku2zoff 09-07-2015 в 11:15:

Цитата:
Chyvachok писал:
Вообще вульвы много прикольных монстров вырезали

Я мог бы заняться монстрами плотнее. Мультиплеер наскучил донельзя. Совсем вдохновение пропало. Лично мне эти монстры не очень нужны. Но я знаю, где их можно применить. В XashNT. Туда вообще неплохо было бы закодить всех монстров из опфора и вырезанных из халфы. Ну и опфоровские оружия в довесок. Была бы такая интересная альтернатива свенкоопу. Только без кооперативного прохождения, а как база для моддинга.

Добавлено 09-07-2015 в 17:15:

Цитата:
Chyvachok писал:
кстати в свенкоопе скорострельность солдат не от длины анимации зависит и евентов в ней, а такая же скорострельность как у оружия игрока

Я вчера поиграл в свенкооп. Гавно. В одного проходить невозможно, монстры убивают быстро. А когда игроков несколько, я думаю, легче. Но бегать каждый раз от респауна до нужной точки - ацкий маразм. На некоторых картах такого нет, и точка респауна перемещается. Весь плюс свенкоопа - в тонне монстров. Оружие не в счёт, какой-то дурацкий набор.


Отправлено Chyvachok 09-07-2015 в 11:23:

Цитата:
Ku2zoff писал:
Но я знаю, где их можно применить. В XashNT.


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

Добавлено 09-07-2015 в 13:23:

Цитата:
Ku2zoff писал:
Я вчера поиграл в свенкооп. Гавно. В одного проходить невозможно, монстры убивают быстро.


Хотя да, играя с толпой это по другому ощущалось. В свен коопе там вообще одному хреново играеться как я помню, и часть карт требуют двух игроков для того чтобы две кнопки нажать, что тоже не есть хорошо.


Отправлено Cybermax 09-07-2015 в 12:06:

Цитата:
Ku2zoff писал:
Напиши, а я объясню причину.

Смысл что-то писать? Туторов то не будет. Ползание для мультиплеера интересно, модели в модах есть же. Ползание по вентиляции это уже придирки Ксавари.
Ноги от первого лица тоже нет.
Я просто о том что если нет желания, возможности никто с ножом у горла заставлять не станет, но зачем тогда продолжать предлагать писать их? Не понимаю.

Добавлено 09-07-2015 в 14:56:

Цитата:
Ku2zoff писал:
В одного проходить невозможно, монстры убивают быстро.

Цитата:
Ku2zoff писал:
Весь плюс свенкоопа - в тонне монстров.

Название как бы символизирует - кооператив

Цитата:
Ku2zoff писал:
Но бегать каждый раз от респауна до нужной точки - ацкий маразм.

А вот теперь задумайся на секундочку, а какая альтернатива?

Цитата:
Ku2zoff писал:
Оружие не в счёт, какой-то дурацкий набор.

Оружие из ХЛ+ОП4+вырезанное из хл Узи, миниган а мр5, м16 просто логично разделил.
Свен отличный мод, если вы играете в него одни и вам не понравилось то ...
Цитата:
Chyvachok писал:
, пантера с бетки классно бы получилась с этой фичей атаки на бегу и длинными прыжками.

Надо сделать ездовую пантеру. Даешь петов XD

Добавлено 09-07-2015 в 14:57:

Цитата:
Chyvachok писал:
многозарядный гранатомет, оно по виду подходит к халве, было бы прикольно убрать лимиты на декали, куски и гильзы от оружия, вообще чтобы бесконечно


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

Добавлено 09-07-2015 в 15:06:

Ездовая пантера не анимированая. А ещё можно летающих пэтов.


Отправлено XaeroX 09-07-2015 в 12:34:

Очень классно. Давно запланировал делать гейтсеквенции монстрам в волатиле, и было интересно посмотреть, что это реально реализуемо. Но, конечно, я буду и стрейфы делать, и всякое - словом, ИИ должен дотянуть до уровня Унреала. А в свенкооп я не играл, знаю только, что авторам выдали сорцы хаммера и они вовсю ваяют на его базе убивца джекхаммера.

__________________

xaerox on Vivino


Отправлено KiQ 09-07-2015 в 12:45:

Цитата:
Cybermax писал:
А вот теперь задумайся на секундочку, а какая альтернатива?

Цепочка точек респауна по всему уровню, чтобы выбирался ближайший к основному скоплению игроков

__________________
-Brain is dead-


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

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

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


Отправлено Cybermax 09-07-2015 в 13:07:

Цитата:
KiQ писал:
Цепочка точек респауна по всему уровню, чтобы выбирался ближайший к основному скоплению игроков

Есть и такие карты, на которых открываются новые телепорты. В одну поиграли карту наверняка поиграли и делаете скоропалительные выводы.

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

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


Отправлено Ku2zoff 09-07-2015 в 14:47:

Цитата:
Chyvachok писал:
помимо опфорсовского еще бы из TFC тоже неплохо бы смотрелось бы

Я так думаю, что из TFC стоило бы взять огнемёт, аптечку и гаечный ключ. Именно с теми свойствами, которые у них есть в TFC.
Цитата:
Cybermax писал:
А вот теперь задумайся на секундочку, а какая альтернатива?

При пересечении одним из игроков триггера отключаются дальние спавнпоинты, и включаются те, что ближе к триггеру.
Цитата:
Cybermax писал:
Оружие из ХЛ+ОП4+вырезанное из хл Узи, миниган а мр5, м16 просто логично разделил.

Миниган согласен - есть НПС, который его использует. m16 не к месту, зачем дублировать mp5? Узи - аццкий кал. Мало того, что дублирует mp5, так ещё и акимбо-версия есть. Ненавижу акимбо оружия. Единственная игра, где это было к месту - Nitro Family.
Цитата:
Cybermax писал:
Свен отличный мод, если вы играете в него одни и вам не понравилось то ...

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

Меня вполне устраивает то, что уже есть. Раз завязаны атаки на эвентах, пусть и остаются на эвентах. Хотя конечно это реализуемо.
Цитата:
XaeroX писал:
Но, конечно, я буду и стрейфы делать, и всякое - словом, ИИ должен дотянуть до уровня Унреала.

Стрейфы можно сделать на манер модели игрока - бонеконтроллерами, чтобы нижняя половина модели слегка поворачивалась в сторону движения. Но это очень много писанины в коде движения монстров. Они по-умолчанию всегда поворачиваются в сторону движения, там в коде две строчки:
C++ Source Code:
MakeIdealYaw ( m_Route[ m_iRouteIndex ].vecLocation );
ChangeYaw ( pev->yaw_speed );

Вот этими строчками надо будет менять gaityaw. А yaw оставлять в направлении противника.


Отправлено XaeroX 09-07-2015 в 14:52:

Цитата:
Ku2zoff писал:
Стрейфы можно сделать на манер модели игрока - бонеконтроллерами, чтобы нижняя половина модели слегка поворачивалась в сторону движения. Но это очень много писанины в коде движения монстров.

Да, это, пожалуй, самое простое, чтобы не делать новые анимации.
Но, правда, придётся увеличить лимит на бонеконтроллеры.

__________________

xaerox on Vivino


Отправлено Ku2zoff 09-07-2015 в 14:55:

Цитата:
thambs писал:
живой игрок с дефибриллятором.

Анальным. Чтоб уж точно оживить. Фигня всё это. Хотя, можно, например, сделать оживление после каких-нибудь определённых видов повреждения: после воды, газа, падения с небольшой высоты. То есть таких, которые по логике не оставляют дырок на теле. И вообще, если я такую фичу задумаю, то вместо дефибрилятора у меня будет нашатырный спирт

Добавлено 09-07-2015 в 20:55:

Цитата:
XaeroX писал:
Но, правда, придётся увеличить лимит на бонеконтроллеры.

Это да. Их всего 4. А в таком случае нужно будет минимум 3. Один для рта, второй для головы, а третий для поворотов туловища. В любом случае, легче, чем искать новые анимации.


Отправлено XaeroX 09-07-2015 в 14:56:

Цитата:
Ku2zoff писал:
Это да. Их всего 4.

Ну, положим, в волатиле их всегда было 8. Но всё равно может не хватить.

__________________

xaerox on Vivino


Отправлено PLut 09-07-2015 в 15:56:

Кто-то пантер упомянул?

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 09-07-2015 в 16:00:

PLut
Какие-то у тебя маленькие пантеры. Вот в азурщипе и в ретриблююшене были пантеры! Всем пантерам пантеры.

__________________

xaerox on Vivino


Отправлено PLut 09-07-2015 в 16:08:

XaeroX Я ресайзил их не один раз и решил, что это самый лучший размер.

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 09-07-2015 в 16:09:

Анимации конечно жесть у них. Понятно, почему вырезали.

__________________

xaerox on Vivino


Отправлено Ku2zoff 09-07-2015 в 19:26:

PLut я в бдеф не играл, поэтому не ругай за вопрос У тебя там монстры обычные, и не умеют стрелять на бегу? Если нет, то не хотел бы сделать, чтобы стреляли? Ну, например, можно на более высоком уровне сложности это сделать. Или с нарастанием волн.


Отправлено Cybermax 09-07-2015 в 20:20:

Цитата:
PLut писал:
Кто-то пантер упомянул?

Миниган сам просится в руки.
Цитата:
XaeroX писал:
Анимации конечно жесть у них. Понятно, почему вырезали.

Модель странная, лапы особенно задние слишком близко посажены. У модели которую аттачил выше лапы нормально.


Отправлено PLut 09-07-2015 в 20:39:

Ku2zoff Обычные, не умеют. Хотел бы, я только за, когда дело касается улучшения поведения монстров.

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 09-07-2015 в 20:53:

PLut вот давай, когда у меня появятся более-менее приличные результаты, дам тебе код, ты встроишь в бдеф и потестируешь. Самый лучший вариант для тестирования будет, имхо. Если ты не против. У меня просто нет возможности тестить всех монстров. Начну с алиен грантов, т.к. с ними проще, не надо почти ничего менять.


Отправлено PLut 09-07-2015 в 21:33:

Ku2zoff Буду рад

__________________
Base Defense on Steam, ModDB


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

Цитата:
Ku2zoff писал:
Но бегать каждый раз от респауна до нужной точки - ацкий маразм. На некоторых картах такого нет, и точка респауна перемещается. Весь плюс свенкоопа - в тонне монстров. Оружие не в счёт, какой-то дурацкий набор.

Ты же не играл в XHL CoOp. Там всё это сделано рамотно и без введения новых энтитей

Цитата:
Ku2zoff писал:
Реквестируйте тутор, кому надо

MESSAGE_BEGIN(MSG_ONE, gmsgRequestTutorial, UTIL_ClientByName("Ku2zoff"));
WRITE_STRING("please");
MESSAGE_END();

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

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

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


Отправлено XaeroX 10-07-2015 в 08:47:

~ X ~

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________

xaerox on Vivino


Отправлено Cybermax 10-07-2015 в 09:27:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________


Отправлено XaeroX 10-07-2015 в 10:01:

Cybermax

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________

xaerox on Vivino


Отправлено ~ X ~ 10-07-2015 в 12:16:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

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


Отправлено XaeroX 10-07-2015 в 12:41:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________

xaerox on Vivino


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

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.


Отправлено XaeroX 10-07-2015 в 15:09:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________

xaerox on Vivino


Отправлено Ku2zoff 10-07-2015 в 15:17:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.


Отправлено XaeroX 10-07-2015 в 15:19:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________

xaerox on Vivino


Отправлено Ku2zoff 10-07-2015 в 15:24:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.


Отправлено ~ X ~ 10-07-2015 в 15:39:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.


Цитата:
Ku2zoff писал:
Дай сорцы клиентки шкальникам - они читов наделают.

Если грамотно написано - не будет. Вон, джоббир и ПГП открытые - где к ним читы?

Цитата:
Ku2zoff писал:
Если у меня руки дойдут, попытаюсь накодить свою, чтоб кооператив был ближе к синглу. На голдсорсе придётся обходиться костылями.

зачем повторять то, что я сделал сделано в XDM? Там уже поезда сквозь транзишены ездят, монстры могут респауниться, глобалы переносятся...

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


Отправлено Ku2zoff 10-07-2015 в 15:52:

Цитата:
~ X ~ писал:
зачем повторять то, что я сделал сделано в XDM? Там уже поезда сквозь транзишены ездят, монстры могут респауниться, глобалы переносятся...

Ну скопипастю у тебя, уговорил


Отправлено XaeroX 10-07-2015 в 16:12:

Цитата:
~ X ~ писал:
зачем повторять то, что я сделал сделано в XDM? Там уже поезда сквозь транзишены ездят, монстры могут респауниться, глобалы переносятся...

Дядя Миша постоянно говорил про тебя и XDM гадости, чуть реже, чем про волатилу, но тем не менее. Мол, там всё страшно-страшно глючное. У народа сложилось предвзятое мнение, даже у меня, в чём честно и открыто признаюсь.

__________________

xaerox on Vivino


Отправлено ~ X ~ 10-07-2015 в 16:18:

XaeroX вот и дружи после этого с людьми. :-/ А ДМ точно в одной стране с нами живёт?

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


Отправлено XaeroX 10-07-2015 в 16:21:

~ X ~

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

__________________

xaerox on Vivino


Отправлено thambs 10-07-2015 в 16:23:

~ X ~
таки разобрался с поездами? а если ченджлевел без транзишона и pvsом игрока определяется? надо тогда как ни будь будет попробовать ещё раз hc2 или etc, например, кооппройти.

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


Отправлено Cybermax 10-07-2015 в 21:47:

Цитата:
Ku2zoff писал:
m16 не к месту, зачем дублировать mp5?


Не знаю, мне кажется что авторы свена если что-то делают, то не просто так. Отсебятины в их моде нет. Я вот такой скрин нашел. Могу предположить что на ранних стадиях планировалось м16 с подствольником у хеку и мр5сд у черных оперативников без подствольниа. А потом по какой-то не недомой причине решили объединить. Но опять же это всего лишь мои домыслы.

__________________


Отправлено PLut 10-07-2015 в 21:57:

Cybermax Интересное предположение, кстати, в бдефе мп5 и м4 обе с подствольниками. По-крайней мере пока что.

__________________
Base Defense on Steam, ModDB


Отправлено Cybermax 11-07-2015 в 00:36:

PLut ну то что м203 на мр5 смотрится ка на корове седло, это и ежу ясно, а на м16 органично, на м4 лично мне не так нравится но возможно. Также можно разделить глок, беретту с глушителем(я об этом уже писал тебе), дигл и кольт присобачить. Кстати, сейчас собираю модели оружия которое есть только в ОП4 с руками барни, хев. Ищу м40а1 барни, пулимет, дисплейсер. У кого есть поделитесь. Потом сделаю пак, выложу.

Добавлено 11-07-2015 в 03:36:

Можно mac10 и uzi добавить. Модели можно взять из Cold_Ice

__________________


Отправлено ~ X ~ 11-07-2015 в 00:54:

Колд айс )))))) Сколько лет я о нём не слышал! А ведь в своё время (99ый год) в клубах мы в него рубились, хоть и не понимали, что там происходит
Эхем. Что-то вы зафлудили опять про пушки...

По теме: модели все тоже новые клепать? Частично оставить старых монстров можно будет? pev->weaponmodel тоже, может, задействовать? (чтоб не клепать десяток bodygroup для оружий)

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


Отправлено GioHAUS0n 11-07-2015 в 01:08:

Цитата:
Cybermax писал:
Не знаю, мне кажется что авторы свена если что-то делают, то не просто так. Отсебятины в их моде нет. Я вот такой скрин нашел. Могу предположить что на ранних стадиях планировалось м16 с подствольником у хеку и мр5сд у черных оперативников без подствольниа. А потом по какой-то не недомой причине решили объединить. Но опять же это всего лишь мои домыслы.


- Не "M16", а "M4 Carbine Assault Rifle".
- High Definition Pack'ах использует дизайн "XM4/Colt Model 727"
- Black Ops появились лишь в конечном варианте "HL1", чтобы продолжить сюжетную линию - будущих аддон'тов. Ранней стадии игры Human Assassin и Human Grunt были одной фракции в relationship.
- Раньше Human Assassin использовала Арбалеты с глицерином, Glock18 с глушителем и гранату. Так что можно предположить, что MP5SD использовал лишь сам игрок и рабочий персонал в лаборатории.

PS. Думаю вы просто не копались самом HLSDK и RTB, там много информации и контентов об раннем HL:

- Military [ Grunt | Soldier | Police ] (grunt.mdl) в конце 1996 года (Quiver), вместо M4 использовал HK G11:
https://ru.wikipedia.org/wiki/HK_G11
http://cs619931.vk.me/v619931808/c33c/6jx67naMFyg.jpg

Цитата:
Cybermax писал:
PLut ну то что м203 на мр5 смотрится ка на корове седло, это и ежу ясно, а на м16 органично, на м4 лично мне не так нравится но возможно. Также можно разделить глок, беретту с глушителем(я об этом уже писал тебе), дигл и кольт присобачить. Кстати, сейчас собираю модели оружия которое есть только в ОП4 с руками барни, хев. Ищу м40а1 барни, пулимет, дисплейсер. У кого есть поделитесь. Потом сделаю пак, выложу.


Почему не смотришь, как все это реализовано в Action Half-Life?


Отправлено Cybermax 11-07-2015 в 02:00:

Цитата:
~ X ~ писал:
Колд айс )))))) Сколько лет я о нём не слышал!


Есть у кого может версия с моделью снайперской винтовки использующая не эту текстуру а другую?

Цитата:
GioHAUS0n писал:
PS. Думаю вы просто не копались самом HLSDK и RTB, там много информации и контентов об раннем HL:


Тебе бы только по умничать, кстати даже Ксавари убрал свою низкую оценку моего мода а некий GioHAUS0n поставил 1 из 10, как ты думаешь интересно мне твое мнение?

Добавлено 11-07-2015 в 05:00:

В этом ппаке есть грунты и с эмками и с мпшками http://www.moddb.com/games/half-life/addons/zelaroth1

__________________


Отправлено ~ X ~ 11-07-2015 в 05:53:

Убрал, наверное авансом, с расчётом на исправление в будущем, но он может и вернуть

Жду ответа про pev->weaponmodel...

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


Отправлено GioHAUS0n 11-07-2015 в 07:13:

Цитата:
Cybermax писал:

Тебе бы только по умничать, кстати даже Ксавари убрал свою низкую оценку моего мода а некий GioHAUS0n поставил 1 из 10, как ты думаешь интересно мне твое мнение?


- Теперь доволен Mr. Ten?

PS. Ну кто-то, когда-то в этой вселенной, тоже самое сделал со мной. Так что все честному - поровну. Если хочешь реванша скажи... (будешь наравне c фисташковым ублюдкам. Каждым днем они становятся все больше и больше - скоро все запахнет кокосом)


Отправлено Cybermax 11-07-2015 в 07:42:

Цитата:
GioHAUS0n писал:
PS. Ну кто-то, когда-то в этой вселенной, тоже самое сделал со мной.

Мой пост не подразумевал что на него надо отвечать, ну да ладно. А вообще я не помню что-бы я когда то ставил 1 из 10 кому то.

__________________


Отправлено Chyvachok 11-07-2015 в 12:58:

Цитата:
Cybermax писал:
ну то что м203 на мр5 смотрится ка на корове седло, это и ежу ясно, а на м16 органично, на м4 лично мне не так нравится но возможно.


В халве мп5 вообще странный агрегат, мп5сд со встроеным глушителем который не глушит, да и еще с м203, без гранатомета и рабочим глушителем он бы блек опсам из оппозинг форса подошел, т.к. те своего рода скрытые агенты, а солдафонам лучше подходит более мощный м16.


Отправлено Cybermax 11-07-2015 в 13:07:

Chyvachok не перенимай эту привычку читать и отвечать на сообщения других людей игнорируя куски текста несущие смысловую нагрузку. Я выше писал практически то же самое. Видимо ты просто не обратил внимания, но раз наше мнение совпало видимо имеет логику под собою


Цитата:
Cybermax писал:
Могу предположить что на ранних стадиях планировалось м16 с подствольником у хеку и мр5сд у черных оперативников без подствольниа.

__________________


Отправлено Ku2zoff 12-07-2015 в 20:45:

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


Отправлено XaeroX 12-07-2015 в 21:00:

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

__________________

xaerox on Vivino


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

XaeroX а какие соображения? Я и сейчас напишу.

1. Нужно отвязать движение от секвенции, то есть исключить использование StduioFrameAdvance в функции CBaseMonster::Move, где оно юзается по дефолту. Делается это очень легко: нужно всего лишь задать монстру значение m_flGroundSpeed. Для бега выше, для ходьбы ниже. Как и у игрока в юнит/сек. Лучше всего это сделать в функции MonsterThink, оверрайдить её для конкретного монстра.

2. Нужно назначать гейтсеквенции для активностей движения. Оверрайдим SetActivity для конкретного монстра. Если NewActivity = m_movementActivity, то эту активность делаем гейтсеквенцией. Если нет, то простой секвенцией.

3. Самая сложная часть. Нужно отредактировать существующие таски, или написать новые. К примеру, я убрал TASK_STOP_MOVING из Task_t tlAGruntRangeAttack1[], тем самым отучив его останавливаться, когда он стреляет. Ну потом конечно написал отдельный таск для стрельбы в движении. И сделал переключение между ними в функции выбора скедъюлей Schedule_t* CAGrunt :: GetScheduleOfType ( int Type ) в зависимости от расстояния до противника. Тут всё ограничивается лишь полётом фантазии.

Таски и скедъюлы можно по-разному комбинировать, получая интересные результаты. А если вчитаться в их код, то вообще о-го-го, чего там есть К примеру, стрейф в халфе вполне себе реализован. Только ни один бегающий монстр его не юзает. Вроде бы только алиен_контролееры умеют.

4. Расчёт гейтсеквенции монстрам на клиенте. Аналогично игроку, с той лишь разницей, что скорость фиксированная, и нам не нужна никакая m_flGaitMovement. Только m_flGaitFrame нужно рассчитывать. Здесь я напоролся на то, что для КАЖДОГО отдельного монстра нужно считать свой гейтфрейм (для игрока юзается индивидуальная структура m_pPlayerInfo, поэтому там проблем нету). Сначала я ради эксперимента сделал так: float m_flGaitframeMonster[1024]; ну понятно, максимум 1024 монстра, в качестве идентификатора - индекс энтити. Говнокод кароч. Потом заюзал пустой энтварс под гейтфрейм, и всё стало нормально.

5. Передача гейтсеквенции по сети. В маленькое изменение в client.cpp и новая строчка в delta.lst.

6. Серверные хитбоксы. Рассчёт m_flGaitFrame для гейтсеквенции на сервере, как в кс. Пока не делал, т.к. серверный кадр не синхронен с клиентским.

Пункты 2 и 3 ещё требуют доработки, чтобы не было дёрганий на ровном месте и искр над башкой. Пункт 6, я хз, нужен ли он вообще в халфе. Разве что при стрельбе из арбалета по монстру, который медленно идёт, и ноги у него медленно анимируются.


Отправлено XaeroX 12-07-2015 в 21:44:

Цитата:
Ku2zoff писал:
А если вчитаться в их код, то вообще о-го-го, чего там есть К примеру, стрейф в халфе вполне себе реализован.

Да, в халфе очень многое реализовано.
Спасибо за список, примерно так себе это и представлял.

__________________

xaerox on Vivino


Отправлено ~ X ~ 14-07-2015 в 08:26:

Цитата:
Cybermax писал:
А вообще я не помню что-бы я когда то ставил 1 из 10 кому то.

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


Ku2zoff ты усиленно превращиешь монстров в ботов. Way to go. Не мог бы на мои вопросы ответить? Про модели, например.

Цитата:
Ku2zoff писал:
Серверные хитбоксы.

таки надо.

PS: ждём гейтсеквенсов для tentacle2.mdl

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


Отправлено XaeroX 14-07-2015 в 08:34:

Скрытый текст:
Этот текст скрытый. Вы должны оставить хотя бы одно сообщение в теме, чтобы его увидеть.

Цитата:
~ X ~ писал:
ждём гейтсеквенсов для tentacle2.mdl

Ну ведь по глазам вижу, что не ждёшь!
Зачем же писать такое?

__________________

xaerox on Vivino


Отправлено Ku2zoff 15-07-2015 в 20:09:

Цитата:
~ X ~ писал:
таки надо.

Проблема в том, что серверный gaitframe у игрока не совпадает с клиентским, отсюда рассинхрон серверных хитбоксов ног с видимой моделью. (Только в движении. Код на сервере идентичен клиентскому, но, видимо, здесь играет роль то, что сервер тчинкает реже клиента). Я тебе сорцы дам, ты сможешь в XDM потестить и найти способ синхронизировать? Я ещё прогу подскажу, которая рисует серверные хитбоксы. Только осторожно, её античиты не любят, авторы очень особо об этом напоминают каждый раз при запуске
Цитата:
~ X ~ писал:
Не мог бы на мои вопросы ответить? Про модели, например.

Спрашивай.

Я тут пораскинул мозгами, и вот что решил: PLut попробовал алиен грантов в бдефе. Сказал, что двигаются дёрганно. Я сильно со свенкоопом не сравнивал, но таки есть что-то. Видимо, придётся сделать гейт на сервере. А соответственно написать StudioFrameAdvance для гейта. Тогда проблема с подбором скоростей отпадёт, и, теоретически, монстры будут двигаться так же, как и при обычных анимациях. А ещё я думаю, что надо будет сделать монстрам нулевую секвенцию, которая не будет юзаться. Как и у игрока. Чтобы действовало условие if (pev->gaitsequence == 0).


Отправлено XaeroX 15-07-2015 в 20:11:

Цитата:
Ku2zoff писал:
Сказал, что двигаются дёрганно.

А ты гейт интерполируешь с обычной анимацией?
По дефолту в халфе такого нет, а я в волатиле сделал.

__________________

xaerox on Vivino


Отправлено Ku2zoff 15-07-2015 в 20:14:

XaeroX а как? Я пока не думал над этим.


Отправлено XaeroX 15-07-2015 в 20:36:

Ku2zoff
Плавнее стало переключение между, например, ходьбой и прыжком, ходьбой и idle. Монстрам это тоже должно помочь. Хотя смотря что вы понимаете под "дёрганно".

__________________

xaerox on Vivino


Отправлено PLut 15-07-2015 в 20:42:

XaeroX Рывками, покадрово будто.

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 15-07-2015 в 20:53:

Смотри, значит, как gaitframe считается.

__________________

xaerox on Vivino


Отправлено ~ X ~ 18-07-2015 в 09:43:

Цитата:
Ku2zoff писал:

Спрашивай.

двумя постами выше:
Цитата:
~ X ~ писал:
По теме: модели все тоже новые клепать? Частично оставить старых монстров можно будет? pev->weaponmodel тоже, может, задействовать? (чтоб не клепать десяток bodygroup для оружий)


Если серверные хитбоксы решат проблему с непонятно куда тыканьем монтировкой по дохлым монстрам - я буду счастлив.
Я пока не буду брать у тебя код (ПОКА!) потому что у меня обнаружился сетевой баг с монстрами, оторый мне надо сначала решить.

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


Отправлено Ku2zoff 18-07-2015 в 09:51:

Цитата:
~ X ~ писал:
Если серверные хитбоксы решат проблему с непонятно куда тыканьем монтировкой по дохлым монстрам - я буду счастлив.

Хм. Тут не в этом причина.
Модели клепать новые не надо, всё со стандартными работает. Я пока ещё в процессе. Нем могу решить несколько проблем.


Отправлено ~ X ~ 18-07-2015 в 17:10:

Ku2zoff в любом случае буду рад видеть результаты твоей работы! Главное чтоб подводные ка..мни не выплыли за ночь до (или после) релиза.

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


Отправлено Ghoul [BB] 21-07-2015 в 22:01:

модели менять тоже придется для этооо?

Добавлено 22-07-2015 в 00:59:

Цитата:
Ku2zoff писал:
отреверсившим серверную дллку кс 1.6. Почитали отреверсенный код и поисправляли несколько неточностей в коде ксаша.

Что ж все никак клиентку не отреверсят? Смысла только от серверной мало....

Добавлено 22-07-2015 в 01:01:

Цитата:
~ X ~ писал:
Чиво? ДМише собрали 200к?? Может, мне так объявить о сборе средств на фичу???



Я давно предлагал. И не говори, что не помнишь!!!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


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

Цитата:
Ghoul [BB] писал:
Что ж все никак клиентку не отреверсят? Смысла только от серверной мало....

Код клиентского 9-way блендинга есть на форуме арранжевого мента уже давно. Радар кодил Sania 3, есть тутор на half-life.ru. Эвенты пушек ну вообще проще некуда написать. Имея сервер, можно дописать в клиенте недостающие функции. Но, ИМХО, не стоит. Работа китайцев по реверсу сервера кс 1.6 очень полезна. Но код там, чёрт возьми, уродский. В самом деле. Зачем заводить для CBaseEntity переменную m_iTeam, если есть pev->team? И всё в таком же духе. Особенно порадовала m_iTeam у гранат, чтобы они не наносили урон и не разбрызгивали кровь союзников. Это исправляется одной строчкой в combat.cpp. Внутри функции RadiusDamage при вызове TraceAttack указывается pevAttacker вместо pevInflictor. То есть игрок (у которого pev->team всегда разный) вместо гранаты (у которой pev->team всегда 0).


Отправлено ~ X ~ 22-07-2015 в 10:12:

Цитата:
Ku2zoff писал:
Особенно порадовала m_iTeam у гранат, чтобы они не наносили урон и не разбрызгивали кровь союзников.

А ты думал, ШкольноСтрайк закрыт потому что там коммерческая тайна и секретный суперсложный код? НЕЕЕЕЕЕЕЕеееет! Пооооовар! Там даже не быдло-, там гОвнокод.

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


Отправлено XaeroX 22-07-2015 в 10:14:

Цитата:
~ X ~ писал:
Там даже не быдло-, там гОвнокод.

Зовидуют молчо!(с)


Отправлено Ghoul [BB] 22-07-2015 в 10:51:

Конечно завидуют.
мне лично было бы интересно посмотреть на способ реализации покупки через вгуи.

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

Добавлено 22-07-2015 в 13:51:

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

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ~ X ~ 22-07-2015 в 12:05:

XaeroX *sarcasm self-test complete (portal 2)

Ghoul [BB] какие в кант-тре партиклы? Что там вообще интересного? По смутным воспоминаниям 10-летней давности, там всё стандартнохалвовское. С выгуями надо покряхтеть, но ничего сверханального там нет. Я бы и тридэмодели туда накрутил, но это долго и сложно. Кстати, в XDM выгуи кодить попроще, чем в ХЛ.

Если там и есть партиклы, то в новом СДК выложили код _интерфейса_ к particleman.dll - на, бери. Только не хочу: RS всё равно уже переросла всё что там было.

Добавлено 22-07-2015 в 15:05:

Цитата:
Ghoul [BB] писал:
Я давно предлагал. И не говори, что не помнишь!!!

У меня нет въебманей, яндексденег и прочего... даже обычных денег мало

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


Отправлено XaeroX 22-07-2015 в 12:10:

~ X ~
Это не сарказм был, а огульное обсирание людей, которых ты даже не знаешь. И которые на своём "говнокоде" сделали денег больше, чем ты за всю жизнь. Какой процент этих денег дошёл до них - это другой вопрос.

Добавлено 22-07-2015 в 18:10:

Цитата:
~ X ~ писал:
У меня нет въебманей, яндексденег и прочего... даже обычных денег мало

Вот-вот-вот-вот-вот...


Отправлено Ghoul [BB] 22-07-2015 в 21:28:

Цитата:
~ X ~ писал:
У меня нет въебманей, яндексденег и прочего... даже обычных денег мало



Еще скажи,что ты аналом не берешь

Добавлено 23-07-2015 в 00:28:

Говнокод говнокодом, однако работало это все исправно. Даже на бета версиях ине крашилось каждые 20 минут...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


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

Разобрался с блендингом на клиенте. Точнее понял этот механизм. Особых сложностей не должно возникнуть. Теперь буду пытаться привязать скорость передвижения на сервере к гейтсеквенции. Это уже сложнее.

Добавлено 15-09-2015 в 23:21:

Вот видео, где блендядтся секвенция и гейтсеквенция. Наподобие того, как в сорсовском моделвьювере.


Отправлено PLut 15-09-2015 в 17:43:

Ku2zoff Бег барника очень доставил Рад видеть, что работаешь дальше.

__________________
Base Defense on Steam, ModDB


Отправлено XaeroX 15-09-2015 в 17:55:

Какой ч0ткий барник!


Отправлено ~ X ~ 15-09-2015 в 18:35:

TODO: запилить кооп "игроки против злых барников"

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


Отправлено Ghoul [BB] 15-09-2015 в 19:08:

зомби-барни
или как будто он в штаны насрал и ему это идти мешает. Ну, чтоб тёплые кахи об попец не так тёрлись, он ноги раздвинул

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

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 15-09-2015 в 20:10:

Цитата:
Ghoul [BB] писал:
или как будто он в штаны насрал и ему это идти мешает.

Скорее уж читает рэп и рукой машет. Но может и навалил в штаны по тихой грусти Чисто демонстрация, в качестве гейтсеквенции barn_wave, степень блендинга 0.5, то есть 50% от barn_wave и 50% от обычной анимации. Как я писал в теме про Opposing Life2Life, можно выдернуть код из функции StudioSlerpBones, и интерполировать не весь скелет, а только нужные кости, причём степень блендинга указывать разную. Я пока этим не буду заниматься. Гораздо важнее найти способ получать проходимое расстояние из секвенции, основываясь на fps, numframes и linearmovement. Курю сорс сдк сейчас в этом плане.
Цитата:
Ghoul [BB] писал:
когда эта гадость на бегу будет стрелять

Особенно питдроны.

З.Ы. Ну и интерполяцию придётся пилить ещё. Кадры гейтсеквенции не совпадают с кадрами секвенции, отсюда дёргания.


Отправлено Ghoul [BB] 15-09-2015 в 20:51:

Цитата:
Ku2zoff писал:

Особенно питдроны.



Вообще то я шоктрууперов имел ввиду.
ну и еще алиен грантов со сдвоенными мухострелами.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 15-09-2015 в 21:25:

UPD: научился считать скорость передвижения из гейтсеквенции на сервере:

C++ Source Code:
1
void CBarney::MonsterThink(void)
2
{
3
  void *pmodel = GET_MODEL_PTR(ENT(pev));
4
  studiohdr_t *pstudiohdr = (studiohdr_t *)pmodel;
5
 
6
  if (pstudiohdr)
7
  {
8
    static float flSpeed;
9
 
10
    if (pev->gaitsequence >= pstudiohdr->numseq)
11
      flSpeed = 0.0f;
12
    else
13
    {
14
      mstudioseqdesc_t *pseqdesc = (mstudioseqdesc_t *)((byte *)pstudiohdr + pstudiohdr->seqindex) + pev->gaitsequence;
15
 
16
      if (pseqdesc->numframes > 1)
17
      {
18
        flSpeed = sqrt(pseqdesc->linearmovement[0] * pseqdesc->linearmovement[0] + pseqdesc->linearmovement[1] * pseqdesc->linearmovement[1] + pseqdesc->linearmovement[2] * pseqdesc->linearmovement[2]);
19
        flSpeed = flSpeed * pseqdesc->fps / (pseqdesc->numframes - 1);
20
      }
21
      else
22
        flSpeed = 0.0f;
23
    }
24
 
25
    m_flGroundSpeed = flSpeed;
26
  }
27
  else
28
    m_flGroundSpeed = 0.0f;
29
 
30
  CBaseMonster::MonsterThink();
31
}

Как-то так. Вроде норм считается. Надо бы запилить на клиенте интерполяцию. Резкие переходы раздражают.


Отправлено Chyvachok 15-09-2015 в 21:29:

Цитата:
Ku2zoff писал:
Скорее уж читает рэп и рукой машет


Или как будто ему в зад осиновый кол забили


Отправлено Ghoul [BB] 16-09-2015 в 07:53:

Забивать в зад кол .... ну каждый в меру своей испорченности видит этот мир.

Но все равно с говном связано

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 16-09-2015 в 08:08:

Ghoul [BB]
Да что у тебя всё к говну сводится постоянно?


Отправлено thambs 16-09-2015 в 12:25:

>Что там вообще интересного?
monster_hostage

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


Отправлено Ghoul [BB] 16-09-2015 в 16:25:

Цитата:
XaeroX писал:
Да что у тебя всё к говну сводится постоянно?


Ну потому что это хлеб наш... сладкий. И жизнь наша вся такая.. и вообще вот про говно такая история есть:

За говно.
Да. Это один из врубов про говно. В каком-то виде это уже было, но здесь другое. Вот смотрите - Джа созаёт мир. Хороший. Растамана и растаманку, а потом ещё растаманов, а потом зверей и пр. и пр. Но никакого говна Джа не создаёт. Вы спросите "Как так? Ведь мы с вами каждый день делаем его." Вот тут то и загвоздка - это совсем не говно. "Говно" это имя злого духа. Этот злой дух скорее всего возник из какой-то ссоры растаманов, так бывает, растаманы конечно же потом помирились. Да. Но появляется такой вот дух, и первое что он делает это называет какашки своим грубым именем (а потом ещё и многое другое). То есть представить это можно так - раста идёт в туалет, делает доброе дело, а потом смотрит на какашки.. а невидимый злой дух ему говорит - "это Говно!" Здесь очень коварный замысел Говнова - он прикасается к расте.. и раста начинает видеть что это ужас какой-то из него вышел - и название подходящее сразу появилось в уме - "Говно!". И в общем поверил раста такому и начал каждый раз при посещении туалета так и думать - "Гавно какое - то". И таким образом он каждый раз в туалете призывал этого демона. И Гавнов являлся. И творил говно. И говна становилось больше в мире. И в общем получилось то что мы сейчас иногда видим. И вот вывод из этого вруба - видя какашку подумайте о ней хорошо и скажите ей пару добрых "привет! давно не виделись дружище, как твоё здоровье?" и тогда.. в нашем мире постепенно всё наладится

Добавлено 16-09-2015 в 19:25:

Цитата:
thambs писал:
monster_hostage



Не только. Еще забыааешь машинки. Еще режим дефьюз. Еще вот покупка. Да много чего еще. Это я на вскидку.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 16-09-2015 в 16:56:

UPD: с переключением анимаций на сервере вроде разобрался. Барник всё делает как надо. Нет залипаний секвенции или гейтсеквенции, или отсутствия переключения активностей. Даже пофиксил грязным хаком страшное раскачивание верхней половины модели, когда нижняя играет ту же анимацию, а кадры не совпадают. Ждите, немного потестирую и покажу видео.
З.Ы. А в свенкоопе барник не умеет на бегу стрелять

Добавлено 16-09-2015 в 22:51:



Добавлено 16-09-2015 в 22:56:

Что скажете? По-моему уже вполне годно. Надо только подкрутить константы расстояния, и поправить скедьюлы атаки. Ну ещё от хака на клиенте избавиться, и серверный гейт заанимировать, чтобы хитбоксы совпадали. Я это на потом отложу, а пока запилю хьюман_грантов, стреляющих на бегу. Заодно научу их ходить за игроком, как в опфоре. Давно хочу это грамотно сделать, а не так коряво, как в 2008 году накодил.


Отправлено Chyvachok 16-09-2015 в 17:41:

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


Отправлено XaeroX 16-09-2015 в 17:49:

Цитата:
Chyvachok писал:
Очень класно, супер, надо его еще назад пятиться научиться

+1, он должен уметь отбегать от монстров с ближней атакой. Иначе тот факт, что он подходит близко, сыграет с ним злую шутку.


Отправлено PLut 16-09-2015 в 17:59:

Ku2zoff Стрельба на бегу, конечно - это слишком, но когда барни идет и расстреливает зомби, то выглядит это эпично, в лучших традициях боевиков. Плюсую ораторов выше, хотелось бы увидеть как барник/грант отходят от милишных монстров.

...ну и, быть может, стрейфы?

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 16-09-2015 в 18:12:

Цитата:
PLut писал:
Плюсую ораторов выше, хотелось бы увидеть как барник/грант отходят от милишных монстров.

Тут загвоздка... Монстр движется только в том направлении, в которое повёрнут по оси YAW. Алиен_контроллеры конечно могут стрейфиться, пятиться и вообще всякое делать. Надо копать код движения однозначно. Видимо, придётся мне барника до идеала допиливать. Попробовал сделать грантов, стреляющих при ходьбе и на бегу - тихий ужас. Функция SetActivity у них ужасная, и модель тоже - активности не ко всем анимациям указаны. В результате всё глючит, секвенции и гейтсеквенции залипают. Ещё блендинг почему-то корявый - модель смотрит в пол, когда стреляет в движении. В общем, не до этого пока.
Цитата:
PLut писал:
...ну и, быть может, стрейфы?

Анимацый нету. Только у хьюгрантов есть стрейфы. Как заставить работать модель, у которой к половине анимаций не указаны ACT_ы, и эти анимации выбираются в коде монстра по имени, я пока ХЗ.


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

Цитата:
Ku2zoff писал:
Анимацый нету.

А ты сделай контроллеры и gaityaw.


Отправлено Ku2zoff 16-09-2015 в 18:50:

Цитата:
XaeroX писал:
А ты сделай контроллеры и gaityaw.

Я запарился делать, уже глаза красные. Не могу заставить этого чукчу пятиться не поворачиваясь. Какие уж тут контроллеры. Ну в задницу этот убогий код. Всё равно до уровня хл2 не доделать.


Отправлено PLut 16-09-2015 в 19:04:

Ku2zoff Ну, не всё же сразу. Твоя работа - уже огромный прогресс!

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 16-09-2015 в 23:08:

Цитата:
Ku2zoff писал:
З.Ы. А в свенкоопе барник не умеет на бегу стрелять



А у нас будет. Да!

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

Вот, кстати, еще было бы интересно реализовать такую фишку, чтоб p_mdl оружия монстрам рисовать (а не пихать несколько субмоделей, как сейчас у солдатни есть)

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 17-09-2015 в 10:28:

Ghoul [BB] смотри, во-первых, в самом коде монстра константы в функции CheckRangeAttack1. Во вторых, если есть, гляди кейс SCHED_RANGE_ATTACK1 в функции GetScheduleOfType. И в третьих, смотри код самих скедьюлов, которые называются slGruntRangeAttack1A, slGruntRangeAttack1B (у хьюгранта такие, у твоего снайпера могут быть другие). В коде скедьюла, во втором блоке, то есть в самом скедьюле (первый блок это таск - описание последовательности действий, а второй это скедьюл - описание условий, которые могут прервать выполнение таска). Смотри флаг bits_COND_ENEMY_TOOFAR. Если этот флаг есть в скедьюле, то скедьюл будет фейлиться, если игрок от монстра находится на расстоянии, большем, чем m_flDistTooFar. m_flDistTooFar по-умолчанию равен 1024 юнита, это значение задаётся в функции CBaseMonster::MonsterInit(). Но, думаю, его можно оверрайдить в спауне монстра, просто указав нужное значение после вызова MonsterInit().

Добавлено 17-09-2015 в 12:25:

Граждане, помогите мне вот с какой бедой: придумайте мне условие переключения секвенций. С гейтсеквенциями очень просто:

C++ Source Code:
if ((iSequence != pev->gaitsequence) && (iSequence == LookupActivity(m_movementActivity)))
  pev->gaitsequence = iSequence;

Если новая анимация не совпадает с текущей гейтсеквенцией и является двигательной активностью, то есть ACT_WALK, ACT_RUN, ACT_IDLE и т.д., то переключаем.
С секвенциями всё сложнее. Загнать обратное условие не выйдет, т.к. иногда секвенция должна совпадать с гейтсеквенцией, то есть быть m_movementActivity, когда монстр бежит и не стреляет. У барника условие немного другое, для него работает. Правда, из-за этого происходят паузы в стрельбе, на последнем видео видно.

Добавлено 17-09-2015 в 16:03:

Цитата:
Ghoul [BB] писал:
Вот, кстати, еще было бы интересно реализовать такую фишку, чтоб p_mdl оружия монстрам рисовать (а не пихать несколько субмоделей, как сейчас у солдатни есть)

Ну ё-маё.. Ну чё там реализовывать? pev->weaponmodel для монстров прекрасно передаётся по сети. По крайней мере в оригинальной халфе. В XDM я не смотрел, возможно тов. ~X~ закомментил строчки в коде и в delta.lst, чтобы трафик сэкономить. Берёшь на клиенте условие
C++ Source Code:
1
if (pplayer->weaponmodel)
2
{
3
  cl_entity_t saveent = *m_pCurrentEntity;
4
 
5
  model_t *pweaponmodel = IEngineStudio.GetModelByIndex( pplayer->weaponmodel );
6
 
7
  m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata (pweaponmodel);
8
  IEngineStudio.StudioSetHeader( m_pStudioHeader );
9
 
10
  StudioMergeBones( pweaponmodel);
11
 
12
  IEngineStudio.StudioSetupLighting (&lighting);
13
 
14
  StudioRenderModel( );
15
 
16
  StudioCalcAttachments( );
17
 
18
  *m_pCurrentEntity = saveent;
19
}

из int CStudioModelRenderer::StudioDrawPlayer( int flags, entity_state_t *pplayer ), и копируешь его в int CStudioModelRenderer::StudioDrawModel( int flags ) с такими изменениями:
C++ Source Code:
1
if (!m_pCurrentEntity->player && m_pCurrentEntity->curstate.weaponmodel)
2
{
3
  cl_entity_t saveent = *m_pCurrentEntity;
4
 
5
  model_t *pweaponmodel = IEngineStudio.GetModelByIndex(m_pCurrentEntity->curstate.weaponmodel);
6
 
7
  m_pStudioHeader = (studiohdr_t *)IEngineStudio.Mod_Extradata(pweaponmodel);
8
  IEngineStudio.StudioSetHeader(m_pStudioHeader);
9
 
10
  StudioMergeBones(pweaponmodel);
11
 
12
  IEngineStudio.StudioSetupLighting(&lighting);
13
 
14
  StudioRenderModel();
15
 
16
  StudioCalcAttachments();
17
 
18
  *m_pCurrentEntity = saveent;
19
}

Фсё. Остаётся только на сервере в коде монстра заменить SetBodygroup на pev->weaponmodel = MAKE_STRING("имямодели"). Кажется MAKE_STRING, а не что-то другое. Я когда-то делал для барников аж целых две веапонмодели - один пистолет на бедре, а другой в руках. Но это метод удобен только когда у монстра всего лишь одно оружие. Если, к примеру, научить монстра оружия менять (одно убирать на пояс или за спину и доставать другое), начнётся аццкий геморрой. С чем я столкнулся, пытаясь обвесить игрока четырьмя оружиями: pev->vuser1.x - первое, vuser1.y -второе, vuser1.z - третье, pev->weaponmodel - активное в руках. При доставании какого либо оружия, его vuser1.ЦЫФРА освобождается, на свободную цифру вешается убираемое текущее, а доставаемое занимает, как положено pev->weaponmodel. Слишком много кодерской писанины ради сомнительной фичи.

Добавлено 17-09-2015 в 16:23:

Цитата:
Ghoul [BB] писал:
Еще забыааешь машинки.

Кощьмарнэ энтитя, тащем-то. Там исправлять и исправлять. Чего только коллизия стоит. Буэээ...
Цитата:
Ghoul [BB] писал:
Еще режим дефьюз.

Да ну. В принципе, всё достаточно просто:
1. Проверяем, находится ли игрок внутри триггера закладки бомбы.
2. Проверяем, чтобы игрок стоял на браше, а не висел в воздухе, или стоял на голове другого игрока.
3. Проверяем, чтобы игрок не двигался.
4. Проверяем, чтобы внутри триггера были именно ноги игрока, а не голова или что-то другое... Видел, как в каэсочке задроты ставят бомбу в каком-нибудь недоступном закутке, зацепив самый краешек триггера, который к тому же находится на высоте взгляда игрока.
5. Проверяем расстояние от центра триггера до игрока. Тогда можно пропустить четвёртый пункт. Можно конечно создать "круглый" триггер в хаммере.
6. Разрешаем минировать.

А разминирование ещё проще:
1. Когда игрок юзает бомбу - фризим его и запрещаем прыгать, переключать оружие и т.д.
2. Бомба испытывает юзанье определённое время. Если прервать на середине, можно сбросить прогресс, а можно оставить для реалистичности.
3. Бомба разминирована.
Цитата:
Ghoul [BB] писал:
Еще вот покупка.

ВГУИ менюшки и команды управления ими делаем строго на клиенте, чтобы при высоком пинге закупка не тормозила. То есть она всё равно будет тормозить, но переключение между меню будет без лагов. При выборе нужного предмета в "магазине" отправляем на сервер команду "buy наш_ствол". Вот тут и будет лаг, но всего лишь один, а не так как в кс, когда при переключении меню лаг.
Цитата:
Ghoul [BB] писал:
Да много чего еще.

Самое интересное в кс - это боты. К счастью, почти весь их код доступен вместе с ХЛСДК на гитхабе. Надо только зареверсить те участки кода mp.dll, где они внедрены в сервер. Моя голубая мечта - встроить каэсных ботов в хлдм и модифицировать, добавив самообучение из паработов, которое будет постоянно обновляться. То есть, основная навигация и всякие зоны строятся один раз при первом запуске ботов на карте. А потом боты учатся у игроков всяким трюкам. Ну и учатся на чужих ошибках.

Добавлено 17-09-2015 в 16:28:

Вообще, самые умные в плане геймплея боты, которых я видел, это паработ и джамбот (десматч), збот (дефьюз, спасение заложников) и фоксбот (ЗФ). Хотя любые из них довольно плохо работают в команде.


Отправлено Ghoul [BB] 17-09-2015 в 13:11:

Цитата:
Ku2zoff писал:
Если, к примеру, научить монстра оружия менять


Нет. Это не нужно вовсе. Достаточно просто разных моделей оружия.

Добавлено 17-09-2015 в 16:11:

Цитата:
Ku2zoff писал:
ВГУИ менюшки и команды управления ими делаем строго на клиенте, чтобы при высоком пинге закупка не тормозила. То есть она всё равно будет тормозить, но переключение между меню будет без лагов. При выборе нужного предмета в "магазине" отправляем на сервер команду "buy наш_ствол". Вот тут и будет лаг, но всего лишь один, а не так как в кс, когда при переключении меню лаг.


Т.е. в каэске покупка иначе сделана, что так тормозит?

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ILZM 17-09-2015 в 13:27:

Слои - это хорошо. Главное чтобы система не стала как в новом обновлении КСГО.


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

Цитата:
Ghoul [BB] писал:
Т.е. в каэске покупка иначе сделана, что так тормозит?

В каэске каждый раз для открытия VGUI-меню отправляется консольная команда, выполняемая на сервере. А сервер в ответ отправляет мессагу gmsgVGUIMenu. Конечно будет тормозить.
Грамотнее запилить команду на клиенте, либо вообще открывать новые менюшки из кода старых, которые закрываются. А на сервер отправлять только одну, самую последнюю команду.


Отправлено Ghoul [BB] 17-09-2015 в 17:09:

Странно. Вроде бы, каэску не лошки делали и она специально для сети заточена. а тут ты такие разоблачения пишешь...

Добавлено 17-09-2015 в 20:09:

Цитата:
Ku2zoff писал:
Самое интересное в кс - это боты. К счастью, почти весь их код доступен вместе с ХЛСДК на гитхабе.



Неужели? И какие именно боты? z-bot?

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено SteamPlay43 17-09-2015 в 18:10:

Ghoul [BB]

Цитата:
Ghoul [BB] писал: Неужели? И какие именно боты? z-bot?

Скачай самый новый хл сдк...там боты от кс есть, оригинальные


Отправлено Ku2zoff 17-09-2015 в 19:05:

Цитата:
Ghoul [BB] писал:
Вроде бы, каэску не лошки делали

Ты это Иксвайдеру скажи Вот глянь этот кусочек кода:
C++ Source Code:
1
else if (FStrEq(pcmd, "client_buy_open"))
2
{
3
  if (player->m_iMenu == Menu_OFF)
4
    player->m_iMenu = Menu_ClientBuy;
5
 
6
  if (player->m_signals.GetState() & SIGNAL_BUY)
7
  {
8
  }
9
  else
10
  {
11
    MESSAGE_BEGIN(MSG_ONE, gmsgBuyClose, NULL, player->pev);
12
    MESSAGE_END();
13
  }
14
 
15
  return;
16
}
17
else if (FStrEq(pcmd, "client_buy_close"))
18
{
19
  if (player->m_iMenu == Menu_ClientBuy)
20
    player->m_iMenu = Menu_OFF;
21
 
22
  return;
23
}
24
else if (FStrEq(pcmd, "menuselect"))
25
{
26
  int slot = atoi(CMD_ARGV(1));
27
 
28
  if (player->m_iJoiningState == JOINED || (player->m_iMenu != TEAM_SPECTATOR && player->m_iMenu != TEAM_TERRORIST))
29
  {
30
    if (slot == 10)
31
      player->m_iMenu = Menu_OFF;
32
  }
33
 
34
  switch (player->m_iMenu)
35
  {
36
  case Menu_ChooseTeam:
37
    {
38
      if (!player->m_bVGUIMenus)
39
      {
40
        if (!HandleMenu_ChooseTeam(player, slot))
41
        {
42
          if (player->m_iJoiningState == JOINED)
43
            ShowVGUIMenu(player, MENU_TEAM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_5 | MENU_KEY_0, "#IG_Team_Select");
44
          else
45
            ShowVGUIMenu(player, MENU_TEAM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_5, "#Team_Select");
46
 
47
          player->m_iMenu = Menu_ChooseTeam;
48
        }
49
      }
50
 
51
      break;
52
    }

и вот этот:
C++ Source Code:
1
else if (FStrEq(pcmd, "buyequip"))
2
{
3
  if (!(player->m_signals.GetState() & SIGNAL_BUY))
4
    return;
5
 
6
  if (g_pGameRules->m_bMapHasBombTarget == true)
7
  {
8
    if (player->m_iTeam == TEAM_CT)
9
      ShowVGUIMenu(player, MENU_BUY_ITEM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_0, "#DCT_BuyItem");
10
    else
11
      ShowVGUIMenu(player, MENU_BUY_ITEM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_0, "#DT_BuyItem");
12
  }
13
  else
14
  {
15
    if (player->m_iTeam == TEAM_CT)
16
      ShowVGUIMenu(player, MENU_BUY_ITEM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_8 | MENU_KEY_0, "#CT_BuyItem");
17
    else
18
      ShowVGUIMenu(player, MENU_BUY_ITEM, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_0, "#T_BuyItem");
19
  }
20
 
21
  player->m_iMenu = Menu_BuyItem;
22
  return;
23
}
24
else if (FStrEq(pcmd, "buy"))
25
{
26
  if (!(player->m_signals.GetState() & SIGNAL_BUY))
27
    return;
28
 
29
  ShowVGUIMenu(player, MENU_BUY, MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_3 | MENU_KEY_4 | MENU_KEY_5 | MENU_KEY_6 | MENU_KEY_7 | MENU_KEY_8 | MENU_KEY_0, "#Buy");
30
  player->m_iMenu = Menu_Buy;
31
  return;
32
}

Все менюшки с сервера открываются. Мало того, что шлётся индекс менюшки, так в мессаге ещё шлются клавиши, которые могут воздействовать на менюшку, и, ОУЖОС!!!11, заголовок меню для titles.txt. Не удивительно, что это дело лагает. Столько трафика тратить на то, что можно реализовать локально на клиенте.
Цитата:
Ghoul [BB] писал:
Неужели? И какие именно боты? z-bot?

Цитата:
SteamPlay43 писал:
Скачай самый новый хл сдк...там боты от кс есть, оригинальные


Доступно для скачивания уже два года как. Я не знаю, чего вы слонопотамите. Давно бы уже на новый СДК перешли. Или стим-халфа ассоциируется у вас с чем-то нехорошим? Между прочим, если напрячь мозг, из этого сдк можно собрать клиентку TFC. Жаль, сервера нету. Сорцы почему-то анально огорожены, в отличе от того же DMC, хотя всё равно квака в основе.


Отправлено Ghoul [BB] 17-09-2015 в 21:39:

Цитата:
Ku2zoff писал:
Столько трафика тратить на то, что можно реализовать локально на клиенте


Но ведь исходников кс нету. То, что ты привел в пример суть есть плод реверса народных умельцев. При чем тут оригинальный код?

Добавлено 18-09-2015 в 00:39:

Цитата:
Ku2zoff писал:
Доступно для скачивания уже два года как. Я не знаю, чего вы слонопотамите. Д


Видимо, мы с Х-вайдером не только поехавшие, но ещё и отставшие....

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


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

Цитата:
Ghoul [BB] писал:
Но ведь исходников кс нету. То, что ты привел в пример суть есть плод реверса народных умельцев. При чем тут оригинальный код?

Оригинальный код, он конечно изящнее, и там нет глупостей вроде
C++ Source Code:
1
if (player->m_signals.GetState() & SIGNAL_BUY)
2
{
3
}
4
else
5
{
6
  MESSAGE_BEGIN(MSG_ONE, gmsgBuyClose, NULL, player->pev);
7
  MESSAGE_END();
8
}

и вроде
C++ Source Code:
1
Vector vecSrc, vecDest;
2
vecDest = (pev->origin - pOther->pev->origin);
3
vecDest.z = pev->origin.z - pev->origin.z;
4
vecDest = vecDest.Normalize() * 50;
5
pev->velocity = pev->velocity + vecDest;
6
vecSrc = pev->origin;

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


Отправлено PLut 18-09-2015 в 07:02:

Ku2zoff Учитывая, что в кс есть не только VGUI меню, но и текстовое, то можно запросто предположить, что биты кнопок и ссылка на тайтлс - это для работы именно текстовых меню.

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 18-09-2015 в 12:46:

Цитата:
Ku2zoff писал:

Ну ё-маё.. Ну чё там реализовывать? pev->weaponmodel для монстров прекрасно передаётся по сети. По крайней мере в оригинальной халфе.


А вот у ~Х~ Не получилось почему-то это сделать. Он обмолвился как то о такой проблеме... покажу ему этот пост. Может, дело стронется.

Добавлено 18-09-2015 в 15:46:

Цитата:
PLut писал:


А может и так. Но я почему то думаю, что текстовую покупку выпилили еще в ранних версиях каэсочки.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено PLut 18-09-2015 в 13:56:

Ghoul [BB] Как бы функция в каждой каэсочке, в тч 1.6, есть "Old style menus", что врубает текстовые меню.

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 18-09-2015 в 16:05:

А, вот оно для чего...

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 18-09-2015 в 16:12:

Цитата:
Ghoul [BB] писал:
А вот у ~Х~ Не получилось почему-то это сделать. Он обмолвился как то о такой проблеме... покажу ему этот пост. Может, дело стронется.

Ты что, думаешь, что ~X~ по незнанию своему не смог это сделать? Не поверю после всего, чего он в XHL накодил. Тут наверное какая-то пакость с передачей по сети или ещё чем виновата. Какой-то редкий баг возможно. Впрочем, объявится ~X~ в этой теме и пояснит нам, говнокодерам, что к чему.
А вообще, у меня получилось присобачить p_модели к монстрам. Но я особо не тестировал. И не помню, проверял ли чейнджлевел и сейв/рестор. Сеть точно не проверял.
Цитата:
PLut писал:
Учитывая, что в кс есть не только VGUI меню, но и текстовое, то можно запросто предположить, что биты кнопок и ссылка на тайтлс - это для работы именно текстовых меню.

Простые текстовые меню тоже можно сделать на клиенте. Проблема только с отловом инпута для них. А умный кодер вообще их тоже бы на основе ВГУИ сделал. Вы пользовались текстовыми меню когда-нибудь, товарищи? Я пробовал. Это убожэство какое-то с уродскими мессагами и всеми пунктами, записанными в одну строку.


Отправлено Ghoul [BB] 18-09-2015 в 17:10:

Цитата:
Ku2zoff писал:
А вообще, у меня получилось присобачить p_модели к монстрам.



Ну да, у меня задумка сделать несколько больше типов вооружения для солдат и барников Это бы помогло

Добавлено 18-09-2015 в 20:10:

Цитата:
Ku2zoff писал:
Вы пользовались текстовыми меню когда-нибудь, товарищи?



Да, в ранних версиях Вепон Эдишн была текстовая покупка.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено PLut 18-09-2015 в 17:14:

Ku2zoff Я пользовался и, честно говоря, в игре как каэс я бы предпочел именно текстовые меню. Для быстрых сообщений и голосований в бдефе так же у меня текстовые меню. Они отлично подходят, когда нужно быстро среагировать. Это старый подход, не спорю, но главное, что он отлично работает.
В ксго сделали отвратное меню покупки, где пытаешься быстро сориентироваться, а в итоге только путаешься.

И вот скажи, часто ты любовался в магазине кс на картинки оружия и их характеристики, которые к игре не имеют ни малейшего отношения?

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 18-09-2015 в 18:16:

PLut солидарен с тобой в том, что текстовых меню вполне достаточно. Но я бы завёл квар, который бы переключал стандартные ВГУИ-менюшки в минималистический режим. То есть панели невидимые, картинок нет, циферок нет, меню поменьше, чем полноформатное, но не такое маленькое, как обычное текстовое. Ну и мышка не перехватывается ВГУИ-вьюпортом, только клавиши. Так было бы очень удобно. Новички могли бы рассматривать картинки в меню и читать описания, а профи не мучались бы от мелькания панелей перед глазами. И да, минималистичное ВГУИ можно раскрашивать, добавлять туда маленькие иконки, звуки и проч.


Отправлено Ghoul [BB] 18-09-2015 в 19:43:

Цитата:
PLut писал:
И вот скажи, часто ты любовался в магазине кс на картинки оружия и их характеристики, которые к игре не имеют ни малейшего отношения?


Для новичков это необходимо. В качестве ознакомления с оружием. Я в ХЛВЕ делал описание. Оно более информативное было, имхо. Ну чем в каэсе, да.

Добавлено 18-09-2015 в 22:43:

Цитата:
Ku2zoff писал:
Но я бы завёл квар, который бы переключал стандартные ВГУИ-менюшки в минималистический режим. То есть панели невидимые, картинок нет, циферок нет, меню поменьше, чем полноформатное, но не такое маленькое, как обычное текстовое.


полностью согласен.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено XaeroX 18-09-2015 в 19:43:

А вы видели описание в OI:FD?
Там оно имеет реальное отношение к игре - т.к. характеристики в игре учитывались. Ну и плюс небольшая справка для интересующихся.


Отправлено PLut 18-09-2015 в 21:00:

Ku2zoff Это уже смотря как кто видит проблему и её решение.

Ghoul [BB] В хлве и пушки разнообразные были, а не один огнестрел.

XaeroX Вот, когда характеристики имеют отношение к игре и дают полезную информацию игроку, то это совершенно другое дело. В каэс такого нет.

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 20-09-2015 в 16:30:

Так. Товарищи. Есть вопросы к вам. Хочу услышать ваше видение. Как себя должны вести монстры в бою? Вопрос такой возник потому, что мало научить их просто стрелять не останавливаясь. Нужно ещё написать новые таски для AI, чтобы движение в бою использовалось с максимальной эффективностью. Что от вас требуется:

1. Пишем имя монстра, например, monster_human_grunt.
2. Пишем, нужно ли ему двигаться и одновременно выполнять какие-то действия (которые уже есть в оригинальной халфе), завязанные на анимациях, что на данный момент в халфе невозможно. (Если сюда пишете нет, то пункт 3 пропускаете, можно сразу перейти к п.4. Если да, то, соответственно катаете п.3).
3. Действия расписываем (а, б, в и т.д.), описываем ситуации применения.
4. Предлагаем какие-нибудь комбинации/последовательности действий, которых нету в оригинальной халфе. Можно предложить новые способы передвижения - перекат/стрейф/прыжок (при условии, что в стандартной модели есть нужные анимации. Для стрейфов, наверное не нужно, т.к. в обозримом будущем я попытаюсь прикрутить бонеконтроллеры).
5. Ещё какие-нибудь ваши соображения/мечты. В пределах разумного.

Если мнение по монстру уже кем-то оставлено, то в пункте 2 вы можете написать нет (если по вашему мнению монстра надо оставить таким, какой он есть, или наоборот - да). В пункте 3 пишете только отличия, используя буквенную нумерацию предыдущего оратора. То же самое с п.4. В п.3. и п.4. можете написать "не нужно", если мнение, оставленное до вас, вам кажется неуместным. Желательно аргументировать. Пункт 5 пишите как хотите.

К чему всё это? Я совсем не уверен, что мне хватит фантазии использовать все возможности модифицированного AI. Надеюсь на мапперов, которым чего-то не хватает в халфе. Ну и чуть меньше на игроков. Давайте пожалуйста не будем флудить или даже по теме писать, но не в формате, что я предложил, пока не наберётся хотя бы 10 мнений. Мне просто лень выглядывать нужные посты среди других Я знаю, что эта тема относительно популярна, и надеюсь, что трёх-четырёх дней хватит.


Дуйте сюда. Вопросы есть.


Отправлено XaeroX 20-09-2015 в 16:42:

Цитата:
Ku2zoff писал:
Мне просто лень выглядывать нужные посты среди других

Ну так создал бы отдельную тему для этого. А в этой - разместил ссылку.


Отправлено Ku2zoff 20-09-2015 в 16:48:

XaeroX ну ок


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


Отправлено PLut 22-09-2015 в 06:19:

Вот когда барни начал убегать от зомбака - круто.
А вот лунная походка требует исправления, тем не менее...

Barney Jackson approves!

__________________
Base Defense on Steam, ModDB


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

Цитата:
PLut писал:
А вот лунная походка требует исправления, тем не менее...

Это gaitmovement надо считать. Щас попробую.


Отправлено Ku2zoff 24-09-2015 в 12:34:

Что получается: монстра вполне реально заставить двигаться задом наперёд, чтобы он, отступая от врага, смотрел на врага. Но всё дело портит меркзая функция CBaseMonster::ChangeYaw, которая много где вызывается, и поворачивает монстра в направлении движения. На данный момент я использую хак, при котором вместо направления движения указывается направление на врага. Но хак невероятно грязный, прям до ужаса:

C++ Source Code:
if (m_pSchedule && !_stricmp(m_pSchedule->pName, "Retreat") && m_hEnemy)
{
  pev->angles.y = (m_hEnemy->pev->origin - pev->origin).y;
}

То есть из обязательных условий здесь скедъюл с названием Retreat. Как бы придумать другое условие? Чтобы отвязаться от конкретного имени? Чтобы определять скедъюл как-то по-другому? Условие нужно только для каких-то конкретных скедъюлей, которых может быть у разных монстров куча, соответственно и имена у них разные. Трогать структуру Schedule_t не хочу. Кто поможет? Может быть добавить в iInterruptMask какой-нибудь особый флаг? Не так болезненно, как изменять структуру?

А может быть вообще какой-нибудь более изящный способ есть?


Отправлено Ku2zoff 24-09-2015 в 20:43:

Что, никто в монстрах не шарит что ли? Это несерьёзно, товарищи.
Работа не стоит на месте. Подглядел методом псевдонаучного тыка, где в свенкоопе клиентский код студиомодельрендерера хранит gaitframe монстра: в m_pCurrentEntity->curstate.iuser1. Я-то думал, что в fuser1. Там как раз в delta.lst новые строчки в EntityEncode есть:

C++ Source Code:
//Sniper
DEFINE_DELTA( fuser1, DT_FLOAT, 8, 1.0 ),
DEFINE_DELTA( fuser2, DT_FLOAT, 8, 1.0 ),
DEFINE_DELTA( iuser1, DT_INTEGER, 8, 1.0 ),
DEFINE_DELTA( gaitsequence, DT_INTEGER, 8, 1.0 ) //Monsters can have gaitsequences now.

Ясно для чего юзают gaitsequence. Думал, что fuser1 юзают для gaitframe. Думал, что fuser2 для какого-нибудь float'a, в котором хранится время с момента смены предыдущего gaitsequence на текущий, для замутки интерполяции. Про iuser1 вообще ничего не думал. Теперь, раз точно известно, что iuser1 это gaitframe:
C++ Source Code:
StudioCalcRotations( pos2, q2, pseqdesc, panim, m_pCurrentEntity->curstate.iuser1 );

то думаю, что один из fuser'ов отвечает за время, а второй за gaitmovement. Хотя не уверен, нужен ли монстрам в свенкоопе gaitmovement. Я немного поиграл, но не видел, чтобы какие-нибудь монстры пятились. Именно для этого и нужен gaitmovement, чтобы считая его определять, в какую сторону анимировать gaitsequence. Чтобы не было "лунной походки", про которую писал PLut. Ещё помнится PLut раскритиковал мою первую реализацию, опробованную на алиен_грантах за дёрганность движения. У агрантов анимации бега сами по себе дёрганные, тут ничего не поделаешь. А я ещё не сделал интерполяцию. Посмотрел в свенкоопе с низким значением host_framerate - тоже дёрганно, но интерполяция между gaitsequence есть. Буду пилить.


Отправлено PLut 25-09-2015 в 06:21:

Ku2zoff Ну анимация у агрантов - это одно, я вот именно про интерполяцию говорил. Так что вот запилишь, должно круто получиться
Похвально, что не бросаешь!

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 25-09-2015 в 16:26:

Замутил интерполяцию. Вроде работает. Но говнокод ещё тот С другой стороны, я не представляю, где хранить время переключения и гейтсеквенцию с предыдущего энтити стейта, а так же гейтфрейм (одинаковый для обоих стейтов). Хранить негде, кроме как в энтварсах. Волшебная структурка под названием latchedvars_t не включает в себя каких-то дополнительных полей, да и трогать её я бы не стал. Вдруг интерполяция между обычными секвенциями изломается?
Чуть позже выложу вам два видео, с интерполяцией и без. Чтобы было видно разницу.

Добавлено 25-09-2015 в 21:42:



Добавлено 25-09-2015 в 21:46:

А вот то же самое, только в одном видео:



Добавлено 25-09-2015 в 21:50:

Ну што?

Добавлено 25-09-2015 в 22:12:

Вот минимод. Та самая демка, с которой писал видео, внутри.
http://rghost.ru/6qY6N4W9p
Можете поиграться с кваром studio_lerp_gait, и поглядеть разницу сами. Гейтсеквенции сделаны только для барника. Скедъюлы не написаны, поэтому поведение у него абсолютно обычное, только нижняя половина анимируется гейтсеквенцией.

Добавлено 25-09-2015 в 22:18:

PLut, если у тебя остался код алиен_грантов, который я тебе когда-то давал (я не помню уже, но вроде давал что-то), то можно попробовать влепить интерполяцию на клиент. Посмотришь, как оно будет. Заодно со скоростью передвижения в том старом коде ещё разберёмся.

Добавлено 25-09-2015 в 22:26:

З.Ы. Демка должна работать на вон-халфе, т.к. собрана из подправленных под 2013 студию сорцев, которые XaeroX выкладывал для 2005 студии.


Отправлено Chyvachok 25-09-2015 в 16:38:

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


Отправлено PLut 25-09-2015 в 20:59:

Ku2zoff Я напишу, как время будет, сейчас выдался очень трудный месяц.

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 25-09-2015 в 22:03:

Не у тебя одного, браток!

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено Ku2zoff 26-09-2015 в 09:24:

Обновка для минимода. Маленький фикс на клиенте и стрельба на бегу для алиен_грантов. Смотрим, отчитываемся о багах.
http://rghost.ru/7rPngXgHp
Чуть позже сделаю зомбей и буллсквидов. Солдатня и барник пока не в приоритете, т.к. не исправил ещё функцию ChangeYaw.
С этими дллками можно пройти оригинальную халфу, или моды, не имеющие собственного кода. Пока не стоит этим заниматься. Когда большинство монстров будут уметь что-то делать в движении, тогда и можно будет.


Отправлено ILZM 26-09-2015 в 11:13:

Ku2zoff
А ты как сохраняешь предыдущие кватернионы и позиции? Как обычный sequence? Просто если ты делаешь так, то порой будет фигня выходить. Например, вот монстр бежит такой и резко ̶п̶р̶и̶у̶н̶ы̶в̶а̶е̶т̶ прыгает, допустим. Тут анимации смешиваются, ты сохраняешь предыдущие кадры и анимацию. Потом он еще, не доканчивая прыжок, делает шпагат. И если у нас предыдущая интерполяция между ходьбой и прыжком не завершилась, выходит не плавный переход от прыжка+бега к шпагату. Вот я подумал сохранять все позиции в массив координат и кватернионов. Тогда не придется сохранять предыдущую анимацию и кадр.


Отправлено Ku2zoff 26-09-2015 в 16:06:

ILZM естественно, я слизал механизм с обычных секвенций. Каждая следующая гейтсеквенция интерполируется с предыдущей. Вполне могут быть довольно резкие переходы, но в последовательности ходьба/бег/стояние этого не заметно. Всякие специальные анимации, используемые в скриптах, не имеют активностей, в гейтсеквенцию не засовываются, и интерполируются как обычно.


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


Отправлено Superuser8 29-09-2015 в 09:42:

Ku2zoff довольно неплохо. Ждём туториал


Отправлено XaeroX 29-09-2015 в 09:52:

Да, очень круто.


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

Superuser8 ещё сыро. Но монстров с ближним боем уже вполне можно кодить. У меня есть идея. Я допилю существующий код, чтобы он был постабильнее и покрасивее, и напишу вам тутор по зонбе. А вы экспериментируйте, может поправите те баги, с которыми я никак не могу справиться. Пока вы будете ковырять код тутора, я доделаю пятящегося барника и попытаюсь сделать как следует хьюман_ и алиен_грантов. Ну и буллсквида ещё.
Если ни у кого нет желания этим заниматься, то я не буду писать тутор, и надеюсь, что успею доделать всё сам к релизу XDM 3.0.3.8. Помощь определённо нужна, есть нехороший затык на сервере с условием переключения на новые sequence/gaitsequence.


Отправлено PLut 29-09-2015 в 10:45:

Ku2zoff Выглядит потрясающе, только вот рендж в проверке атаки увеличить чуток и будет конфетка!

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 29-09-2015 в 12:48:

PLut range у зомби по-умолчанию 64 юнита. Трейслайн делается на 70 юнитов. Я сделал проверку на >= 48 юнитов - зомби бьёт на ходу. То есть от 64 до 48. Тут дело наверное не в этом.

UPD: кажется исправил условие переключения на новые sequence/gaitsequence. Надо тестить. Щас дам обновку для минимода. Из действующих на ходу монстров - агрант, барник и зонбе. Агрант бежит к врагу и стреляет, зонбе идёт и машет руками, а барник пятится от врагов, если те подходят слишком близко. Если барника зажимают в угол, он пытается убежать от врагов, но это не всегда выходит. Тут дело не только в самом SCHED_TAKE_COVER_FROM_ENEMY, но ещё и в нодах.

http://rghost.ru/8kzP8Rh5p

Добавлено 29-09-2015 в 18:48:

Цитата:
XaeroX писал:
Да, очень круто.

Для Халфы - да. Для Волатилы - нет Сейчас бы 2001 год, так можно было бы запилить ИИ на уровне ботов. А кому в 2015 это надо? Когда игре 17 лет, а движку 20? Разве что юзерам ксашмода. Если помирюсь с Дядей Мишей, он может быть впилит новое поведение по дефолту в ксашмод. Если моддеры его упросят, и если я доведу все эти дела до ума.


Отправлено XaeroX 29-09-2015 в 13:00:

Цитата:
Ku2zoff писал:
Для Халфы - да. Для Волатилы - нет

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


Отправлено Ku2zoff 29-09-2015 в 17:42:

Ну что, запилить вам тутор по зонбе? Или будете готовенькое ждать? А может кто-нибудь придумает как избавиться от "лунной походки" у барника? Я уже придумал. Но только на бумаге. Теперь надо код написать


Отправлено ILZM 30-09-2015 в 07:40:

Ku2zoff
Меняешь framerate на -1, разве не так?


Отправлено Ku2zoff 30-09-2015 в 09:24:

Цитата:
ILZM писал:
Меняешь framerate на -1, разве не так?

Не сработает. m_pCurrentEntity->curstate.framerate влияет на sequence. На gaitsequence влиять не будет, т.к. там кадры считаются независимо. Нужно находить разницу между m_pCurrentEntity->curstate.origin и m_pCurrentEntity->prevstate.origin, проверять, куда этот вектор направлен и сравнивать его направление с m_pCurrentEntity->curstate.angles. Ну как-то так. Если направления совпадают, то монстр движется вперёд. Если они противоположны, то монстр пятится. Опять же, не всегда может правильно работать, т.к. барник у меня почему-то не всегда смотрит на врага когда пятится. Может немного отворачиваться, если пятится вдоль стены наискосок.


Отправлено ILZM 30-09-2015 в 17:56:

Ku2zoff
Ах да. Я эту проблему для игрока решил запихав скорость игрока в vuser, и в delta передавал с сервера на клиент. Не знаю, ест ли много траффика, но зато эту скорость можно для боба и вообще для разных целей использовать. Мб тебе для каждого монстра открыть поле какое-нибудь в delta? Хотя тебе же нужна синхронизация для хитбоксов.
Мб тогда будешь передавать frame, sequence и gaitframe, gaitsequence? Таким образом тебе не нужно будет считать анимацию на клиенте и хитбоксы будут сихронизированы. Хотя инфу о переходах не передашь через сеть.
Тогда возникает новый вопрос. Вот у тебя с двух сторон одинаковый код просчета анимаций, но они точно идут в такт? Т. е. не надо там никаких предсказываний? Вдруг на клиенте анимация идет с мелким запозданием.


Отправлено Ku2zoff 30-09-2015 в 18:03:

Цитата:
ILZM писал:
Мб тебе для каждого монстра открыть поле какое-нибудь в delta? Хотя тебе же нужна синхронизация для хитбоксов.

Не-не-не. Нехороший подход. Правильный подход, это когда на клиенте делается зеркало для серверной функции. Ну и наоборот. Ну вот глянь сорцы халфовской клиентки и сорцы ксашдвижка. StduioModelRenderer сделан и на клиенте и в движке. И без всяких левых полей в дельте синхронизируется. И спользуются только те поля, которые нужны для работы ещё нескольких механизмов и вообще всей сети.
Цитата:
ILZM писал:
Мб тогда будешь передавать frame, sequence и gaitframe, gaitsequence?

Ты видел, как это работает у нелокального игрока? Работает настолько плохо, насколько высок пинг.
Цитата:
ILZM писал:
Тогда возникает новый вопрос. Вот у тебя с двух сторон одинаковый код просчета анимаций, но они точно идут в такт? Т. е. не надо там никаких предсказываний? Вдруг на клиенте анимация идет с мелким запозданием.

Она и так идёт с запозданием. Скопипасти код с китайской каэсочки. Серверный gaitframe будет отставать от клиентского. Но это ж никого не волнует. Каэсочка, вон, 15 лет уже спросом у задротов пользуется. И никто не жаловался, что серверные хитбоксы ног отстают от клиентской визуализации этих самых ног на полсекунды.


Отправлено PLut 30-09-2015 в 21:31:

ILZM Зачем скорость игрока на клиент передавать, если она там уже есть?

__________________
Base Defense on Steam, ModDB


Отправлено ILZM 01-10-2015 в 04:19:

PLut
Где? Честно искал, но не нашел. А может быть и нашел, но не сработало Эт я про XashXT


Отправлено PLut 01-10-2015 в 07:54:

ILZM В view.cpp. В бдефе так боб работает, сохраняй speed куда угодно (если надо) и пользуйся.

C++ Source Code:
vec3_t velocity = pparams->simvel;
float speed = velocity.Length2D();

__________________
Base Defense on Steam, ModDB


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

Цитата:
PLut писал:
pparams->simvel;

Это не скорость игрока. Это скорость камеры. Поверти резко мышью в движении - скорость увеличится. Скорость игрока это player->curstate.velocity. Которая, кстати, не отлавливается в коде студиомодельрендерера. Поэтому там заведено такое говно как prevgaitorigin и est_velocity.


Отправлено PLut 01-10-2015 в 08:08:

Ku2zoff Ну если зажать вперед и стрейф, то тоже увеличится, да и скорость игрока увеличивается по сути при поворотах мыши, а то зачем башкой вертеть при распрыгах? Вон взять кридз плагины на коэс и поглядеть изменение скорости игрока при стрейфах и направлении вперед/назад, а так же при повороте мышью.

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 01-10-2015 в 08:28:

PLut эта скорость только для локального игрока. А мы говорили о студиомодельрендерере и о той скорости, которая передаётся через дельту в секции player_encode. Ну то есть она там как раз не передаётся


Отправлено PLut 01-10-2015 в 08:35:

Ku2zoff А вот это факт, да. Чтобы получить скорость других игроков нужно её передавать. Просто там про боб словечко было, а для боба локальной скорости достаточно. Я долго парился чтобы правильно игрокам партиклевые эффекты в бдефе рисовать, некоторые эффекты вызываются эвентом и я думал как можно получить велосити серверной энтити на клиенте, думал, что оно передаётся в эвенте само, оказалось, что нет, попробовал запихнуть вместо углов, получилась каша из углов и велосити. Пришлось юзать 2 флоата в эвенте, для партиклей у меня они не нужны всё-равно.

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 01-10-2015 в 09:20:

PLut а можно было просто добавить поля

C++ Source Code:
DEFINE_DELTA( velocity[0], DT_SIGNED | DT_FLOAT, 16, 8.0 ),
DEFINE_DELTA( velocity[1], DT_SIGNED | DT_FLOAT, 16, 8.0 ),
DEFINE_DELTA( velocity[2], DT_SIGNED | DT_FLOAT, 16, 8.0 ),

в delta.lst в секцию entity_state_player_t gamedll Player_Encode. (Не забыв при этом строчку в client.cpp) И не мучиться с эвентами. Правда, это стоит делать, если velocity игроков нужна на клиенте постоянно, а не на пару секунд для партиклевого эффекта. Например, если gaitmovement надо считать. Но т.к. origin уже передаётся, то gaitmovement высчитывается из разницы ориджинов в текущем и предыдущем кадре.


Отправлено PLut 01-10-2015 в 09:52:

Ku2zoff Мне на пару секунд это и нужно

__________________
Base Defense on Steam, ModDB


Отправлено ~ X ~ 02-10-2015 в 08:03:

Ku2zoff вполне грамотный подход.

PLut а почему Length2D()? У тебя в моде лестниц и падений не бывает?

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


Отправлено Ku2zoff 02-10-2015 в 08:37:

~ X ~ а зачем считать bob на лестницах? Когда я сделал собственный bob с раскачиванием пушки по двум осям, я отключил раскачивание по одной из осей, когда игрок плавает, прыгает или летит. Так красивее смотрится. Если уделять внимание таким мелочам, как раскачивание камеры и вьюмодели оружия, можно добавить неплохую динамику игре. Единственное, что я не сделал, не завёл квары для отключения. Бывает, что не всем нравится качание. Но мне нравится, я в первом анриле и УТ1 всегда на максимум ставлю.

Добавлено 02-10-2015 в 14:37:

Цитата:
~ X ~ писал:
вполне грамотный подход.

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


Отправлено PLut 02-10-2015 в 15:00:

~ X ~ Держи ответ от самих вальве.

C++ Source Code:
// bob is proportional to simulated velocity in the xy plane
// (don't count Z, or jumping messes it up)
VectorCopy( pparams->simvel, vel );
vel[2] = 0;

__________________
Base Defense on Steam, ModDB


Отправлено ~ X ~ 02-10-2015 в 16:05:

PLut я не вальве спрашивал, а тебя. У вальве боб. А скорость на клиенте считается просто Length(). К тому же твой камент про simvel, а двумя постами выше уже сказали, что это вообще другая вещь.

Ku2zoff я не про боб а про линейную скорость игрока вообще.

Ku2zoff DELTA_UNSETBYINDEX

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


Отправлено PLut 02-10-2015 в 18:34:

~ X ~ Не к чему больше придраться что ли? Как бы, тот код из боба и взят.

__________________
Base Defense on Steam, ModDB


Отправлено Ghoul [BB] 02-10-2015 в 19:02:

Цитата:
PLut писал:
Не к чему больше придраться что ли?



Он вообще парень строгий, никому спуску не даёт.

__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.

Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo


Отправлено ~ X ~ 02-10-2015 в 19:12:

PLut про боб говорили только ты и ILZM. А все остальные - про общий механизм получения скорости на клиентской стороне. Мне 10 раз положить на код вальве, меня интересует вопрос, почему целесообразно (если) получать линейную скорость лишь в горизонтальной плоскости?

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


Отправлено PLut 03-10-2015 в 05:54:

~ X ~ Лол. Ты сам уже сказал, что про боб говорил я и ILZM, вот ему я про боб и отвечал, остальным, в том числе и тебе, я ничего не говорил. А твой z очень редко нужен, т.к. он меняется НАМНОГО реже x/y, но, конечно, если у тебя в моде главная фича - прыжок, то высчитывай скорость с учетом z, дело твоё.

__________________
Base Defense on Steam, ModDB


Отправлено Ku2zoff 04-05-2016 в 05:08:

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

Добавлено 04-05-2016 в 11:08:

З.Ы. у барника со стрельбой всё норм, и блендится норм.


Отправлено ILZM 04-05-2016 в 08:16:

Ku2zoff ты не знаешь в чем отличие ботов от NPC? Насколько сложно по-твоему запилить ходьбу по всем направлениям с неизменяемым углом типа что-то стрейфа, но во все стороны? У меня есть код смешивания ходьбы во все стороны, которое без всех этих долбанных контроллеров. Хотелось бы добавить такую возможность и npc. Вот, например, HL2 комбайны могут стрелять при беге по диагонали.


Отправлено Ku2zoff 04-05-2016 в 10:39:

ILZM тут короче есть два варианта. Либо использовать стандартный механизм движения, тогда придётся делать анимации для диагональных стрейфов (с соответствующим motion extraction и параметрами секвенции в qc файле). Либо поворачивать монстра по диагонали в коде, т.к. двигаться они могут только по направлению анимации (зависит опять же от motion extraction).
Самый лучший вариант - сделать им бонеконтроллеры как игрокам. Ну и всё прочее в довесок.

Добавлено 04-05-2016 в 16:18:

Цитата:
ILZM писал:
ты не знаешь в чем отличие ботов от NPC?

Знаю. Боты наследуются от игрока. У них совершенно иной код движения и навигации. А также ИИ.

Добавлено 04-05-2016 в 16:32:

Можно конечно заставить монстра двигаться не только в направлении анимации. Как делают летающие монстры. Тут надо основательно копать функцию CBaseMonster::Move, чтобы ничего не изломать. Я в самом начале так и делал, когда начал писать гейт монстрам. Но в итоге решил считать m_flGroundSpeed из гейтсеквенции, чтобы вручную не подбирать цифры для каждого монстра. Барник, к примеру, стал бегать ос скоростью игрока (около 320 юнитов/сек), прилично быстрее, чем раньше. Ну опять же, я код движения не трогал, скорее всего нужно кое-что подправить.

Добавлено 04-05-2016 в 16:39:

И вообще, сейчас мне по этому поводу морочиться не стоит. Нужно починить блендинг у солдафонов и исправить мелкий досадный баг с активностью ACT_IDLE: так как ACT_IDLE у монстров много, то анимации с этой активностью переключаются так, что новая начинается раньше, чем закончится предыдущая.


Отправлено ~ X ~ 05-05-2016 в 08:11:

Может, у них и модели надо чинить?
Кстати, надо мне проверить, не сломались ли блендинги после того как я уничтожил SQB...

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


Отправлено XaeroX 05-05-2016 в 08:39:

Цитата:
~ X ~ писал:
после того как я уничтожил SQB

Ну не обманывай, SQB в халфе уничтожить невозможно.
Разве что вальфа подарит тебе сорцы движка.


Отправлено ~ X ~ 05-05-2016 в 12:52:

XaeroX можно не исползовать 90% функций с углами из движка. Только я пока не запилил своего аналога DT_ANGLE для сраной дельты, которая портит углы морды игрока на клиенте.

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


Отправлено Ku2zoff 05-05-2016 в 17:58:

Цитата:
~ X ~ писал:
Может, у них и модели надо чинить?

Не надо. Совал модели из свенкоопа специально для проверки - то же самое. Это где-то в коде. Попробую считать гейт не от Bip01 Pelvis, а от других костей. Для грантов, видимо, надо брать только Bip01 R(L) Leg и ниже по иерархии, чтобы спина не сгибалась. В анимации бега они довольно сильно наклонены вперёд.


Отправлено FiEctro 05-05-2016 в 19:14:

Цитата:
~ X ~ писал:
я уничтожил SQB...


Из ксаша скопипастил?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено ~ X ~ 05-05-2016 в 20:18:

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

Добавлено 05-05-2016 в 23:18:

fiEctro: из neko mario.

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


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

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