Winding Trail project

 

Переключение по Alt+Tab

Апрель 23, 2006, 21:43
Автор:
Alena
Категория: Программист

Если игрок хочет свернуть окно полноэкранной игры и срочно заняться чем-то другим, он может нажать Alt+Tab, игра тогда теряет фокус, а игрок переходит к вновь выбранному приложению. Возможны и другие случаи потери фокуса. Например, на компьютере Аська настроена таким образом, что пришедшее сообщение забирает фокус на себя. Программист должен обработать это событие.

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

Задача эта не сложная, но муторная, поэтому в некоторых играх с ней не заморачиваются и применяют приемы различной степени честности, вплоть до блокирования реакции на нажатие Alt+Tab. Я считаю, что это нехорошо по отношению к игроку, и наша игра очень постарается на Alt+Tab отреагировать достойно. То есть восстановить всё как было.

При добавлении новых фич я поломала корректное восстановление после нажатия Alt+Tab, а теперь вот починила. Буду поглядывать на него периодически, чтобы оно не сломалось вновь.


Комментариев: 3
Оставить комментарий
Автор: Alexander (04.24.06, Апрель 24, 2006, 10:11)

Еще я заметил, что в некоторых играх, после нажатия Alt+Tab и последующего возвращения в игру, звук не всегда возвращается на свое место. Иногда громкость сбрасывается на значение по умолчанию, иногда вообще не восстанавливается. Вообщем про звук не забывайте ;)

Автор: tensor (04.24.06, Апрель 24, 2006, 10:17)

“надо освободить ресурсы игры, от него зависящие.”

Там же вроде зависит от типа ресурсов (d3d_pool_default, d3d_managed, d3d_systemmem). Некоторые можно не высвобождать.

Кстати, звук не забудьте выключать! А то в Метеоре (по крайней мере, в той версии, которую мне Вика давала, может, потом и починили) музыка постоянно в свернутой играла ;(

Ну и совсем уж занудство: иногда игры корректно обрабатывают Alt-Tab, но валятся если вызвать по Ctrl-Alt-Del Task Manager и переключить на игру (через task bar или manager). Имхо, все это мелочи, но может, заинтересуетесь и проверите ;)

Автор: Alena (04.24.06, Апрель 24, 2006, 14:53)

Вообщем про звук не забывайте

Не забудем :-)

Там же вроде зависит от типа ресурсов (d3d_pool_default, d3d_managed, d3d_systemmem).

Угу, освобождать надо D3DPOOL_DEFAULT. Я сейчас использую D3DPOOL_DEFAULT и D3DPOOL_MANAGED, периодически экспериментирую, смотрю что лучше для чего походит. Alt+Tab еще и от этого ломается.

иногда игры корректно обрабатывают Alt-Tab, но валятся если вызвать по Ctrl-Alt-Del Task Manager

Странно, обрабатывается же все одинаково… Прослежу за этим.



Оставить комментарий

(обязательно)

(обязательно)


Переводы строк автоматические, e-mail никогда не показывается, разрешен HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>