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

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

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

   Страница 2 из 3
На страницу: Пред.  1, 2, 3  След. | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «Multithreading в играх»
Vostok-1
 155 EGP


Репутация: 24
Сообщения: 394

Зарегистрирован: 15.08.2015
Minx :
AI типа шахматного в глубину и/или ширину вполне может уйти в Loop, который близок к Infinite. Вполне естественно в таких обсточтельствах ставить таймаут и выдавать лучшее надуманное решение. Однако такой подход в играх - (по моим наблюдениям) - редкость.

Хотя watchdog это крайние обстоятельства. Т.к. грохать неизветсно где в каком состоянии нить, потом за ней чистить и не иметь надежды на корректность и достатка ресурсов, - череповато.


Здесь необходимо разделять игры по типам. Шахматы - это TBS. Здесь вполне можно провесить отдельный поток.

В реалтаймовых играх у меня даже был опыт подсчёта возможного количества выполняемых инструкций на шаг логики. (Spectrum и ранние телефоны на j2me диктовали такую необходимость).

Но в любом случае, "зависание" выполнения - это отсутствие обязательной предсказуемости работы алгоритма. А это чаще всего означает, что кодеру пора в Индию Улыбка Или читать книжки по алгоритмике/проектированию и всему такому.
_________________
"The gods do not protect fools.
Fools are protected by more capable fools."

Larry Niven
    Добавлено: 10:59 17-12-2015   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Sh.Tac. :
а вот тупой вопрос у меня, в логике часто возникает ситуация когда порядок неопределён, и если все изменения скажем аддитивны, то проблем не возникает, от перемены мест слагаемых сумма не меняется

а как у рендерщиков с этим?


В OpenGL каждый поток = свой контекст и рендер таргет. В Metal более широкие возможности, я пока не знаю точно - только осваиваю его.

добавлено спустя 38 секунд:
Vostok-1 :
Но в любом случае, "зависание" выполнения - это отсутствие обязательной предсказуемости работы алгоритма. А это чаще всего означает, что кодеру пора в Индию Или читать книжки по алгоритмике/проектированию и всему такому.


+1. не понимаю о чем они вообще. Есть креш = надо его фиксить
_________________
MOV topka, C++

Последний раз редактировалось: Jurec (13:18 17-12-2015), всего редактировалось 1 раз
    Добавлено: 13:18 17-12-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10527
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Vostok-1 :
Здесь необходимо разделять игры по типам. Шахматы - это TBS. Здесь вполне можно провесить отдельный поток.

А где-то его повесить нельзя? Подозрение.

Vostok-1 :
Но в любом случае, "зависание" выполнения - это отсутствие обязательной предсказуемости работы алгоритма. А это чаще всего означает, что кодеру пора в Индию Или читать книжки по алгоритмике/проектированию и всему такому.

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

добавлено спустя 4 минуты:
Sh.Tac. :
с корректностью просто, используется транзакционный подход, подаётся срез данных, который нужно изменить, задача подготавливает изменения, если все хорошо, то можно все изменения взять и накатить (commit), если нет, то они тупо сбрасываются (rollback автоматом)

Как корректно откатить тред, который захватывает ресурс? Твой тред открывает файл, держит коннект к БД, открывает сокет по сети, аллоцирует память, ... Уже не говоря о том, если тред использует сторонние библиотеки. Кто и как будет это все гарантированно чистить?
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (17:49 17-12-2015), всего редактировалось 2 раз(а)
    Добавлено: 17:48 17-12-2015   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Если тред крешится - крешится всё (а эксепшны в играх вообще выключены обычно). Давайте не будем рассуждать на темы не имеющие ничего с практикой.

добавлено спустя 57 секунд:
И да, если тред крешится - в этом виноват программист и QA которые упустили баг. И этот баг надо фиксить
_________________
MOV topka, C++

Последний раз редактировалось: Jurec (18:18 17-12-2015), всего редактировалось 1 раз
    Добавлено: 18:18 17-12-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10527
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Jurec :
Если тред крешится - крешится всё (а эксепшны в играх вообще выключены обычно). Давайте не будем рассуждать на темы не имеющие ничего с практикой.

