netlib.narod.ru | < Назад | Оглавление | Далее > |
В вашем небольшом игровом движке теперь три новых пространства имен и много вспомогательных классов, которые можно использовать для будущих проектов. Особенно полезным в последующих главах окажется класс TextureFont. Он пригодится не только для отображения игровых данных, таких как табло со счетом, но и для тестовых модулей; очень полезно в тестовых модулях отображать вспомогательные тексты, сообщающие пользователю обо всех доступных горячих клавишах, и еще более полезно отображать тестовые или отладочные данные, особенно если вы столкнулись с проблемами. Например, тестовый модуль для класса камеры может выводить местоположение камеры и значения поворота, чтобы видеть, что происходит, когда тест выполняется.
Надеюсь, эти четыре главы были приятными для чтения, и вы получили удовольствие от разработанных здесь примеров игр. Аркадные игры могут быть забавны, но написание простых двухмерных игр это еще не настоящее искусство и уж конечно, вы не получите много внимания, если запрограммируете еще один клон Pong. В целях обучения, для знакомства со всеми вспомогательными классами и для более тесного изучения гибких методологий и тестирования модулей, такие игры очень полезны, позволяя рассматривать реальные проекты вместо простого разговора о каких-то теоретических вопросах, иллюстрируемых несколькими скучными вспомогательными классами.
Однако в следующей части книги вы погрузитесь в мир трехмерной графики и узнаете, как написать собственный трехмерный графический движок в XNA. Вам не надо быть профессором математики, чтобы понять, как визуализировать модель на экране. Благодаря XNA и конвейеру содержимого возможно визуализировать трехмерные данные на экране без обширных знаний лежащих в основе математики и трехмерной геометрии. Если вы серьезно интересуетесь программированием трехмерной графики, то, конечно, должны знать о векторах, матрицах и том, как манипулировать ими в правильном порядке. Существует множество трюков, и знание всех особенностей программирования трехмерных игровых миров требует не только начальной образованности, но и постоянного чтения обо всех новых разработках в этой области.
Если вы программист игр, то, возможно, не хотите слишком беспокоиться о лежащем в основе коде графического движка, а сосредоточиться непосредственно на самой игре. Большинство людей хочет просто создавать крутые игры, и обычно это значит, что им также приходится создавать графический движок, поскольку нет доступного совершенного графического движка, и каждый эффект в игре может требовать особого способа визуализации трехмерных данных. Последняя часть этой книги больше говорит о программировании игр, поскольку созданный к тому моменту игровой движок будет уже достаточно совершенным, чтобы поддерживать достаточно сложные игры.
Бросим прощальный взгляд на то, что мы узнали в предыдущих главах:
Важно записывать ваши идеи и разрабатывать небольшую концепцию, предпочтительно ограниченную одной страницей.
Для решения проблем используйте нисходящий подход и применяйте тестирование модулей.
Вы узнали об обработке пользовательского ввода, воспроизведении звуков и рисовании спрайтов. Все это легко может быть выполнено в XNA, но чтобы избежать повторения одного и того же кода снова и снова, помещайте его во вспомогательные классы.
Был представлен набор вспомогательных классов для помощи в визуализации растровых шрифтов из текстуры, обработки строк, перебора перечислений, управления цветами, записи файла журнала и многого другого.
В каждой игре требуется использовать тот или иной вид обнаружения столкновений. В первых двух играх вы использовали структуру BoundingBox для проверки столкновений в двухмерном пространстве, а в данной главе вы обрабатывали все столкновения в сетке игры Тетрис самостоятельно в методе MoveBlock.
Тестирование модулей управляет всем, я не могу повторять это достаточно часто. В особенности статические тестовые модули в значительной степени помогли вам и сделали создание игр в этих главах более интересным и продуктивным, чем без использования тестирования модулей.
netlib.narod.ru | < Назад | Оглавление | Далее > |