Несыть :: На собственных ошибках

rage_8387.png

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

Не пугайтесь, я просто демонстрирую очередной релиз версия 2.2 (23 МБ), который собираюсь толкнуть на удачно подвернувшийся конкурс.  Буду благодарен любому виду обратной связи, особенно оперативной — сегодня последний день на подачу заявки, возможно я что-то успею ещё поправить.

Что нового? Немного важных для меня мелочей… :)

duel.png

1. Игра доступна на двух языках — русском и английском

Кажется, что в прошлый релиз уже был двуязычным, но на самом деле это не так. Вроде бы очевидно, что если делаешь игру для иностранцев, то тестировать её нужно тоже хотя бы на одном из них. К сожалению показать игру единственному знакомому мне руссконеговорящему человеку (Фрэну, разработчику Unepic), я догадался недели через две после сдачи проекта на конкурс Intel Level Up 2011. Выяснилось, что перевод из UTF-8 в однобайтовую собственную кодировку (индекс буквы в растровом шрифте символов на 200) средствами WinAPI я написал так, что работает он только в винде с установленным русским языком (кодовой страницей windows1251).

Эпик фэйл! Всё, что смогли увидеть интеловские отборщики проектов, это толпы вопросительных знаков вместо текста в обоих языковых версиях игры. Моя подборка тестеров оказалась не репрезентативной — все они были русскоговорящими. Результаты конкурса уже опубликовали, нас там нет. Прошу прощения у всех, кто участвовал в подготовке «Несыти» на Level Up — по моей вине у нас не было даже призрачного шанса на победу.

В этом релизе я больше не связываюсь с системными функциями и перевожу в свою кодировку из UTF-8 простой таблицей соответствия. Дешево и сердито.

2. Управление червём продублировано на мышке.

Ещё до объявления результатов LevelUp’а мне на почту написал человек, который по некоторым причинам не может пользоваться клавиатурой, но при этом управление мышкой ему вполне доступно, хотя и не очень традиционным образом. Саша попросил продублировать управление и я не увидел причин этого не сделать. Я пробовал играть тем же манером, но надолго меня не хватает — тяжело с непривычки.

bloody_8387.png

Это урок на тему «если можно сделать различные способы управления, то их стоит сделать». Попробуйте представить, сколько игр с Гамина оказывается недоступно Александру Зенько из вышеприведённого видео? А сколько из них действительно  невозможно перевести на управление мышкой? К экзотическим устройствам управления, эмулирующим работу клавиатурой и мышью, добавляются люди с экзотическими предпочтениями и возможностями. Конечно, невозможно сделать игру для всех, но если концепция игры позволяет, то я за максимально широкий диапазон способов управления. Назначение управления — раз, дублирование управляющих кнопок на клавиатуре — два, дублирование мышки и клавиатуры — три.

В данном релизе управление мышкой такое: движения влево-вправо аналогичны нажатиям стрелок влево-вправо, левая кнопка мышки — режим резких поворотов, правая кнопка мышки — торможение.

Вдогонку — я упростил набор скорости в целом. Разгон с нуля теперь более интенсивен. Ветеранам всё равно, а новичкам легче.

3. В игре работают мультимедийные клавиши управления громкостью.

После получения баг-репорта от harvey я был вынужден сменить свою старую клавиатуру на новую, чтобы протестировать работу эти кнопок. И это оказалось невероятно удобно! :) Теперь я пользуюсь ими практически постоянно, а раньше считал все дополнительные кнопки, в общем-то, маркетинговой придурью. Урок на тему того, что не стоит пренебрегать чужим опытом.

Кстати, багу со странным управлением громкостью я тоже, вроде как, выловил. Если проблемы с уровнем и его регуляцией остались — пожалуйста напишите мне.

4. Индикатор скорости заменён на индикатор размера червя.

Кто-нибудь смотрел на старый индикатор скорости-ускорения в прошлых релизах? Я тоже. Он имеет изящную концепцию и неплохо выглядит, особенно в динамике, вот только обладает одним недостатком — он неинформативен.

indicator_old.png

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

indicator1.png indicator2.png

