XNA Content Pipeline (перевод статьи с блога команды XNA)
Итак, мы уже рассказали о XNA Game Studio Express, о XNA Framework, сегодня мы поговорим о Конвейере контента (Content Pipeline), который входит в состав XNA Framework. Как я уже отметил в докладе на Геймфесте – Конвейер контента можно описать как: «Расширенная, управляемая система обработки контента в C# Express».
Итак, о бо всем попорядку. Примечание: Content Pipeline – далее «Конвейер контента». Контент – текстуры, модели и т.п.
Игры на сегодняшний день включают в себя большое количество контента. Добавление контента в игры не является простым занятием. Вы можете столкнуться с большим количеством проблем, например, при поиске экспортера или нужных инструментов для поддержки этого экспортера. Далее вам нужно найти инструменты для обработки контента и использовать их для создания данных для своей игры. Также нужно позаботиться о загрузке контента и о его правильном отображении в игре. На самом деле, у больших студий есть команды людей, которые работают только над внедрением контента в игру.
В Конвейере контета мы улучшили этот процесс и сделали его отличающимся от стандартного подхода. Он будет прост и гибок в использовании. Вы сможете с легкостью управлять контентом своей игры, уделяя больше внимания ее написанию. Вначале мы поговорим о том, как контент используется в вашей игре. С помощью Конвейера контента, вы сможете управлять им внутри Visual C# Express. Так же как вы добавляете файлы с кодом в ваш проект, так же вы сможете добавлять и контент. Это позволит вам содержать все файлы в одном месте, что упрощает организацию игры в целом, независимо от количества проектов. Например, вы сможете совершать действия таки как: Importer и Processor.
Конвейер контента составляет большое количество компонентов. Каждому компоненту, который мы рассмотрим, я присвоил имя, для лучшего понимания Конвейера контента. При добавлении первого контента, необходимо подобрать импортер. Импортер отвечает за прием данных и их нормализации. Это означает, что вам не нужно будет заботиться, например, о том, куда повернут объект. Импортер принимает файлы, которые вы сохранили или экспортировали при помощи инструмента создания контента, и импортирует их в Visual C# Express. Здесь главным будет то, какие данные содержит объект, а не с помощью какого инструмента он сделан.
Итак, давайте рассмотрим, какие импортеры существуют для XNA Game Studio Express:
Большинство этих форматов вам известны, но хотелось бы обсудить формат Autodesk FBX, которых является 3Д транспортным форматом, позволяющим вам переносить 3Д данные сцены через большое количество инструментов. Формат FXB поддерживается не только коммерческими инструментами, но и большим количеством шароварных и бесплатных. После того как импортер сделал свою работу, данные будут находиться в DOMе контента. Термин DOM используется для простого представления коллекции классов или схем (как в XML файле). Данные находящиеся в DOMе представляют собой строго типизированные данные. Это означает, что данные представлены в хорошо известном формате, например, набором вершин, или текстурированными данными, при этом не имеет значения откуда этот файл был взят. Это очень важно, для правильной работы Конвейера контента. Этот файл может быть записан на диск в виде XML для отладки данных. Процессор отвечает за получение данных из DOMa контента и создание объекта для вас в реальном времени. Этим объектом может быть все, начиная от простой модели, заканчивая сложным обрабатывающим устройством для вашей игры. Конвейер контента включает в себя несколько процессоров, такие как Model(для простых объектов с текстурами), Texture2D(для текстур) и Effect (для работы с материалами объектов). Это означает, что, например, вам не нужно больше заботиться о вертексных буферах, или о trangle strips-ах, но в тоже время вы сможете более гибко работать с вашим контентом, потому как ваш мир может быть построен не только из обычных моделях.
Вот простейший пример. Если вы сделаете игру-гонки, у вас будет некоторый контент, который составляет трассу игры. В трассе вы бы хотели сделать все необходимые данные, например, точки старта и финиша, чекпоинты и т.п. Вместо того, чтобы разбивать трассу на несколько сотен моделей, вы просто можете написать процессор, который совместит все данные и разделит этот объект. Конечно, ваш движок должен знать, какой использовать объект трассы, но процессор предоставляет гибкость и настройку любого типа используемого контента.
Процессоры также сделаны так, что вы сможете с легкостью их писать и использовать. Помните я сказал, что процессоры собирают данные из DOMа контента, и что это очень важно? Это потому что процессор не обращает внимания, откуда файл пришел. Все данные сохраняются в едином формате, и вам не нужно заботиться о переделке вашего процессора под .x или .tga файлы. Также вам будут доступны функции манипулирования и генерирования новых данных из содержимого DOMа. Например, генерирования мипмепов. Постоение контента является важной частью системы, оно обрабатывается координатором компоновки (build coordinator). Т.к. ваш контент будет находится в Visual C# Express, когда вы нажмете Build весь контент будет скомпонован и сохранен на диск, готовый к использованию в реальном времени. Также будет фича, которая будет отслеживать за изменением контента, т.е. например, если вы поменяли текстуру, то перекомпонуются только те объекты, которые используют эту тестуру.
Наконец, вам нужен способ использования данных в игре. Это задача Content Managera. Он сможет быстро и легко загружать данные. Например:
1
Model model = Content.Load<Model>("ship");
Вот рисунок описывающий все выше сказанное:
Также есть возможность расширять XNA Content Pipeline. Но об этом мы поговорим в другой статье.
1069 Прочтений • [XNA Content Pipeline (перевод статьи с блога команды XNA)] [08.08.2012] [Комментариев: 0]