Если бы мне не утверждали обратного, я бы и не писал (; А так удивление.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 18:32 17-12-2015   
ТехноМаг
 360 EGP


Рейтинг канала: 2(19)
Репутация: 93
Сообщения: 2510
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Jurec :
если тред крешится


Если треед крашится, то к нему применяется правило 3х попыток. По истечению которых происходит то, что заложил программист. Либо аварейное завершение всей программы, либо просто уведомление, в зависимости от кретичности задачи, которая возложенна на данный тред.

Jurec :
в этом виноват программист


Опять же в пример сеть:
Дано: Сервер-клиент; UDP протокол, или TCP с асинхронным сокетом.

Вопрос: Что произодйет, если будет нарушено соединение между сервером и клиентом и кто виноват?

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

А вот если она выкинет мессадж, что мол сетевой поток крякнулся, потому что низя достучаться до сервера и потом закрылась, или же продолжила работу в оффлайн режиме, то виноваты, извените сетевики. При этом конечный пользователь вполне способен продолжить работу в оффлайне. Яркий пример Steam. Сетевой поток убивается, но сам клиент спокойно продолжает работу.

Поэтому утверждение:
Jurec :
Если тред крешится - крешится всё

считаю неверным в корне.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."
    Добавлено: 21:05 17-12-2015   
Vostok-1
 155 EGP


Репутация: 24
Сообщения: 394

Зарегистрирован: 15.08.2015
ТехноМаг :
А вот если она выкинет мессадж, что мол сетевой поток крякнулся, потому что низя достучаться до сервера и потом закрылась, или же продолжила работу в оффлайн режиме, то виноваты, извените сетевики.


Если падение сети предусмотрено, тогда ничего не "крешится".

добавлено спустя 5 минут:
Minx :
А где-то его повесить нельзя? Подозрение.


Вопрос архитектуры Улыбка Конечно, можно везде. Но не везде нужно.


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


У вас доводы программиста на ассемблере.

Для сложных систем есть уровни абстракции, например. Глупо рассматривать сложные системы как нечто монолитное.
_________________
"The gods do not protect fools.
Fools are protected by more capable fools."

Larry Niven

Последний раз редактировалось: Vostok-1 (22:02 17-12-2015), всего редактировалось 1 раз
    Добавлено: 22:02 17-12-2015   
Minx
 978 EGP


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

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

Vostok-1 :
Для сложных систем есть уровни абстракции, например. Глупо рассматривать сложные системы как нечто монолитное.

No Silver Bullet.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 22:21 17-12-2015   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Воу, воу, спокойнее, товарищи! Гы-гы
ТехноМаг :
Возьмем случай, если при падении сети программа вываливается с некоторой стандартной ошибкой. Тут, согласен, виноват программист, потому как непредсмотрел такую возможность.

Если на проекте -дцать программистов, то есть ненулевая вероятность скажем несогласования фронт- и бэкэнда после очередных изменений. Всех в Индию?..

ну и само собой, если что-то крэшится - это что-то нужно чинить, однако что делать, если оно не крешится в тестовой среде разработчика? У него к примеру шесть потоков, всё работает. У конечного пользователя внезапно крэшится один из потоков, например память у него битая...

Или вот такой вариант - файловая система не отзывается, потому что занята другим процссом наглухо или вообще является абстракцией, за которой скрыта сетевая пересылка. А у нас асинхронное чтение ресурсов...
_________________
Трещит земля как пустой орех
Как щепка трещит броня

Последний раз редактировалось: Guest (22:31 17-12-2015), всего редактировалось 1 раз
    Добавлено: 22:30 17-12-2015   
Vostok-1
 155 EGP


Репутация: 24
Сообщения: 394

Зарегистрирован: 15.08.2015
Не обижайтесь, бога ради! Извините меня.

Какой сложности должна быть система, чтобы вы со вниманием отнеслись к моим доводам?
_________________
"The gods do not protect fools.
Fools are protected by more capable fools."

Larry Niven
    Добавлено: 22:33 17-12-2015   
Guest
 2075 EGP


Модератор
Рейтинг канала: 5(167)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Vostok-1 :
Какой сложности должна быть система, чтобы вы со вниманием отнеслись к моим доводам?

Чужой движок?
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 22:36 17-12-2015   
ТехноМаг
 360 EGP


Рейтинг канала: 2(19)
Репутация: 93
Сообщения: 2510
Откуда: Кронштадт
Зарегистрирован: 09.04.2007
Guest :
то есть ненулевая вероятность скажем несогласования фронт- и бэкэнда после очередных изменений. Всех в Индию?..


Если из дцать, то
1) у них есть надмозг
2) есть ТЗ, где расписано что и как.
3) Есть репа, где видно кто, что и когда сделал.

добавлено спустя 3 минуты:
Vostok-1 :
Глупо рассматривать сложные системы как нечто монолитное.


Глупо, и вредно для здоровья.
Vostok-1 :
Для сложных систем есть уровни абстракции


С абстракциями тоже можно перемудрить так, что без поллитра не разберешься. UE4 в пример.
_________________
(Л)"Алекс, я живу уже почти 200 лет. но как видишь, выгляжу я всего на 20. И это не единственное отличие меня от людей."

Последний раз редактировалось: ТехноМаг (23:14 17-12-2015), всего редактировалось 1 раз
    Добавлено: 23:14 17-12-2015   
