IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
Есть ли легкий способ при ctrl+alt+del..., И меньшей кровью alt+tab
Fantarg
сообщение 26.7.2013, 17:47
Сообщение #1


Активный участник
***

Группа: Пользователи
Сообщений: 187
Регистрация: 20.7.2008
Из: Ижевск
Пользователь №: 10590



Суть темы в поиске меньшей крови в реализации на стабильность при активации alt+tab и ctrl+alt+del
Как быть?

Есть проблема вылетов и есть способ устранить вылеты:
Если делать не полноэкранное окно, а именно фулскрин, то нужно каждый раз, когда разворачивается окно - перезагружать изображения.

Минусы:
1) Если перезагружать каждый раз при alt+tab, тогда увеличивается задержка-пауза при ожидание вновь игры.
2) Если же "зафиксировать" это безобразие и не париться с перезагрузкой контента, тогда можем получить такое явление (растянутость):
http://area.mediahouse.ru/index.php?act=at...post&id=179

Я как понимаю иных и нет вариантов? Или есть плагины или другие моменты?
Тогда, если ничего нет, вопрос: Что предпочтительные выбрать, какое меньшее зло на ваш взгляд?
И что бы вы сами предпочли, отдавая издателю? То есть, при желании не потерять много потенциальных потребителей, которые не любят ждать загрузки, выбрать второй вариант (который был изначально, еще в демо-версии игры "15 Defense")?

#Кстати, комбинация ctrl+alt+del все равно вылетает без фуллскрин:( Упс...

==
З.Ы. По прошлому:
Цитата(KiD @ 25.7.2013, 15:06) *
В общем, пересоздай все каталоги игры, выброси старую глючную музыку, перепакуй в новый архив и, думаю, будет счастье.

В принципе, так все и вышло:) Спасибо за помощь и за уделенное время!


--------------------
_Мертвые знают все...
Перейти в начало страницы
 
+Цитировать сообщение
Илья
сообщение 27.7.2013, 12:24
Сообщение #2


Активный участник
***

Группа: Пользователи
Сообщений: 137
Регистрация: 6.4.2009
Из: Россия г.Смоленск
Пользователь №: 65577



Цитата
Я как понимаю иных и нет вариантов? Или есть плагины или другие моменты?

На Delphi, C++ и VB с использованием чистого DX приходилось вручную отлавливать событие "выход из монопольного режима" и останавливать sync (иначе dx мог либо вылететь, либо выдать окно отладки), по возврату "монопольного приоритета" приложению - продолжать sync - тогда проблем не было, как это учли в DB - загадка... но руками можно сделать так же, хоть и придётся дополнить своими внешними хуками...
Суть в том, чтобы не дать DB работать с sync и fastsync в момент сворачивания windowstate или выхода приложения из "монопольного режима".

Если правильно понял проблему...


--------------------
Проекты ArtMetal - немного музыкального творчества))
Перейти в начало страницы
 
+Цитировать сообщение
Agny
сообщение 27.7.2013, 13:03
Сообщение #3


Активный участник
***

Группа: Пользователи
Сообщений: 267
Регистрация: 10.1.2013
Из: Kazahstan,Pavlodar
Пользователь №: 65718



Цитата
Суть темы в поиске меньшей крови в реализации на стабильность при активации alt+tab и ctrl+alt+del


Я вообще не понимаю зачем это нужно?
Не надо баловаться этими клавишами и не будет проблем...
Перейти в начало страницы
 
+Цитировать сообщение
Илья
сообщение 27.7.2013, 13:18
Сообщение #4


Активный участник
***

Группа: Пользователи
Сообщений: 137
Регистрация: 6.4.2009
Из: Россия г.Смоленск
Пользователь №: 65577



Не в клавишах дело, а в том, что DX теряет окно - некуда рисовать, поэтому приложение "страдает"... собственно это есть обязанность разработчика учесть и исправить ошибки))


