CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7

Post on 11-May-2015

1.324 views 4 download

Tags:

Transcript of CodeFest 2011. Сошников Д. — Разработка игр для Windows Phone 7

Разработка игр для Windows Phone 7

Дмитрий СошниковКоординатор академических программМайкрософт Россия

DT210

dmitryso@microsoft.com; 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Дмитрий Сошников

Координатор академических программdmitryso@microsoft.comhttp://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

бесплатно для слушателей курсов.

Количество ограничено!