doom2d.org

Главная база плоских морпехов
It is currently 21 Jun 2025, 04:43

All times are UTC + 3 hours




Post new topic Reply to topic  [ 16 posts ] 
Author Message
PostPosted: 30 Oct 2009, 21:47 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7875
Location: \\HULK
Баг с анимтекстурами.

Задержка триггера и сумма задержек всех кадров анимированной текстуры при равном числовом значении не совпадают.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
 Post subject: Re: Баги 0.6
PostPosted: 30 Oct 2009, 22:15 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 4103
Location: Киров
Jabberwock wrote:
Задержка триггера и сумма задержек всех кадров анимированной текстуры при равном числовом значении не совпадают.

Джа, по моему это не баг, просто у задержки триггеров и у задержки смены анимации разная система исчислений.
Надо просто знать что у анимации: 1 = 1\60 секунды, а у триггеров 1 = 1\36 секунды( то есть 36 = 1 сек, 2160 = 1 мин (сам высчитал, когда столкнулся с этой проблеммой :-D ))

http://doom2d.org/forum/viewtopic.php?f=13&t=1549
Attachment:
LOMAJ_LOGO.gif
LOMAJ_LOGO.gif [ 28.25 KiB | Viewed 5471 times ]


_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
 Post subject: Re: Баги 0.6
PostPosted: 30 Oct 2009, 22:41 
Offline
Эркюль Пуаро
User avatar

Joined: 24 Oct 2009, 01:16
Posts: 98
Нашёл забавное решение. И в то же время у меня появились некоторые сомнения.
Слева просто текстура (27 кадров, задержка каждого 3) и триггер с задержкой 81.
Справа цикл-идея с триггером "Смена текстуры" (100% защита от бага).
Просто иногда баг несовпадения происходит, а иногда нет.

PS: несовпадение между собой дверей - это нормально. Просто небольшая перестраховка в цикле.


Attachments:
File comment: Пример
animtestmap.wad [125.99 KiB]
Downloaded 154 times
Top
 Profile  
 
 Post subject: Re: Баги 0.6
PostPosted: 30 Oct 2009, 23:41 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7875
Location: \\HULK
ar888 wrote:
Jabberwock wrote:
Задержка триггера и сумма задержек всех кадров анимированной текстуры при равном числовом значении не совпадают.

Джа, по моему это не баг, просто у задержки триггеров и у задержки смены анимации разная система исчислений.
Надо просто знать что у анимации: 1 = 1\60 секунды, а у триггеров 1 = 1\36 секунды( то есть 36 = 1 сек, 2160 = 1 мин (сам высчитал, когда столкнулся с этой проблеммой :-D ))
Очень может быть. Спрошу Фалька.

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 30 Oct 2009, 23:45 
Offline
Шерлок Холмс
User avatar

Joined: 19 Oct 2009, 09:05
Posts: 433
Я на прошлом форуме тоже писал про эту ошибку, даже Фальку лично пример показывал. У меня где-то остался демонстрационный уровень-образец

_________________
Работа над Coop contest готова на 71%


Top
 Profile  
 
PostPosted: 30 Oct 2009, 23:46 
Offline
Эркюль Пуаро
User avatar

Joined: 24 Oct 2009, 01:16
Posts: 98
ar888 wrote:
Надо просто знать что у анимации: 1 = 1\60 секунды, а у триггеров 1 = 1\36 секунды

В 0.6 - нет.
Величины задержек в моём примере равны. У текстуры 27*3, у триггера 81. А рассинхронизация начинает показывать себя только на 2ой минуте, иногда на 3-4, а иногда и вовсе не показывается.


Top
 Profile  
 
PostPosted: 17 Feb 2023, 05:48 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7245
Location: Владивосток
Ни у кого случаем animtestmap.wad из сообщения Chaos Knight выше не сохранилось? Актуален ли вообще этот баг ещё?

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 17 Feb 2023, 15:21 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7875
Location: \\HULK
Восстановил вложение

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.


Top
 Profile  
 
PostPosted: 17 Feb 2023, 15:43 
Offline
Приколист

Joined: 04 Feb 2010, 14:42
Posts: 999
Не понятно на что смотреть в примере от Chaos Knight
Похоже что интереснее был бы пример от Doctor Doom


Top
 Profile  
 
PostPosted: 21 Feb 2023, 08:26 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7245
Location: Владивосток
Если вдруг кому-нибудь необходимо, то вот как правильно вычислять задержки для синхронизации триггеров и анимации.

Чтобы посчитать минимальный общий момент для 60 FPS и 36 UPS, нужно составить линейное уравнение с двумя неизвестными.
Если быть точным, то "неизвестные" здесь - это на самом деле переменные, поскольку такие уравнения имеют бесконечно много решений.
Но нас интересует только минимальное натуральное из них. Поэтому решаем в целых числах (integer solution), представив задержки в виде рациональных дробей.

Attachment:
index.png
index.png [ 5.69 KiB | Viewed 3265 times ]

