Платформа разработки Windows Phone 7

Post on 19-May-2015

1.338 views 1 download

Transcript of Платформа разработки Windows Phone 7

Платформа разработки Windows Phone 7

Михаил Черномордиков Эксперт по стратегическим технологиям mik@microsoft.com, twitter: @mixen

Принципы

UX

9

Начало: стартовый экран

Навигация: страницы

Z-order

Платформа

Capacitive touch 4 or more contact points

Sensors A-GPS, Accelerometer, Compass, Light, Proximity, Gyro

Camera 5 mega pixels or more

Multimedia Common detailed specs, Codec acceleration

Memory 256MB RAM or more, 8GB Flash or more

GPU DirectX 9 acceleration

CPU Qualcomm MSM7x30, MSM8x55 800Mhz or higher

Hardware buttons | Back, Start, Search

Kernel Hardware BSP

App Model UI Model Cloud Integration

Applications

App management Licensing Chamber isolation Software updates

Shell frame Session manager Direct3D Compositor

Xbox LIVE Bing Location Push notifications Windows Live ID

Your App UI and logic

A-GPS Accelerometer Compass Light Proximity Media Wi-Fi Radio Graphics

Security Networking Storage

Frameworks

Silverlight XNA HTML/JavaScript

CLR

Hardware Foundation

Common Base Class Library

Collections ComponentModel Configuration

Diagnostics Reflection IO

Security Threading

Runtime Resources Globalization Text Location Net

ServiceModel Linq

Application Object

Silverlight Presentation and Media XNA Frameworks for Games

Windows Phone Frameworks

Navigation Shapes Markup Media

Controls Drawing IsolatedStorage

Audio Media Graphics Input

Drawing GamerServices

Content

PhoneApplicationPage PushNotification WebBrowserControl Sensors PhoneApplicationFrame

Camera Device Integration Launchers &

Choosers Windows Phone

Controls

Tombstoning Происходит когда приложение теряет фокус Возможные причины:

кнопка «Назад», кнопка «Старт», клик на Toast-уведомление, запуск системных диалогов, телефонный звонок

Обработчики событий в App.xaml.cs События

Application_Launching, Application_Activated, Application_Deactivated, Application_Closing

API для интеграции с существующими сервисами

Новые сервисы: специально для Windows Phone 7

Сервисы-посредники и готовые сценарии

Windows Phone

Cloud integration client services

Frameworks

Windows

Phone

Application

Ваши веб-сервисы

Custom Web Service

Существующие сервисы

Сервисы Microsoft

Notification Service

Location Service

Пока единственный способ «разбудить» приложение

Доставляем информацию, экономя батарею

Windows Phone Your Web Service

Custom Web Service

Existing Web Services

Microsoft Services

Push client service

Microsoft.Phone.Notification Notification Service

Silverlight и XNA

Современные приложения, управляемые событ-ми.

Быстрое создание богатых графических приложений

HTML/Javascript

Устоявшаяся, надѐжная, популярная технология

Высокопроизводительная игровая платформа

Быстрое создание многоэкранных 2D и 3D игр

Богатая content pipeline

Устоявшаяся технология для Xbox, Windows, и Zune / WP7

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

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

XNA Game Studio 4.0 Эффективная разработки с .NET и C#

Знакомая удобная среда разработки

Intellisense

Интегрированная среда build/deploy/debug

MSBuild engine для автоматизации

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

Использование .NET

Windows Phone 7

Только защищѐнный код

XNA Game Studio 4.0 – только C#

850+ игр на XBLA/XBLIG

Игры публикуются через порталы

Как используется .NET/XNA

Frameworks designed

for performance

Frameworks designed

for performance

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

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

Frameworks designed

for performance

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

сценариях

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

кодом!

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

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

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

3+ года профилирования и оптимизации

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

Core Framework

Graphics Audio Input Math Storage

Networking Gamer Services

Extended Framework

Application Model Content Pipeline

Игры

Starter Kits Ваш код Ваш контент Компоненты

Платформа

DirectX .NET CF

Networking Gamer Services*

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

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

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

Standard Slide with subtitle

Типы файлов

Название импортера

Класс импортера

Выходной класс

.bmp, .dds,

.dib, .hdr,

.jpg, .pfm,

.png, .ppm,

.tga.

XNA Texture Importer

TextureImporter TextureContent

.fx XNA Effect Importer

EffectImporter EffectContent

.x XNA X File Importer

Ximporter NodeContent

.fbx XNA Autodesk FBX Importer

FbxImporter NodeContent

.xml XNA XML Importer

XmlImporter Object

.xap XNA XACT Project Importer

- -

Importers

XNA Framework Game Loop Example

Интеграция с лучшими практиками разработки для WP7

Транслируются в существующие модели XNA

Например, входящий звонок

Обновление - отрисовка

Программная модель, совместимая с предыдущими выпусками XNA

Улучшенная производительность

protected override void Update(GameTime gameTime) { // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)

this.Exit(); // TODO: Add your update logic here

base.Update(gameTime); } protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here base.Draw(gameTime); }

Начни с простого и усложняй

BasicEffect

SkinnedEffect

EnvironmentMapEffect

AlphaTestEffect

DualTextureEffect

BasicEffect

SkinnedEffect

EnvironmentMapEffect

AlphaTestEffect

DualTextureEffect

• 0-3 источников света

• Освещение Blinn-Phong

• Текстурирование

• Туман

• Цвет вершин

Vertex Cost Pixel Cost

No lighting 5 1

One vertex light 40 1

Three vertex lights 60 1

Three pixel lights 18 50

+ Texture +1 +2

+ Fog +4 +2

BasicEffect

SkinnedEffect

EnvironmentMapEffect

AlphaTestEffect

DualTextureEffect

• Для lightmaps, detail textures, decals

• Смешивание двух текстур

• Раздельные текстурные координаты

• 2X модуляция (A*B*2)

• Низкая «стоимость»

Vertex Cost Pixel Cost

Two Textures 7 6

+ Fog +4 +2

BasicEffect

SkinnedEffect

EnvironmentMapEffect

AlphaTestEffect

DualTextureEffect

• Для billboards и imposters

• Добавляет операцию alpha test

• «Дешевый» эффект

Vertex Cost Pixel Cost

<, <=, >=, > 6 6

==, != 6 10

+ Fog +4 +2

BasicEffect

SkinnedEffect

EnvironmentMapEffect

AlphaTestEffect

DualTextureEffect

• Анимация моделей

• Обновление костей на CPU

• Vertex skinning на GPU

• Поддерживает до 72 костей

• 1, 2, или 4 веса для вешины

Vertex Cost Pixel Cost

One vertex light 55 4

Three vertex lights 75 4

Three pixel lights 33 51

+ Two bones +7 +0

+ Four bones +13 +0

+ Fog +0 +2

BasicEffect

SkinnedEffect

EnvironmentMapEffect

AlphaTestEffect

DualTextureEffect

• Диффузная карта + карта среды

• «Дешевый» способ сделать освещение

• Эффект Френеля

Vertex Cost Pixel Cost

One light 32 6

Three lights 36 6

+ Fresnel +7 +0

+ Specular +0 +2

+ Fog +0 +2

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

Сенсоры

Акселерометр, GPS

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

Захват и воспроизведение

Проигрывание звуковых файлов

Pitch, volume, pan audio

Синтез и буферизация

Запись звука

Вибрация

Microphone/Bluetooth Support

Воспроизведение на наушниках

Ввод с микрофона

Audio Playback Example

// Load a sound effect from a raw stream SoundEffect effect1 = SoundEffect.FromStream(GetStreamFromTheWeb("http://url.wav")); effect1.Play(); // Create dynamic audio on the fly byte[] 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 URI Uri mediaStreamUri = new Uri("http://song.asx"); Song streamedSong = Song.FromUri("Song", mediaStreamUri); // Play the song MediaPlayer.Play(streamedSong);

MediaLibrary media = new MediaLibrary(); // Get the JPEG image data Stream myJpegImage = ReadAndModifyPicture(somePicture); // Save texture to Media Library media.SavePicture("Awesome", myJpegImage);

Picture Enumeration and Playback

Воспроизведение видео

Автоматическое управление списком медиа в игре

Можно воспроизводить по URI/URL

Поддержка выбора.публикации фотографий

Поддержка Video Player API

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

Windows Phone и Xbox Live

Windows Phone впервые расширяет бренд Xbox LIVE вне консоли

Windows Phone – первый шаг к повсеместным игровым сервисам

Это может быть вашим конкурентным преимуществом!

Gamertag

Друзья

Достижения

Размещение продуктовой рекламы

mobilegames@microsoft.com

1.

2.

3.

Мини-игры

Примеры

Starter Kits

Mango

Мультизадачность Быстрое переключение Быстрое восстановление

Running

Deactivated

Dormant

Activated

Автоматическое сохранение состояния

Загружено или восстановлено

Приложение в памяти, ресурсы «отключены», потоки приостановлены

Tombstoned

Задача Реализация

Переключение задач пользователем

Fast App Switching

Уведомления и сигналы по расписанию

Background Notification

Загрузка файлов Background Transfer

Уведомления о событиях Push Notifications

Регулярные действия по расписанию; toast/tile updates; data pre-caching; etc.

Periodic Background Agent

Проигрывание музыки Background Audio Player

Синхронизация данных Resource-Intensive Agent

GPS-tracking Run under the lock screen

Можно

Tiles Toast Местоположение Сеть Файлы БД Аудио (через спец. агентов) …

Нельзя

Показывать UI XNA Микрофон и камера Сенсоры

Приложения хранят данные в Isolated Storage

Настройки

Неструктурированные данные

Структурированные данные в БД SQL Server CE

Настройки

App Управление

файлами

Файлы приложения

App Data Folder

Каталог приложения

Package Manager

App Root Folder

WP7 Isolated Storage APIs

Установка

DB

Файл БД

DB Файл БД

Custom Data Context

App Objects

Identity Management

Change Tracking

Update Processing

Object Materialization

Core ADO.NET (System.Data)

SQLCE ADO.NET Provider (System.Data.SqlServerCe)

SQL CE DB

.Call System.Linq.Queryable.Select( .Call System.Linq.Queryable.Where(

.Constant(Table(Wines)), '(.Lambda #Lambda1)), '(.Lambda #Lambda2))

.Lambda #Lambda1(db.Wines $w) { $w.Country == “USA" } .Lambda #Lambda2(w.Country $w) { $w.Name }

var query = from w in db.Wines where w.Country == “USA" select w.Name;

select Name

from Wines

where Country = “USA”

Имя и

фото

Остальные

данные

контакта

Встречи и

события

Windows Live Social YES YES YES

Exchange accounts

(Exchange и Google, etc.)

YES YES YES

Адресная книга от

оператора

YES YES n/a

Facebook YES NO NO

Другие сети в People

Hub (e.g., Twitter)

NO NO NO

Новые инструменты разработки уже в этом месяце!

http://blogs.msdn.com/b/microsoft_press/archive/2010/10/28/free-ebook-programming-windows-phone-7-by-charles-petzold.aspx

Платформа разработки Windows Phone 7

Михаил Черномордиков Эксперт по стратегическим технологиям mik@microsoft.com, twitter: @mixen