?

Log in

No account? Create an account

mercury13_kiev


Это не баг, это фича!


Previous Entry Share Next Entry
Qplaze-2005: Программист, будь человеком!
mercury13_kiev

Эту статью побудил меня написать такой эпизод. При проталкивании игры Real Tournament через тестеров вдруг — когда были сданы почти все «средние» телефоны — нашли ошибку где-то в системе меню. Бывает же!

Здесь я не буду говорить о логике и физике игры. Все ошибки, которые я буду упоминать, связаны с «оснасткой» игры — системой меню, сохранением и так далее. Итак, начнём!

Система меню

При нажатии кнопки «Назад» курсор должен быть на том же пункте меню, на котором был. То есть, если мы нажали на пункт «Помощь», затем на «Назад», курсор должен оставаться на пункте «Помощь». Я знаю, это подчас сложно в серьёзных «однообразных» системах меню, когда все меню, какие только можно придумать, построены на одном и том же коде. Но сделайте это как следует.

То же самое следует делать в «радиоменю». Таким термином я называю меню, которые меню внешне, радиокнопки по сути. Например, когда мы нажимаем на пункт «Трасса», появляется список трасс. Если мы выбираем трассу — как, впрочем, и когда ничего не делаем и нажимаем «Назад» — текущим должен остаться пункт «Трасса».

И ещё одно требование к радиоменю. При входе в такое меню выделен должен быть текущий элемент. То есть, если у нас выбрана трасса Сан-Марино, то, когда входишь в меню «Трасса», выделен должен быть пункт «Сан-Марино».

Если мы прерываем игру, выделенным должен быть пункт «Продолжить».

А во всех остальных случаях выделен должен быть первый пункт меню.

И — был прецедент — если на джойстике есть центральная кнопка, обязательно используйте её.

Выход из игры должен быть быстро доступен. Желательно так. Нажимаешь правую софт-кнопку, открывается меню, выбираешь «Выход». Причём графика меню не должна загружаться; всё, что надо для меню, должно сидеть в памяти. В противном случае игрок потянется к красной кнопке.

Помощь

В помощи должны быть освещены такие вещи:

  • управление;
  • правила игры (если они не понятны сразу);
  • назначение бонусов и других объектов;
  • дополнительные рекомендации — например, «Для лучшей видимости рекомендуем поставить контраст на максимум». Вообще-то, писать такое на всех телефонах — кощунство. Но бывают же телефоны с плохим экраном, например, Motorola T720? Старые моторолы могут присоединяться к интернету лишь тогда, когда в настройках Java прописан DNS-сервер, а доступ к интернету разрешён. Nokia 7650, если игра ест память как Windows XP, при входящем звонке может не удержать её в памяти. И так далее.

Сохранение

Игру нужно сохранять на всякий случай. «Всяких случаев» бывает много, игры тоже бывают разные. Я бы поделил сохранение игры на три вида.

  1. Сохранение по желанию. С ним просто – человек нажал «Сохранить», игра сохранилась.
  2. Сохранение достижений. Например, когда ты проходишь миссию, открывается следующая миссия. И ваше достижение — первая миссия пройдена, вторая доступна — записывается в ППЗУ. К этой же категории относится и сохранение рекордов. Здесь принцип таков: сохраняй достижения в первой же нединамичной сцене. Можно и по ходу игры, если это не будет вмешательством в игровой процесс — и если есть значок «Сохраняю».
  3. Автоматическое сохранение. Оно служит, чтобы игрок мог начать игру там, где прервался в прошлый раз. Это компромисс. Нам приходится сохранять игру, которую, по идее, сохранять не нужно. Сохранять игру, которую портит «сохранение где хочешь». На компьютере у игрока нет таких врагов, как Входящий Звонок, Нужная Остановка и Красная Кнопка с Закрытой Крышкой. Вот из-за этого игру и приходится сохранять. С нужной остановкой всё просто: наживаешь «Выход», игра сохраняется. А с остальными… панацеи нет. У каждого телефона свои особенности. Вместо панацеи предложу пару советов. Во-первых, сохраняй при потере жизни и переходе на другой уровень. Во-вторых, можно сделать точки сохранения. И всё-таки в Siemens C65 в том самом Real Tournament мне пришлось сделать сохранение по желанию — из-за противной кнопки «Моё меню».

Трудно представить, но Java-игры на мобильниках тех времён сбивались по любому чиху, в том числе по входящему звонку и закрытой крышке. В далёком 2005-м только две платформы не сбивали игру — Nokia Series 60 и моторольские «триплеты». Кстати, это стало одной из причин, почему я в своё время купил моторолу, недорогую V180. Да и кнопка отбоя звонка сейчас давно уже не красная. — 2011.

Наконец, единственный случай, когда автосохранённая игра удаляется,— это конец игры. Во всех остальных случаях имеющийся сохранённый файл трогать не надо.

И — чем чёрт не шутит — сохраняйте настройки!

Звук

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

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

Третье. Музыку заставки — если она у вас есть — проигрывайте только один раз, когда появилось меню. Мобилка — не магнитофон, у неё качество звука из рук вон плохое. По кругу играть не стоит, музыка всё равно не длится больше 20 секунд. Раньше проигрывать музыку нельзя — можно лишь тогда, когда человек получает управление, чтобы выключить звук.

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

Прочее

Игры под мобильные телефоны — особенно непрофессионально написанные — любят зависать. Добавим же нашей игре профессионализма! Давайте покажем, что наша игра не висит, а думает!.. Так вот, при задержке больше секунды следует выводить символ «Подождите». При задержке более десяти секунд нужен индикатор прогресса. Постарайтесь, чтобы индикатор двигался более-менее равномерно и не был «мёртвым» более пяти секунд. (Последнее достаточно сложно, но попробуйте сделать настолько хорошо, насколько можете).

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