--------------------
Проекты ArtMetal - немного музыкального творчества))
Перейти в начало страницы
 
+Цитировать сообщение
Agny
сообщение 27.7.2013, 13:28
Сообщение #5


Активный участник
***

Группа: Пользователи
Сообщений: 267
Регистрация: 10.1.2013
Из: Kazahstan,Pavlodar
Пользователь №: 65718



Цитата
Я как понимаю иных и нет вариантов? Или есть плагины или другие моменты?


Существует только одна библиотека связанная с изображением - это Change Display Settings - CDSDLL. А так больше ничего не видел.
Перейти в начало страницы
 
+Цитировать сообщение
Kolyanoid
сообщение 28.7.2013, 18:54
Сообщение #6


. . .-= SPK Games =-. . . Модератор v3.2 alpha . . Linuxoid v0.5
***

Группа: Администраторы
Сообщений: 3521
Регистрация: 1.9.2004
Из: Москва
Пользователь №: 15



Я скорее всего отстал от жизни, но вроде можно попробовать"полноэкранный оконный режим".
Суть его в том, что приложение рисуется в окне, но оно без оформления и во весь экран, поверх всех остальных окон. Т.о., при сворачивании ничего не будет пропадать, кроме того эта операция будет проходить быстрее, чем если выходить из обычного фулскрина.
Из недостатков точно помню - разрешение экрана в приложении должно быть равно разрешению системному, иначе будет что-то страшное.

Насколько этот режим совместим с виндами после XP, я не в курсе.


--------------------
Мои координаты:
  • Jabber: kolyanoid@jabber.ru
  • Почта: kolyanoid [at] mail333.com
  • Вконтакте: id64896
«Есть только две бесконечные вещи: Вселенная и глупость. Хотя насчет Вселенной я не уверен». (Альберт Эйнштейн)
Перейти в начало страницы
 
+Цитировать сообщение
Agny
сообщение 31.7.2013, 16:17
Сообщение #7


Активный участник
***

Группа: Пользователи
Сообщений: 267
Регистрация: 10.1.2013
Из: Kazahstan,Pavlodar
Пользователь №: 65718



Цитата(Kolyanoid @ 28.7.2013, 21:54) *
Я скорее всего отстал от жизни, но вроде можно попробовать"полноэкранный оконный режим".
Суть его в том, что приложение рисуется в окне, но оно без оформления и во весь экран, поверх всех остальных окон. Т.о., при сворачивании ничего не будет пропадать, кроме того эта операция будет проходить быстрее, чем если выходить из обычного фулскрина.
Из недостатков точно помню - разрешение экрана в приложении должно быть равно разрешению системному, иначе будет что-то страшное.

Насколько этот режим совместим с виндами после XP, я не в курсе.


Я этот режим никогда не использую, потому что заметил, что картинку растягивает на весь экран хоть какой у тебя монитор( обычный или широкоформатный). Пропорции не будут соблюдаться. dry.gif
Перейти в начало страницы
 
+Цитировать сообщение
Fantarg
сообщение 31.7.2013, 17:22
Сообщение #8


Активный участник
***

Группа: Пользователи
Сообщений: 187
Регистрация: 20.7.2008
Из: Ижевск
Пользователь №: 10590



Цитата(Kolyanoid @ 28.7.2013, 18:54) *
Из недостатков точно помню - разрешение экрана в приложении должно быть равно разрешению системному, иначе будет что-то страшное.

Цитата(Agny @ 31.7.2013, 16:17) *
Я этот режим никогда не использую, потому что заметил, что картинку растягивает на весь экран хоть какой у тебя монитор( обычный или широкоформатный). Пропорции не будут соблюдаться.

В демо-версии мы так и поступили, вот даже получили комментарий:
http://area.mediahouse.ru/index.php?s=&...ost&p=32932

