HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > X-Half-Life Deathmatch v3.0.3.8 ALPHA
в редакции GHOUL [BB]
Страницы (15): « Первая ... « 5 6 7 8 [9] 10 11 12 13 » ... Последняя »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Garux
Ну так я ж уже привёл решение.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 161826

Старое сообщение 26-11-2016 19:33
-
Garux
Частый гость

Дата регистрации: Mar 2015
Проживает: Металлострой
Сообщений: 98

Рейтинг



Ну таки хотелось в нём разобраться

Сообщить модератору | | IP: Записан
Сообщение: 161827

Старое сообщение 26-11-2016 19:40
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Ghoul [BB] писал:
В команде у нас два говнокодера-неудачника, которые сами не знают толком, что кодят и как оно всё в итоге будет работать. Это ж очевидно.

Эво как ты Мастера-то...

Добавлено 27-11-2016 в 02:49:

Garux
Тебе надо к ним в команду, в качестве математика.
Я, конечно, не их эйчар, но подозреваю, что банановое довольствие и три топора по праздникам в качестве бонуса они тебе с Мастером обеспечат.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 161828

Старое сообщение 26-11-2016 19:49
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Цитата:
~ X ~ писал:
Сделал милость.
C++ Source Code:
Vector UTIL_VecEnemyPrediction( const Vector &vecSrc, const Vector &vecEnemyPos, const Vector &vecEnemyVel, float flProjectileSpeed )
{
____Vector v = vecSrc - vecEnemyPos;
____float d = DotProduct( v, vecEnemyVel );
____float a = DotProduct( vecEnemyVel, vecEnemyVel ) - flProjectileSpeed * flProjectileSpeed;
____float dsq = sqrtf( d * d - DotProduct( v, v ) * a );
____float t1 = ( d + dsq ) / a;
____float t2 = ( d - dsq ) / a;
____return ( vecEnemyVel - v / max( t1, t2 ) ) / flProjectileSpeed;
}


Функция возвращает направление, в котором надо стрелять с упреждением.
Если прожектайлы медленные или игрок далеко - то, т.к. упреждение рассчитывается в строго определённый момент, резкая остановка игрока приведёт к тому, что монстры будут сильно мазать. Я бы использовал такой код только в случае, если игрок - на двери/поезде (т.е. есть basevelocity), либо если прожектайлы очень быстрые, либо игрок довольно близко. В волатиле, пожалуй, именно так и сделаю.
Пример использования в коде булсквида:


Я конечно кодер и математик тоже не ахти, попробовал заюзать на примере буллсквида, добавил код UTIL_VecEnemyPrediction в util.cpp и util.h, писало ошибку на max, заменил своим аналогом, потом добавил буллсквиду атаку, попробовал на карте с1а1с посмотреть как оно работает, где буллсквид мочит хедкрабов на другой стороне канавы, если двигаться из стороны в сторону присядом то попадает, если бегать, то он берет сильно большое упреждение и промахивается, там у буллсквида был разброс в оригинале халвы, я его убрал, плюет он прямо в игрока если стоять. Из-за того что в 6 студии что-то оно не хотело компилироваться с max, я функцию так изменил:

code:
Vector UTIL_VecEnemyPrediction( const Vector &vecSrc, const Vector &vecEnemyPos, const Vector &vecEnemyVel, float flProjectileSpeed ) { Vector v = vecSrc - vecEnemyPos; float d = DotProduct( v, vecEnemyVel ); float a = DotProduct( vecEnemyVel, vecEnemyVel ) - flProjectileSpeed * flProjectileSpeed; float dsq = sqrtf( d * d - DotProduct( v, v ) * a ); float t; float t1 = ( d + dsq ) / a; float t2 = ( d - dsq ) / a; if (t1 > t2) t=t1; else t=t2; return ( vecEnemyVel - v / t ) / flProjectileSpeed; }

Сообщить модератору | | IP: Записан
Сообщение: 161831

Старое сообщение 26-11-2016 22:40
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Увы, ничем помочь тут не могу: у меня на с1а1с буллсквид прекрасно попадает в игрока с упреждением, а без - как и в халфе, сильно мажет.
Для вас, по-видимому, остаётся только коэффициент 1.75.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 161832

Старое сообщение 27-11-2016 05:51
-
Ghoul [BB]
МРАЗЬ ОПАСНАЯ

Дата регистрации: Jan 2006
Проживает: ...и прожигает...
Сообщений: 2567

Рейтинг



Цитата:
XaeroX писал:
Эво как ты Мастера-то...


Это даже не "МЫ", а ВЫ! Ты посмотри, что несколькими постами ранее творилось! Какие выпады совершались...
Я лишь подвёл итоги и назвал вещи своими именами. Так, как сложилось о них мнение у тут присутствующих. Не более. Свои личные оценки я оставил за скобками.

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

Добавлено 27-11-2016 в 09:53:

.... Поверил безгравитационные прожектайлы... не работают.
Слишком большое упреждение.

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

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

Сообщить модератору | | IP: Записан
Сообщение: 161833

Старое сообщение 27-11-2016 06:53
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Ghoul [BB] писал:
Я лишь подвёл итоги и назвал вещи своими именами. Так, как сложилось о них мнение у тут присутствующих. Не более.

