Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2012, 15:35   #1
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 360
По умолчанию Одновременное выполнение действий

Здравствуйте!
Меня интересует вопрос каким образом можно реализовать одновременное выполнение какого-либо действия?
Т.е. например игры, там в один момент может происходить передвижение игрока, врагов, стрельба и т.д. Так вот как это организовано? На ум приходит, лишь только многопоточность, но неужели даже приставки наподобие Денди тоже ее поддерживали?
Заранее спасибо за ответ!
koljsch вне форума Ответить с цитированием
Старый 21.12.2012, 15:51   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,120
По умолчанию

но неужели даже приставки наподобие Денди тоже ее поддерживали?

нет, но это и не обязательно.
Физики не было, AI - примитивный...
все объекты расчитывались и перемещались в главном цикле. Потом все это рисовалась, используя различные техники анимации и имеющегося оборудования, чтобы пользователь видел только конечный результат.
Rififi вне форума Ответить с цитированием
Старый 21.12.2012, 15:54   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Для "истинно-одновременных" действий нужно больше одного процессора. А на одном процессоре в один момент времени выполняется (если не усложнять) одна операция. Но можно разбить игру на "ходы"; "ход" состоит из действий всех объектов, изменения их положения, чтения того, какие кнопки нажаты пользователем и перерисовки картинки на экране. Повторять 30-60 раз в секунду.
Abstraction вне форума Ответить с цитированием
Старый 21.12.2012, 15:54   #4
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 360
По умолчанию

Но с отрисовкой же нужно немалое время или же им процессора и оперативной памяти для этого вполне хватает?
И тогда получается, что сейчас все делают с потоками?

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

Последний раз редактировалось Stilet; 21.12.2012 в 16:35.
koljsch вне форума Ответить с цитированием
Старый 21.12.2012, 15:59   #5
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Но с отрисовкой же нужно немалое время или же им процессора и оперативной памяти для этого вполне хватает?
Иногда не очень хватает, тогда пытаются ускорять разными приёмчиками. Но деваться некуда: меньше 20 кадров в секунду в игре реального времени рисовать нехорошо (если только это не концептуальный ход). То есть, действительно, основная проблема при этом с глазами, а не с пальцами или действиями игровых объектов: если можем с такой скоростью перерисовывать картинку, то рассчитать движение - уже семечки.

Цитата:
Abstraction, а что если эти самые функции не могут выполнятся такое кол-во раз в секунду. Не думаю, что даже обычная отрисовка будет длится миллисекунды.
Могут и выполняются. Что Вы, вообще, понимаете под "обычной" отрисовкой?
Сначала были слайд-шоу в высоком разрешении и неспешные анимации в низком (Darklands), потом освоили технику "задника", когда есть изображение-подложка, поверх которого можно быстро перерисовывать небольшие объекты (Loom). Соответственно, техника объектов-спрайтов вошла в моду (см., например, Might&Magic VIII - там же одни плоские спрайты, но эффективным образом трёхмерный мир). Всё это потихоньку развивалось вместе с "железом", стало возможным рисовать трёхмерные модели из небольшого количества треугольников, которые можно было "быстро" шевелить (Final Fantasy VII). Ну, и дальше уже потихоньку отходили от подготовленных рисунков и прочего в сторону генерирующихся в реальном времени, а "задники" использовались только на самом краю сцены (как пример, Mass Effect: в Цитадели видно противоположную её часть над головой, но там уже не используются трёхмерные модели - задник).

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

Последний раз редактировалось Stilet; 21.12.2012 в 16:40.
Abstraction вне форума Ответить с цитированием
Старый 21.12.2012, 16:09   #6
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 360
По умолчанию

Abstraction, огромное Вам спасибо за отличный ответ!
koljsch вне форума Ответить с цитированием
Старый 21.12.2012, 16:40   #7
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Кстати, аркадные игры восьмидесятых вообще в текстовом режиме.
waleri вне форума Ответить с цитированием
Старый 10.01.2013, 06:26   #8
koljsch
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 360
По умолчанию

Хм, у меня появился еще вопрос по данной теме)) А как же микроконтроллеры? Там нет возможности использовать многопоточность, но однако реализация обработки нескольких действий имеется. Как же там?
koljsch вне форума Ответить с цитированием
Старый 10.01.2013, 06:41   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

тае же как и в привычном одноядерном проце. псевдопараллельность.
а где то может и все в одном цикле.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AJAX.Выполнение нескольких действий PR0Z0N JavaScript, Ajax 3 08.12.2011 18:00
Выполнение действий по таймеру Terran Общие вопросы Delphi 3 25.09.2011 16:02
одновременное выполнение разных процедур в одном файле? gramp Microsoft Office Excel 15 25.03.2011 12:15
Авторизация и выполнение действий. Rock'n'rolla Работа с сетью в Delphi 13 25.01.2010 21:05
выполнение нескольких действий??? zzzzz HTML и CSS 2 11.12.2008 11:59