Последний раз мы, так же, решили вернуться к такому, чтобы решить требование от издателя по исправлению бага со свертыванием экрана. Но ситуация с нажатием трех клавиш ctrl+alt+del не решена до сих пор. Происходит вылет из игры.
Издатель предложил вариант запретить нажатие трех клавиш, но это нереально на ДБПро (я думаю об одном только способе, но еще не проверял)...
Пока пробуем наладить перезагрузку контента, при активации "багнутых" клавиш.
В общем, отпишусь, если что продвинется.

==
Кстати, по поводу Change Display Settings - CDSDLL, не получилось (хотя все делал по инструкции и по разному экспериментируя), вылетает сразу или монитор кричит о нарушении частоты (ну что-то там про герцы вроде).
Не стал мучить себя и dll'ку:)


--------------------
_Мертвые знают все...
Перейти в начало страницы
 
+Цитировать сообщение
Big V.
сообщение 3.8.2013, 16:43
Сообщение #9


Активный участник
***

Группа: Пользователи
Сообщений: 33
Регистрация: 9.10.2011
Пользователь №: 65697



В общем да...
Разобрался с этим:)

Во первых, хочу предупредить людей о различиях windowed, full window и fullscreen.

Окно типа widnowed - это обычное окно с рамкой и т.д. и эму пофиг какой режим экрана поддерживает монитор.
Работает всегда, в этом и вся прелесть если не знаешь какой режим будет ехать на определенном мониторе.
Есть ещё один плюс. Командой set display mode можно установить само разрешение рендера, а уже потом, та текстура, в которую все рисуется - будет выведена в ваше окно в соответствии с эго размерами.
Т.е. можно установить режим 1600х1200 и размеры окна 800х600 и все будет ок.

Окно типа fullscreen - это чистый фулскрин. При переходе в этот режим, экран меняет разрешение и издает характерный эффект(а иногда и звук:)). Хорошее в этом то, что разрешение будет точно таким, как эго задавали. Т.е. при правильной подборке текстур можно не парится о артефактах и непопаданиях текселя в пиксель, в общем можно сделать QUALITY. Плохо то, что некоторые разрешения не поддерживаются монитором или видеокартой и тогда будет краш... Ну и при переходе между режимами - все текстуры удаляются и их нужно грузить заново(только текстуры, не объекты).

А вот теперь full window. Это не фулскрин! И не привычное окно. Это окно, которое растянули на весь экран. Причем размеры этого экрана - это размеры десктопа. А вот уже размер текстуры, в который будет проведен рендер - тут равен тому, который задавался в set display mode. Т.е. если режим у вас 1024х768, а десктоп у юзера 1280х1024, то ждите беды, т.к. большинство вашего качества, для которого вы подгоняли текстуры и размеры спрайтов сойдут на нет. Т.е. рендер будет проводится в текстуру 1024х768, а уже она будет натянута на экран и перерисована в разрешении 1280х1024(т.е. растянута со всемы вытекающими артефактами). Да, это плохо(а если думаете, что нет - когда то поймете почему).
Но есть и плюс, нету 1-2 секундной задержки при переходе в другой режим, а так же не удаляются изображения при сворачивании окна.

А теперь о самой проблеме...
Какой бы режим не был выставлен у вас, при комбинации Ctrl+Alt+Delete(по крайней мере на Вин7) - идет смена режима экрана и все ваши текстуры отправляются в dev/null. Тут никаких трюков не проделаешь и есть только один более-менее надежный вариант.
Вариант этот - перезагрузить текстуры:) Но грузить желательно сразу после команды SYNC в основном цикле(т.к. она отвечает за перерисовку/режимы и т.д.). Еще тут можно схитрить... Если набор текстур у вас фиксированный и новые по мере игры не подгружаются - можно запросто выделить загрузку текстур в отдельную функцию и проверять существование всего лишь одной текстуры. Если нет - грузить все(т.к. удалиться могла только при смене режимов).

Вот собственно и все...
Перейти в начало страницы
 
