Что выбрать для разработки игр под Windows Phone 7? Silverlight или XNA

Автор оригинала: Silverlight Games 101
  • Перевод
imageВ следствии поддержки, как XNA, так Silverlight на платформе Windows Phone 7, распространенным вопросом является – на чем лучше писать игры? Ответ прост – все зависит от… :)

Обе технологии обладают характерными преимуществами и было бы хорошо в конечном счете совместить возможности графики обеих технологий в одном и том же приложении и использовать лучший инструмент для работы. Я еще не углублялся в изменения у XNA на Windows Phone, так что выводы буду строить на основе опыта разработки игр на XNA в прошлом.

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

Основным архитектурным отличием является визуальное дерево, а не прорисовывание всего в каждом кадре. В Silverlight, чтобы отобразить что-то, нужно добавить это, как дочерний элемент. В XNA, все прорисовывается в каждом кадре. Если вы что-то явно не нарисовали, то ничего и не покажется. Какой вариант лучше, зависит от вашей игры, но если происходит много действий, то вариант “срочного” рендеринга XNA лучше всего подходит.

Давайте взглянем на некоторые преимущества каждой технологии (я уверен их много с каждой стороны):

Преимущества XNA:


  • Отличная поддержка 3D
  • Превосходная производительность, во время перемещения многих элементов или их добавления и удаления
  • Встроенный игровой цикл.
  • Пользовательский ввод в XNA в общем лучше для игр, чем события ввода в Silverlight.
  • Конвейер данных в XNA позволяет проще обрабатывать массивы данных
  • Поддержка большего количества типов изображений
  • Можно разрабатывать игры под Xbox и Phone
  • Комбинация графических моделей (у Silverlight только альфа-наложение)
  • Меньше расхода памяти для игр основанных на изображениях
  • Больше встроенного GPU-ускорения
  • Превосходная поддержка шейдеров
  • Рисовать немного проще

Преимущества Silverlight:


  • Векторная графика (у XNA поддержка на уровне простых линий)
  • Векторная прорисовка текста (у XNA на основе изображений)
  • Можно создавать игры для веба и телефона
  • Анимация на основе раскадровки
  • Визуальные состояния и различные поведения
  • Фреймворк навигации
  • Элементы управления (кнопка, список, пользовательские элементы управления и т.п.)
  • Поддержка Expression Design
  • Модель на основе событий более привычна для разработчиков
  • Привязка к данным порой очень удобна
  • VisualTreeHelper помогает определить, до какого элемента дотронулись

Так что, если у вас игра основана на векторной графике или предполагает наличие таких вещей, как кнопки или другие GUI-элементов, то возможно лучше выбрать Silverlight для разработки. Если же вы делаете 3D игру или 2D с большим количеством движений, или эффекты частиц, то выбирайте XNA. Если у вас что-то между этими двумя технологиями, то выбирайте ту, с которой лучше знакомы, а так же смотря где вы хотите распространять приложение в веб или Xbox.

Это ведь отлично, что нам доступны оба варианта и вы можете выбрать, какой использовать.
Поделиться публикацией

Комментарии 16

    +3
    Теперь подобные решения станут еще более востребованными.
    • НЛО прилетело и опубликовало эту надпись здесь
        0
        Чувствую я упор в Майкрософт будет на игры. Для айфона обещали XNA, а гуглу как выкручиваться придется?
          –1
          Вытеснить Blackberry с бизнес-рынка?
            +3
            Для iPhone это реализует Мигель с проектом Mono, так же они активно ведут работу по портированию XNA на Android
              0
              О, интересно, спасибо за информацию.
            0
            Я недавно сравнивал Svg и Canvas для веб игр и выводы были похожи. Canvas это как XNA а Svg это как SL.
              +2
              Странное сравнение. У Silverlight и XNA разные цели. Мне кажется, что если анализировать с точки зрения создания игр, то надо делать упор на то какого типа игры легко реализуемы в той или иной среде. В частности на мой взгляд XNA больше подойдет для Динамических игр (как 2D, так и 3D, т.к как вы наверно знаете в современных играх API для 2D и 3D одинаковое, и 2D фактически это частный случай 3D — изометрическая проекция, камера с 1 неизменяемой координатой, обычно выключенный буфер глубины), т.к. перерисовка в каждом кадре это нормальная практика при создании такого рода приложений.
              Если же создавать игры наподобие тех, которые сейчас делают на Flash (Flex) с красивой (но не слишком насыщенной деталями) 2D векторной графикой, то однозначно целится в Silverlight
                0
                всё равно что Flash и Unity3d сравнивать
                0
                xna для веба тоже сгодится:
                habrahabr.ru/blogs/XNA/56441/
                  0
                  С силверспрайтом не сравнивали?
                  • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    Сравнение на основе собственного опыта? Или это перевод?
                      0
                      Апдейт из 2012 года: Silverlight мёртв.
                        0
                        Держите нас в курсе, особенно учитывая Silverlight ≈ C# + XAML
                          0
                          Я знал, что на некрокоммент никто, кроме автора не ответит :). Меня вот последнее на счёт Silverlight убило — так это когда поставил Win8 — там по умолчанию, «из коробки» установлен Flash. А Silverlight — не установлен! Надо качать и ставить. Собственно говоря, это очень красивый резной такой и стильный гвоздь в гроб Silverlight.

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

                      Самое читаемое