XNA - продолжая тему диплома

Итак.... Я не знаю говорил ли я что я пишу 2 диплома? Если нет то теперь вы знаете.
Один в универе и один в Шаг. Довольно весёлое занятие - попеременно забивать болт то на один, то на другой....

Сегодня я хочу написать о том что у меня получается с Шаговским дипломом. В Шаге я занимаюсь разработкой игры под платформу XNA. В качестве игры я решил переделать стандартную под iPod игру - Vortex. Это аналог арканоида, с отличием в том, что бита движется по кругу,и задача игрока не выпустить мяч за пределы круга.

Собственно первая часть работы - организовать процесс игры, движение шарика и биты. Она у меня прошла довольно гладко.

И вот сейчас я решил взяться за вторую - рефакторинг, организация игрового движка и наконец использования шейдеров.

Небольшой тизер :)



Основной идеей рефакторинга было создание классов для разделения функций между движком и логикой игры.

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

Краткая диаграмма классов игры



GameView - класс состояния игры. Т.к игра фактически состоит из дискретных состояний, то я решил написать класс StateManager который управляет состояниями. И каждый раз вызывая метод StateManager.SetView мы меняем состояние игры. Это очень удобно, т.к отдаёт большую часть работы относительно игровой логики и рисования реализациям состояний. Подобный подход не новый и используется почти во всех игровых движках в разных ипостасях.

В результате после выделения состояний я очень удобно прикрутил шейдер Transition который делает слайдовый переход. Получилась очень достойная анимация смены состояний.

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

Что ещё буду делать:
- Подсчёт очков за разбитые кирпичи,комбо
- Пост-обработка шейдерами при попадании на кирпичи
- При закрытии игры процесс остаётся в памяти - нужно пофиксить.
- Иногда(довольно редко) некорректно отбивается шарик от биты или от кирпичей

Вообщем не буду томить и кидаю ссылку на сборку игрушки. Пока что только 1 уровень и нету очков - но всё впереди ( я просто решил похвастатся )))

Google docs:
https://docs.google.com/leaf?id=0B6h7yaggRA4pZGRjZGNlNzktYjBmNS00M2RjLWExNWYtY2I2NWY4NzhhMDli&hl=en

Google sites:
http://sites.google.com/site/jackdevolpment/files/Release.7z?attredirects=0&d=1

Faq:
1.Для запуска необходима XNA 3.1 http://www.microsoft.com/downloads/details.aspx?FamilyID=53867a2a-e249-4560-8011-98eb3e799ef2&displaylang=en
2.Пасхальные яйца - F1,F2,F3,F4 во время игры
3.Если что-то не работает - отписываемся :)

Комментарии

Популярные сообщения из этого блога

Структуры данных ( АВЛ-дерево , обход графа и построение минимального остовного дерева графа)

2D Физика для игр - Separate Axis Theorem

Взлом алгоритма Эль-Гамаль( с помощью алгоритма Шенкса)