C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ONeiLL 22-06-2012 в 15:25:
Дядя Миша , гадость, это 9-way blending. Все хитбоксы уехали, не годится он. Надо по другому
Отправлено Дядя Миша 22-06-2012 в 15:42:
Цитата:
ONeiLL писал: Все хитбоксы уехали, не годится он
Плохому программисту - и студия мешает.
Нормальные челы добавляют его же на сервере, поскольку там специальный интерфейс предусмотрен для этого дела: SV_StudioGetBlendingInterface. Но конечно сказать "гадость" проще всего.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено HAWK0044 22-06-2012 в 17:37:
Дядя Миша
это ж хл обычный, там вот так вот крутяться боунконтроллеры, надо курить в ту сторону.
Отправлено Дядя Миша 22-06-2012 в 17:47:
Я же говорю, чтобы не съезжали физ.боксы надо написать ответную часть для 9-way blending-а на сервере. И подключить через вышеупомянутый интерфейс. Именно так и сделано в вашей любимой контре. Через боне-контроллеры реалистичного движения не добешься нипочём. Они же линейные.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено marikcool 22-06-2012 в 18:00:
Цитата:
qpAHToMAS писал: Это еще ничего. У нас как-то в CS один вообще руку сломал:
в скелете кости для пальцев удалены просто.
Отправлено qpAHToMAS 22-06-2012 в 18:18:
Цитата:
marikcool писал: в скелете кости для пальцев удалены просто.
Не знаю, по-моему просто накосячили в анимации когда игрок сидит. Отправлено marikcool 22-06-2012 в 18:56:
Цитата:
qpAHToMAS писал: Не знаю, по-моему просто накосячили в анимации когда игрок сидит.
походу да, надо глянуть старые модели с 1.1 например. в 1.6 все время думал что кости для пальцев не допилили и они так глючить стали.
Отправлено Дядя Миша 22-06-2012 в 19:00:
Цитата:
qpAHToMAS писал: Не знаю, по-моему просто накосячили в анимации когда игрок сидит.
Именно так. Причём сидит в какую-то одну сторону (влево или вправо).
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено HAWK0044 22-06-2012 в 19:30:
Дядя Миша
ему же на 2-вэй бленд надо, хл же
Отправлено Ku2zoff 22-06-2012 в 21:50:
Цитата:
Дядя Миша писал: Нормальные челы добавляют его же на сервере, поскольку там специальный интерфейс предусмотрен для этого дела: SV_StudioGetBlendingInterface.
Дядя Миша можно поподробнее? Поиск по файлам не дал результата. Интерфейс недокументированный что ли?
Отправлено marikcool 23-06-2012 в 04:52:
в целом нужно взять код клиентку и портануть на сервак.
легкие пути через доп подгрузки mp.dll и установка SV_StudioSetupBones с mp.dll из cs 1.6 рушит сервер, а также пробовал версии с передачей newdllfunc и убиранием из экспорта entapi2 и передача указателей из той же mp.dll тоже крашит сервер.
остается потихой сидеть да портировать клиентский код.
Отправлено Дядя Миша 23-06-2012 в 05:41:
Цитата:
Ku2zoff писал: Поиск по файлам не дал результата. Интерфейс недокументированный что ли?
r_studioint.h кури - там всё. Ну и в ксаше ответную часть смотри.
Он не то чтобы недокументированный. Он слабо документированный.
Цитата:
marikcool писал: легкие пути через доп подгрузки mp.dll и установка SV_StudioSetupBones с mp.dll из cs 1.6 рушит сервер
будь уверен что ты умеешь работать с указателями, в которых более одной звездочки.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено marikcool 23-06-2012 в 20:20:
Цитата:
XaeroX писал: marikcool
И что? Ты можешь дать мне слово коммуниста, что этот экспорт не юзает в своём таинственном внутреннем коде g_engfuncs?
затупил я, извините, счас буду передовать g_engfuncs в mp.dll, посмотрю че выйдет.
Добавлено 24-06-2012 в 00:20:
передал енгфанкс в контру, проверил результат сервербленда от кс длл получил 0, заработало, по крайне мере на монстрах кости с хитбоксами на месте, завтра проверю по сети че с игроками стало.
Отправлено qpAHToMAS 24-06-2012 в 00:48:
Цитата:
marikcool писал: завтра проверю по сети че с игроками стало.
А можно видео? Где изменения отчетливо видны.
Я просто не совсем понимаю о чем идет речь.
Цитата:
Дядя Миша писал: Причём сидит в какую-то одну сторону (влево или вправо).
Вот кстати анимация в "даке" очень фатальна при стрейфах игрока:
На гифке: простые нажатия на A и D (влево-вправо).
Это одна из вещей, которую бы я изменил, если бы делал свой CS.
Source на сколько я знаю таким не страдает, да и Promode тоже.
Отправлено Дядя Миша 24-06-2012 в 07:24:
Цитата:
qpAHToMAS писал: Это одна из вещей, которую бы я изменил, если бы делал свой CS.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 24-06-2012 в 15:06:
Я не совсем понял... Это вроде проверки, чтобы движок знал, присутствует новый интерфейс или нет? Или надо ещё какие-то манипуляции провести, функции на сервере изменить?
Отправлено Дядя Миша 24-06-2012 в 17:59:
ну там каллбэк корочи SV_StudioSetupBones.
Надо туда сунуть функцию установки костей, согласно 9-way блендингу.
Т.е. такая копипаста с клиента, попутно выкинув весь код, который отвечает за интерполятсыю, поскольку на сервере её нет и быть неможет.
Ну можно пример в движке посмотреть, как трасса устроена.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 24-06-2012 в 19:12:
То есть, должна быть копия функции SetupBones для сервера? Но тогда почему в хл и модах, использующих обычный блендинг, ничего такого нет, и настройка костей на сервере не производится? Или производится, но другим способом?
Отправлено Дядя Миша 24-06-2012 в 19:24:
Цитата:
Ku2zoff писал: Но тогда почему в хл и модах, использующих обычный блендинг, ничего такого нет, и настройка костей на сервере не производится?
Дык она уже в движке есть дефолтная
К слову сказать, халфа и ксаш прекрасно обходятся без клиентского рендера моделей. Например в опфоре его нету совсем.
Тут скорее эффект популяризации имеет место быть. Клиентский рендер моделей пихали в SDK, а функцию установки костей на сервере - нет (просто за ненадобностью). Вот оно так и сложилось.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено marikcool 24-06-2012 в 20:11:
начал потихой портировать код с клиентки. маневр с mp.dll дает тот же результат что и дефалтный SV_StudioSetupBones.
как без хаков можно получить движковый SV_StudioSetupBones чтобы юзать его для энтитей не игрока?
Отправлено Дядя Миша 24-06-2012 в 20:21:
marikcool ты умеешь восстанавливать вью-англе из англес?
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено marikcool 25-06-2012 в 10:45:
да там просто все закоменчено я постом выше кидал на него сылку)
дисплей бонс вообще непонятно что рисует, притом там нереальный поток сообщений создается.
зато автор кода рагдолы прикрутил))
Отправлено Дядя Миша 25-06-2012 в 12:26:
Цитата:
marikcool писал: зато автор кода рагдолы прикрутил))
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено marikcool 25-06-2012 в 12:59:
Цитата:
Дядя Миша писал: Судя по картинке автор до сих пор не слез с Win 3.11
Это печально.
забавно, но судя по иконке это скин win3.11 для XP )
Добавлено 25-06-2012 в 16:59:
Цитата:
Дядя Миша писал: Ой-ей-ей! И это говорит проффесионал, у которого в сигнатуре на AMX-форуме написано "пишу плагины, дорого" ?
просто времени будет затрачено больше на написание состовляющией, я его лучше потрачу на гемплей.
так то я и карты и графику и сайт могу запилить, но занимаются этим другие люди.
Отправлено Дядя Миша 25-06-2012 в 13:08:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 25-06-2012 в 17:04:
Сейчас поглядел внимательно код 9ти-направленного блендинга, что на форуме Арранжевого Мента выложен. По-моему, там лишнего кода много, навроде функций, работающих с локальными анимациями. Это что-то типа предиктинга для модели локального игрока? Как я понял, для реализации этого блендинга нужны следующие функции:
C++ Source Code:
StudioSetupBones - настраивает по-новомодному косточки игрока
StudioProcessGait - проигрывает гэйт-анимации, почти не отличается от оригинала, из неё вызываются следующие две
CalculateYawBlend - считает бленд по горизонтали
CalculatePitchBlend - считает бленд по вертикали
LookupAnimation - вызывается из StudioSetupBones, как я понял, находит нужный из 9ти блендов в каждой анимации
Поправьте, если ошибаюсь, может быть какую-нибудь важную функцию упустил.
Отправлено Дядя Миша 25-06-2012 в 17:21:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 25-06-2012 в 17:35:
Цитата:
Дядя Миша писал: слава богу, хоть кто-то заметил.
Может быть не я один Но, похоже, только я написал об этом. Сдаётся мне, что какие-нибудь товарищи умудрились подменить в своих исходникак все файлы теми, что любезно даны в архиве Хотя, для того, чтобы блендинг зафурычил, достаточно подменить GameStudioModelRenderer.cpp и GameStudioModelRenderer.h. Ну а по-хорошему, надо только лишь заменить StudioSetupBones, StudioProcessGait и добавить расчёты и поиск блендов.
З.Ы. Мне интересно, почему в коде настройки костей есть место, где анимация ходьбы хаком поворачивается на 26 градусов? Неужели и в КС так же?
Отправлено marikcool 25-06-2012 в 18:50:
Ku2zoff если занимаешься по данному вопросу стукни в аську 344388533
Добавлено 25-06-2012 в 22:50:
может ли cs 1.6 блендинг дергать что либо из DLL_FUNCTIONS, т.к он не активируется, работает старый.?
Отправлено pRoxxx 25-06-2012 в 19:23:
Цитата:
Дядя Миша писал: Ой-ей-ей! И это говорит проффесионал, у которого в сигнатуре на AMX-форуме написано "пишу плагины, дорого" ?
Ну дык пиво это и есть дорого. (=
Отправлено marikcool 25-06-2012 в 22:01:
приложил код, работает но увы тоже 2way.
h_export.cpp :
513(518) : m_flDtMultiplier CBasePlayer::StudioEstimateGait() ( 3.5 or 0.05 )
30
31
32
33
500 - 505 -> CBasePlayer:: StudioEstimateGait()
список используемых функций:
C++ Source Code:
1
CBasePlayer::CalculatePitchBlend(void)
2
CBasePlayer::CalculateYawBlend(void)
3
CBasePlayer::StudioEstimateGait(void)
4
CBasePlayer::StudioPlayerBlend(int *,float *)
5
CBasePlayer::StudioProcessGait(void)
Отправлено Ku2zoff 26-06-2012 в 04:28:
Дядя Миша на сервере нужна только новая функция SetupBones или что-то ещё? marikcool ой-ой-ёй, ещё и в код игрока лезть придётся... Но там слишком много функций, мне кажется, будет достаточно тех, которые необходимы на клиенте, то есть
C++ Source Code:
StudioSetupBones - отдельная
StudioProcessGait - в коде игрока
CalculateYawBlend - в коде игрока
CalculatePitchBlend - в коде игрока
У меня мозгов не хватает как это вместе связать... Не может быть, чтобы в SV_SetupBones было тоже, что и в движке.
Отправлено marikcool 26-06-2012 в 05:58:
да гейт можно срезать нафиг
Добавлено 26-06-2012 в 09:58:
функции из кода игрока:
C++ Source Code:
1
CbasePlayer::PostThink
2
{
3
...
4
CBasePlayer::StudioProcessGait(value);
5
}
6
7
CBasePlayer::StudioProcessGait(int a1)
8
{
9
CBasePlayer::CalculateYawBlend(a1);
10
...
11
}
12
13
CBasePlayer::StudioEstimateGait(a1)
14
{
15
16
17
18
}
функции используемые в SV_StudioSetupBones
C++ Source Code:
1
// 7949C: using guessed type _DWORD __cdecl AngleMatrix(_DWORD, _DWORD);
2
// 7A88C: using guessed type _DWORD __cdecl StudioCalcBonePosition(_DWORD, float, _DWORD, _DWORD, _DWORD, _DWORD);
3
// 7B7CC: using guessed type _DWORD __cdecl GetPlayerYaw(_DWORD);
4
// 7BA6C: using guessed type _DWORD __cdecl GetPlayerGaitsequence(_DWORD);
5
// 7BF9C: using guessed type _DWORD __cdecl QuaternionMatrix(_DWORD, _DWORD);
6
// 7BFEC: using guessed type _DWORD __cdecl StudioCalcBoneQuaterion(_DWORD, float, _DWORD, _DWORD, _DWORD, _DWORD);
7
// 7CE8C: using guessed type _DWORD __cdecl ConcatTransforms(_DWORD, _DWORD, _DWORD);
8
// 7CF1C: using guessed type _DWORD __cdecl StudioSlerpBones(_DWORD, _DWORD, _DWORD, _DWORD, float);
9
// 7D13C: using guessed type _DWORD __cdecl UTIL_GetPlayerGaitYaw(_DWORD);
10
// 7E2FC: using guessed type _DWORD __cdecl StudioCalcBoneAdj(float, _DWORD, _DWORD, _DWORD, char);
11
// 7EF0C: using guessed type _DWORD __cdecl GetPlayerPitch(_DWORD);
12
// 1E9110: using guessed type int g_pstudiohdr;
13
// 1E9114: using guessed type int g_pRotationMatrix;
14
// 1E9118: using guessed type int g_pBoneTransform;
15
// 82CD4: using guessed type int var_250[128];
получаются углы про которые говорил Дядя Миша собераются в тхинке игрока, и используются в SV_StudioSetupBones, поэтому контровская дллка не дает никаких эффектов т.к переменные в классе CBasePlayer в mp.dll никак не заполняются.
Отправлено Ku2zoff 26-06-2012 в 16:58:
Вроде бы сделал серверный расчёт костей (но только для 2-way блендинга, то есть стандартный). ХЗ работает или нет, не знаю как проверить.
Добавлено 26-06-2012 в 23:58:
Вообще мне сдаётся, что код-пример, который я взял за основу, не работает. А вот сами функции должны работать.
Отправлено Ku2zoff 28-06-2012 в 17:18:
Цитата:
Дядя Миша писал: Я думал в ксаше подключить, но это пришлось бы тащить модельки соответствующие, а у меня концепция - минимум ресурсов.
А если кто-нибудь сделает одну модельку игрока. Для ксашмода? Скелеты у них всё равно одинаковые, делов-то, заменить анимации.
Отправлено Дядя Миша 28-06-2012 в 18:35:
А если бы они сначала закончили конкурс карт под ксаш-мод, а не пазорно потерялись, так это было бы воще отлично!
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено marikcool 03-07-2012 в 21:18:
кто дальше будет ковыряться приложил декомпил sv_studiosetupbones от контры.
Отправлено Ku2zoff 04-07-2012 в 04:53:
Это всё конечно интесесно, но как проверить, заработает ли код, если не отрисовать хотя бы кости на сервере?
Отправлено marikcool 04-07-2012 в 05:08:
по хитбоксам, без дебагера стрельни в голову модельки, поверни модель чтобы голова сместилась и снова стрельни в старое место, если попадешь значит ничего не переключается.
Отправлено Ku2zoff 04-07-2012 в 05:29:
marikcool вот делать мне больше нечего как вертеть модель одного игрока и стрелять по ней другим игроком. Намного лучше было бы нарисовть на местах костей спрайтовые лучи.
Отправлено marikcool 04-07-2012 в 05:45:
если вообще в модель попадает код работает, в других случая обычно у модели хитбоксы в раза 4 больше нормы и это сразу видно стреляя в метре над головой попадаешь.
тестить можно на любом монстре.
Отправлено HAWK0044 04-07-2012 в 06:49:
marikcool
сколько раз я тебе говорил, ну запихни ты трассировку в апдейтстатус бар и смотри какой хитбокс выцеливаеться с прицела.
Отправлено Ku2zoff 04-07-2012 в 07:39:
HAWK0044 неплохой вариант... Но опять же, надо лишнюю модель, в которую целиться.
Отправлено marikcool 04-07-2012 в 08:22:
Цитата:
HAWK0044 писал: marikcool
сколько раз я тебе говорил, ну запихни ты трассировку в апдейтстатус бар и смотри какой хитбокс выцеливаеться с прицела.
я так и сделал, ты кутузову ее скинь.
Отправлено marikcool 18-09-2012 в 18:35:
и так появилась внятность,
когда движок импортирует sv_studiosetupbones, при вызове он не посылает костей, ориджин и англес и там помоему не эдикт приходит а указатель на сбэйсплеер для кс, следовательно крутить монстров не получается, оно и контре и ненадо там только 9вэй корректно и работает.
но если функция не переопределена с клиентки, в движке входящие данные для соотвественно sv_studiosetupbones корректны.
пока решением остается перехватить оригинальный sv_studiosetupbones, без импорта функций с клиентки. (это чтобы все варианты блендингов работали)
__________________
vk.com/skullcapstudios
Отправлено marikcool 23-09-2012 в 18:21:
и так перехватить удалось оригинальную sv_studiosetupbones, если кому надо то адресс функции GetModuleHandle("hw.dll")+0x96350
далее имеем такие же глюки что и с импортной функцией, следовательно был сделан вывод что неправильные аргументы. последнии 2 аргумента нужно поменять местами.
счас разбераюсь с origin и angles.
пока что юзаю такой вариант, позже обновлю пост.
SV_StudioSetupBones( struct model_s *pModel, float frame, int sequence, const vec3_t angles, const vec3_t origin, const byte *pcontroller, const byte *pblending,
edict_t *pEdict, signed int a8 );
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 07-12-2012 в 15:37:
Снова вернулся к этой проблеме... Нашёл какой-то код в интернете, вставил в проект, скомпилил - всё работает и вызывается, алерты в консоли есть. Визуально проверить пока не смог. Подумал, вот какой-то хороший человек сделал-таки, притом код чистый, без мусора И тут решил свой код из файлика sv_blending, что в этой теме в аттаче, посмотреть и сравнить. Бац! А этот скачанный - мой код Я и забыл как он выглядит. Щас под ксашем потестю, может правильно работает, я сам не проверял...
Добавлено 07-12-2012 в 22:37:
Не работает, SV _StudioSetupBones корявая. Буду пилить...
Отправлено Дядя Миша 07-12-2012 в 15:42:
Цитата:
Ku2zoff писал: Не работает, SV _StudioSetupBones корявая. Буду пилить...
я уже переправил в новых версиях. Теперь всё правильно.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 07-12-2012 в 18:01:
Дядя Миша что именно исправлено? Ответная часть в движке, или импорт интерфейса движком?
Отправлено Дядя Миша 07-12-2012 в 18:32:
ответная часть в движке. И аргументы кости-эдикта местами поменяны, как должно быть на самом деле. Я же потом еще для верности с декомпилом сверился - точно попутаны.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 11-12-2012 в 05:09:
Сегодня немного поработал в направлении серверного блендинга - портировал код с клиентки (тот, что 9-way). Портировал не полностью, т.к. торопился, некоторые функции закомментил. Но разница уже ощутима. Если при полном отсутствии серверного интерфейса в игрока попасть возможно только в упор или монтировкой, то теперь можно и издалека. И при попадании в модельку летит кровь. Хотя хитбоксы всё ещё большие, и можно убить игрока, выстрелив у него над головой. Через несколько часов снова займусь этим делом, если повезёт, то сделаю. Надеюсь.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 15-12-2012 в 05:22:
Дядя Миша спасибо, прояснил ситуацию
Отправлено Ku2zoff 15-12-2012 в 14:13:
Нифга не получается. Ни портированный код с клиентки не фурычит, не перенесённый из ксаша. Причём под ксашем игра умудряется ещё и вылетать при обращении к pEdict. В исходниках движка ДМ оставил комментарий: Warning, pEdict is unused. Под GoldSRC не вылетает, но хитбоксы всё равно на полкарты. ЧЯДНТ?
Отправлено Дядя Миша 15-12-2012 в 14:42:
Ну почему у дяди Мишы всё прекрасно получается несколько раз и туда и обратно и бамп выдернули и на место вставили, а вы, толпой в пять человек уже четвертый год не можете решить ПРОСТЕЙШУЮ ПРОБЛЕМУ, почему, я не понимаю? Вам неприятно понимать что вы делаете? Вам интереснее тыкать наугад, пока не повезет или что?
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 15-12-2012 в 14:50:
Вроде же всё как надо делаю. Есть SV_StudioSetupBones с выкинутыми интерполяцией между анимациями и проигрыванием гейт-секвенций. Из неё вызываются ещё функции, они тоже есть. Studio Header я задаю прямо в теле SV_StudioSetupBones. bonetransform и rotationmatrix беру из движка, как и на клиенте делается. blending тоже из движка, его на сервере считать не надо. (Для стандартного халфовского блендинга).
Отправлено Дядя Миша 15-12-2012 в 14:53:
Цитата:
Ku2zoff писал: Вроде же всё как надо делаю
engine\common\mod_studio.c - готовая рабочая реализация на классический халфовский блендинг. Для начала перенеси в игровую библиотеку её. А потом расширь до 9-way.
Я уже молчал-молчал, думал догадаются. Но куда там! В стену головой долбится куда интереснее.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 15-12-2012 в 14:57:
Цитата:
Дядя Миша писал: Вам интереснее тыкать наугад
По аналогии с клиентом сделал. Ну если нет документации, как я узнаю, что нужен ещё один таинственный вызов таинственной функции откуда-нибудь из кода серверной дллки? Я StudioPlayerBlend на сервере не делал. Ну он же не повлияет на хитбоксы? Он ведь за наклоны игрока отвечает.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 15-12-2012 в 19:44:
Цитата:
marikcool писал: ты параметры у себя в SV_StudioSetupBones местами поменял?
После того как поменял, начало вылетать и под Goldsrc при обращении к pEdict.
Добавлено 16-12-2012 в 02:44:
Цитата:
Дядя Миша писал: Для начала перенеси в игровую библиотеку её.
Переносится без проблем, только не работает. То ли дело в неправильных аргументах SV_StudioSetupBones, то ли в том, что вместо float'ов в ксашдвижке используется matrix3x4.
Отправлено Ku2zoff 23-01-2014 в 08:11:
Простите, что поднимаю старую тему. Но несколько дней возни терять зря не хочется. На меня в последние дни что-то нашло, и я сделал ответную часть StudioSetupBones для 9-way blending'а на сервере. Благо, у нас теперь есть хоть какие-то исходники контр-страйка, и в них можно кое-что подглядеть
Ошибка была в том, что для 9-way нужен, как бы это сказать, более продвинутый рассчёт угла поворота игрока по YAW. На данный момент всё работает, но не очень точно. То есть хитбоксы располагаются правильно и меняют положение в зависимости от направления взгляда игрока, только серверная часть не совсем совпадает с клиентской. Скорее всего, дело в каких-то переменных на серверной стороне. Я в подробности не вдавался и не сравнивал. Как бы то ни было, есть база для дальнейшей работы.
В туторы не пишу, потому что это не тутор, а копипаста.
Шаг первый: клиентская сторона.
Тырим код отсюдова, адаптируем код из исходников сервера контры (я делал так, но решил, что лучше перенести с клиента на сервер, а не наоборот), или пишем свой. Компилим клиент, подменяем player.mdl и нужную модельку игрока, корректируем анимации - вуаля! На клиенте у нас есть всё, что нужно.
Кто разобрался с клиентской частью, тот поймёт, что здесь для чего. Далее открываем player.h и добавляем в класс игрока заголовки новых функций и новые переменные:
C++ Source Code:
1
void StudioProcessGait( void );
2
void StudioEstimateGait( void );
3
void CalculateYawBlend( void );
4
void CalculatePitchBlend( void );
5
6
float m_flYaw;
7
float m_flPitch;
8
float m_flGaitMovement;
9
float m_flGaitframe;
10
float m_flGaityaw;
11
float m_flYawModifier;
12
int m_iGaitsequence;
13
vec3_t m_prevgaitorigin;
Компилим, если без ошибок - всё сделали правильно. Теперь находим в player.cpp функцию void CBasePlayer::PostThink() и в самый её низ вставляем:
C++ Source Code:
m_iGaitsequence = pev->gaitsequence;
StudioProcessGait();
Надо же откуда-то вызывать все эти новые рассчёты, верно?
Далее, идём в функцию Spawn игрока, она находится ниже. В самое её начало засовываем:
C++ Source Code:
m_flGaitMovement = 0;
m_flGaitframe = 0;
m_flGaityaw = 0;
m_iGaitsequence = 0;
m_prevgaitorigin = Vector(0, 0, 0);
Чтобы новые переменные обнулялись при спавне. Компилим. Без ошибок - молодцы!
Шаг третий: серверная сторона. Собственно, ответная часть блендинга.
Сразу скажу, что на правильность работы этот код не претендует, т.к. я только-только начал более или менее разбираться в механизме работы студиомодельрендерера. Но, судя по моим нескольким тестам, он работает, хоть и не совсем точно.
Открываем animation.cpp (да, копипастить удобнее в него, потому что почти всё нужные заголовки уже подключены), в самый низ вставляем вот этот код:
Их можно без изменений упереть из клиентской части.
А теперь очередь функций настройки костей. В чистом виде с клиента их не перенесёшь, нужна модификация. Но можно взять из ксашдвижка, что я и сделал. Вставляем ниже:
А это 9-way. При необходимости можете убрать проверку на игрока и не использовать функцию для 2-way. Вот и всё.
Отправлено Дядя Миша 23-01-2014 в 15:43:
Ну вы поглядите на него! Вроде опытный учаснег, а всю ветку каким-то говно-кодом заспамил. Ребяты, так не годится. Если ты пишешь тутор, значит к каждому кусочку кода делай пояснение что это и зачем. Но ты этого сделать не в состоянии, поскольку и сам толком не понимаешь, как это работает. Значит бери и клади в аттач, всё равно оттуда удобнее копировать, чем эти простыни из постов.
Добавлено 23-01-2014 в 19:43:
Поглядел код. Ну навскидку - лерпинг надо убрать к чертям, на сервере он не нужен. И самое главное - pEdict всё-таки последний аргумент или iBone? Кто кого обманывает? Valve или maricool?
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 23-01-2014 в 16:04:
Дядя Миша я же написал, что это пока не тутор. Я понял, как работает StudioSetupBones, а в остальную прочую математику не вдавался, потому что со школы её терпеть не могу. Лерпинг вырежу, когда оформлю в виде тутора. Тогда кстати, сможешь затереть эти два моих поста. Ну или оставить в назидание другим, как хочешь. Я кстати разобрался, почему хитбоксы на сервере не совпадали с клиентскими и уже это поправил.
Цитата:
Дядя Миша писал: И самое главное - pEdict всё-таки последний аргумент или iBone? Кто кого обманывает? Valve или maricool?
Когда аргументы располагаются как у Valve, то всё работает. Стоит поменять местами - вылетает под голдсорсом. Под ксашем наоборот, но началось это после того, как ты поменял аргументы местами в движке. А вообще, эдикт приходит верный, иначе yaw/pitch игрока невозможно было бы получить. И ещё - я делал в новом СДК, что в репозитарии валяется, не думаю, что Valve оставили бы код с такой ошибкой, учитывая, что там кусок контры в виде ботов имеется.
Отправлено Дядя Миша 23-01-2014 в 16:20:
Цитата:
Ku2zoff писал: Я кстати разобрался, почему хитбоксы на сервере не совпадали с клиентскими и уже это поправил.
Питч инвертировал?
Цитата:
Ku2zoff писал: Под ксашем наоборот, но началось это после того, как ты поменял аргументы местами в движке
Я поменял, потому что мне один товарищ все ухи прожужжал - поменяй, да поменяй. То есть обманул, получается?
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено marikcool 23-01-2014 в 16:50:
Я хук вешал и смотрел что падает, вообщел что видел то и написал. Углы помоему v_angles юзаются с бейсплеера а не angles с эдикта.
__________________
vk.com/skullcapstudios
Отправлено Ku2zoff 23-01-2014 в 16:55:
Цитата:
Дядя Миша писал: Питч инвертировал?
Всё гораздо проще. В клиентском коде с форума арранжевого мента сделано так: сначала берётся значение curstate.angles[PITCH] у текущей энтити, на основе его меняется curstate.blending[1], а потом curstate.angles[PITCH] делается равным нулю. На выходе имеем что моделька игрока не наклоняется вперёд/назад как в халфе (ноги игрока остаются на земле, спина перпендикулярна полу) и меняются только бленды на основе значения curstate.blending[1]. Ну я взял и сделал обнуление питча на сервере. И моделька (серверная, которую не видно) перестала наклоняться, хитбоксы почти совпадают, есть кое-какие несходжения, но по сравнению с тем, что было раньше - пустяк.
Цитата:
Дядя Миша писал: То есть обманул, получается?
Видимо да. С помощью эдикта я прекрасно получаю из КБейсПлеера yaw и pitch для смены блендов. Аргументы стоят как у Валвэ.
Добавлено 23-01-2014 в 23:55:
Цитата:
marikcool писал: Углы помоему v_angles юзаются с бейсплеера а не angles с эдикта.
Эдикт используется как указатель на игрока, чтобы получить доступ к переменным его класса, таким как питч, йау, гэйтсиквенс, гэйтфрейм. Которые в свою очередь вычисляются в коде игрока более точно, чем их можно получить от эдикта.
Отправлено Ku2zoff 30-04-2014 в 17:11:
Снова копал эту тему. Сделал расчёты углов поворота и наклона на сервере, передал на клиент - увидел, почему не совпадают серверные и клиентские кости.
Во-первых, на сервере модель игрока по горизонтали вертится с опозданием. Если игрок стоит на месте, она может повернуться в направление взгляда только тогда, когда разница между реальным и видимым углом примерно 45 градусов, или ещё сколько то, зависит от того, как быстро вертишь мышкой.
Во-вторых, модель игрока наклоняется по вертикали, как в оригинальной халфе, хотя, если делать расчёты на клиенте, то там наклоняться не будет.
Попытался поправить - не вышло, мож я не догоняю чего. Главное - избавиться от вертикальных наклонов, из-за них все проблемы. А горизонталь хоть и опаздывает, но только когда игрок стоит. Если бежать, то вертится норм.
Может посоветуете чего путного?
Отправлено ILZM 30-04-2014 в 17:26:
Ku2zoff, а как увидеть хитбоксы и проверять?
Отправлено tolerance 30-04-2014 в 18:40:
Цитата:
ILZM писал: Ku2zoff, а как увидеть хитбоксы и проверять?
Может r_drawentities 2 или 3 (sv_cheats надо).
Отправлено Ku2zoff 30-04-2014 в 18:45:
Цитата:
ILZM писал: а как увидеть хитбоксы и проверять?
Никак, нету встроенного механизма для сервера. Я это обошёл, отправив углы поворота с сервера, и используя на клиенте именно серверные, чтобы видеть, как на сервере ведёт себя модель. Всё оказалось как я и предполагал: несовпадение по горизонтали и ненужный наклон по вертикали.
Отправлено ~ X ~ 30-04-2014 в 18:46:
Это ж только клиентские. По серверным только лучами стрелять
Интересная темка, как-то я этим тоже заморачивался. Ещё взбесило отражение оси поворота PITCH... Халва-говно, вобщем. Если что придумаете, готов проверить/дополнить, но только летом.
Да в общем-то, надо сделать так, чтобы модель игрока на сервере по горизонтали поворачивалась своевременно не только когда игрок движется, но и когда стоит (когда gaitmovement равен нулю). Ну и зафиксировать её по вертикали, чтобы не наклонялась, а только менялись бленды. Тогда будет соответствовать клиентской реализации, и хитбоксы будут на месте. Возможно, скоро решу этот вопрос.
Отправлено Дядя Миша 30-04-2014 в 19:04:
Цитата:
Ku2zoff писал: Никак, нету встроенного механизма для сервера
Ну делай под ксашем, там триапи есть встроенный на сервере.
Специально для таких случаев.
Я же и уроки физики под ксашем отлаживал, визуально, так сказать.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 01-05-2014 в 01:16:
Дядя Миша под ксашем не делаю потому, что предиктинг не работает как следует. Тестирование по мультиплееру превращается в нервотрёпку из-за дёрганья игроков при передвижении.
Отправлено KiQ 01-05-2014 в 08:07:
если поковырять конфиги сети, то все довольно плавно, в общем-то
__________________
-Brain is dead-
Отправлено Ku2zoff 01-05-2014 в 08:12:
KiQ кинь тогда настройки, пригодятся. Хотя, боюсь, что ксаш не прожуёт дллки от нового хлсдк.
Отправлено Дядя Миша 01-05-2014 в 11:19:
Цитата:
Ku2zoff писал: Хотя, боюсь, что ксаш не прожуёт дллки от нового хлсдк.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ILZM 01-05-2014 в 14:42:
Как это код одинаковый, но модель ведёт себя по-другому и поворачивается не одинаково?
Отправлено Ku2zoff 02-05-2014 в 04:15:
Цитата:
ILZM писал: Как это код одинаковый, но модель ведёт себя по-другому и поворачивается не одинаково?
Да вот так. Код выполняет одни и те же функции, но он не одинаковый. На клиенте в коде студиомодельрендерера есть доступ к разным параметрам энтити и инфе игрока, всё обновляется оперативно, каждый кадр. На сервере часть параметров из движка получить невозможно, насколько я увидел по коду из исходников КС. Например, тот же gaitmovement вычисляется непосредственно в коде игрока. Gaityaw тоже надо считать самому. Ну и ещё кое-что по мелочи. Попробую написать свои механизмы вычисления, основываясь на клиентском коде. Как только доведу до ума и протестирую, сделаю полноценный тутор с объяснениями.
Добавлено 02-05-2014 в 11:15:
А надо ли это кому?
Отправлено ILZM 02-05-2014 в 06:06:
Ku2zoff, например, мне)
Отправлено ~ X ~ 02-05-2014 в 08:28:
Цитата:
Ku2zoff писал: когда стоит (когда gaitmovement равен нулю)
не обязательно, у меня, вроде, для idle gaitsequence == sequence.
Ku2zoff писал: На сервере часть параметров из движка получить невозможно, насколько я увидел по коду из исходников КС
У тебя доступ к эдикту есть. А значит и к классу доступ тоже.
Цитата:
Ku2zoff писал: Например, тот же gaitmovement вычисляется непосредственно в коде игрока. Gaityaw тоже надо считать самому
гейт не от хорошей жизни, это потому что велосити на клиент не приходит.
А на сервере считать гейт не надо.
Достаточно сделать вот так:
C++ Source Code:
est_velocity = pplayer->velocity;
m_flGaitMovement = est_velocity.Length() * dt;
вообще у меня сложилось впечатление, что вы все годами не можете сделать то, что вообщем-то требует от силы полтора часа.
Позорища
И марик этот со своей дезинформацией. Пусть сначале идой научится пользоваться.
Добавлено 02-05-2014 в 14:12:
Цитата:
Ku2zoff писал: Попробую написать свои механизмы вычисления, основываясь на клиентском коде
Ну вон в ксаше mod_studio.c - полноценная имплементация, бери да суй на сервер. Что мешает?
Заметь, 100% рабочая, иначе бы давно уже завалили багрепортами.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ~ X ~ 02-05-2014 в 10:21:
Цитата:
Дядя Миша писал: А на сервере считать гейт не надо.
лолшто? gaitsequence?
я немного потерял нить, о чём вы говорите. От уклона перешли к гайтам. Вообще, имхо, код передвижения в халве - КГ. В скайриме сделано единственно правильно (выставление ног на неровные поверхности). Но это для хохлолвы слишком круто... Хотя, я об этом ещё году в 2004ом думал...
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено ILZM 02-05-2014 в 10:41:
Дядя Миша, объясните сам принцип ИК. Это типа трассировка с ноги на поверхность идёт?
Отправлено Дядя Миша 02-05-2014 в 10:51:
Принцип очень простой. Находим точку и нормаль поверхности и тянем к ней ногу, т.е. конечную дочернюю кость. А она уже влияет на колено и тазобедренный сустав (в конкретном примере для ноги).
Потому-то кинематика и называется инверсной, что не родительская кость задаёт положение дочерних, а наоборот. В принципе там без разницы куда идёт импульс, но зачастую - от дочерних к родительским.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 02-05-2014 в 17:26:
Цитата:
Дядя Миша писал: Ну вон в ксаше mod_studio.c - полноценная имплементация, бери да суй на сервер. Что мешает?
Всё что надо, я оттуда уже взял. Проблему я описал выше: Клиентская модель уже повернулась, а серверная ещё нет, она как бы "догоняет" рывками каждые N градусов, если игрок не движется. Может даже "перегнать", если мышью шевелить резко. Ну и гадские наклоны по оси Pitch, которые можно заблокировать в коде SV_StudioSetupBones.
Отправлено Дядя Миша 02-05-2014 в 17:45:
Хех. Ну как ты узнаешь, что серверная модель "догоняет" ?
Ты ведь не можешь её увидеть.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 02-05-2014 в 17:51:
Цитата:
Дядя Миша писал: Ты ведь не можешь её увидеть.
А я pitch и yaw (которые вычисляются на сервере и юзаются в SV_StudioSetupBones) отправил на клиент, и там подхватил в клиентском StudioSetupBones. Вот и увидел. А про наклоны по picth - в модифицированной для 9-way блендинга функции StudioPlayerBlend эти наклоны обнуляются, моделька не наклоняется. На сервере тоже так сделал - хитбоксы почти стали совпадать, осталось несхождение из-за "догонялок".
Отправлено Дядя Миша 02-05-2014 в 17:57:
Нет, ты ерунду увидел, на самом-то деле.
Ты же не забывай, что этот рассинхрон - нормальное явление, поскольку моделька игрока вертится сразу же на клиенте, вслед за мышкой, а потом результаты уходят на сервер, чтобы их могла использовать трасса.
Т.е. это нормальный лаг, ты его не победишь и не заборешь никоим образом.
Так и должно быть. *здесь картинка с малышевой*
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 02-05-2014 в 18:09:
Я видео если что залью потом. Это наверное не рассинхрон, а что-то другое. Рассинхрон он по времени, а тут можно хоть полдня прождать, моделька не повернётся, пока не сдвинешь игрока с места, или пока не повернёшь мышью дальше.
Отправлено Ku2zoff 03-05-2014 в 11:25:
Разобрался, почему модель опаздывает. Запустил кс в одиночном режиме, сделал вид от 3-го лица. Там модель тоже поворачивается с опозданием. Значит, серверный код это действительно предусматривает. Надо либо заставить модель вертеться вовремя, либо завтавить модель на клиенте опаздывать.
Добавлено 03-05-2014 в 18:25:
Эх нет. Опаздывает только тогда, когда у игрока нет оружия. Стоит взять ствол, параметр sequence меняется, и всё норм.
Отправлено ~ X ~ 03-05-2014 в 18:37:
У меня голова кружится... Так что, галактика уже не опасносте? А то я чуть не ринулся спасать XDM от багов поворота модели!
Разобрался наконец Нашёл способ отрисовать серверные хитбоксы, увидел различия, и пофиксил несоответсвия серверных и клиентских костей. Проблема была не только в серверной, но и в клиентской части. Причём те догадки, которые я строил вслепую, оказались верными и нашли подтверждение при визуализации хитбоксов.
При отрисовке серверные хитбоксы отстают от модели игрока, когда тот бежит, но думаю, это всего лишь проблема метода их отрисовки (не каждый кадр, а когда вызывается SV_StudioSetupBones).
В общем, сырой вариант выглядит правильно, даже gait-анимации ногам делаются. Осталось протестировать, а потом ждите подробный тутор.
Воистину, попытки копипасты кода без понимания принципов его работы могут растянуть решение простой задачи с пары дней на... Ну вы поняли, когда была открыта эта тема Не буду утверждать, что сейчас досконально разбираюсь в механизмах студиомодельрендерера, но от тупой копипасты в этом направлении я уже ушёл.
Отправлено Дядя Миша 05-05-2014 в 12:59:
Цитата:
Ku2zoff писал: При отрисовке серверные хитбоксы отстают от модели игрока, когда тот бежит, но думаю, это всего лишь проблема метода их отрисовки
Естественно. Я не знаю, как ты рисуешь на сервере, но в мультиплеере они будут отставать, т.к. сервер тчинкает реже клиента. Можешь принудительно ограничить клиенту фпс в раёне 30, тогда думаю отставать не будет.
Добавлено 05-05-2014 в 16:59:
Цитата:
Ku2zoff писал: Воистину, попытки копипасты кода без понимания принципов его работы могут растянуть решение простой задачи с пары дней на...
Я вам это давно говорю. Исключение составляют те случаи, когда вариантов перебора всего-то 3-4 штуки.
Ну например зеркало неправильно отражает, опа сделал проверку на SURF_PLANEBACK - заработало правильно.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 19-05-2014 в 19:02:
Торжественно заявляю, что зеркало функций StudioModelRenderer'а на сервере мною доделано и функционирует синхронно с клиентом, как и должно быть. Маленькие отставания визуализированных хитбоксов связаны скорее всего со скоростью тчинканья сервера и в сетевой игре незаметны, пульки попадают куда надо. Было несколько неприятных моментов, которые я долго не мог пофиксить, некоторые из-за моей невнимательности, некоторые из-за предоставления ложной информации от участников форума. Есть некоторая неэстетичность в реализации, как то: игрок поворачивается немного дёрганно, но это опять же результат медленного тчинканья сервера. Попытка реализации сглаженных поворотов на клиенте провалилась, т.к. идентичный по константам с сервером код(что имеем в оригинальных исходниках клиентской части с форума арранжевого мента), вертит ноги игрока вместе с торсом. При попытке сгладить повороты на сервере я получил то же, что и на клиенте - ноги поворачиваются вслед за торсом когда ещё не должны. Но это и не важно, потому что моей задачей была именно серверная сторона, а клиент уже давно сделан. Если мне не будет лениво, в ближайшее время оформлю в виде тутора с комментариями того, что я понимаю в этом коде. А пока вот вам видео для затравки:
Отправлено Ku2zoff 22-05-2014 в 13:48:
Граждане-товарищи, тутор хотите?
Добавлено 22-05-2014 в 20:48:
Если хотите, будет в течение недели.
Отправлено Chyvachok 22-05-2014 в 13:51:
Как я понял это что-то вроде сглаженых анимаций? Тутор было бы неплохо, полезная вещь будет.
Отправлено Ku2zoff 22-05-2014 в 14:00:
Цитата:
Chyvachok писал: это что-то вроде сглаженых анимаций?
Нет. Это зеркало CStudioModelRenderer::StudioSetupBones на сервере. Специально для 9-way блендинга, как в КС, ДоД и ещё некоторых мультиплеерных модах.
Отправлено Дядя Миша 22-05-2014 в 14:23:
Ku2zoff никогда не спрашивай, хотят ли товарищи тутор.
Ты как почтальон Печкин - у меня для вас посылка, только я вам её не отдам.
Есть чем поделиться с народом - выкладывай, нет - не спрашивай.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 22-05-2014 в 15:38:
Цитата:
Cybermax писал: Может не актуально а тутор писать надо время
Время, время... Но насчёт актуальности тоже хотел бы узнать. Сколько вообще народу делает моды с моделями из КС?
Отправлено Cybermax 22-05-2014 в 16:18:
Цитата:
Ku2zoff писал:
Время, время... Но насчёт актуальности тоже хотел бы узнать. Сколько вообще народу делает моды с моделями из КС?
Я может специально ради твоего туториала пересажу модели из Cyber Arena на скелет из контры. Правда не знаю как я это сделаю но вроде гордон HD то есть для контры так что вполне возможно.
Работа ещё не совсем закончена. Сейчас работаю над синхронизацией гейт-анимаций на сервере и клиенте. Это последний затык, который остался. Для справки: в КС гейт-анимации сервера и клиента синхронны, и хитбоксы ног в движении находятся там же, где и сами ноги визуально.
Отправлено Ku2zoff 26-05-2014 в 15:52:
В общем так, ребяты. Времени у меня свободного счас мало, кому не терпится, завтра выложу изменённые файлы для нового ХЛСДК (сервер и клиент). Утянуть в ХЛСДК 2.3 нетрудно будет. Комментов в коде немного, в основном то, что я сам для себя менял. Работает норм за исключением гейт-анимаций, они не синхронны, допилить не смог пока что. Ну и кое-какие мелочи в плане интерполяции на клиенте, тоже не допилил. Сразу предупреждаю: анимации игрока стандартные, вам надо будет вносить свои изменения в CBasePlayer::SetAnimation под конкретные модели.
З.Ы. Почему не тутор? А кому он нужен? - раз. Моего кода там почти нету - два. Смысл писать тутор, когда те, кому это надо, сами поймут, как это работает - три.
З.З.Ы. Исходники под 2013 студию, я только ей сейчас пользуюсь Поэтому файлы проектов выкладывать не буду. Сами скопируете в новый ХЛСДК и скомпилите 2010 студией.
З.З.З.Ы. Код полностью рабочий, в игре всё как надо. Вопросов "а почему не компилится?" или "а почему не работает?" быть не должно. Ну эт я шуткую, если что, я в аське.
З.З.З.З.Ы. Ни в коем случае не указывайте меня в авторах, код не мой, я только внёс несколько изменений, чтоб работало как надо мне, в моём моде.
Отправлено Cybermax 26-05-2014 в 17:06:
Цитата:
Ku2zoff писал: Работает норм за исключением гейт-анимаций
Цитата:
Ku2zoff писал: мелочи в плане интерполяции на клиенте, тоже не допилил
Цитата:
Ku2zoff писал: З.Ы. Почему не тутор? А кому он нужен? - раз.
Мне лично не нужно, бесполезно.
__________________
ㅤ
Отправлено ~ X ~ 26-05-2014 в 19:19:
Мне бы пригодился.
Хотя, я малость упустил уже, о чём идёт речь.
Если о более навороченной синхронизации хитбоксов св-цл - Я ОЧЕНЬ ДАЖЕ ЗА! Потому что непопадание стрелы в колено меня очень сильно ЗА-!
И вообще, я ж тяну к себе в мод все самые прогрессивные решения
ЗЫ: 9-путей блямбинг ведь требует новых моделей? Тогда я как-нить буз него
Мне нужен детальный туториал с пошаговой инструкцией и разжевыванием.
__________________
ㅤ
Отправлено Ku2zoff 27-05-2014 в 04:23:
Цитата:
~ X ~ писал: ЗЫ: 9-путей блямбинг ведь требует новых моделей? Тогда я как-нить буз него
Да, модельки нужны будут с новыми анимациями прицеливания и стрельбы, в которых 9 блендингов, а не 2. Необязательно менять
все анимации, некоторые можно оставить 2-way. Ну и условие завести в StudioSetupBones на этот случай.
Цитата:
~ X ~ писал: Потому что непопадание стрелы в колено меня очень сильно ЗА-!
ДМ писал, что халфа гейт не считает, возможно, имел в виду именно сервер, потому что клиент считает. Именно поэтому-то стрелы у тебя и не попадают в ноги в движеннии. Можно сделать зеркало функций на сервере для стандартных моделей, чтобы считать гейт.
Весь затык в том, что я не нашёл нормального способа рисовать серверные хитбоксы, чтобы можно было без сторонней утилиты и добавления SV_StudioSetupBones их увидеть. Если кто это сделает для простой халфы, он очень облегчит мне задачу.
Добавлено 27-05-2014 в 11:21:
Кому надо, вот код 2-way как в движке. Только гейт не считает, как и должно быть. Если научить его правильно считать гейт копипастой с клиента, то хитбоксы ног будут совпадать.
Добавлено 27-05-2014 в 11:23:
По поводу 9-way: синхронизировал гейт на сервере с клиентским. Правда иногда случается рассинхрон. Надо выяснить, когда это происходит, и обнулять гейтфрейм игрока (на сервере) в этот момент. В общем, всё.
Отправлено Cybermax 24-06-2015 в 10:02:
Напомните, как можно решить проблему, если модель игрока не правильно проигрывает анимации на лицензионной хл.
__________________
ㅤ
Отправлено ~ X ~ 24-06-2015 в 10:33:
Ku2zoff
какие-нибудь подвижки есть в этой области?
Не о чем, уже разобрался. Особенность в том что надо соблюдать порядок мешей в qc файле. Для того что бы увидеть о чем я говорю скачать архив, раскидать модель игрока в паку, запустить хл в консоле thunderperson, создать сервер и выбрать игрока gina наслаждаться.
Добавлено 24-06-2015 в 14:05:
Цитата:
Cybermax писал: Этот файл был скачан 100 раз.
Что? 0.o
__________________
ㅤ
Отправлено Ku2zoff 24-06-2015 в 14:11:
Цитата:
~ X ~ писал: какие-нибудь подвижки есть в этой области?
У меня в текущей версии мода всё сделано и работает. И для игроков, и для монстров. Исправлено несколько несоответствий серверного зеркала с клиентской частью, которые приводили к неправильному положению серверных хитбоксов при резких поворотах игрока. Единственное, что пока ещё не заборол - неправильные yaw и gaityaw при спавне игрока. Кажется, на клиенте gaityaw после спавна рассчитывается всегда относительно yaw. А на сервере почему-то не хочет, и расчёт костей использует те значения, которые указываются в Spawn() игрока. Но это не критично, т.к. стоит игроку сдвинуться с места, и на сервере происходит правильный расчёт. Поковырял немного эту проблему, и ничего толком не добившись, забросил, т.к. в кс точно так же.
Тутор писать не охота, потому что я ещё не до конца понимаю механизм работы модельрендерера, и некоторые моменты расписать не могу. Но если прям кому-то очень надо, сделаю в том виде, в каком есть сейчас.
Отправлено ~ X ~ 24-06-2015 в 21:50:
Я не понял про зеркало, но да не суть важно.
Мне бы чисто пофиксить баги ХЛ1 в области моделей - на фичи у меня уже сил нет (я на этой неделе и так уже пофиксил 9000 всего что можно было). Т.е. синхронизацию хитбоксов. Я у себя передачу gaitsequence малость изменил просто - ещё адаптировать...
~ X ~ писал: Т.е. синхронизацию хитбоксов. Я у себя передачу gaitsequence малость изменил просто - ещё адаптировать...
В чём проблема? Бери восстановленные сорцы серверной дллки кс, дёргай оттуда StudioProcessGait, StudioEstimateGait, StudioPlayerBlend. Доводи до соответствия с халфовскими (теми, что на клиенте). Ну и SV_StudioSetupBones бери тот, что я выше выкладывал в аттаче, добавляй в него поддержку gait-анимаций. И всё.