netlib.narod.ru | < Назад | Оглавление | Далее > |
Ну что же, игра закончена и вы протестировали ее на платформе Windows. Как я уже говорил в первой главе, для подключения Xbox 360 и запуска XNA Framework требуется выполнить ряд действий. Если на Xbox 360 запущен XNA Game Launcher, вы можете попытаться скомпилировать вашу игру XNA Pong и развернуть ее на консоли.
Вот несколько важных вещей, которые следует помнить, создавая игры для Xbox 360:
Не используйте внешние библиотеки, если это не требуется. Хотя использование динамических библиотек XNA Game поддерживается, большинство имеющихся на платформе Windows DLL вызывают системные DLL, отсутствующие на Xbox 360, и, что еще хуже, вызов неуправляемых DLL с помощью P-Invoke полностью запрещен на Xbox 360 по соображениям безопасности. Не используйте неуправляемый код и не делайте попыток вызова внешнего кода, доступа к устройствам, или использования неподдерживаемых возможностей. Это будет напрасной тратой времени, так что лучше играйте по правилам.
Не тяните с тестированием. В середине работы над проектом проверьте, компилируется ли ваш код, если в качестве целевой платформы указана Xbox 360. Часто оказывается, что используемые методы отсутствуют на Xbox 360. Например, на Xbox 360 в System.dll нет метода TryParse, и некоторые методы и классы XNA, такие как класс MouseState, отсутствуют и не поддерживаются.
Не загружайте содержимое напрямую. На платформе Windows можно напрямую загружать текстуры или шейдеры с помощью конструкторов Texture2D или CompiledEffect. Эти методы отсутствуют на Xbox 360; вы можете загружать содержимое только из конвейера содержимого. Если вы используете код, который динамически загружает или перезагружает текстуры или шейдеры, он будет работать только на платформе Windows, так что заключайте код в #if !XBOX360 ... #endif для построения версии для Xbox 360.
Сохранение игр и загрузка другого содержимого. Для сохранения игр вы можете использовать пространство имен Content и множество доступных вспомогательных классов. При загрузке содержимого вы всегда должны гарантировать, что используете правильный путь с помощью свойства StorageContainer.TitleLocation, которое работает и на платформе Windows и содержит путь к хранилищу содержимого конкретного приложения. Загрузка из другого места на Xbox 360 приведет к исключению Access Denied для операций ввода/вывода.
Тестирование разрешений. Xbox 360 поддерживает много различных разрешений, отличных от привычных разрешений PC и вы должны проверить работу хотя бы в 2 – 3 различных разрешениях, чтобы убедиться, что игра нормально работает в них.
Возможность управлять всем с игрового пульта. Большинство виденных мной XNA-игр делают ошибку, позволяя игроку управлять действиями только с помощью клавиатуры или только с игрового пульта. В результате они могут запускаться только в Windows или только при наличии у вас игрового контроллера от Xbox 360. Всегда добавляйте поддержку для всех известных устройств ввода, применение которых в данной игре имеет смысл.
Отладка и тестирование модулей на Xbox 360. Отладка и тестирование модулей на консоли ничем не отличаются; действуют те же самые правила. Возможно, будет несколько сложнее трассировать ошибки и следить за сообщениями журнала, но пошаговый проход по коду и тестирование тестовых модулей замечательно работает с XNA. Пользуйтесь этим преимуществом. Межу прочим, редактирование с продолжением выполнения работает только на платформе Windows, и вы не можете поступать так с играми для Xbox 360, что может показаться раздражающим, но вы все равно большую часть процесса разработки, скорее всего, будете осуществлять на платформе Windows.
XNA Pong с самого начала программировалась с мыслью об Xbox 360; все используемые методы и возможности поддерживаются Xbox 360. Следовательно, тестирование на Xbox 360 не имеет большого значения, вам достаточно развернуть приложение, запустить его и убедиться, что все работает как ожидалось (рис. 2.11).
Рис. 2.11 |
netlib.narod.ru | < Назад | Оглавление | Далее > |