RU

Автосейв в плеере - концептуальное обсуждение

Nex Moderator 16.09.2012 09:21 27 comments 20657 views

Удобство для игрока - главная задача разработчика плеера. Поговорим об удобном сохранении в играх. Не будем обсуждать чекпойнты, т.к. их применение несколько ограничено.

Если игрок отложил на время игру, он захочет продолжить ее с того места, где остановился. Чем меньше ему придется для этого совершить действий, тем лучше.

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

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

Казалось бы, идеальное сочетание: игроку предоставлена возможность ручного сохранения, при этом всегда работает автоматическое. Но есть подводный камень. Оперативная память на мобильных устройствах очень ограничена, из-за этого приложение, находящееся в фоновом режиме, может быть принудительно выгружено системой, при нехватке памяти. В такой ситуации, игрок не будет даже уведомлен о том, что игра “сбросилась”, просто при следующем запуске он увидит, что игра началась заново.

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

Что делать со всем этим, я пока не знаю. Пока не найдено более удобное и надежное решение, все останется как есть.

Edited at 16.09.2012 10:36 (13 years ago)

:o Печально. Без возможность сохранится в игре, мобильность игр резко ухудшается. Хотя это и без меня понятно. Да и монетизация игр становится куда проблемотичней. Кто будет платить за игру если она постоянно сбрасываться?

Если решения этой проблемы нету пока, нужно учитывать это при создании игр. К примеру сразу предупреждать игрока что можно схоронятся в определенных местах, к примеру в “Церкви”, и типа того. Но это не решает проблему конечно.

Ziohekx,
ты неправильно понял. Возможность ручного сохранения есть во всех плеерах.

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

Nex:

в фоновом режиме

:rolleyes: А если я не деру по возможность вообще не каких фоновых программ? Что мне тогда делать? Или я решу поиграть через день два в игру? Честно я не много пока поиграл в игры со своего планшета, но не где кнопку сохранения не видел, по ка что.

А если я не деру по возможность вообще не каких фоновых программ? Что мне тогда делать? Или я решу поиграть через день два в игру?

Сохраняйся вручную.

Честно я не много пока поиграл в игры со своего планшета, но не где кнопку сохранения не видел, по ка что.

Видимо, просто не задавался этим вопросом. В каждой игре есть кнопка “системного меню”, при ее нажатии откроется диалог с опциями “Загрузить”, “Сохранить”, “Начать заново”, “Другие игры”.

Nex:

Видимо, просто не задавался этим вопросом. В каждой игре есть кнопка “системного меню”, при ее нажатии откроется диалог с опциями “Загрузить”, “Сохранить”, “Начать заново”, “Другие игры”.

:( задавался. Но кнопки системного меню не увидел. Играю с планшета галкси таб 2 10.1, под андройд 4.0.0
Использую Quest Player - есть только три кнопки - “описание”, “Инвентарь” “Доп. описание” :/ и все, других кнопок нету.

Ziohekx,
кнопка системного меню есть во всех играх, опубликованных как отдельные приложения. В данный момент это 4 игры для айфона.

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

Nex:

В плеере для Андроида версии 2.x

Мой девайс

После нажатия на “Квест плер” попадаю на полку игр. Там три варианта “Загруженные”, “Отмеченные”, “Все”.
В игре как описывал выше также три кнопки. Больше не каких кнопок нету.
У Планшета есть только кнопка “Сон\выключение”, и “Уровень звука”. Не каких кнопок “Системного меню” не вижу.

Ziohekx,
у планшета должен быть ряд стандартных системных кнопок слева внизу(”Back”, “Home”, etc). По нажатию одной из них, возможно, открывается список опций плеера. Еще раз повторяю, что ручаться за это не могу, т.к. на то, чтобы проверять это, у меня нет времени. Найдешь - молодец, не найдешь - значит, это меню недоступно на новых версиях Андроида и придется ждать, пока я доделаю Quest Navigator. Возиться со старой версией плеера я не стану.

Можно ли сделать так: что-то вроде механизма “транзакций”? Т.е. перед модальным диалогом или иной ситуацией, где фоновое сохранение невозможно, делается автосохранение, в конце - тоже. И при уходе в фон или закрытии (если это не состояние “транзакции”) делать автосохранение.
Кстати, может ли пользователь руками сделать сейв, из которого нельзя адекватно восстановить игру?

Все нашел. Там где и описал, повилась еще одна кнопочка, ее сразу и не разглядишь если спицально не смотреть.

перед модальным диалогом или иной ситуацией, где фоновое сохранение невозможно, делается автосохранение

Есть вероятность, что автосохранение из-за этого будет вызываться слишком часто, будет заметное притормаживание. В случае с диалогами - еще более заметное, ведь пользователь ожидает появления диалога, и каждая “лишняя” доля секунды будет его раздражать.

может ли пользователь руками сделать сейв, из которого нельзя адекватно восстановить игру?

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

Ziohekx,
хорошо, что нашел кнопку.

Nex:

Есть вероятность, что автосохранение из-за этого будет вызываться слишком часто, будет заметное притормаживание. В случае с диалогами - еще более заметное, ведь пользователь ожидает появления диалога, и каждая “лишняя” доля секунды будет его раздражать.

Как бы ни сделать автосейв - тормоза будут раздражать. Значит надо оптимизировать процедуру сохранения.
Либо не заморачиваться с автосейвом.

Как бы ни сделать автосейв - тормоза будут раздражать.

Это не так. Если сохранение будет происходить, когда приложение ушло в фоновый режим, то пользователь не заметит ничего.

Значит надо оптимизировать процедуру сохранения.

Мобильные устройства по сравнению с ПК - маломощные и медленные. Это нельзя исправить “оптимизированием процедур сохранения”, это ограничение самой мобильной платформы.

ну если тормоза при сохранении - неизбежны, тогда остается ввести автосохранение при уходе в фон. Но - если этот уход не в середине транзакции.

…остается ввести автосохранение при уходе в фон. Но - если этот уход не в середине транзакции.

При таком раскладе в некоторых случаях пользователь обнаружит, что игра “сбросилась”. Вероятность станет меньше, но все равно будет. Это не решение проблемы.

Log in or Register to post comments.