Sh.Tac.
 151 EGP


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

Зарегистрирован: 27.07.2005
Minx :
Твой тред открывает файл, держит коннект к БД, открывает сокет по сети, аллоцирует память
коннект к БД перебор, такие вещи надо делать процессами, вот грохнуть процесс легко, ещё легче он падает сам, и ось сама все почистит

а зависон треда это стопудово deadlock, возможно проще убить программаста, чем тред, не знаю, никогда таким не занимался Улыбка
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 23:38 17-12-2015   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
ТехноМаг :
Если треед крашится, то к нему применяется правило 3х попыток.

Сорри, очень ценю дальнейшие фантазии на тему, но если поток программы полезет писать не свою память (например) - ОС грохнет всё приложение. Что за три попытки и почему их три, я вообще не представляю.
Возможно, ты говоришь о каких-то системах более сложных чем поток. И "креш" у тебя это ошибка, которую можно обработать. Тогда может быть, я не знаю. Я говорю о крешах и дедлоках.
_________________
MOV topka, C++
    Добавлено: 23:50 17-12-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 6(328)
Репутация: 135
Сообщения: 10527
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Vostok-1 :
Какой сложности должна быть система, чтобы вы со вниманием отнеслись к моим доводам?

Изначально ваш довод я интерпретировал именно таким образом:
Minx :
Если же вы хотите сказать, что все ваши AI простые и предсказуемые как пробка, и должны такими быть, то это тоже мнение (вполне обоснованное в геймдеве, кстати).

Т.е. в геймдеве (афаик) требования такие, что код должен быть безопасно быстромодифицируем, а для систем большой сложности это невозможно в принципе. В связи с этим в индустрии все сложности упрощают, особенно потому, что они чаще всего не нужны (например, обычный игрок вполне хавает простой AI, и AI уровня Deep Blue не нужен).
Если сложность возрастает, то у любой технологии и у любого программиста есть предел прочности, после которого обвинять кого-то в национальной принадлежности бессмысленно. И для оседлания более сложных систем с приемлимым уровнем ошибок нужны совсем другие подходы.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 00:37 18-12-2015   
Vostok-1
 155 EGP


Репутация: 24
Сообщения: 394

Зарегистрирован: 15.08.2015
Вы должны понимать, что скрипты - это просто дополнительный уровень абстракции. Не более.

добавлено спустя 1 минуту:
Minx :
обвинять кого-то в национальной принадлежности бессмысленно


Про индусов - это, в общем-то, очень популярная шутка. В нашей среде. Улыбка
_________________
"The gods do not protect fools.
Fools are protected by more capable fools."

Larry Niven

Последний раз редактировалось: Vostok-1 (07:51 18-12-2015), всего редактировалось 1 раз
    Добавлено: 07:51 18-12-2015   
Sh.Tac.
 151 EGP


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

Зарегистрирован: 27.07.2005
Jurec :
рассматриваете многопоточность как два потока с WatchDog (омг, откуда вы это взяли - это ж эмбедед какой-то)
не про мультитрединг, но про ватчдог, оказывается есть такой для GPU
_________________
This is what you get ...
(c) Radiohead
    Добавлено: 19:46 18-12-2015   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
я ж и говорю - что эмдедед уже какой-то пошел
_________________
MOV topka, C++
    Добавлено: 01:59 19-12-2015   
Vostok-1
 155 EGP


Репутация: 24
Сообщения: 394

Зарегистрирован: 15.08.2015
Ничего не эмбедед. У меня даже целый класс-хелпер был. Создаётся поток, хранится в списке, время от времени дёргает коллбэк, переданный при создании. Если не дёргает - его убивают по тайм-ауту.

Если писать потоки с учётом этого - всё работает вполне-вполне.
_________________
"The gods do not protect fools.
Fools are protected by more capable fools."

Larry Niven

Последний раз редактировалось: Vostok-1 (09:18 19-12-2015), всего редактировалось 1 раз
    Добавлено: 09:18 19-12-2015   
Jurec
 348 EGP


Ведущий раздела
Рейтинг канала: 4(76)
Репутация: 102
Сообщения: 1441 Заблокирован
Откуда: Seattle
Зарегистрирован: 25.02.2006
Единственное применение такого может быть когда у тебя в потоке исполняется что-то неизвестное в компайл тайме. Иначе - это просто говнокод
_________________
MOV topka, C++
    Добавлено: 14:28 19-12-2015   
Канал Игры Мечты: «Multithreading в играх»
На страницу: Пред.  1, 2, 3  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Жена в малых дозах - лекарство. В больших - ЯД! (так думает Mercenary)

  » Multithreading в играх | страница 2
Каналы: Новости | 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