То есть, на каждые ≈0.083 секунды у нас приходится 5 полных кадров и 3 полных обсчёта логики (тика).

Код LaTeX:
x\frac{1}{60}=y\frac{1}{36}\\
\frac{x}{y}=\frac{60}{36}=\frac{\cancel{gcd(60,36)}*5}{\cancel{gcd(60,36)}*3}\\
x = 5n,\ y = 3n;\ n \in \mathbb{Z}

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 23 May 2025, 10:33 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7245
Location: Владивосток
Сейчас пытался доделать свой патч сети, размышлял над темой и вдруг осознал, что вся история с разными задержками у анимации и триггеров - это какая-то дичь.
Потому что игра в принципе ничего и никогда не делает вне 36 тиков в секунду, кроме отрисовки. Но FPS - величина плавающая, потому привязки к ней не бывает.

Решил посмотреть код. И в самом деле: что в нынешнем, что в 0.6, что в самой ранней известной копии из 2006 года - везде анимация тикает вместе с триггерами. По 1/36 секунды.
Далее, я попробовал запустить выложенный выше animtestmap.wad на 0.40, 0.55, 0.58a и 0.6. И везде левый триггер всегда отрабатывал одновременно с анимацией.

Судя по всему, это просто путаница, которая возникла после версии 0.58, где ради перехода на физику оригинала уменьшили число тиков с 60 до 36.
Но поскольку g_showfps отображал счётчик UPS равным 72 из-за домножения на 2 (видимо, попросту забытого), то относительно графики это изменение не было замечено.
К тому же, в старом редакторе моделек от Белокрылого осталось прежнее пояснение про "1/60". Как и в архиве DF Examples с примером их создания, выпущенном с версией 0.45.

Вот так и появился ненароком самый стойкий миф касательно работы анимаций в DF. Поэтому данная тема наконец-то отправляется в "Неподтверждённые".
Если баг с рассинхронизацией и был, то он почти наверняка связан с чем-то другим. Да и в любом случае нужен пример карты чтобы его воспроизвести.
С другой стороны, упоминание косяка сохранилось вот здесь: viewtopic.php?f=13&t=119&p=1119#p1119. Может быть, где-нибудь остался и пример? Ар, Джа - помогайте.

Кстати, в связи с появлением интерполяции есть смысл разрешить указание дробных задержек. А если по уму - то просто сделать новое поле с расчётом в секундах.
Чтобы можно было делать анимации быстрее, чем 36 кадров в секунду.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 23 May 2025, 12:07 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7245
Location: Владивосток
Doctor Doom wrote:
Я на прошлом форуме тоже писал про эту ошибку, даже Фальку лично пример показывал. У меня где-то остался демонстрационный уровень-образец
Вчитался в это сообщение только сейчас.
Хорошо всё-таки, что нашлись какие-никакие бекапы старого форума. Потому что мне повезло найти там исходное описание этого бага.

Тема "Рассинхронизация анимтекстур" (#802), раздел "Уже (Что уже сделали...)", время сообщений дано в UTC.

#13496, 10 ноября 2008 18:25:49 - DoomedNoxer wrote:
Хотя большинство мапперов с этой проблемой не сталкивались, я напарывался на неё неоднократно и ничего не могу с ней поделать так как это особенность движка.

Суть проблемы в следующем:

есть анимтекстура во включенно и выключенном состоянии
назовём их

анимтекстура_0
анимтекстура_1

допустим есть триггер который переодически меняет текстуры через два расширителя время задержки которых равно полному времени проигрывания всех фреймов в анимтекстуре (например если у обоих текстур framecount=4 и waitcount=4 то время задержки расширителей 16 у каждогосоответственно)

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

Сколько бьюсь над этой проблемой решить не могу, неужто надо просить Фалька исправить этот недочёт в коде?
#14270, 4 декабря 2008 10:29:18 - rs.falcon wrote:
выложи минимальную карту-пример, исправлю.
#14273, 4 декабря 2008 13:41:34 - DoomedNoxer wrote:
Отправил Джа карту пример, он тебе передаст. На форуме не вешаю из соображений конфидециальности. А то начнут строить преждевременные гипотезы о mars effect.
#14322, 5 декабря 2008 20:25:06 - rs.falcon wrote:
Джа вчера выслал карту bug_patrol, это она ? не смотрел еще, но глюк постараюсь исправить.

короче карту посмотрел, и ничего не понял.
хочу еще более минимальную карту (если это можно).

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

вобще же я думаю косяк где-то в подсчете задержки, отставание на 1 тик нарастает и получается то что видишь.
и еще: я сделал чтобы анимация при переключении сбрасывалась на первый кадр (т.е сначала начиналась) и после этого на карте после нажатия кнопки наблюдал проигрывание текстуры до конца а затем повторения анимации сначала. не думаю что это правильно, поэтому и спросил насчет правильности триггеров )) так что надо карту попроще.
#14360, 6 декабря 2008 17:18:46 - DoomedNoxer wrote:
При попытке отправить тебе приват у меня выскочило:

Общая ошибка

Failed sending email :: PHP ::

DEBUG MODE

Line : 234
File : emailer.php

Ладно, пофигу рассказываю всё тв открытую:

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

Алгоритм правильный, я проверил - первый цикл идёт как надо, а рассинхронизация дальше портит вид. И разве это куча триггеров? :D :D :D :D :D :D Вот увидишь потом когда марс эффект выйдет что такое настоящая КУЧА ТРИГГЕРОВ :D :D :D :D :D :D

У меня в камапании ещё куча таких вещей где приходится так извращаться, как ты себе представить даже не можешь.
#14361, 6 декабря 2008 17:42:05 - ZURG wrote:
Ппц система, не буду нечего навязывать, но точно скажу - сделать двигающуюся текстуру дело нескольких минут.
#14363, 6 декабря 2008 18:07:29 - DoomedNoxer wrote:
ZURG, я не такой дурак каким кажусь :D Естественно я знаю как сделать простой вариант. Но это не просто двигающиеся система, там свои тонкости. Это цикл с многофреймовыми анимтексурами, и проблема именно в нарушении последовательности фреймов в повторных циклах из-за рассинхронизации. И вообще не провоцируй меня на разглашение тайн проекта! :evil:
#14375, 7 декабря 2008 06:26:38 - rs.falcon wrote:
получил 6 приват мессаг )))

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

Возможно, что тема сохранилась не вся - бекап датируется 23 декабря 2008, - и впоследствии обсуждение продолжилось. Но чем богаты.
И теперь хотя бы стало понятно, что изначально речь шла о версии 0.58a, не позже. Я и забыл уже, что Доктордум начал пилить свой проект Mars Effect ещё до выхода 0.6 с синглом и кампаниями.

DeaDDooMER wrote:
Не понятно на что смотреть в примере от Chaos Knight
Похоже что интереснее был бы пример от Doctor Doom
Остаётся надеяться, что карта bug_patrol сохранилась у Джа.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 23 May 2025, 20:16 
Offline
Site Admin
User avatar

Joined: 17 Oct 2009, 23:43
Posts: 7875
Location: \\HULK
Да, есть. Оригинального архива нет, а файлы есть.
Но что там конкретно было - я уже за давностию лет не помню, а анализировать сейчас нет времени. Мб на следующей неделе.


Attachments:
bugpatrol.7z [10.88 KiB]
Downloaded 3 times

_________________
И неважно, что нет морей на Марсе, каждый морпех носит море в сердце.
Top
 Profile  
 
PostPosted: 24 May 2025, 14:16 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7245
Location: Владивосток
Jabberwock wrote:
Да, есть. Оригинального архива нет, а файлы есть.
Посмотрел.
В версиях 0.58a и 0.58 игрока действительно шатает. На более ранних карта просто не запускается.
Однако, начиная уже с версии 0.6, морпех марширует уверенно и чётко, как заговорённый.

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

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

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
PostPosted: 24 May 2025, 15:48 
Offline
Приколист
User avatar

Joined: 17 Oct 2009, 19:57
Posts: 4103
Location: Киров
На самом деле тут может быть ещё проблема в задержках у триггеров (сам Фальк упоминает о ней). Я столкнулся с этим уже пиля карты с платформами (то есть версия 0.667). Магия состояла в том, что в одном случае, чтобы платформа проехала 16 пикселей нужна была задержка 16, а в другом уже 17. И хрен поймёшь как это работает. Тупо тестируешь карту и проверяешь визуально. Когда просил Кетмара помочь с этим, он открестился тем, что код триггеров ужасен.

_________________
Давай, картечью демонов
Размажем по стене.
Давай, берсерком выпустим
Весь ливер сатане!

Сделайте нормальный огнемёт! :evil:


Top
 Profile  
 
PostPosted: 25 May 2025, 01:45 
Offline
Принципиально неуничтожаем
User avatar

Joined: 18 Oct 2009, 04:01
Posts: 7245
Location: Владивосток
ar888 wrote:
На самом деле тут может быть ещё проблема в задержках у триггеров (сам Фальк упоминает о ней). Я столкнулся с этим уже пиля карты с платформами (то есть версия 0.667). Магия состояла в том, что в одном случае, чтобы платформа проехала 16 пикселей нужна была задержка 16, а в другом уже 17. И хрен поймёшь как это работает. Тупо тестируешь карту и проверяешь визуально. Когда просил Кетмара помочь с этим, он открестился тем, что код триггеров ужасен.
Если ты мне сделаешь тестовую карту-пример, то я попробую разобраться. Правда, сейчас это уже не только от меня одного зависит.

_________________
Чёрный Думер, Чёрный Думер
С монстрами сражается.
Чёрный Думер, Чёрный Думер
Рокетланчер плавится.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 16 posts ] 

All times are UTC + 3 hours


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
doom2d.org, since 2007