четверг, 22 ноября 2012 г.

Игра Reborn

     Я конечно немного припозднился с обзором, т.к. работу над Reborn я закончил ещё год назад. С этим проектом я учавствовал в тогдашнем конкурсе на xnadev.ru и занял какое-то чисто символическое место. Главным образом из-за того, что это не законченная игра, а прототип. Однако думаю извлечь урок из неё можно для себя ну и для вас, читателей, думаю найдётся пару интересных идей.
     Идея игры зародилась из моей любви к играм жанра Math 3. Конечно жанр этот достаточно казуальный. Нравится мне в нём простота в полноте. Обычный Math 3 я конечно делать не стал, далее следует список фич-механик которые я заюзал.
 
 
 
     Первая фича заключается в потухании игровых камней. Т.е. все камни на игровом поле становятся серыми и становится невозможным ориентироватся по цвету, игроку приходится распознавать их форму. Однако камни снова приобретают краски когда игрок наводит на них курсор. Это очень удачная находка на мой взгляд, т.к. она действительно работает. Чтобы поле не казалось слишком серым, я добавил рандомное зажигание камней на игровом поле получилось очень красиво (похоже на новогоднюю ёлку).
     Вторая фича это непрерывность поля по горизонтали. Игровое поле - это не замкнутый прямоугольник а барабан и в каждый момент времени игроку видна одна его часть. И этот барабан медленно вращается, а при достижении игроком определённого количество очков направление вращения изменяется. Это придаёт игре некую динамичность и выводит нас в 3D пространство. Разумеется я добавил барабану перспективу. Кроме того я дал камням бамп эффект и спекуляр карту. Спекуляр картой я планировал нарисовать глянцевые(металлические) узоры на каждом камне, но увы  до рисования дело не дошло, однако вы можете увидеть маленькую круглую металлическую пластинку на жёлтых камнях.
     Третья фича, которую я хотел сделать, но не смог, и потом решил, что это нецелесообразно: возможность параллельной игры. Т.е. в момент, когда часть игрового поля рушится из-за того, что вы собрали комбинацию, вы можете собрать ещё одну комбинацию, а потом вторую и третью. Этого я не видел ни в одной игре жанра, но это выводит игру на новый уровень динамичности, придаёт ей спортивность. Ни раз я расстраивался, пытаясь собрать комбинацию, но не получалось, т.к. эта возможность заблокирована во время обрушения. Зачем давать игроку повод для разочарования, пусть лучше он будет приятно удивлён. Пытаясь реализовать это я запутался, или может я не с той стороны зашёл просто, поэтому эта фича не увидела свет.
     Вы должно быть заметили существование ряда игр со словом Deluxe в названии в частности Zuma Deluxe и Bejeweled Deluxe. Игры эти действительно качественные, я так и понял что делюкс - значит качественная игра. Но как-то раз я засел целый день убивать время рубиться в Bejeweled 2 Deluxe Action Mode и вдруг осознал: а ведь за столько времени игра мне ни разу не написала "кончились ходы"(что часто случается в других играх жанра Math 3).  Немного обмозговав это дело, я нашёл несложный способ добится того, чтобы ходы в Math 3 игре никогда не кончались. Просто надо всегда считать количество возможных ходов и в момент обрушения и генерации новых камней проверять, как оно изменится, и перегенерировать камни, если ходов не остаётся. Легко заметить, что при обрушении трёх камней (а меньше обрушится в классической игре не может) всегда возможно сгенерировать новые камни так, чтобы после обрушения на игровом поле оставалась хотябы одна нетривиальная (три камня одного цвета изначально лежат в ряд)  комбинация. После этого в моём словарике появилось новое слово "делюксовая игра" - игра в которой учтено всё до мелочей, в которой игрок будет действовать свободно, вместо того чтобы натыкаться на ограничения - качественная игра. возможность параллельной игры которую я не смог реализовать как раз из этой оперы. А вот генерацию камней так чтобы ходы игрока никогда не кончались я сделал. Причём сделать это очень просто. Сложным оказался алгоритм подсчёта возможных ходов, но без него никуда. Подсчёт ходов нужен для системы подсказок и просто если вам нужно сказать игроку, когда ходы закончатся (если вы откажетесь от бесконечных ходов). Стоит добавить, что в моей игре игрок видит каждый момент времени только часть поля, поэтому мой алгоритм считает количество возможных ходов на маленьких участках поля и обеспечивает их наличие после каждого обрушения.
     Ещё одна отличитаельная фича была придумана уже во время разработки. Это два обратных отсчёта. Под обратным отсчётом я подразумеваю полоску которая уменьшается со временем, и игрок проигрывает, когда она заканчивается (такая же система используется в Bejeweled в Action Mode и ещё много где). Собирая комбинации, игрок увеличивает эту полоску, если игрок сможет увеличить её до определённой отметки - уровень пройден. В моей игре используется две полоски - обе они уменьшаются со временем, однако для увеличения каждой из них от игрока требуется выполнение разных действий. Т.е. например одна полоска увеличивается когда игрок собирает комбинации из красных камней, другая на синие комбинации. Это также придаёт игре разнообразия и динамичности и решает проблему о зацикливании внимания, когда начинаешь собирать комбинации только одного цвета т.к. внимание сосредоточилось только на нём. Кроме того было бы забавно менять целевые цвета во время игры (сделать это не трудно но я не сделал).
     Кроме того я ввёл в игру неразрушимый камень. Неразрушимые камни (камни которые не собираются в комбинации) потребовали контроля за ними, т.к. если их не разрушать (а разрушить их нельзя) то они будут накапливатся на игровом поле, и вскоре не останется ходов. Кроме того следить за тем чтобы ходы не кончались обычным способом стало невозможным. Поэтому я добавил камень всех цветов, который вступает в комбинацию с неразрушимым если собрать два его и несколько неразрушимых камней в ряд. Кроме того с обычными камнями камень всех цветов реагирует как камень любого цвета. Тут ещё возникла проблема: неразрушимые камни по обыкновению скапливаются внизу игрового поля, а  камни всех цветов очень хорошо реагируют с цветными камнями и не доживают до низа. Нижняя часть поля оказывается заблокированной. Тогда я сделал хитрость, чтобы неразрушимые камни оказавшиеся на самом дне проваливались под дно и вываливались в соответствующее освободившееся пространство сверху. Также я считаю неразрушимые камни и блокирую их генерацию когда их слишком много. В догонку к этому я добавил камни реагирующие только будучи собраными 4 в ряд. И всё это оказалось фигня, идеальная простота игры потерялась. никакой цели у этого ряда фич нет - просто разнообразие. Однако, при этом я открыл для себя ещё  одну тему, о которой говорить сейчас не буду, она достойна отдельной статьи.
     Вы можете сами скачать Reborn и поиграть. Т.к. это не полноценная игра то следует и в ней нет системы подсказок, требуется заранее объяснить что есть что. По бокам от игрового поля находятся цветные столбцы - это полоски обратного отсчёта. По их цвету можно определить комбинации из камней какого цвета следует собирать. Салатовые четырёхугольники - это неразрушимые камни, бабочки - камни, которые реагируют по 4 в ряд минимум, паутинка - камень любого цвета. Кнопка Hint включает подсветку возможных ходов.

Системные требования:
  • ОС Windows не ниже XP Sp3.
  • DirectX не ниже 9
  • .Net Framework 4.0
  • XNA Framework 4
Страница скачивания: http://uselessgames.ru/downloads.php?cat_id=2