HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Архив проектов > SOHL Custom Build > Gruntbattledemo - неработающий скрипт
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Gruntbattledemo - неработающий скрипт

тов. Кутузов где-то упоминал, что этот скрипт в спирите 1.7 перестал работать правильно. Поскольку я как раз занимаюсь портирование спирита под ксаш движок, я естественно обратил на это внимание.
Я поставил спирит 1.0 после чего выяснилось, что и там тоже этот скрипт работает неправильно. Более того - я хорошо помню что в версии 1.0 еще в далеком 2002 году все отлично пахало. Сменилась лишь версия халфы, да комп стал помощнее. Ну на халфу я думать не стал, вряд ли бы там этот код трогали. А вот то что фпс раньше был ниже - это факт.
Проверить легко - пишем в консоли fps_max 35 - и скрипт снова становится рабочим. Зачем я это написал?
Чтобы сэкономить время тем кто пытается его исправить в коде.
Там в другом дело.

Добавлено 08-03-2010 в 17:11:

Upd: хотя в спирите 1.7 его плющит вообще не подетски.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 08-03-2010 14:11
-
 XaeroX
Crystice Softworks

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

Рейтинг



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


Цитата:
Дядя Миша писал:
Там в другом дело.

В чём?

__________________

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

Старое сообщение 08-03-2010 14:41
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



XaeroX пока точно не знаю, но временные промежутки в скрипте не совпадают. А если ограничить принудительно на 35-50 фпс - то все ок.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 08-03-2010 16:00
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32202
Нанёс повреждений: 392 ед.

Рейтинг



Спустя год возвращаюсь к этой теме. Итак мои исследования показали следующую интересную вещь:
В спирите есть такая кондиция как вызов цели по окончании проигрывания секвенции. Эта кондиция срабатывает раз-через-раз, причем поначалу определить причину несрабатывания было крайне тяжело. Суть была в том, что скриптед_секвенция упорно крутилась по кругу, даже если её об этом не просили. То есть можно было задать секвенцию и она выполнялась бы раз 8-10, а потом (внезапно!) останавливалсь бы. В связи с эти всплыл еще один оч. интересный баг, когда DROP_TO_FLOOR при выполнении секвенции начинает двигать монстра не вниз, а вбок. Я наивно полагал что это чисто ксашевский баг, однако оказалось, что и в халфе он тоже присутствует, просто реже проявляется. Итак вернемся к нашим баранам:
При выполнении секвенции корректно отловить момент её завершения мешает волшебная строчка m_fSequenceFinished = FALSE; в DispatchAnimEvents. Прикол к том, что сбрасываться она должна только в ResetSequenceInfo, а никак не с каждым вызовом DispatchAnimEvents.
Почему её воткнули туда - для меня загадка. Возможно она как-то влияет на геймплей и на работу AI в целом. Если у кого-то из вас есть немного свободного времени - пожалуйста протестируйте работу халфы, да и спирита. закомментировав эту строчку, конкретнее вот:
файл animating.cpp

C++ Source Code:
1
{
2
  MonsterEvent_t	event;
3
 
4
  void *pmodel = GET_MODEL_PTR( ENT(pev) );
5
 
6
  if ( !pmodel )
7
  {
8
    ALERT( at_aiconsole, "Gibbed monster is thinking!\n" );
9
    return;
10
  }
11
 
12
  // FIXME: I have to do this or some events get missed, and this is probably causing the problem below
13
  flInterval = 0.1;
14
 
15
  // FIX: this still sometimes hits events twice
16
  float flStart = pev->frame + (m_flLastEventCheck - pev->animtime) * m_flFrameRate * pev->framerate;
17
  float flEnd = pev->frame + flInterval * m_flFrameRate * pev->framerate;
18
  m_flLastEventCheck = pev->animtime + flInterval;
19
 
20
  //	m_fSequenceFinished = FALSE;

Мои беглые исследования показали что удаление этой строчки полностью излечивает скрипт на gruntbattledemo от глюков и багов при ЛЮБОМ fps_max. Но возможны какие-то негативные влияния в других областях, в частности баг с DropToFloor (см. демокарту).
В чём он заключается и почему проявляется я расскажу пожжы, если кому-то это станет интересно.

Добавлено 02-10-2011 в 17:18:

К слову сказать этой строчки нет в hl2, как еще одно подтверждение того, что я двигался в правильном направлении.

Вложение: spirit.rar (28.1 кб)
Этот файл был скачан 698 раз.
Дядя Миша проверил это вложение на вирусы 02-10-2011 в 11:13

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 02-10-2011 13:18
-
Jimmy C.
Житель форума

Дата регистрации: Aug 2010
Проживает: (void)
Сообщений: 618
Возраст: 28

Рейтинг



Дядя Миша хм. странно. что закоментированная что не закоментированная у меня скрипт неправильно работает (только если выставить fps_max 50 работает всегда верно)

__________________
Все что делает маппер, программист делает в движке, поскольку ему лень. ©Дядя Миша

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

Старое сообщение 03-12-2011 11:05
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 23:05. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Разработка игр > Наши проекты > Архив проектов > SOHL Custom Build > Gruntbattledemo - неработающий скрипт
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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