windows phone 7 game development

Post on 11-Nov-2014

2.142 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation from Microsoft SWIT 2010 Conference

TRANSCRIPT

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

Сергей ЛутайDigital Cloud Technologies

Содержание

Технологии

Быстрое создание пользовательского интерфейсаСобытийная модель приложенияHTML/JavascriptРазработка бизнес приложений

Высоко-производительная платформаБыстрое создание многоэкранных 2D и 3D игр Широко применяемая платформа: Xbox, Windows, and Zune

ИГРЫ(и приложения)ПРИЛОЖЕНИЯ

(и игры)

XNA Framework Game Loop и Silverlight Application равноправные технологии Windows Phone 7

Большинство типов XNA можно использовать в Silverlight приложениях

Включая Gamer Services (Xbox LIVE)

Базовые типы отличаютсяСцены используют GraphicsDevice из XNA Framework и страницы используют UIElement из Silverlight

Можно выбрать технологию, которая лучше всего подходит для вашего приложения

Совместное использование

ГрафикаГотовый набор элементов управленияВекторная графика с использованием XAML

Медиа Мощная поддержка видео контента

ИнструментИспользуем Expression Blend и VS

Выбор технологии

ГрафикаИспользование 2D и 3D графикиИмитация/рисованиеИспользование циклов для обновления состоянияИнструментыИспользование XNA Framework Графические типы Content Pipeline

Выбор технологии

Мощный

Эффективный

Доступный

XNA Game Studio

Сделайте разработку легче

XNA Framework обеспечивает мощныйAPI для игр

C#, .NET и Visual Studio

Шаблоны проектов для игр

XNA - это инфраструктура

Игры

XNA Game Studio 4.0

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

Windows Phone 7 Упрощенный

графическийAPI

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

Studio 2010

Улучшена поддержк

а аудио

Новые конфигура-

ционныеэффекты

Мощный

.NET платформа

Управляемый код для разработки игр

Windows Phone 7

Платформа управляемого кода

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

800+ игр

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

порталы

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

для игр сегодня!

Frameworks designed

for performance

Нацеленность на производительность

Frameworks designed

for performance

Инфраструктура разработана для

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

Frameworks designed

for performance

XNA Framework разработан для

игровых сценариев

Платформа будущего..

Исключена лишняя генерация мусора

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

Эффективный API взаимодействия с

системой нижнего уровня

3+ лет профилирования и развития

Произвольность на Windows Phone 7

Эффективный

Visual Studio и .NET

• Эффективная разработка с .NET и C#

• Производительная IDE• Подсказки• Встроенная отладка• MSBuild

Конвеер контентаУпрощает управление контентом!

Управление в Visual Studio

Импортирование известных игровых форматов

Оптимизация данных в двоичный формат для эффективной загрузки

Полностью расширяемая

XNA Framework/Game Loop необязателен

Упрощает разработку игр

XNA Framework

XNA

.NET Framework

Windows

XNA

ГрафикаУстройства

ввода

XBox 360Zune /

Windows Phone 7

.NET Compact Framework

XNA Game Studio

ЗвукМатематик

а

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

Платформа

Библиотека

Инфраструктура

Игры

Graphics

Модель приложения

Код Контент Компоненты

Ковеер контента

Graphics Audio Input Math Storage

Direct3D XACT XINPUT XContent

Starter Kits

Базовый класс

public class MyGame : Microsoft.Xna.Framework.Game{ protected override void Initialize(); protected override void LoadContent(); protected override void Update(GameTime gameTime); protected override void Draw(GameTime gameTime);}

Пример

Система разработана с учётом лучших практик для Windows Phone 7

Используется существующий концепт XNA Framework

Фреймовый цикл

Совместимость с предыдущими версиямиУвеличена производительность на устройствах

XNA Framework игровой цикл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);}

Графика

Обзор

Развитие существующего API отображения

Упрощено управление ресурсами и состояниями

Отображение 2D и 3D форм

Настраиваемые эффекты

Новые эффекты на всех платформах

BasicEffect

SkinnedEffect

EnvironmentMapEffect

DualTextureEffect

AlphaTestEffect

Пользовательские эффекты пока не

доступны в Windows Phone 7

Поддержка: масштабирование и ориентация

Пишите игры не думая о разрешении и ориентацииАвтоматическое вращение между ориентациями дисплеяКасание автоматически поддерживается при измененом масштабировании

Масштабирование может радикально увеличить производительность

Масштабирование/Вращение выполняется на уровне железа

Аудио & Медиа

Пример

Аудио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);}

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

Поддержка Microphone/Bluetooth

Пример// 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();

Пример

Пример

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

Медиа – Музыка/Фото/Видео// 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);

Отображение картинок

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

Ввод касанием

Простое взаимодействие с игрой!

Пример

Кросс платформенный API тача

Touch API

Xbox 360 джойстики (Xbox/Windows)

