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


Оставить комментарий
Еще я заметил, что в некоторых играх, после нажатия 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)Не забудем
Угу, освобождать надо D3DPOOL_DEFAULT. Я сейчас использую D3DPOOL_DEFAULT и D3DPOOL_MANAGED, периодически экспериментирую, смотрю что лучше для чего походит. Alt+Tab еще и от этого ломается.
Странно, обрабатывается же все одинаково… Прослежу за этим.
Оставить комментарий