netlib.narod.ru< Назад | Оглавление | Далее >

Глава 8. Постэкранные шейдеры и игра Rocket Commander

Ладно, было довольно забавно писать графический движок в нескольких предыдущих главах, но где же следующая игра? Не беспокойтесь, сейчас вы получите по-настоящему крутую игру: Rocket Commander. Оригинальная версия была выпущена в марте 2006 года, когда немецкий сайт www.Coding4Fun.de не работал и в Германии появилась Visual Studio 2005. Один месяц и много тысяч игр спустя, был создан видеоурок на английском языке Rocket Commander Tutorial Videos и вместе с ним были выпущены две дополнительные модификации игры. Полгода спустя 100 000 игр было сыграно в Сети и еще больше автономно. Было создано много других модификаций и движок Rocket Commander оказался достаточно надежным для выпуска двух коммерческих игр: Pizza Commander и Rocket Racer.

Игру Rocket Commander и ее полный исходный код можно свободно загрузить, что поощряет к самостоятельным экспериментам и даже созданию собственной игры на ее основе. По электронной почте я получил множество хороших историй от людей, впервые изучавших C#, которые за короткое время смогли создать собственный движок и игру, благодаря Rocket Commander и видеоурокам на немецком и английском сайтах Coding4Fun.

Скажем прямо, игра Rocket Commander была успешной. Я не стал богаче, но стал известным. В декабре 2006 года были выпущены окончательные версии XNA Framework и XNA Game Studio Express и я упорно трудился над выпуском Rocket Commander XNA, полной версии движка Rocket Commander для XNA, которая позволила бы играть в Rocket Commander на Xbox 360. Производительность XNA-версии оказалась великолепной; она работала еще лучше, чем старая версия, и не возникало никаких проблем при визуализации тысяч астероидов с высочайшим уровнем детализации и полноэкранным сглаживанием на самом высоком разрешении HDTV (1920 × 1080, жаль, что у меня нет такого монитора или телевизора) на Xbox 360. Главным усовершенствованием новой версии была поддержка нескольких ядер процессора, что важно как для Xbox 360, так и для современных PC. Теперь обсчет физики, проверку столкновений и вычисление других игровых данных игра выполняет в отдельном потоке, который выполняется отдельным ядром процессора (если оно доступно, как на Xbox 360), в то время как другое ядро отдано для потока визуализации, который всегда занят проталкиванием данных к GPU.

Перед тем, как обратиться к игре Rocket Commander, мы изучим все о постэкранных шейдерах, которые являются важной частью Rocket Commander наряду с мощным движком визуализации и физическим движком. О физике вы узнаете больше, прочитав главу 13. Шейдеры для трехмерных объектов подробно обсуждались в предыдущей главе, а если вас интересует игровая логика, взгляните на исходный код или посмотрите видеоурок Rocket Commander Video Tutorials.

В остальной части книги вы по-прежнему будете использовать движок XnaGraphicsEngine, но в последующих проектах будут иметь место такие усовершенствования, как высокооптимизированная система визуализации в Rocket Commander XNA или система физики. Наиболее важным для внешнего вида всех последующих игр, включая Rocket Commander, будет множество пред- и постэкранных шейдеров, которые появляются в этой главе. Предэкранные шейдеры (pre-screen shader) выполняются до визуализации трехмерной сцены и позволяют вам визуализировать текстуры, небесные кубы и другие фоновые эффекты. Писать такие шейдеры достаточно просто.

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


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz