windows phone 7 game development

47
Разработка игр для Windows Phone 7 Сергей Лутай Digital Cloud Technologies

Upload: sergii-lutai

Post on 11-Nov-2014

2.142 views

Category:

Technology


4 download

DESCRIPTION

Presentation from Microsoft SWIT 2010 Conference

TRANSCRIPT

Page 1: Windows Phone 7 Game Development

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

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

Page 2: Windows Phone 7 Game Development

Содержание

Page 3: Windows Phone 7 Game Development

Технологии

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

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

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

(и игры)

Page 4: Windows Phone 7 Game Development

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

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

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

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

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

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

Page 5: Windows Phone 7 Game Development

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

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

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

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

Page 6: Windows Phone 7 Game Development

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

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

Page 7: Windows Phone 7 Game Development

Мощный

Эффективный

Доступный

Page 8: Windows Phone 7 Game Development

XNA Game Studio

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

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

C#, .NET и Visual Studio

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

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

Игры

Page 9: Windows Phone 7 Game Development

XNA Game Studio 4.0

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

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

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

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

Studio 2010

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

а аудио

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

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

Page 10: Windows Phone 7 Game Development

Мощный

Page 11: Windows Phone 7 Game Development

.NET платформа

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

Windows Phone 7

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

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

800+ игр

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

порталы

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

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

Page 12: Windows Phone 7 Game Development

Frameworks designed

for performance

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

Frameworks designed

for performance

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

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

Frameworks designed

for performance

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

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

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

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

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

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

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

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

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

Page 13: Windows Phone 7 Game Development

Эффективный

Page 14: Windows Phone 7 Game Development

Visual Studio и .NET

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

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

Page 15: Windows Phone 7 Game Development

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

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

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

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

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

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

Page 16: Windows Phone 7 Game Development

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

XNA Framework

Page 17: Windows Phone 7 Game Development

XNA

.NET Framework

Windows

XNA

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

ввода

XBox 360Zune /

Windows Phone 7

.NET Compact Framework

XNA Game Studio

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

а

Page 18: Windows Phone 7 Game Development

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

Платформа

Библиотека

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

Игры

Graphics

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

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

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

Graphics Audio Input Math Storage

Direct3D XACT XINPUT XContent

Starter Kits

Page 19: Windows Phone 7 Game Development

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

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

Page 20: Windows Phone 7 Game Development

Пример

Система разработана с учётом лучших практик для 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);}

Page 21: Windows Phone 7 Game Development

Графика

Page 22: Windows Phone 7 Game Development

Обзор

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

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

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

Page 23: Windows Phone 7 Game Development

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

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

BasicEffect

SkinnedEffect

EnvironmentMapEffect

DualTextureEffect

AlphaTestEffect

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

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

Page 24: Windows Phone 7 Game Development

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

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

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

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

Page 25: Windows Phone 7 Game Development

Аудио & Медиа

Page 26: Windows Phone 7 Game Development

Пример

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

Page 27: Windows Phone 7 Game Development

Пример

Пример

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

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

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

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

Page 28: Windows Phone 7 Game Development

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

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

Page 29: Windows Phone 7 Game Development

Пример

Кросс платформенный 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) { //... }}

Page 30: Windows Phone 7 Game Development

Сенсоры

Для Silverlight и XNA

Page 31: Windows Phone 7 Game Development

Пример

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

Accelerometer

Vibration

Обзор

Accelerometer accelerometer = new Accelerometer();

accelerometer.ReadingChanged +=

AccelerometerReadingChanged;

accelerometer.Start();

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

Page 32: Windows Phone 7 Game Development

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

Демо

Page 33: Windows Phone 7 Game Development

Xbox Live

Page 34: Windows Phone 7 Game Development

Как устроено

Windows Phone 7 OS

Xbox LIVE

Gamer Services

HTTP

Invites

ProfileAchieve-ments

Leader-boards

TrialMode

Push

Avatars

Page 35: Windows Phone 7 Game Development

Профиль

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

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

Page 36: Windows Phone 7 Game Development

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

// 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;

Page 37: Windows Phone 7 Game Development

Достижения Пример// 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; }

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

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

Page 38: Windows Phone 7 Game Development

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

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

Page 39: Windows Phone 7 Game Development

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

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

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

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

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

Page 40: Windows Phone 7 Game Development

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

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

Page 41: Windows Phone 7 Game Development

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

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

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

Page 42: Windows Phone 7 Game Development

Доступный

Page 43: Windows Phone 7 Game Development

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

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

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

Три экрана

Page 44: Windows Phone 7 Game Development

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

Демо

Page 45: Windows Phone 7 Game Development

ИтогМощный

Эффективный

Доступный

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

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

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

Page 46: Windows Phone 7 Game Development

Ресурсы

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

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

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

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

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

Email: [email protected]

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

Peer Support @ http://forums.xna.

comBlogs Contact Microsoft

Page 47: Windows Phone 7 Game Development

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

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

[email protected]://lutay.uneta.com.ua

@sergeylutay