CodeFest 2011. Коротецкий М. — Особенности разработки игр для iOS, Android, PSP
CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
Transcript of CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7
Разработка игр для Windows Phone 7
Дмитрий СошниковКоординатор академических программМайкрософт Россия
DT210
[email protected]; twitter: @shwars
интерактивное представление
Содержание
Мы напишем простую 2D-игру «Морской бой» менее, чем за 30 минПосмотрим другие примеры игрТакже вы узнаете
Разработка для WP7: Silverlight vs. XNAXNA – не только для игр!Концепция 3 экранов и разработка под 3 экранаУправление телефоном: multitouch и жестыОблачные игры: XBox Live
Любите ли вы играть?
Телефон как платформа для игр
Концепция трёх экранов
Разработка под 3 экрана
XNA Framework
XNA Game Studio
Выбор платформы
Silverlight
XNA
Выбор платформы
Современные приложения, управляемые событ-ми.Быстрое создание богатых графических приложенийHTML/JavascriptУстоявшаяся, надёжная, популярная технология
Высокопроизводительная игровая платформаБыстрое создание многоэкранных 2D и 3D игрБогатая content pipelineУстоявшаяся технология для Xbox, Windows, и Zune / WP7
Игры(и приложения)
Приложения(и игры)
Самая главная мысль на сегодня!
Программная модель XNA основана на игровом цикле, а не на событиях!
Игровой цикл
public void LoadContent(…) { … }public void Update(…) { … }public void Draw(…) { … }
LoadContent
Update
Draw
Windows Phone Microsoft confidential.
Что нужно, чтобы пробовать?
Windows Phone Developer ToolsVisual Studio 2010 Express for Windows PhoneИнтеграция с VS 2010 Pro
Видеокарта с DirectX 10Windows Phone 7 – не обязателен!
Игровой цикл
Демонстрация
Разработка под 3 экрана
XNA Framework
XNA Game Studio
Архитектура XNA
Platform
CoreFramework
ExtendedFramework
Games
XACT XINPUT XContentDirect3D
Graphics Audio Input Math Storage
Application Model Content Pipeline
Starter Kits Code Content Components
Обработка ввода
Touch Input Handling
Кросс-платформенное API
Touch API
Xbox 360 Controllers (Xbox/Windows)
Keyboard (Xbox/Windows/Windows Phone 7)
Для совместимости есть на всех платформах(не нужно #ifdef)
На Windows Phone 7 и Windows поддерживает Multipoint
Учитывает ориентацию и разрешение
var touchCollection = TouchPanel.GetState();
//...
foreach (var touchLocation in touchCollection){ if (touchLocation.State == TouchLocationState.Released) { //... }}
Состояние и опрос вместо событий
Работа с устройствами ввода
Демонстрация
Масштабирование / ориентацияПишем игру без учёта нативного разрешения и ориентации
экранаАвтоматический поворот между портретным и ландшафтным режимамиTouch API автоматически поддерживает изменение ориентации
Масштабирование для поднятия производительностиКомпромисс между производительностью и четкостью800x480 = 384,000 пикселей, 480x320 = 153,600 пикселей
Масштибирование в обе стороны к нативному разрешениюМного лучше, чем билинейная фильтрацияПростой перенос игр с других платформ
Поворот / масштабирование на аппаратном уровне!
Работа с ориентацией
Демонстрация
Audio Capture Example
Звук public void EventDrivenCapture(){ mic = Microphone.Default; buffer = new byte[mic.GetSampleSizeInBytes(mic.BufferDuration)]; mic.BufferReady += new EventHandler(OnBufferReady); DynamicPlayback = new DynamicSoundEffectInstance(mic.SampleRate, AudioChannels.Mono);}
public void OnBufferReady(object sender, EventArgs args){ // Get the latest captured audio. int duration = mic.GetData(buffer);
// Do some post-capture processing and playback. MakeMeSoundLikeARobot(buffer, duration); DynamicPlayback.SubmitBuffer(buffer);}
Захват и воспроизведение
Простой API для проигрывания WAV
Изменить pitch, volume, pan
Синтез/буферизация аудио
Сериализация захваченных данных
Контроль над типами System.Media в Windows Phone 7Microphone/Bluetooth
SupportВоспроизведение на наушниках
Ввод с микрофона
Audio Playback Example// Load a sound effect from a raw streamSoundEffect effect1 = SoundEffect.FromStream(GetStreamFromTheWeb("http://url.wav"));effect1.Play();
// Create dynamic audio on the flybyte[] fluteSound = GetFluteNote();effect2 = new SoundEffect(fluteSound, SampleRate, AudioChannels.Stereo);SoundEffectInstance instance = effect2.CreateInstance();instance.Pan = -1; instance.Pitch = 1.5f;instance.Play();
URI Song Playback Example
Retrieve Image Data
Поиск и воспроизв.музыки
Музыка/фото/видео// Constructs a song from a URIUri mediaStreamUri = new Uri("http://song.asx");Song streamedSong = Song.FromUri("Song",
mediaStreamUri);
// Play the songMediaPlayer.Play(streamedSong);
MediaLibrary media = new MediaLibrary();
// Get the JPEG image dataStream myJpegImage = ReadAndModifyPicture(somePicture);
// Save texture to Media Library media.SavePicture("Awesome", myJpegImage);
Picture Enumeration and Playback
Воспроизведение видео
Автоматическое управление списком медиа в игре
Можно воспроизводить по URI/URL
Поддержка выбора.публикации фотографий
Поддержка Video Player API
Показать или убрать элементы управления
Компонентизация игры
КонтентВыделение в отдельный проектРазделение по директориям
КодВыделение классов под объекты игрыGameComponent / DrawableGameComponentGame State Management
Хорошие ресурсы:http://create.msdn.com/en-US/education/roadmapOffline Windows Phone 7 Training Kit
Catapult Wars Sample
Демонстрация
Графика
Эволюция существующего immediate mode rendering API
Простое управление ресурсами и состоянием рендеринга
Возможности меняются для “Reach”/“HiDef” profiles
2D и 3D примитивы
3D-графика
World Matrix• Преобразование модели
перед отображениемCamera View Matrix• Направление обзораCamera Projection Matrix• Угол обзора / фокусное
расстояние• Плоскости отсечения
Эффекты
Доступны на всех платформах
BasicEffect
SkinnedEffect
EnvironmentMapEffect
DualTextureEffect
AlphaTestEffect
Custom effects (шейдеры) недоступны на Windows
Phone 7
3D-графика и работа с жестами
Демонстрация
Основные жесты WP7
TapDouble TapPan
FreeDrag | Horizontal Drag | Vertical DragDrag -> DragComplete
Flick (всегда после Pan)HoldPinch / Stretch
Pinch -> PinchComplete
Законченная игра + работа с акселерометром
Демонстрация
ПроизводительностьОптимизация загрузки контента
Уменьшение размераЗагрузка в правильное время
Оптимизация работы с памятьюБольше Value TypesВызов GC.Collect()Простные структуры < 1Mb
Работа в меньшем разрешении + автомасштабированиеTombstoning
Построение множества Мандельброта (Ч.Петцольд)
Демонстрация
Engines
http://farseerphysics.codeplex.com/http://helium.codeplex.com/
Powerful
Productive
Portable
Производительная
Продуктивная
Переносимая
Производительная
Игры на управляемом коде?
Frameworks designed
for performance
Frameworks designed
for performance
Разработаны с требованием
производителности
Frameworks designed
for performance
Опробованный успех на игровых
сценариях
В будущее WP7 – с управляемым
кодом!
Нет лишней сборки мусора
Оптимизированные мат.библиотеки
API с переходом на нативный код
3+ года профилирования и
оптимизации
Эффективная работа на WP7
Более 800 .NET-игр на XBLA / XBIG
Продуктивная
Visual Studio – среда разработки Эффективная разработка с .NET и C# Знакомая удобная среда разработки Intellisense Интегрированная среда
build/deploy/debug MSBuild engine для автоматизации
процесса сборки
Content PipelineУпрощает использование контента!
Импортеры для основных игровых
форматов
Управляем содержимым прямо в Visual
Studio
Оптимизация в двоичный формат для
эфф.загрузки Полностью расширяемая
Не требуется XNA Framework/Game Loop
В XNA 4.0 – внешние контентные
проекты
Переносимая
XNA Framework разрабатывалась кросс-платформенной
Меньшее время разработки -большее кол-во клиентов
Синхронизация проектовмежду платформами
Разработка под 3 экрана
Профили оборудования
Баланс между переносимостью и богатством возможностей.
HiDef
Reach Совместимость между экранами / устройствамиВключая Windows Phone 7
Лучшие возможности платформыТолько Xbox 360/Windows
Что нового в XNA 4.0
Разработка для
Windows Phone 7 Упрощенн
ый API работы с графикой
Интеграция с Visual
Studio 2010
Улучшенная
поддержка звука
Новые конфи-
гурируемые эффекты
Ресурсы для изученияWindows Phone 7 на MSDN по-русски
http://msdn.microsoft.com/ru-ru/windowsphone/default.aspx
Windows Phone 7 Training Kit по-русски https://
rusdpe.blob.core.windows.net/downloads/RusWP7TrainingKit.zip Одна ссылка: http://create.msdn.com
Windows Phone 7 Training Course XNA Unit: http://msdn.microsoft.com/en-us/wp7trainingcourse_wp7xna_unit
Сообщество: http://xnadev.ru Книга Чарльза Петцольда Programming Windows Phone 7: http://download.microsoft.com/download/5/0/A/50A39509-D015-410F-A8F2-A5511E5A988D/Microsoft_Press_ebook_Programming_Windows_Phone_7_PDF.pdf
Выбираем Silverlight
ГрафикаМного элементов управленияВекторная графика в XAML
Мультимедиа Богатая поддержка в приложении
ИнструментарийИспользуем Microsoft Blend в процессе разработки
Выбираем XNA
Графика3D-графика2D-приложения с активным использованием спрайтов
Моделирование/отрисовкаЕсли предпочтительна циклическая модель приложения
ИнструментарийИспользуем графические форматы, поддерживаемые XNA Framework Content Pipeline
Интеграция Silverlight/XNA
XNA Framework Game Loop работает поверх Silverlight Application object на Windows Phone 7
Существуют API для интеграцииЧасть XNA Framework доступна из Silverlight-приложений
Включая игровые сервисы (Xbox LIVE)
На текущий момент интеграция не полная
Сцены с GraphicsDevice в XNA Framework и UIElements из Silverlight
Надо выбирать подходящую технологию для вашего сценария
Дальнейшие шагиСкачать Windows Phone Developer Tools
http://developer.windowsphone.com
http://creators.xna.com
http://channel9.msdn.com/Learn/Courses/ WP7TrainingKit/WP7XNA
http://xnadev.ru
http://techdays.ru
ВыводыПроизводительная
Продуктивная
Переносимая
Windows Phone 7 – это мощная игровая платформаУправляемый код обеспечивает производительные игры
Отличные знакомые инструменты для разработки (Visual Stuio)Можно сконцентрироваться на логике/контенте
Поддержка трех экранов в едином проектеФокусируемся на игре, а не на технологиях
Обратная связь
Ваше мнение очень важно для нас. Пожалуйста, оцените доклад, заполните анкету и сдайте ее при выходе из зала
Спасибо!
Вопросы
DT210Дмитрий Сошников
Координатор академических программ[email protected]://blogs.msdn.com/soshttp://twitter.com/shwars
Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение получаса после завершения этого доклада
Официальные курсы и сертификация Microsoft
Более 300 официальных курсов Microsoft доступно в России. Официальные курсы можно прослушать только в авторизованных учебных центрах Microsoft
под руководством опытного сертифицированного инструктора Microsoftинтенсивное обучение с акцентом на практикуболее 80-и учебных центров более чем в 20-и городах России (+ дистанционные и выездные курсы)
Сертификат Microsoft - показатель квалификации ИТ-специалиста для работодателя .
• Microsoft предлагает гибкую систему сертификаций.
• Все курсы, учебные центры и центры тестирования: www.microsoft.com/rus/learning
40% Доказательство № 75
сертифицированных специалистов считают, что сертификация помогла им получить работу или повышение
57% Доказательство № 119
рекрутеров считают сертификацию сотрудников одним из критериев для повышения в должности
Специальные предложенияСертификационный пакет со вторым шансом
Пакеты экзаменационных ваучеров со скидкой от 15 до 20% и бесплатной пересдачей («вторым шансом»). Все экзамены сдаются одним человеком.
Сэкономьте 15% на сертификации вашей ИТ-команды
Пакет из 10-и экзаменационных ваучеров со скидкой 15% для сотрудников ИТ-отдела. «Второй шанс» включен. Ваучеры можно произвольно распределять между сотрудниками.
Microsoft Certified Career ConferenceПервая 24-часовая глобальная виртуальная конференция с 18 ноября с 15.00 (моск. время) по 19 ноября 2010 г.Сессии по технологиям и построению карьерыСкидка 50% для сертифицированных специалистов Microsoft и студентов
Бесплатная подписка на TechNet для слушателей официальных курсов
Некоторые курсы по SharePoint, Windows 7; Windows Server 2008; SQL Server 2008
Детали: www.microsoft.com/rus/learning
С 22 ноября 2010 г. – подписка TechNet
бесплатно для слушателей курсов.
Количество ограничено!