Ну зачем же ты судишь за всех присутствующих.
Цитата:
Ghoul [BB] писал:
Поверил безгравитационные прожектайлы... не работают.
Слишком большое упреждение.

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

__________________

Сообщить модератору | | IP: Записан
Сообщение: 161836

Старое сообщение 27-11-2016 07:11
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Цитата:
XaeroX писал:
Н-да. Не понимаю, может, вы как-то не так тестируете? Важно не менять направление и скорость с момента выплёвывания булсквидом прожектайла. Потому что, очевидно, он отныне не властен над ним, а предсказывать ломаные и неравномерные траектории такой простой код не в состоянии.


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

Сообщить модератору | | IP: Записан
Сообщение: 161840

Старое сообщение 27-11-2016 09:14
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


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

Вложение: hl.zip (478.7 кб)
Этот файл был скачан 42 раз.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 161841

Старое сообщение 27-11-2016 09:18
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



XaeroX проверил - я где то все таки накосячил, вот залил видео с твоим упреждением, с твоей dll-кой он попадает, если двигаться линейно, у меня он стабильно берет больше чем надо и ни разу не попадает. Кстати может вопрос совсем нубский, а из-за чего код в util.cpp выбивает ошибку error C2065: 'max' : undeclared identifier? Компилил 6-ой студией с 5 сервис паком.

Сообщить модератору | | IP: Записан
Сообщение: 161844

Старое сообщение 27-11-2016 11:08
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Chyvachok писал:
Кстати может вопрос совсем нубский, а из-за чего код в util.cpp выбивает ошибку error C2065: 'max' : undeclared identifier?

Возможно, у тебя в extdll.h нет макроса max?
C++ Source Code:
#ifndef max
#define max(a,b)  (((a) > (b)) ? (a) : (b))
#endif

Цитата:
Chyvachok писал:
с твоей dll-кой он попадает, если двигаться линейно, у меня он стабильно берет больше чем надо и ни разу не попадает

Ну чудеса...

Добавлено 27-11-2016 в 18:19:

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

__________________

Сообщить модератору | | IP: Записан
Сообщение: 161846

Старое сообщение 27-11-2016 11:19
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



Из игр где реализована стрельба на упреждение, мне еще вспоминается Паркан Железная Стратегия, там АИ со всего оружия делает поправку, не только с пушек что прямо без гравитации летят, как плевки буллсквида но и с оружия что ведут огонь по баллистической траектории, огнемет там так сгустками стреляет как инсинератор из Fallout New Vegas, помню завхватить бункер с огнеметом там легко - его снаряды медленные, и от них легко уходить, а вот с пушками куда сложнее, тут уже не хило так вилять надо чтобы в него зайти.

Добавлено 27-11-2016 в 13:23:

Цитата:
XaeroX писал:
Возможно, у тебя в extdll.h нет макроса max?


Выходит что его нету в 6 студии.

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


Хорошая идея, кстати еще интересно, код работает с снарядами с баллистической траекторией, типа плевков гонарча?

Сообщить модератору | | IP: Записан
Сообщение: 161847

Старое сообщение 27-11-2016 11:23
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
Chyvachok писал:
Выходит что его нету в 6 студии

Я использовал СДК, который выложен ссылкой в ветке "Half-Life SDK", вверху.
http://hlfx.ru/pub/HL1_src_vs2005.zip
Может быть, я сам добавлял туда этот макрос, когда портировал сдк под новые студии - этого я уже не помню, давно было.

Цитата:
Chyvachok писал:
код работает с снарядами с баллистической траекторией, типа плевков гонарча?

Нет, баллистическая траектория сложнее, там нужно учитывать ускорение (т.е. гравитацию). Но при желании можно составить уравнения и решить их.

Добавлено 27-11-2016 в 18:29:

Chyvachok
Покажи-ка свой bullsquid.cpp.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 161848

Старое сообщение 27-11-2016 11:29
-
Chyvachok
Житель форума

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 1844

Рейтинг



XaeroX вот, свой, и заодно не измененный из КсашХТ, т.к. есть отличие от кода из халвы, вместо ( m_hEnemy->pev->origin + m_hEnemy->pev->view_ofs ) там m_hEnemy->EyePosition(). Я еще мог сделать ошибку в замене макроса max, или дело в XashXT?

code:
float t; float t1 = ( d + dsq ) / a; float t2 = ( d - dsq ) / a; if (t1 >= t2) t=t1; else t=t2; return ( vecEnemyVel - v / t ) / flProjectileSpeed;

Вложение: bullsquid.rar (16.9 кб)
Этот файл был скачан 35 раз.

Сообщить модератору | | IP: Записан
Сообщение: 161849

Старое сообщение 27-11-2016 11:44
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34527
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Гм, выглядит нормально.
Ну попробуй вставить код в чистый хлсдк и проверить.
Если там всё будет ок - значит, дело действительно в КсашХТ.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 161850

Старое сообщение 27-11-2016 11:59
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 21:09. Новая тема    Ответить
Страницы (15): « Первая ... « 5 6 7 8 [9] 10 11 12 13 » ... Последняя »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > X-Half-Life Deathmatch v3.0.3.8 ALPHA
в редакции GHOUL [BB]
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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