Теперь я визуализирую три параметра: длину червя, размер его головы относительно первоначального, и факт того, что червю откусили хвост и пока он его не нарастит увеличение в размере останавливается. Первые два параметра просто полезны и понятны, последний просто критичен.

А теперь, по традиции, случай из жизни и мораль. Ни игроки, ни десяток тестеров, ни я сам — никто не заметил в прошлом релизе, что пока червь не наберёт длину в 20 звеньев (это треть от максимальной длины) он не растёт. Совсем. Просто остаётся первоначального мелкого размера. Первоначальный набор длины хвоста формально не отличался от наращивания откушенного и рост блокировался. Пока я не сделал индикатор, я просто не замечал этого факта. Визуализация, это очень важно.

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

knot.png

Кроме того исправлена и нестабильная ошибка с блокировкой роста червя, о которой время от времени сообщали разные игроки. Фишка была в том, что если у червя отъедали хвост с «зоной роста» (звеном в основании или в конце хвоста, под которым появляются новые звенья) в момент наращивания и этот хвост валялся не съеденным, то процесс наращивания новых звеньев блокировался.

Всё. Разве что могу показать список фишек, которые выписал себе для реализации. На три четверти он состоит из ваших идей, друзья, любезно предоставленных в комментариях к предыдущему релизу. Спасибо!

  • Бонусы. Случайно появляющиеся на карте бонусы. Ягодки различных цветов или одного цвета, но с разными контрастными узорах-буквах-иероглифами (чтобы не слишком пестрило).
    • Винтаж-1. Червь игрока начинает поедать при столкновении свои собственные части. Отрицательный бонус.
    • Винтаж-2. Червь начинает перемещаться и управляться как традиционная змейка — все время ползти прямо и поворачивать под прямыми углами. Отрицательный бонус.
    • Подсветка. Те, объекты, которые червь может проглотить прямо сейчас подсвечиваются явным образом. Положительный бону.
    • Акселерация. При поедании червь набирает массу в два или три раза  более эффективно. Положительный бонус.
    • Мгновенный рост. Червь сразу получается некоторое количество добавочного веса и размера. Положительный бонус.
    • Спринт. Червь увеличивает свою максимальную скорость, но в два раза менее эффективно наращивает массу. Балансирующий бонус.
    • Аппетит. Эффект противоположный ярости — скорость замедляется, эффективность поедания увеличивается. Балансирующий бонус.
    • Одеревенение. Углы поворота червя становятся сильно более плавными. Отрицательный бонус.
  • Уроборос. Главный босс — двухголовый червь, произвольно меняющий направление движения, в зависимости от того, какой стороной ему ближе ползти к цели. Можно перекусить пополам (толщина у него везде одинакова), две половины отращивают хвосты и ведут себя подобно обыкновенным червям.
  • Шкала ярости. При поедании чего-либо увеличивающийся показатель «ярости», постоянно уменьшающийся с течением времени. По достижении определенных уровней ярости на червя начинают последовательно накладываться положительные бонусы — 1) подсветка съедобных объектов,  2) увеличение скорости, 3)увеличение эффективности поедания.
  • Индикация бонусов. Действующие в данный момент на червя эффекты должны отображаться в виде пиктограмм в специальной области (скорее всего в левом нижнем углу).
  • Экраны на карте с отладочной информацией и переключателями. Полупрозрачные прямоугольные области произвольного размера, с опорой на четыре ноги. Находятся выше основного уровня и проецируют на себя отладочный вывод (габаритные круги, клетки, и прочая). Кроме антуражной функции могут являться переключателем, срабатывающим, при попадании головы червя во внутренний периметр. Что-то типа того:screen.png
  • Карта нижнего уровня. Полностью независимая карта, находящаяся ниже текущего уровня, которую видно только через специальные окошки (полупрозрачный вид ландшафта). Отображается с некоторым параллаксом, содержит в большинстве случаев просто каких-то насекомых, но иногда может содержать и червей. Просто параллельный уровень полностью управляемый AI.

Тут, конечно, не всё, только то, что смог более менее внятно для себя сформулировать. Нет ни «броска» червя, ни идей новых существ, ни идей уровней. Это я потом. А пока ссылка на релиз для тех, кто не заметил её в первом абзаце:

Скачать «Несыть 2.2» (23 МБ)