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

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

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 2
На страницу: 1, 2  След. | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Вопрос по программингу (C#)»
DIMOSUS.X
 996 EGP


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

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


Рейтинг канала: 2(19)
Репутация: 93
Сообщения: 2510
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
попробуй тиками (1 тик = 1 ms)
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 22:51 01-08-2010   
DIMOSUS.X
 996 EGP


Рейтинг канала: 4(67)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
А мона подробней? Просто ни когда не слышал...
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Добавлено: 22:57 01-08-2010   
Crimson
 560 EGP


Рейтинг канала: 4(83)
Репутация: 130
Сообщения: 3041

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


Рейтинг канала: 2(19)
Репутация: 93
Сообщения: 2510
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
http://programmersforum.ru/showthread.php?t=35272
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 11:01 02-08-2010   
DIMOSUS.X
 996 EGP


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


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

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

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

Последний раз редактировалось: бухой джедай (13:55 02-08-2010), всего редактировалось 2 раз(а)
    Добавлено: 13:55 02-08-2010   
DIMOSUS.X
 996 EGP


Рейтинг канала: 4(67)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
у меня минимальный квант порядка 6 мс(150-160 срабатываний в секунду), что я делаю не так? Улыбка

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


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10528
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Чаще всего частота не при чем.

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

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


Рейтинг канала: 4(83)
Репутация: 130
Сообщения: 3041

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

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


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

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

Последний раз редактировалось: Crimson (17:18 02-08-2010), всего редактировалось 2 раз(а)
    Добавлено: 17:16 02-08-2010   
Варсик
 545 EGP


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
Или считать физику на видюхе (ну фанат я этого, хотя еще нифига не написал, да...) Там можно заранее сказать сколько оно будет занимать по времени. Вернее там можно заранее сказать что это будет гораздо быстрее ЦПУ.

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

Последний раз редактировалось: Варсик (17:56 02-08-2010), всего редактировалось 1 раз
    Добавлено: 17:56 02-08-2010   
DIMOSUS.X
 996 EGP


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

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

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

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

Последний раз редактировалось: DIMOSUS.X (18:49 02-08-2010), всего редактировалось 1 раз
    Добавлено: 18:49 02-08-2010   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
DIMOSUS.X :
ЗЫ Фзика на гпу для космосима не пригодна.

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


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


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

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

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


Рейтинг канала: 4(67)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
while (_doRender)
{
Thread.Sleep(1);
NewtonWrapper.Update(_double_world, (float)(time_phys / 1000));
time_phys = 0;
}

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


Рейтинг канала: 4(81)
Репутация: 117
Сообщения: 4039
Откуда: Москва
Зарегистрирован: 22.12.2002
DIMOSUS.X :
Частота срабатываний - 510 раз в секунду
ОСь? Кстати, почему не 512?.. Не тру системка!

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

Последний раз редактировалось: Варсик (15:02 03-08-2010), всего редактировалось 2 раз(а)
    Добавлено: 15:01 03-08-2010   
Pinocchio
 1900 EGP


Рейтинг канала: 2(12)
Репутация: 434
Сообщения: 7312
Откуда: Universita degli studi di Pale
Зарегистрирован: 17.05.2004
Warstone :
А то там при 5-10ГГц длинна волны будет меньше чем диаметр кристалла - наводки пойдут.


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


Рейтинг канала: 4(67)
Репутация: 188
Сообщения: 3252
Откуда: Vilnius/Minsk
Зарегистрирован: 06.08.2008
7 x86
_________________
Даже ежики ежиков могут с трудом,
Иначе бы ежики были кругом.
    Добавлено: 16:57 03-08-2010   
Sh.Tac.
 151 EGP


Рейтинг канала: 5(108)
Репутация: 14
Сообщения: 1426

Зарегистрирован: 27.07.2005
DIMOSUS.X :
Можно поподробнее?

http://www.eetimes.com/electronics-news/4087495/IBM-demos-100-GHz-graphene-transistor
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 00:36 05-08-2010   
Канал Игры Мечты: «Вопрос по программингу (C#)»
На страницу: 1, 2  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Жить хорошо, а жить с хорнетами на борту - еще лучше!

  » Вопрос по программингу (C#) | страница 1
Каналы: Новости | 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