Как разделить графику и игровую логику в WPF? - PullRequest
2 голосов
/ 04 июля 2010

Я создаю игру в WPF, и мне интересно, будет ли это разумным решением разделить игровую логику и графику на разные темы.

Моя игровая логика работает пошагово (один шаг занимает около 30 мс).

Я очень боюсь, что блокировки снизят производительность.

Что ты думаешь? У кого-нибудь есть опыт с этим?

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 июля 2010

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

0 голосов
/ 04 июля 2010

Это действительно зависит от того, сколько вы делаете. Блокировки не проблема, если вы не глупы программировать логику обновления.

Обычно вы идете клиент / сервер внутри. У пользовательского интерфейса есть своя собственная модель, которую он «рендерит», у логики своя собственная невизуальная модель.

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

Затем WPF - по срокам или по триггеру - извлекает обновления из очереди и обновляет модель, внося визуальные изменения в процессе работы.

Работает довольно хорошо в зависимости от "игры", которую вы делаете. Моя «игра» - это приложение для финансовой торговли, работающее почти так же (хотя у меня есть X визуальных очередей, поскольку на нескольких экранах есть свой собственный поток пользовательского интерфейса).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...