Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Вопрос по программингу (C#) |
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Search | Conference rules | Album | Register | Pilots list | Profile | Log in to check your private messages | Log in

   Page 1 of 2
Go to page: 1, 2  Next | All pages
Поиск в этой теме:
Канал Игры Мечты: «Вопрос по программингу (C#)»
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(67)
: 188
Posts: 3252
Location: Vilnius/Minsk
Joined: 06 Aug 2008
Такая ситуация - физический движок весьма чувствителен к частоте вызова процедуры обновления физического мира.
Нужно фиксировать частоту вызова этой процедуры на отметке порядка 100 раз в секунду.
Для этого хочу создать отдельный поток.

Но вот проблема - как получить стабильное срабатывание 100 раз в секунду? Таймерами больше 20 не получишь.
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Posted: 22:14 01-08-2010   
ТехноМаг
 360 EGP


Рейтинг канала: 2(19)
: 93
Posts: 2521
Location: Кронштадт
Joined: 09 Apr 2007
попробуй тиками (1 тик = 1 ms)
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Posted: 22:51 01-08-2010   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(67)
: 188
Posts: 3252
Location: Vilnius/Minsk
Joined: 06 Aug 2008
А мона подробней? Просто ни когда не слышал...
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Posted: 22:57 01-08-2010   
Crimson
 560 EGP


Рейтинг канала: 4(83)
: 130
Posts: 3041

Joined: 03 Sep 2003
Таймеров, которые гарантированно будет вызывать процедуру 100 раз в секунду, не бывает. Собственно, на обычной оси вообще нет никаких гарантий того, с какой частотой твой поток будет получать управление. По хорошему движок должен уметь менять длительность шага на ходу.
    Posted: 09:55 02-08-2010   
ТехноМаг
 360 EGP


Рейтинг канала: 2(19)
: 93
Posts: 2521
Location: Кронштадт
Joined: 09 Apr 2007
http://programmersforum.ru/showthread.php?t=35272
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Posted: 11:01 02-08-2010   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(67)
: 188
Posts: 3252
Location: Vilnius/Minsk
Joined: 06 Aug 2008
Решил проблему Улыбка
Создал отдельный поток. В нем бесконечный цикл. А в цикле ставлю поток в ожидание:
Thread.Sleep(5);
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Posted: 13:28 02-08-2010   
бухой джедай
 183 EGP


Рейтинг канала: 2(19)
: 70
Posts: 7906 Предупреждений: 1
Location: Одесса:)
Joined: 08 Sep 2007
квант процессорного времени 10~12 ms , а в реальности надо учитывать квант времени ОС так что меньше 30-50 ms ставить бесполезно

добавлено спустя 3 минуты:
http://www.rsdn.ru/forum/dotnet/3257597.flat.aspx

там в самом низу есть вариант решения проблемы
_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...

Last edited by бухой джедай on 13:55 02-08-2010; edited 2 times in total
    Posted: 13:55 02-08-2010   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(67)
: 188
Posts: 3252
Location: Vilnius/Minsk
Joined: 06 Aug 2008
у меня минимальный квант порядка 6 мс(150-160 срабатываний в секунду), что я делаю не так? Улыбка

Хотя возможно сказывается двойная кора на частоте свыше 4ГГЦ
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Posted: 15:11 02-08-2010   
Minx
 1025 EGP


Модератор
Рейтинг канала: 6(332)
: 139
Posts: 10551
Location: Gomel, Belarus
Joined: 19 Nov 2005
Чаще всего частота не при чем.

Больше зависит от оси, нагрузки процессора, архитектуры запущенного ПО.

Например у нас на боевых системах стабильно получалось делать реакцию на события в "обычных осях" 10 мс для WinXP и 1 мс для никсов в случае использования нескольких многопоточных приложений с загрузкой ЦП до 30%.
_________________
μηδείς αγεωμέτρητος εισίτω
    Posted: 15:43 02-08-2010   
Crimson
 560 EGP


Рейтинг канала: 4(83)
: 130
Posts: 3041

Joined: 03 Sep 2003
Ну, писать так чтобы работало конкретно на твоей боевой системе при загрузе не выше 30% - это одно. Но если в планах давать другим поиграться...

добавлено спустя 14 минут:
DIMOSUS.X wrote:
у меня минимальный квант порядка 6 мс(150-160 срабатываний в секунду), что я делаю не так? Улыбка


Ты пытаешься писать под Винду так, как будто это real-time операционка. На самом деле Sleep(5) означает только то, что поток "разбудят" не раньше чем через 5 миллисекунд. А там уже как у винды руки дойдут, может через 6, а может и через 60, зависит от всего чего угодно и контроля над этим у тебя, в общем-то, нет (выставлять себе эксклюзивный приоритет черевато заклиниванием по всей системе, что тебе тоже обратно аукнется).

Поэтому по хорошему после Sleep надо смотреть, сколько реально прошло времени (GetTickCount'ом, QueryPerformanceCounter'ом или чем там в шарпе удобнее), и исходя из этого просчитывать шаг на столько-то миллисекунд вперед. Иначе при серьезном использовании у тебя фреймрейт будет плавать в зависимости от погоды на Марсе - причем не экранный, а физический, что вдвойне паршиво.

Last edited by Crimson on 17:18 02-08-2010; edited 2 times in total
    Posted: 17:16 02-08-2010   
Варсик
 546 EGP


Рейтинг канала: 4(81)
: 117
Posts: 4041
Location: Москва
Joined: 22 Dec 2002
Или считать физику на видюхе (ну фанат я этого, хотя еще нифига не написал, да...) Там можно заранее сказать сколько оно будет занимать по времени. Вернее там можно заранее сказать что это будет гораздо быстрее ЦПУ.

добавлено спустя 1 минуту:
А вообще, для Win98 - 1/16 секунды тик времени. То есть если вы получили квант времени, то максимум он будет 1/16 секунды. Но это 98. С тех пор дофига утекло этих самых квантов.
_________________
WARNING: By reading this post you accept that this post is genius.

Last edited by Варсик on 17:56 02-08-2010; edited 1 time in total
    Posted: 17:56 02-08-2010   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(67)
: 188
Posts: 3252
Location: Vilnius/Minsk
Joined: 06 Aug 2008
Соседний (основной) поток считает прошедшее время с предыдущего рендера физики и передает значение в поток физики, где передается функции расчета. Так что думаю разброс времени задержки не страшен.

Такой вопрос - запускаю поиложение из визуал студии - загрузка проца 60%. Просто из проводника - 100%. Откомпилено в режиме дебага. Из-за чего разброс?

Если включить вертикальную синхронизацию - в обоих случаях загрузка не более 5%.

добавлено спустя 2 минуты:
ЗЫ Фзика на гпу для космосима не пригодна.
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.

Last edited by DIMOSUS.X on 18:49 02-08-2010; edited 1 time in total
    Posted: 18:49 02-08-2010   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
: 14
Posts: 1426

Joined: 27 Jul 2005
DIMOSUS.X wrote:
ЗЫ Фзика на гпу для космосима не пригодна.

ога, превед физиксу Улыбка или PhysX "для космосима не пригодна"?
_________________
This is what you get ...
(c) Radiohead
    Posted: 23:30 02-08-2010   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(67)
: 188
Posts: 3252
Location: Vilnius/Minsk
Joined: 06 Aug 2008
Не так выразился - любая физика, не работающая с двойной точностью, для космосима не пригодна. Хотя если вам достаточно постранства в сотню км то да.
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Posted: 00:17 03-08-2010   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
: 14
Posts: 1426

Joined: 27 Jul 2005
двойная точность это слишком тупо и прямолинейно Улыбка
будущее безусловно за бесхитростностью, ибо, скажем, уже есть экспериментальное железо работающее на частоте 100ГГц

есть масса клёвых алгоритмов разбиения пространства, таких, что двойная точность и не нужна, к тому же как я уже заметил, аппаратная поддержка вычислений рулит и педалит, а она пока что развита лишь для обычных флоатов, так что выводы делайте сами Хы...
_________________
This is what you get ...
(c) Radiohead
    Posted: 00:56 03-08-2010   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(67)
: 188
Posts: 3252
Location: Vilnius/Minsk
Joined: 06 Aug 2008
while (_doRender)
{
Thread.Sleep(1);
NewtonWrapper.Update(_double_world, (float)(time_phys / 1000));
time_phys = 0;
}

Частота срабатываний - 510 раз в секунду Подозрение.
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Posted: 14:06 03-08-2010   
Варсик
 546 EGP


Рейтинг канала: 4(81)
: 117
Posts: 4041
Location: Москва
Joined: 22 Dec 2002
DIMOSUS.X wrote:
Частота срабатываний - 510 раз в секунду
ОСь? Кстати, почему не 512?.. Не тру системка!

добавлено спустя 1 минуту:
Sh.Tac. wrote:
уже есть экспериментальное железо работающее на частоте 100ГГц
Можно поподробнее? А то там при 5-10ГГц длинна волны будет меньше чем диаметр кристалла - наводки пойдут.
_________________
WARNING: By reading this post you accept that this post is genius.

Last edited by Варсик on 15:02 03-08-2010; edited 2 times in total
    Posted: 15:01 03-08-2010   
Pinocchio
 1900 EGP


Рейтинг канала: 2(12)
: 434
Posts: 7312
Location: Universita degli studi di Pale
Joined: 17 May 2004
Warstone wrote:
А то там при 5-10ГГц длинна волны будет меньше чем диаметр кристалла - наводки пойдут.


Ну это вряд ли Улыбка Тут нужно не с размерами кристалла сранивать, а с характерной длиной проводников. Т.е., можно сделать большоооооой кристалл, но все связи внутри у него будут мелкими, и он будет отлично работать на высоких частотах. Ну, утрированно говоря, комп в целом вон какой ящик, больше длины двух гигагерцовой волны волны, и ничего, работает Улыбка
_________________
И пали ученики ниц, и воскликнули: Чудо!
- Да нет, - ответил он. - Я просто знаю, как это делается.
    Posted: 16:08 03-08-2010   
DIMOSUS.X
 997 EGP


Рейтинг канала: 4(67)
: 188
Posts: 3252
Location: Vilnius/Minsk
Joined: 06 Aug 2008
7 x86
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Posted: 16:57 03-08-2010   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
: 14
Posts: 1426

Joined: 27 Jul 2005
DIMOSUS.X wrote:
Можно поподробнее?

http://www.eetimes.com/electronics-news/4087495/IBM-demos-100-GHz-graphene-transistor
_________________
This is what you get ...
(c) Radiohead
    Posted: 00:36 05-08-2010   
Канал Игры Мечты: «Вопрос по программингу (C#)»
Go to page: 1, 2  Next | All pages
  
Display posts from previous: 
View previous topic | View next topic |
К списку каналов | Наверх страницы
Цитата не в тему: Могу прислать чай по факсу, могу мылом, могу передать приватом - если тебя, конечно, устроит встреча в 4 часа утра. (предложил Alone)

  » Вопрос по программингу (C#) |
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18