|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.12.2012, 15:35 | #1 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 360
|
Одновременное выполнение действий
Здравствуйте!
Меня интересует вопрос каким образом можно реализовать одновременное выполнение какого-либо действия? Т.е. например игры, там в один момент может происходить передвижение игрока, врагов, стрельба и т.д. Так вот как это организовано? На ум приходит, лишь только многопоточность, но неужели даже приставки наподобие Денди тоже ее поддерживали? Заранее спасибо за ответ! |
21.12.2012, 15:51 | #2 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
но неужели даже приставки наподобие Денди тоже ее поддерживали?
нет, но это и не обязательно. Физики не было, AI - примитивный... все объекты расчитывались и перемещались в главном цикле. Потом все это рисовалась, используя различные техники анимации и имеющегося оборудования, чтобы пользователь видел только конечный результат.
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
21.12.2012, 15:54 | #3 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Для "истинно-одновременных" действий нужно больше одного процессора. А на одном процессоре в один момент времени выполняется (если не усложнять) одна операция. Но можно разбить игру на "ходы"; "ход" состоит из действий всех объектов, изменения их положения, чтения того, какие кнопки нажаты пользователем и перерисовки картинки на экране. Повторять 30-60 раз в секунду.
|
21.12.2012, 15:54 | #4 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 360
|
Но с отрисовкой же нужно немалое время или же им процессора и оперативной памяти для этого вполне хватает?
И тогда получается, что сейчас все делают с потоками? Abstraction, а что если эти самые функции не могут выполнятся такое кол-во раз в секунду. Не думаю, что даже обычная отрисовка будет длится миллисекунды. Последний раз редактировалось Stilet; 21.12.2012 в 16:35. |
21.12.2012, 15:59 | #5 | ||
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
Цитата:
Сначала были слайд-шоу в высоком разрешении и неспешные анимации в низком (Darklands), потом освоили технику "задника", когда есть изображение-подложка, поверх которого можно быстро перерисовывать небольшие объекты (Loom). Соответственно, техника объектов-спрайтов вошла в моду (см., например, Might&Magic VIII - там же одни плоские спрайты, но эффективным образом трёхмерный мир). Всё это потихоньку развивалось вместе с "железом", стало возможным рисовать трёхмерные модели из небольшого количества треугольников, которые можно было "быстро" шевелить (Final Fantasy VII). Ну, и дальше уже потихоньку отходили от подготовленных рисунков и прочего в сторону генерирующихся в реальном времени, а "задники" использовались только на самом краю сцены (как пример, Mass Effect: в Цитадели видно противоположную её часть над головой, но там уже не используются трёхмерные модели - задник). То есть, даны вычислительные ресурсы и дана необходимость обновлять картинку с заданной частотой. А как совместить одно с другим и с амбициями дизайнера - это уже задача программиста. Последний раз редактировалось Stilet; 21.12.2012 в 16:40. |
||
21.12.2012, 16:09 | #6 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 360
|
Abstraction, огромное Вам спасибо за отличный ответ!
|
21.12.2012, 16:40 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Кстати, аркадные игры восьмидесятых вообще в текстовом режиме.
|
10.01.2013, 06:26 | #8 |
Форумчанин
Регистрация: 26.01.2009
Сообщений: 360
|
Хм, у меня появился еще вопрос по данной теме)) А как же микроконтроллеры? Там нет возможности использовать многопоточность, но однако реализация обработки нескольких действий имеется. Как же там?
|
10.01.2013, 06:41 | #9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
тае же как и в привычном одноядерном проце. псевдопараллельность.
а где то может и все в одном цикле. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |