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

54

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

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

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

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

DT210

[email protected]; twitter: @shwars

интерактивное представление

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

Содержание

Мы напишем простую 2D-игру «Морской бой» менее, чем за 30 минПосмотрим другие примеры игрТакже вы узнаете

Разработка для WP7: Silverlight vs. XNAXNA – не только для игр!Концепция 3 экранов и разработка под 3 экранаУправление телефоном: multitouch и жестыОблачные игры: XBox Live

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

Любите ли вы играть?

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

Телефон как платформа для игр

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

Концепция трёх экранов

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

Разработка под 3 экрана

XNA Framework

XNA Game Studio

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

Выбор платформы

Silverlight

XNA

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

Выбор платформы

Современные приложения, управляемые событ-ми.Быстрое создание богатых графических приложенийHTML/JavascriptУстоявшаяся, надёжная, популярная технология

Высокопроизводительная игровая платформаБыстрое создание многоэкранных 2D и 3D игрБогатая content pipelineУстоявшаяся технология для Xbox, Windows, и Zune / WP7

Игры(и приложения)

Приложения(и игры)

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

Самая главная мысль на сегодня!

Программная модель XNA основана на игровом цикле, а не на событиях!

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

Игровой цикл

public void LoadContent(…) { … }public void Update(…) { … }public void Draw(…) { … }

LoadContent

Update

Draw

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

Windows Phone Microsoft confidential.

Что нужно, чтобы пробовать?

Windows Phone Developer ToolsVisual Studio 2010 Express for Windows PhoneИнтеграция с VS 2010 Pro

Видеокарта с DirectX 10Windows Phone 7 – не обязателен!

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

Игровой цикл

Демонстрация

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

Разработка под 3 экрана

XNA Framework

XNA Game Studio

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

Архитектура XNA

Platform

CoreFramework

ExtendedFramework

Games

XACT XINPUT XContentDirect3D

Graphics Audio Input Math Storage

Application Model Content Pipeline

Starter Kits Code Content Components

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

