Я обычно избегаю подхода дизайна, подразумеваемого использованием Andrew термина "основа Вашего приложения". Под чем я подразумеваю, это - то, что я думаю, что необходимо постараться не смешивать слишком много вещей в центральной части - хорошее проектирование программы обычно включает разделение функциональности "проблемной областью".
делегат А объект является объектом, который уведомляется, когда объект, с которым он подключен, достигает определенных событий или состояний. В этом случае Делегат Приложения является объектом, который получает уведомления, когда объект UIApplication достигает определенных состояний. Во многих отношениях это - специализированный непосредственный Шаблон "наблюдатель".
Это означает, что "проблемная область" для AppDelegate обрабатывает специальные состояния UIApplication. Самые важные из них:
необходимо постараться не помещать другую функциональность в AppDelegate, так как они действительно не принадлежат там. Такая другая функциональность включает:
Многие люди смешивают эти вещи в свой AppDelegate, потому что они ленивы, или они думают, что AppDelegate управляет целой программой. Необходимо постараться не централизовать в AppDelegate, так как он пачкает проблемные области в приложении и не масштабируется.
Симуляторы физики 3D-игр (например, на xbox360) обычно работают с фиксированной частотой, независимо от частоты кадров. Это связано с тем, что физика слишком сложна для аналитического моделирования, поэтому вы выполняете числовые приближения, поэтому вам необходимо детерминированно синхронизировать ошибки. Дополнительным преимуществом является то, что частота кадров не связана с производительностью физики, поэтому вы можете обновлять физику с частотой 5 Гц, интерполировать и т. Д.
Таким образом, модель, которую вы описываете, именно так, как это делают профессионалы.
В этом примере вычисление позиций должно быть завершено до розыгрыша мяча - так что асинхронная обработка не имеет смысла?
Сам по себе p5 очень синхронен - есть один центральный draw метод, который выполняет все рисование.
Также веб-воркеры не могут получить доступ к dom, поэтому их нельзя использовать для рисования.
Для более сложных приложений на основе событий, таких как игра может быть использована веб-работниками.
Эта идея напоминает мне идею интеграции очереди задач Google в Google App Engine.
http://code.google.com/appengine/docs/python/taskqueue/
Это может вам помочь.
Для моей асинхронной настольной онлайн-игры я собираюсь реализовать систему, в которой история сообщений сохраняется, чтобы игроки могли видеть, что произошло, когда их очередь не была. Каждому происходящему будет присвоен уникальный идентификатор, и всякий раз, когда игроку отправляются какие-либо сообщения, он отслеживает последнее из полученных. Затем, когда они вернутся, они могут увидеть быструю анимацию всего, что произошло с последнего полученного сообщения.
И если я дохожу до точки, когда мне нужно, чтобы сервер что-то обрабатывал, пока клиент не ждет, я буду использовать очередь задач
Подумать только ... но в обработке сигналов то, что вы делаете, - это частота дискретизации, которая нарезает аналоговую сигнал в цифровую информацию. Главное - сохранить ровно столько сигнала, чтобы воссоздать оригинал. Подобно тому, как MP3 копируются из музыкальных файлов с использованием 128, 192 и т. Д.
Таким образом, если вы перемещаете мяч математически определяемым способом (т.е. по параболе), вы сможете преобразовать путь в набор координаты, приближающие аналоговый путь. Эти координаты вычислить гораздо быстрее, чем полный путь. Его также можно было бы настроить (изменив частоту дискретизации).
Я знаю, что это не отвечает ни на один из ваших вопросов о Processing.js или Web Workers. Просто идея, которая поможет вам выполнять эти вычисления более эффективно.