Корзина

0  Товары

0.00 RUB

Вход

Классический вход

Сообщество

Блог

Клон игры Super Hexagon на FPGA.

Super Hexagon — инди-игра в жанре Action, разработанная Терри Кавана. В Super Hexagon игроку предстоит управлять небольшим треугольником, который может вращаться вокруг центрального шестиугольника (англ. Hexagon). Целью игры является избежание контакта треугольника с надвигающимися «стенами». Если игрок сталкивается с передней стороной одной из этих стен (касания боковых сторон разрешены), то игра заканчивается. После того, как игрок проиграет, ему покажут его время выживания за последнюю попытку, а также его лучшее время на этом уровне. Все рекорды отслеживаются на доске лидеров, на которой игроки могут просматривать рекорды своих друзей и мировые рекорды. У игры есть шесть уровней сложности: набор «нормальных» режимов — Hexagon, Hexagoner и Hexagonest — и набор «гипер»-версий предыдущих уровней, которые открываются после 60 секунд выживания в «нормальных» режимах.

Месторасположение стен различается на каждом уровне сложности. Стены закручены в «рукава» (секции повторяющихся стен), которые различаются при каждой попытке прохождения, заставляя игрока изучать как пройти каждый рукав, а не уровень целиком. «Гипер»-версии нормальных уровней содержат похожие рукава с небольшими вариациями, но рукава появляются быстрее, чем на обычных уровнях. Завершением игры считается выживание в течение 60 секунд на уровнях Hexagonest (нормальная концовка) или Hyper Hexagonest («настоящая» концовка). За завершение каждого уровня предусмотрены достижения в Steam, Game Center и Google Play Игры.

На ресурсе hackaday.io была найдена реализация этой замечательной игры. Мы конечно же незамедлительно решили перенести этот проект, на нашу плату VE-EP4CE10E.

Ядром всего проекта является модуль драйвера VGA. Это та часть дизайна , которая в конечном итоге будет отображать графику на экране. Для получения данные на экране был выбран конвейерный подход для расчета пикселей. На каждом пиксельклоке модуль драйвера VGA выводит координату x/y. Каждая координата затем проходит по конвейеру и обрабатывается до тех пор, пока цвет RGB не появится на выходе конвеера. Этот цвет затем подается обратно в модуль драйвера VGA. Ниже представлена упрощенная блок-схема:

pic1

Проблема, с которой я столкнулся во время разработки, заключалась в поиске способа, позволяющего убить игрока при столкновении с передней стеной, но все же позволяющего игроку перемещаться в стороны. Решение было достигнуто путем хранения старых и новых координат игрока. Если новая координата сталкивается, а старая нет, то позиция игрока возвращается к прежним координатам. Эта логика столкновения была встроена в основной игровой автомат:

pic2

Еще одна интересная часть проекта (Все было интересно!) это конвеер стен. В настоящее время активные стены хранятся в массиве 6bitx128 в оперативной памяти. Два указателя индексируют этот массив, один для того, чтобы стены двигались внутрь к игроку, а другой для того, чтобы обновлять стены новыми, когда они выходят из экрана. Новые стены будут получены (псевдо)случайным образом из набора из 16 предопределенных шаблонов. Пример такого шаблона приведен ниже:

Verilog Code:
  1. walls_maze[0] = 6'b011111;
  2. walls_maze[1] = 6'b000000;
  3. walls_maze[2] = 6'b101111;
  4. walls_maze[3] = 6'b000000;
  5. walls_maze[4] = 6'b110111;
  6. walls_maze[5] = 6'b000000;
  7. walls_maze[6] = 6'b111011;
  8. walls_maze[7] = 6'b000000;
  9. walls_maze[8] = 6'b111101;
  10. walls_maze[9] = 6'b000000;
  11. walls_maze[10] = 6'b111110;
  12. walls_maze[11] = 6'b000000;
  13. walls_maze[12] = 6'b011111;
  14. walls_maze[13] = 6'b000000;
  15. walls_maze[14] = 6'b101111;
  16. walls_maze[15] = 6'b000000;

После того, как мы разобрались со стенами и игроком на месте, единственное, что осталось добавить сумасшедшее вращение и мигающие цвета, чтобы отвлечь игрока. Вращение было достигнут путем поворота начальных координаты X и Y путем умножения на SIN и COS. Изменение цвета осуществляется простым поиском в массив предопределенных цветов, основанных на том, присутствует ли стена, игрок или фон на каком-либо конкретном пикселе. Есть в общей сложности 4 цветовые схемы, которые меняются каждый раз, когда вращение становится немного быстрее.

Результат показан на следующем видео:

Проект игры Super Hexagon: SuperHexagonFPGA.zip

Карта сайта Визуальная электроника Полезные ссылки сайта Визуальная электроника

Алиса это умеет

Оплата товаров

Cookies make it easier for us to provide you with our services. With the usage of our services you permit us to use cookies.
More information Ok