Обработка ввода

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) { //... }}

Состояние и опрос вместо событий

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

Работа с устройствами ввода

Демонстрация

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

Масштабирование / ориентацияПишем игру без учёта нативного разрешения и ориентации

экранаАвтоматический поворот между портретным и ландшафтным режимамиTouch API автоматически поддерживает изменение ориентации

Масштабирование для поднятия производительностиКомпромисс между производительностью и четкостью800x480 = 384,000 пикселей, 480x320 = 153,600 пикселей

Масштибирование в обе стороны к нативному разрешениюМного лучше, чем билинейная фильтрацияПростой перенос игр с других платформ

Поворот / масштабирование на аппаратном уровне!

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

Работа с ориентацией

Демонстрация

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

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();

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

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

Показать или убрать элементы управления

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

Компонентизация игры

КонтентВыделение в отдельный проектРазделение по директориям

КодВыделение классов под объекты игрыGameComponent / DrawableGameComponentGame State Management

Хорошие ресурсы:http://create.msdn.com/en-US/education/roadmapOffline Windows Phone 7 Training Kit

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

Catapult Wars Sample

Демонстрация

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

Графика

Эволюция существующего immediate mode rendering API

Простое управление ресурсами и состоянием рендеринга

Возможности меняются для “Reach”/“HiDef” profiles

2D и 3D примитивы

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

3D-графика

World Matrix• Преобразование модели

перед отображениемCamera View Matrix• Направление обзораCamera Projection Matrix• Угол обзора / фокусное

расстояние• Плоскости отсечения

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

Эффекты

Доступны на всех платформах

BasicEffect

SkinnedEffect

EnvironmentMapEffect

DualTextureEffect

AlphaTestEffect

Custom effects (шейдеры) недоступны на Windows

Phone 7

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

3D-графика и работа с жестами

Демонстрация

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

Основные жесты WP7

TapDouble TapPan

FreeDrag | Horizontal Drag | Vertical DragDrag -> DragComplete

Flick (всегда после Pan)HoldPinch / Stretch

Pinch -> PinchComplete

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

Законченная игра + работа с акселерометром

Демонстрация

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

ПроизводительностьОптимизация загрузки контента

Уменьшение размераЗагрузка в правильное время

Оптимизация работы с памятьюБольше Value TypesВызов GC.Collect()Простные структуры < 1Mb

Работа в меньшем разрешении + автомасштабированиеTombstoning

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

Построение множества Мандельброта (Ч.Петцольд)

Демонстрация

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

Engines

http://farseerphysics.codeplex.com/http://helium.codeplex.com/

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

Powerful

Productive

Portable

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

Производительная

Продуктивная

Переносимая

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

Производительная

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

Игры на управляемом коде?

Frameworks designed

for performance

Frameworks designed

for performance

Разработаны с требованием

производителности

Frameworks designed

for performance

Опробованный успех на игровых

сценариях

В будущее WP7 – с управляемым

кодом!

Нет лишней сборки мусора

Оптимизированные мат.библиотеки

API с переходом на нативный код

3+ года профилирования и

оптимизации

Эффективная работа на WP7

Более 800 .NET-игр на XBLA / XBIG

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

Продуктивная

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

Visual Studio – среда разработки Эффективная разработка с .NET и C# Знакомая удобная среда разработки Intellisense Интегрированная среда

build/deploy/debug MSBuild engine для автоматизации

процесса сборки

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

Content PipelineУпрощает использование контента!

Импортеры для основных игровых

форматов

Управляем содержимым прямо в Visual

Studio

Оптимизация в двоичный формат для

эфф.загрузки Полностью расширяемая

Не требуется XNA Framework/Game Loop

В XNA 4.0 – внешние контентные

проекты

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

Переносимая

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

XNA Framework разрабатывалась кросс-платформенной

Меньшее время разработки -большее кол-во клиентов

Синхронизация проектовмежду платформами

Разработка под 3 экрана

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

Профили оборудования

Баланс между переносимостью и богатством возможностей.

HiDef

Reach Совместимость между экранами / устройствамиВключая Windows Phone 7

Лучшие возможности платформыТолько Xbox 360/Windows

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

Что нового в XNA 4.0

Разработка для

Windows Phone 7 Упрощенн

ый API работы с графикой

Интеграция с Visual

Studio 2010

Улучшенная

поддержка звука

Новые конфи-

гурируемые эффекты

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

Ресурсы для изучения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

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

Выбираем Silverlight

ГрафикаМного элементов управленияВекторная графика в XAML

Мультимедиа Богатая поддержка в приложении

ИнструментарийИспользуем Microsoft Blend в процессе разработки

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

Выбираем XNA

Графика3D-графика2D-приложения с активным использованием спрайтов

Моделирование/отрисовкаЕсли предпочтительна циклическая модель приложения

ИнструментарийИспользуем графические форматы, поддерживаемые XNA Framework Content Pipeline

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

Интеграция Silverlight/XNA

XNA Framework Game Loop работает поверх Silverlight Application object на Windows Phone 7

Существуют API для интеграцииЧасть XNA Framework доступна из Silverlight-приложений

Включая игровые сервисы (Xbox LIVE)

На текущий момент интеграция не полная

Сцены с GraphicsDevice в XNA Framework и UIElements из Silverlight

Надо выбирать подходящую технологию для вашего сценария

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

Дальнейшие шагиСкачать 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

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

ВыводыПроизводительная

Продуктивная

Переносимая

Windows Phone 7 – это мощная игровая платформаУправляемый код обеспечивает производительные игры

Отличные знакомые инструменты для разработки (Visual Stuio)Можно сконцентрироваться на логике/контенте

Поддержка трех экранов в едином проектеФокусируемся на игре, а не на технологиях

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

Обратная связь

Ваше мнение очень важно для нас. Пожалуйста, оцените доклад, заполните анкету и сдайте ее при выходе из зала

Спасибо!

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

Вопросы

DT210Дмитрий Сошников

Координатор академических программ[email protected]://blogs.msdn.com/soshttp://twitter.com/shwars

Вы сможете задать вопросы докладчику в зоне «Спроси эксперта» в течение получаса после завершения этого доклада

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

Официальные курсы и сертификация Microsoft

Более 300 официальных курсов Microsoft доступно в России. Официальные курсы можно прослушать только в авторизованных учебных центрах Microsoft

под руководством опытного сертифицированного инструктора Microsoftинтенсивное обучение с акцентом на практикуболее 80-и учебных центров более чем в 20-и городах России (+ дистанционные и выездные курсы)

Сертификат Microsoft - показатель квалификации ИТ-специалиста для работодателя .

• Microsoft предлагает гибкую систему сертификаций.

• Все курсы, учебные центры и центры тестирования: www.microsoft.com/rus/learning

40% Доказательство № 75

сертифицированных специалистов считают, что сертификация помогла им получить работу или повышение

57% Доказательство № 119

рекрутеров считают сертификацию сотрудников одним из критериев для повышения в должности

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

Специальные предложенияСертификационный пакет со вторым шансом

Пакеты экзаменационных ваучеров со скидкой от 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

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

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

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