+Цитировать сообщение
Agny
сообщение 3.8.2013, 18:32
Сообщение #10


Активный участник
***

Группа: Пользователи
Сообщений: 267
Регистрация: 10.1.2013
Из: Kazahstan,Pavlodar
Пользователь №: 65718



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


Всё это, конечно, интересно, но как ты собираешься грузить текстуры 3D моделей ? Ведь если у 3D модели больше одной текстуры, они отдельно командой не грузятся, а подхватываются при загрузке модели.
Перейти в начало страницы
 
+Цитировать сообщение
Big V.
сообщение 3.8.2013, 21:45
Сообщение #11


Активный участник
***

Группа: Пользователи
Сообщений: 33
Регистрация: 9.10.2011
Пользователь №: 65697



Цитата(Agny @ 3.8.2013, 18:32) *
Всё это, конечно, интересно, но как ты собираешься грузить текстуры 3D моделей ? Ведь если у 3D модели больше одной текстуры, они отдельно командой не грузятся, а подхватываются при загрузке модели.

Ничего не остается, как грузить текстуру и вручную текстурить.
Хотя в принципе для меня это не в новинку. Почти никогда не юзал "автоматические" текстуры.
Перейти в начало страницы
 
+Цитировать сообщение
DarkPersona
сообщение 5.8.2013, 21:42
Сообщение #12


Активный участник
***

Группа: Пользователи
Сообщений: 196
Регистрация: 6.10.2007
Из: Россия, Москва
Пользователь №: 5072



Посты в топике читал по диагонали (интернет не мой) sad.gif Мне кажется, эта DLL решает проблему потери D3D девайса:
Device Lost DLL
Сорри, если уже помогли.


--------------------
Перейти в начало страницы
 
+Цитировать сообщение
Fantarg
сообщение 9.8.2013, 22:18
Сообщение #13


Активный участник
***

Группа: Пользователи
Сообщений: 187
Регистрация: 20.7.2008
Из: Ижевск
Пользователь №: 10590



Всё. Игру приняли (справились с исправлениями и багами). Будем рады, если закачаете и запустите два-три раза хотя бы:)
Здесь уже отписал про релиз: http://area.mediahouse.ru/index.php?s=&...ost&p=33021

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

Цитата(DarkPersona @ 5.8.2013, 21:42) *
Device Lost DLL

Спасибо за ссылку! Интересное обсуждение узрел там и далее по темам.


--------------------
_Мертвые знают все...
Перейти в начало страницы
 
+Цитировать сообщение
Agny
сообщение 17.8.2013, 8:47
Сообщение #14


Активный участник
***

Группа: Пользователи
Сообщений: 267
Регистрация: 10.1.2013
Из: Kazahstan,Pavlodar
Пользователь №: 65718



Сегодня нашел в интернете Dark Occlusion. Этот аддон сделан для того что бы увеличивать производительность программ написанных на DarkbasicPro за счет того что прятать невидимые 3d модели и автоматически уменьшать количество полигонов у объекта если он находиться далеко от камеры.

Почитал справку к нему, посмотрел примеры. В справке написано что этот аддон вообще не запускается в режиме fullscreen.

Но что бы его запустить в этом режиме нужно сделать так:
Установить в редакторе: window, hidden, desktop или fulldesktop.
А в программе написать:

Код
// Include Dark Occlusion
#Include "Dark Occlusion/Dark_Occlusion/Dark_Occlusion.dba"

// Initialises the Dark Occlusion System
OC_Init()

// set the display mode
Set Display Mode width, height, depth

// Only use this when started in hidden mode
show window

// enable fullscreen
Set Window Off
Перейти в начало страницы
 
+Цитировать сообщение

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 24.9.2017, 15:12
 X 
Ссылки на работы форумчан:
1. Cайт по использованию 3D технологий
в образовании

2. 15 Defense. Underwater Battle

3. GlaZ в Steam Greenlight