Клавиатура (Xbox/Windows/Windows Phone 7)

Кросс платформенная портируемость

Мультитач на Windows Phone 7 и Windows

Обзор

var touchCollection = TouchPanel.GetState();

//...

foreach (var touchLocation in touchCollection){ if (touchLocation.State == TouchLocationState.Released) { //... }}

Сенсоры

Для Silverlight и XNA

Пример

ПримерВозможности Windows Phone 7Location

Accelerometer

Vibration

Обзор

Accelerometer accelerometer = new Accelerometer();

accelerometer.ReadingChanged +=

AccelerometerReadingChanged;

accelerometer.Start();

VibrateController rumbler;rumbler.Start(TimeSpan.FromSeconds(2));

Использование сенсоров…

Демо

Xbox Live

Как устроено

Windows Phone 7 OS

Xbox LIVE

Gamer Services

HTTP

Invites

ProfileAchieve-ments

Leader-boards

TrialMode

Push

Avatars

Профиль

Ваша личность в облакеТелефон знает о вашем

Windows Live ID Связывание с вашим Gamertag

ПрофильПример

// Profile accessSignedInGamer gamer = Gamer.SignedInGamers[0];

// Get the player's GamerTag to displaystring gamerTag = gamer.Gamertag;

// A SignedInGamer has a ProfileGamerProfile profile = gamer.GetProfile();

// Get the player's current GamerScoreint gamerScore = profile.GamerScore;

// get the gamer picture (PNG file stream)Stream gamerPictureStream = profile.GamerPicture;

Достижения Пример// Award an achievementSignedInGamer gamer = Gamer.SignedInGamers[0];gamer.AwardAchievement("Attended TechEd 2010");

Пример// Get achievementsAchievementCollection achievements = gamer.GetAchievements();

// walk through achievementsforeach (Achievement a in achievements){

string name = a.Name;string description = a.Description;bool earned = a.IsEarned;int score = a.GamerScore;

Stream icon = a.Picture; }

Реальные достижения

Реальные балы

РейтингПример

// Create leaderboard identity with game mode 1LeaderboardIdentity id = LeaderboardIdentity.Create(LeaderboardKey.BestScoreLifeTime, 1);

// get the leaderboard writer from the signed in gamerLeaderboardWriter writer = gamer.LeaderboardWriter;

// get the leaderboard entry for the identityLeaderboardEntry entry = writer.GetLeaderboard(id);

// write new leaderboard dataentry.Rating = 1000;entry.columns.SetValue("Outcome", LeaderboardOutcome.Win);

Связывание с

друзьями

Основанная на

балах или

времени

Фиксированные

данные

Пример// Read from leaderboard with page size of 10LeaderboardReader reader = LeaderboardReader.Read(id, gamer, 10);

foreach (LeaderboardEntry e in reader.Entries){

// score or time, as defined by identity. Rating determines rank.long rating = e.Rating;// read additional column datalong wins = e.Columns.GetValueInt64("Wins");Stream blob = e.Columns.GetValueStream("Blob");}

reader.PageDown();

Триальный режим

ПримерGuide.SimulateTrialMode = true;

// if we are in trial mode, show a marketplace offeringif (Guide.IsTrialMode){

PlayerIndex playerIndex = Gamer.SignedInGamers[0].PlayerIndex;Guide.ShowMarketplace(playerIndex);}

Простая проверкаЭмуляция игрыВозможность купить игру

АватарыСейчас поддерживаеться только через

веб сервисЗагружается как поток

Приглашение в игру

Отсылаются через почтуGuide.ShowGameInvite() отображает интерфейс приглашенияИгрок выбирает в какую игру отсылать приглашениеДрузья видят приглашения в своем

игровом хабе.

Доступный

XNA Frameworkкросс платформенный

Тратим меньше времени и получаем больше устройств

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

Три экрана

Кроссплатформенные игры…

Демо

ИтогМощный

Эффективный

Доступный

Управляемый код, работает уже сегодняWindows Phone обеспечивает мощную платформу для игр

Разработчик сосредотачивается на игреЭффективные инструменты разработки делают нас более продуктивными

Легко расширяется на другие платформыПозволяет сфокусироваться на игре, не на технологии

Ресурсы

Сотни примеров

Большое сообщество экспертов поможет начать работать с XNA

XNA Creators Club @ http://creators.xna.com

Team Blog @ http://blogs.msdn.com/xna/

Shawn Hargreaves @ http://blogs.msdn.com/shawnhar/

Email: wpgames@microsoft.com

On the web: http://developer.windowsphone.com

Peer Support @ http://forums.xna.

comBlogs Contact Microsoft

Сергей ЛутайРуководитель департамента

разработки Silverlight приложенийMVP, MCT, MCPD

serhii.lutai@dctua.comhttp://lutay.uneta.com.ua

@sergeylutay

top related