Действительно ли возможно подключить два iPhone по WAN для оперативного игрового опыта?

Я неправильно использую многопроцессорную библиотеку Python?

blockquote>

Неверно? Нет. Неэффективно? Да.

Помните, что многопроцессорная обработка создает совместимые, но в остальном независимые экземпляры Python. Думайте о них как о работниках на фабрике или о друзьях, работающих на большой работе.

Если только один человек работает над проектом, то один человек может свободно передвигаться по заводскому цеху, подбирать инструмент, использовать его, опускать, перемещать куда-то еще, поднимать следующий инструмент и так далее. Добавьте второго человека - или, что еще хуже, больше людей, возможно, даже сотни людей, - и этот человек должен теперь координировать: если какая-то область является общей, или какой-то инструмент используется, Боб не может просто взять что-то, он должен попросить Алису сначала, если она с этим покончила.

Объект Manager - это общая оболочка многопроцессорной обработки Python для совместного использования. Помещение переменных в Manager Namespace означает , что они являются общими, поэтому автоматически проверяйте их, прежде чем использовать их . (Точнее, они хранятся в одном месте - в одном процессе - и доступны или изменены из других через прокси.)

Здесь вы сделали метафорический эквивалент замены: «Боб: считайте так быстро, как можете» "с" Боб: постоянно прерывать Алису, чтобы спросить, считает ли она, затем считать; Алиса: считать, но постоянно прерываться Бобом. " Боб и Алиса теперь проводят большую часть своего времени, разговаривая друг с другом, а не считая.

Как указано в , в документации говорится :

... при параллельном программировании обычно лучше избегать использования общего состояния, насколько это возможно. Это особенно верно при использовании нескольких процессов.

blockquote>

(начинается с фразы «как упомянуто выше», но выше не упоминается!).

Существует множество стандартных приемов, таких как пакетная обработка для выполнения большой работы между совместным использованием событий или использование общей памяти для ускорения совместное использование - но с общей памятью вы вводите необходимость заблокировать элементов.

8
задан Jamey McElveen 13 April 2009 в 19:54
поделиться

3 ответа

Да, iPhone может общаться с Интернетом. Однако вы столкнетесь с теми же проблемами, что и настольные клиенты, включая внутреннюю задержку в сети и проблемы прохождения NAT. Кроме того, вы будете иметь дело со стандартными проблемами встраиваемых систем, то есть вы не сможете обложить ЦП и ожидать, что производительность сети останется высокой. Решения те же, что и на настольном компьютере, например, наличие центрального «игрового сервера», который устраняет проблемы прохождения NAT и отодвигает определение «попадания» от клиентов.

7
ответ дан 5 December 2019 в 20:18
поделиться

Также взгляните на GameKit в новом SDK

1
ответ дан 5 December 2019 в 20:18
поделиться

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

По крайней мере, это одна из вещей, которые я хочу сделать.

Если вы Нужно играть через Интернет, вы не сможете легко обойти проблемы @John Douthat, упомянутые выше. Для таких игр, как Go (см. Tetsuki для примера) и Chess, это не проблема, но шутер (obv) будет.

И, нет, я не имею отношения к Whiteboard (или к тому же с Tetsuki), я просто думаю, что технология крутая.

0
ответ дан 5 December 2019 в 20:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: