Вторник, 05 Ноября 2024, 22:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 2
  • «
  • 1
  • 2
Microsoft XNA Обзор. Данные. Описание.
Lord_FДата: Понедельник, 22 Ноября 2010, 12:08 | Сообщение # 21
Любопытный Игродел
Сейчас нет на сайте
то!

[quote]Ничто не истина, всё дозволено[/quote]
ChaosDevДата: Суббота, 27 Ноября 2010, 12:28 | Сообщение # 22
был не раз
Сейчас нет на сайте
Мнение новичка на этом форуме но не новичка в программировании.
Хочу сказать что это мое мнение и никому я ничего не навязываю даже если кому то покажется что я хвалю C# и XNA.

Вначале хочется сказать несколько слов о C++ и C# да простят меня за оффтоп.

В С++ все намного сложнее чем на C#. Очистка памяти целиком ложится на программиста. Почти полное отсутствие Intellisense(знающие люди поймут что без этого кодинг превращается в мучение с копанием в MSDN). Попрограммировав немного на Dx9 и попробовав Dx10 я понял что на чистом нативном API ничего особенного не сделаешь. А OpenGL просто ужасен, когда программируешь на на нем чувствуешь что работаешь с примитивной рисовалкой т.к все функции реализованы в этих расширениях а работать с ними это верх маразма тем более по непонятной причине он у меня тормозит.
Вконец измучавшись над тем чтобы сделать на C++ Directx чтото вроде Boulder dash я бросил этот язык(я вначале изучал C#) и обратил внимание на XNA. Но сначала я хочу досказать мысль которая будет полезна тем кто выбирает язык.

Вот некоторые из проблем что мучали меня в C++ и которые отсутствуют в NET и C#
- Отсутствие иерархичности в библиотеках совершенно дикие и непонятные различные названия функций
- То что функции располагаются не в удобных классах а в хедер файлах
- Отсутствие Intellisense и в следствие этого необходимость лазать в справку постоянно
- Необходимость контроля над памятью и указатели
- Уродские синтаксические конструкции вроде ((*void)&ptr) вслдествии этого необходимость серьезно вчитываться в код
- Сложности в том что называется Generic в C# а в С++ - template
- Библиотеки и муки с ними (кто пробовал тот знает)
- Постоянные муки с компиляцией чужого кода (да эти unidentifited symbols by Linker)
- Ощущение что ООП(полиморфизм,интерфейсы и прочее) сделаны там только для галочки
- Необходимоть помнить огромное кол-во всего и вся

Из единственных плюсов C++ могу выделить разве что быстродействие и ощущение себя крутым когда пишешь нечто вроде malloc(*mydata) + &foo ? 0 : 1.

А вот несколько слов о движках и почему мне нравится программирование на API а не готовых движках
Разумеется мое мнение касается движков которые берут на себя все функции игры а не скажем физический движок.

1 - Нежелание разбираться в нем из-за ощущения что он неподойдет для целей которые мне захочется реализовать
2 - Нежелание осознавать что я использую чей-то движок с лицензией.
3 - Даже если движок бесплатный то есть ощущение что он неполноценный (XNA это не касается потому что это не движок а API)
4 - Я ненавижу ограничения движка (но меня устраивают ограничения в XNA)
5 - Ну и уже тем более мне не хочется использовать такие вещи как GameMaker для создания игр (см п 4)


XNA

Сам XNA это не просто голая библиотека - но целый SDK то есть в комплекте поставляется несколько утилит, при установке в Visual Studio устанавливается плагин и шаблоны проектов.
А сама библиотека называется XNA Framework и это не движок а API. Именно Application Programming Interface !

Почему же это все таки не движок ? Первое - В нем нету всяких редакторов уровней,моделей и скриптов. Да в нем есть некоторые функции движка в частности особенности загрузки Контента(т.е текстур,моделей и прочего) Второе - Там нет уже готовых классов для казалось бы банальных вещей присущих любому движку - камеры для обзора, графических примитивов(вроде куба или сферы) для рисования, менеджеров сцены и объектов, модели со скелетной анимацией. Все это придется писать самим для своих нужд используя функционал XNA. Там есть Content pipeline который при компиляции сериализует эти файлы в расширение xnb. Это сделанно в частности для единобразия и кроссплатформенности. Движок вашей игры делается над XNA. Т.е вы в своей игре пишете классы которые используют этот API.
Но (тем кто заинтересовался) не расстраивайтесь там есть и множество классов для ваших нужд, например SpriteBatch - для рисования спрайтов и текста. Вспомогательные математические классы особенно нужны и поэтому в XNA они присутствуют и вам не нужно изобретать велосипед. Для простой 2д игры особых знаний не требуется - только загрузка текстур из готовой папочки Content и вызов функции Draw класса SpriteBatch. Помимо этого чтобы например изменить разрешение экрана, переключить в полноэкранный режим, проверить пересечения объекта и скажем. сферы все это как и многое другое делается одной строчкой. В этом, я согласен XNA похож на движок.

Теперь о кроссплатформенности. Напоминаю XNA кроссплатформенен для продуктов Microsoft. Последнии версии поддерживают Windows XP SP4,Windows Vista SP2,Windows 7,XBOX360,Windows phone 7 и Zune. Также существует Mono XNA позволяющее разрабатывать на Linux,iPhone и пр.(пока что не поддерживает 3д насколько я помню). Еще существует порт на silverlight позволяющая делать игры для броузера(тоже пока 2д) - пруфлинк

Вернемся к функциям XNA. Он построен на Directx9 (но все уже идет к тому чтобы перейти на более высокие версии(надеюсь DX11)). Он поддерживает практически все функции Directx9 и позволяет использовать собственные шейдеры. Также если функционала например Content pipeline не хватает его можно расширить - например - создать текстурный контур объекта из текстуры, или изменить цвет вначале загрузки объекта, или загрузить модель со анимацией. Для этого используется шаблон Content pipeline extension и подключается как библиотека к основному проекту.
Хочу заметить что XNA нельзя в полной мере назвать враппером над Directx9 т.к много из тех функций что разработчики посчитали сложными, малопонятными и некроссплатформенными подверглись удалению и видоизменению.

Для программиста
Чтобы использовать XNA(последней версии) достаточно установить
Visual Studio 2010 (можно Express C# качается вот отсюда - http://www.microsoft.com/express/Downloads/)
XNA 4.0 (если вам не нужна платформа windows phone 7 качайте - http://go.microsoft.com/fwlink/?LinkId=197288)
(если нужна то http://go.microsoft.com/fwlink/?LinkId=201927)

Для конечного пользователя.

Сейчас XNA 4.0 для запуска игр на PC у конечного пользователя должно быть установлена
Directx9 - ну вы знаете где его скачать он везде есть.
Net Framework 4.0
XNA Redistributable 4.0

Для запуска игр на XBOX требуется регистрация на creators.xna.com/ и платная подписка. Стоимость может варьироваться от региона к региону. Также походу дела Россия не является страной в которой запущен XBOX Live. Соответвенно даже если вы игру на своей приставке и запустите то продать ее вам не получится. Походу дела в XBox уже есть библиотеки с поддержкой XNA.
Для windows phone 7 - тоже вроде никаких библиотек на него устанавливать не надо. Чтобы распространять тоже требуется платить (для студентов по программе DreamSpark несколько игр бесплатно)
Чтобы соединится с Windows phone 7 или XBox нужно использовать утилиту Microsoft Connect которая поставляется с XNA.

Плюсы XNA
-вся мощь и плюсы NET и C#
-легкие и удобные классы для различных нужд
-множество уже готовых движков(откройте хотя бы codeplex)
-отличная документация (не впример врапперу SlimDx или DirextxSDK)
-множество примеров, обучалок на англоязычных сайтах(гуглите)
-бесплатная лицензия EULA. Т.е можно разработать коммерческую игру и продавать без проблем.

Минусы XNA
-ограничение Directx9(пока)
-несколько меньшее быстродействие по сравнению с SlimDX и уж тем более нативного Dx9 на C++.Но уверяю, в грамотно разработанной игре это даже не будет заметно.
-отсутствие хэндлов(т.е указателей IntPtr на нативные интерфейсы в классах где они внутренне используются).
-некоторых вещей из dx9 нету (но их можно реализовать другими путями)
-документация не включает в себя шейдеры HLSL (скачайте DirectxSDK и используйте документацию оттуда)

Особенности некоторых компонентов XNA Framework
-Microsoft.Xna.Framework.Net - предназначена для XBOX360 и сервиса Live. Для мульиплеера лучше использовать стороннии библиотеки
-Microsoft.Xna.Framework.Input - не соединяется с DirectInput т.е нет поддержки джойстика. Внутренне использует простые API функции из windows.h для клавиатуры и мыши и xinput.h для XBOX геймпада. Если вам нужна мощь вашего джойстика,руля,педалей итп - совет - создайте для этого библиотеку и вставьте DirectInput из SlimDX(он опенсорсный).
-Microsoft.Xna.Framework.GamerServices - предназначена для XBOX360. Не поставляется в redistributable для windows поэтому использование в большинстве случаев ненужно.
-Microsoft.Xna.Framework.Sound - звук легко использовать, есть 3d, но присутствует поддержка только двух колонок(вроде) т.е нет 5.1 или 8 каналов.

Как связаться с разработчиками XNA
Прежде всего заглянуть на http://forums.create.msdn.com/forums/ и спросить там(на англ языке конечно) Там они часто тусуются.
Если вам хочется внести предложение или рассказать о найденной ошибке - гоу сюда connect.microsoft.com/site226/Feedback (нужна бесплатная Live регистрация)

Если вас заинтресовало как внутри XNA устроено ?
Используйте Reflector и загляните внутрь XNA Framework !

Если вы не знаете как например сделать какую либо вещь на ней - прежде всего загляните на http://create.msdn.com/en-US/education/catalog/ Хоть поиск там и кривой но обучалок там много и из различных компонентов этих обучалок можно вполне сделать игру ! Русскоязычных сайтов - Очень мало. единственный это - xnadev.ru - мне кажется что особо умных программистов там нет.
Поэтому, вперед, изучать англ.яз и смотреть http://forums.create.msdn.com/forums/
Напоследок почитать о XNA можно в блоге одного из главных разрабов - blogs.msdn.com/b/shawnhar/

biggrin

Сообщение отредактировал ChaosDev - Суббота, 27 Ноября 2010, 14:04
ezhickovichДата: Суббота, 27 Ноября 2010, 14:16 | Сообщение # 23
[Великий и могучий хозяинъ]
Сейчас нет на сайте
Quote (ChaosDev)
А OpenGL просто ужасен

Ну... Какие руки...

Quote (ChaosDev)
То что функции располагаются не в удобных классах а в хедер файлах

А что мешает написать класс?

Quote (ChaosDev)
Уродские синтаксические конструкции вроде ((*void)&ptr) вслдествии этого необходимость серьезно вчитываться в код

Для таких случаев есть специальные конструкции ака reinterpret_cast, const_cast и т.д.

Quote (ChaosDev)
Сложности в том что называется Generic в C# а в С++ - template

Чем тебе шаблоны не угодили?
Это одно из наиполезнейших средств проектирования...
На них построен буст и СТЛ...
При правильном использовании они могут серьёзно упростить разработку...

Quote (ChaosDev)
Постоянные муки с компиляцией чужого кода (да эти unidentifited symbols by Linker)

Это тоже свидетельствует о кривоте рук... (твоих и/или автора библиотеки)

Quote (ChaosDev)
Ощущение что ООП(полиморфизм,интерфейсы и прочее) сделаны там только для галочки

ЛОЛ...
НУ в общем ты опять снёс бред...

Quote (ChaosDev)
Необходимоть помнить огромное кол-во всего и вся

И снова ЛОЛ...

Quote (ChaosDev)
1 - Нежелание разбираться в нем из-за ощущения что он неподойдет для целей которые мне захочется реализовать
2 - Нежелание осознавать что я использую чей-то движок с лицензией.
3 - Даже если движок бесплатный то есть ощущение что он неполноценный (XNA это не касается потому что это не движок а API)
4 - Я ненавижу ограничения движка (но меня устраивают ограничения в XNA)
5 - Ну и уже тем более мне не хочется использовать такие вещи как GameMaker для создания игр (см п 4)

А вот с этим согласен...

Вообще самый огромный минус XNA - необходимость присутствия соответствующего редиста на компе юзера...
Для многих людей ограниченных низкой скоростью интернета это очень не приятно...

Да и кстати, если приложению на DirectX нужно таскать с собой либы, то для ГЛ это не проблема, ведь его дллы идут вместе с драйверами...
Для разработки на ГЛ не нужно качать большие SDK (которая есть у ДХ), да, я согласен, что большую его часть занимают примеры, но либы ГЛ всёравно весят меньше, при этом не уступая по возможностям и скорости...

Я не люблю, когда поднимают настолько холиварные темы... wink

Ну и конечно:

Quote (ChaosDev)
Хочу сказать что это мое мнение и никому я ничего не навязываю

Удачи...



Я: О великий повелитель этой ничтожной вселенной - сокращённо ЁЖ!
ChaosDevДата: Суббота, 27 Ноября 2010, 14:50 | Сообщение # 24
был не раз
Сейчас нет на сайте
Аргументированно ответил вам в ЛС чтобы не разжигать оффтоп и холивар.

Сообщение отредактировал ChaosDev - Суббота, 27 Ноября 2010, 16:28
SnakeRДата: Вторник, 22 Ноября 2011, 21:09 | Сообщение # 25
постоянный участник
Сейчас нет на сайте
Кто нибудь может обьяснить разницу между XNA Game Studio и XNA Framework, что лучше/хуже ну и т.п.

Unity3D Developer
Ваш лучший помощник при разработке в Unity3D
Dark_FalconДата: Вторник, 22 Ноября 2011, 22:18 | Сообщение # 26
постоянный участник
Сейчас нет на сайте
XNA это Framework который встраивается в Visual Studio.
UndeadДата: Вторник, 22 Ноября 2011, 22:26 | Сообщение # 27
NeoAxis User
Сейчас нет на сайте
SnakeR, XNA Framework часть XNA Game Studio.

Вcем зла.
zodiakДата: Вторник, 22 Ноября 2011, 22:51 | Сообщение # 28
постоянный участник
Сейчас нет на сайте
Dark_Falcon, Undead,
Так объяснили, что и я ничего не понял.

XNA Game Studio это инструмент, который встраивается в Visual Studio.
XNA Framework это набор библиотек, без которых не будет работать ни XNA Game Studio ни сделанные на нем игры. Идет в комплекте с XNA Game Studio, или по необходимости устанавливается отдельно.


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
СамоделкинДата: Суббота, 05 Мая 2012, 15:30 | Сообщение # 29
участник
Сейчас нет на сайте
Посмотрел то ли на msdn то ли на techdays завлекалочку об XNA и Win Phone. Соблазняют бесплатным набором готовых инструментов для создания игр под Win Phone и бесплатным размещением и прочими фичами (для студентов, учеников). Всячексой поддержкой и прочим.
Стало интересно глянуть, Поставил четвертый XNA на настольную машину со старой видеокартой (DX9). И при попытке запустить проект (пустой даже) выдает ошибку о том что не найден подходящий Direct3D девайс.

Вроде бы системные требования совсем смешные указаны для XNA (а в директории с установленным XNA 4.0 в папке DX Redist лежит файл APR2007_d3dx9_33_x86 что какбэ намекает о поддержке DX9). Неужели необходима карточка с DX10 чтобы что-то плоское на телефон накалякать? На компе стоит Win7х64, VS2010 и видеокарта на 512Мб с поддержкой третьих шейдеров (точно не помню какая, что-то древнее вроде Radeon x1600 или около того). Или дело в сочетании Windows7 и старой dx9 видюхи?


Сообщение отредактировал Самоделкин - Суббота, 05 Мая 2012, 15:51
zodiakДата: Суббота, 05 Мая 2012, 16:34 | Сообщение # 30
постоянный участник
Сейчас нет на сайте
Да, для работы эмулятора нужна видеокарта с дх10 .

Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
biohazardoДата: Суббота, 05 Мая 2012, 16:55 | Сообщение # 31
участник
Сейчас нет на сайте
Пытался работать с ХНА без знаний C#. Был вдохновлён Террарией, которая на ХНА. Трудно конечно, но можно научиться быстро. Но мне почему то не понравилось, другие языки родней, и кроссплатформенней...

web-developer, который хочет делать игры хотя-бы чуть-чуть
СамоделкинДата: Суббота, 05 Мая 2012, 17:23 | Сообщение # 32
участник
Сейчас нет на сайте
Quote (zodiak)
Да, для работы эмулятора нужна видеокарта с дх10 .

Даже если проект не под телефон, а просто WindowsGame тоже нужен эмулятор? Готовые приложения созданные на XNA 4.0 сами-то априори не требуют DX10-11 для запуска?
Stalker_ShooterДата: Понедельник, 07 Мая 2012, 10:16 | Сообщение # 33
3D XNA'шник
Сейчас нет на сайте
Quote
Даже если проект не под телефон, а просто WindowsGame тоже нужен эмулятор?


Нет. В таком случае просто нужно поменять профиль на Reach (правой кнопкой по проекту , свойства)


*Не убегай от снайпера, умрешь уставшим.
*Мои статьи...
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг