Windows Phone 7 Game Development

1,880 views

Published on

Presentation from Microsoft SWIT 2010 Conference

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,880
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Windows Phone 7 Game Development

  1. 1. Разработка игр для Windows Phone 7<br />Сергей ЛутайDigital Cloud Technologies<br />
  2. 2. Содержание<br />
  3. 3. Технологии<br />Быстрое создание пользовательского интерфейса<br />Событийная модель приложения<br />HTML/Javascript<br />Разработка бизнес приложений<br />Высоко-производительная платформа<br />Быстрое создание многоэкранных2D и 3D игр<br />Широко применяемая платформа: Xbox, Windows, and Zune<br />ИГРЫ(и приложения)<br />ПРИЛОЖЕНИЯ<br />(и игры)<br />
  4. 4. XNA Framework Game Loop и Silverlight Application равноправные технологии Windows Phone 7<br />Большинство типов XNA можно использовать в Silverlight приложениях<br />Включая Gamer Services (Xbox LIVE)<br />Базовые типы отличаются<br />Сцены используютGraphicsDeviceиз XNA Framework истраницы используют UIElementиз Silverlight<br />Можно выбрать технологию, которая лучше всего подходит для вашего приложения<br />Совместное использование<br />
  5. 5. Графика<br />Готовый набор элементов управления<br />Векторная графика с использованиемXAML <br />Медиа<br />Мощная поддержка видео контента<br />Инструмент<br />Используем Expression Blend и VS<br />Выбор технологии<br />
  6. 6. Графика<br />Использование2D и 3D графики<br />Имитация/рисование<br />Использование циклов для обновлениясостояния<br />Инструменты<br />Использование XNA Framework Графические типы Content Pipeline<br />Выбор технологии<br />
  7. 7. Мощный<br />Эффективный<br />Доступный<br />
  8. 8. XNA Game Studio<br />Сделайте разработку легче<br />XNA Framework обеспечивает мощный<br />API для игр<br />C#, .NET и Visual Studio<br />Шаблоны проектов для игр<br />XNA - это инфраструктура<br />Игры<br />
  9. 9. XNA Game Studio 4.0<br />Разработка для Windows Phone7<br />Улучшена поддержка аудио<br />Упрощенныйграфический<br />API<br />Интеграция с Visual Studio 2010<br />Новые <br />конфигура-<br />ционные<br />эффекты<br />
  10. 10. Мощный<br />
  11. 11. Управляемый код для разработки игр<br />Windows Phone 7 <br />.NET платформа<br />.NET/XNA <br />используется <br />для игр <br />сегодня!<br />Платформа управляемого кода<br />XNA Game Studio 4.0 - только C#<br />800+ игр<br />Windows игры публикуются через порталы<br />
  12. 12. Нацеленность на производительность<br />Frameworks designed for performance<br />Frameworks designed for performance<br />Frameworks designed for performance<br />Инфраструктура разработана для производительности<br />XNA Framework разработан для игровых сценариев<br />Платформа будущего..<br />Исключена лишняя генерация мусора<br />3+ лет профилированияиразвития<br />Произвольность на Windows Phone 7<br />Оптимизированы мат. библиотеки<br />Эффективный API взаимодействия с системой нижнего уровня<br />
  13. 13. Эффективный<br />
  14. 14. Visual Studio и .NET<br />Эффективная разработкас .NET иC#<br />ПроизводительнаяIDE<br />Подсказки<br />Встроенная отладка<br />MSBuild<br />
  15. 15. Конвеер контента<br />Упрощает управление контентом!<br />Управление вVisual Studio<br />Импортированиеизвестных игровых форматов<br />Оптимизация данных в двоичный формат для эффективной загрузки<br />Полностью расширяемая<br />XNA Framework/Game Loop необязателен<br />
  16. 16. XNA Framework<br />Упрощает разработку игр<br />
  17. 17. XNA<br />XNA Game Studio<br />XNA<br />Графика<br />Звук<br />Математика<br />Устройства ввода<br />.NET Framework<br />.NET Compact Framework<br />XBox 360<br />Zune / Windows Phone 7<br />Windows<br />
  18. 18. Архитектура XNA<br />Контент<br />Код<br />Компоненты<br />Игры<br />Starter Kits<br />Инфраструктура<br />Модель приложения<br />Ковеер контента<br />Библиотека<br />Graphics<br />Audio<br />Input<br />Math<br />Storage<br />Graphics<br />Платформа<br />XACT<br />XINPUT<br />XContent<br />Direct3D<br />
  19. 19. Базовый класс<br />public class MyGame : Microsoft.Xna.Framework.Game<br />{<br /> protected override void Initialize();<br /> protected override void LoadContent();<br /> protected override void Update(GameTimegameTime);<br /> protected override void Draw(GameTimegameTime);<br />}<br />
  20. 20. XNA Framework игровой цикл<br />Пример<br />protectedoverridevoid Update(GameTimegameTime)<br />{<br /> // Allows the game to exit<br /> if(GamePad.GetState(PlayerIndex.One).Buttons.Back==<br />ButtonState.Pressed)<br />this.Exit();<br /> // TODO: Add your update logic here<br />base.Update(gameTime);<br />}<br />protectedoverridevoid Draw(GameTimegameTime)<br />{<br />GraphicsDevice.Clear(Color.CornflowerBlue);<br /> // TODO: Add your drawing code here<br />base.Draw(gameTime);<br />}<br />Фреймовый цикл<br />Совместимость с предыдущими версиями<br />Увеличена производительность на устройствах<br />Система разработана с учётом лучших практик для Windows Phone 7<br />Используется существующий концепт XNA Framework<br />
  21. 21. Графика<br />
  22. 22. Развитие существующего API отображения<br />Упрощено управление ресурсами и состояниями<br />Отображение 2D и 3D форм<br />Обзор<br />
  23. 23. Настраиваемые эффекты<br />BasicEffect<br />SkinnedEffect<br />Новые эффекты на всех платформах<br />EnvironmentMapEffect<br />DualTextureEffect<br />Пользовательские эффекты пока не доступны в Windows Phone 7<br />AlphaTestEffect<br />
  24. 24. Поддержка: масштабированиеиориентация<br />Пишите игры не думая о разрешении и ориентации<br />Автоматическое вращение междуориентациями дисплеяКасание автоматически поддерживается при измененом масштабировании<br />Масштабирование может радикально <br />увеличить производительность<br />Масштабирование/Вращениевыполняется <br />на уровне железа<br />
  25. 25. Аудио & Медиа<br />
  26. 26. Пример<br />Аудио<br />publicvoidEventDrivenCapture()<br />{<br />mic = Microphone.Default;<br /> buffer = newbyte[mic.GetSampleSizeInBytes(mic.BufferDuration)];<br />mic.BufferReady += newEventHandler(OnBufferReady);<br />DynamicPlayback = newDynamicSoundEffectInstance(mic.SampleRate,AudioChannels.Mono);<br />}<br />publicvoidOnBufferReady(object sender, EventArgsargs)<br />{<br />// Get the latest captured audio. <br />int duration = mic.GetData(buffer);<br />// Do some post-capture processing and playback. <br />MakeMeSoundLikeARobot(buffer, duration);<br />DynamicPlayback.SubmitBuffer(buffer);<br />}<br />Захват аудиоивоспроизведение<br />Пример<br />// Load a sound effect from a raw stream<br />SoundEffecteffect1 =<br />SoundEffect.FromStream(GetStreamFromTheWeb("http://url.wav"));<br />effect1.Play();<br />// Create dynamic audio on the fly<br />byte[] fluteSound = GetFluteNote();<br />effect2 = newSoundEffect(fluteSound, SampleRate, AudioChannels.Stereo);<br />SoundEffectInstanceinstance = effect2.CreateInstance();<br />instance.Pan = -1; instance.Pitch = 1.5f;<br />instance.Play();<br />Поддержка Microphone/Bluetooth<br />
  27. 27. Медиа – Музыка/Фото/Видео<br />Пример<br />Воспроизведение аудио<br />// Constructs a song from a URI<br />UrimediaStreamUri = newUri("http://song.asx");<br />SongstreamedSong = Song.FromUri("Song", mediaStreamUri);<br />// Play the song<br />MediaPlayer.Play(streamedSong);<br />Отображение картинок<br />Пример<br />MediaLibrarymedia =newMediaLibrary();<br />// Get the JPEG image data<br />StreammyJpegImage = ReadAndModifyPicture(somePicture);<br />// Save texture to Media Library   <br />media.SavePicture("Awesome", myJpegImage);<br />Воспроизведение видео<br />
  28. 28. Ввод касанием<br />Простое взаимодействие с игрой!<br />
  29. 29. Кросс платформенный API тача<br />Xbox 360 джойстики(Xbox/Windows)<br />Клавиатура(Xbox/Windows/Windows Phone 7)<br />Пример<br />vartouchCollection = TouchPanel.GetState();<br />//...<br />foreach(vartouchLocationintouchCollection)<br />{<br />if(touchLocation.State == <br />TouchLocationState.Released)<br /> {<br />//...<br /> }<br />}<br />Touch API<br />Кросс платформенная портируемость<br />Мультитач на Windows Phone 7 и Windows<br />Обзор<br />
  30. 30. Сенсоры<br />Для Silverlight и XNA<br />
  31. 31. Возможности Windows Phone 7<br />Пример<br />Location<br />Accelerometer<br />Vibration<br />Пример<br />Обзор<br />VibrateControllerrumbler;<br />rumbler.Start(TimeSpan.FromSeconds(2));<br />Accelerometer accelerometer = new Accelerometer();<br />accelerometer.ReadingChanged+= AccelerometerReadingChanged;<br />accelerometer.Start();<br />
  32. 32. Использование сенсоров…<br />Демо<br />
  33. 33. Xbox Live<br />
  34. 34. Как устроено<br />Windows Phone 7 OS<br />Xbox LIVE<br />HTTP<br />Push<br />Gamer Services<br />Invites<br />Avatars<br />Profile<br />Achieve-ments<br />Leader-boards<br />TrialMode<br />
  35. 35. Профиль<br />Ваша личность в облаке<br />Телефон знает о вашем<br />Windows Live ID<br />Связывание с вашимGamertag<br />
  36. 36. Профиль<br />Пример<br />// Profile access<br />SignedInGamergamer=Gamer.SignedInGamers[0];<br />// Get the player's GamerTag to display<br />string gamerTag = gamer.Gamertag;<br />// A SignedInGamer has a Profile<br />GamerProfileprofile = gamer.GetProfile();<br />// Get the player's current GamerScore<br />intgamerScore = profile.GamerScore;<br />// get the gamer picture (PNG file stream)<br />Stream gamerPictureStream = profile.GamerPicture;<br />
  37. 37. Достижения<br />Пример<br />// Award an achievement<br />SignedInGamergamer = Gamer.SignedInGamers[0];<br />gamer.AwardAchievement("Attended TechEd 2010");<br />Реальныедостижения<br />Реальныебалы<br />Пример<br />// Get achievements<br />AchievementCollectionachievements = gamer.GetAchievements();<br />// walk through achievements<br />foreach (Achievement ain achievements)<br />{<br />string name = a.Name;<br />string description = a.Description;<br />boolearned = a.IsEarned;<br />intscore = a.GamerScore;<br />Stream icon = a.Picture; <br />}<br />
  38. 38. Пример<br />Рейтинг<br />// Create leaderboard identity with game mode 1<br />LeaderboardIdentityid =<br />LeaderboardIdentity.Create(LeaderboardKey.BestScoreLifeTime, 1);<br />// get the leaderboard writer from the signed in gamer<br />LeaderboardWriterwriter = gamer.LeaderboardWriter;<br />// get the leaderboard entry for the identity<br />LeaderboardEntryentry = writer.GetLeaderboard(id);<br />// write new leaderboard data<br />entry.Rating = 1000;<br />entry.columns.SetValue("Outcome", LeaderboardOutcome.Win);<br />Связывание с друзьями<br />Основанная на балах или <br /> времени<br />Фиксированные данные<br />Пример<br />// Read from leaderboard with page size of 10<br />LeaderboardReaderreader = LeaderboardReader.Read(id, gamer, 10);<br />foreach (LeaderboardEntry e in reader.Entries)<br />{<br />// score or time, as defined by identity. Rating determines rank.<br />long rating = e.Rating;<br />// read additional column data<br />long wins = e.Columns.GetValueInt64("Wins");<br />Stream blob = e.Columns.GetValueStream("Blob");<br />}<br />reader.PageDown();<br />
  39. 39. Триальный режим<br />Простая проверка<br />Эмуляция игры<br />Возможность купить игру<br />Пример<br />Guide.SimulateTrialMode = true;<br />// if we are in trial mode, show a marketplace offering<br />if (Guide.IsTrialMode)<br />{<br />PlayerIndexplayerIndex = Gamer.SignedInGamers[0].PlayerIndex;<br />Guide.ShowMarketplace(playerIndex);<br />}<br />
  40. 40. Аватары<br />Сейчас поддерживаеться только через<br />веб сервис<br />Загружается как поток<br />
  41. 41. Приглашение в игру<br />Отсылаются через почту<br />Guide.ShowGameInvite() отображает интерфейс приглашения<br />Игрок выбирает в какую игру отсылать приглашение<br />Друзья видят приглашения в своем <br />игровом хабе.<br />
  42. 42. Доступный<br />
  43. 43. XNA Framework<br />кросс платформенный<br />Тратим меньше времени и получаем больше устройств<br />Синхронизация проектов между платформами<br />Три экрана<br />
  44. 44. Кроссплатформенные игры…<br />Демо<br />
  45. 45. Итог<br />Мощный<br />Управляемый код, работает уже сегодня<br />Windows Phone обеспечивает мощную платформу для игр<br />Эффективный<br />Разработчик сосредотачивается на игре<br />Эффективные инструменты разработки делают нас <br />более продуктивными<br />Доступный<br />Легко расширяется на другие платформы<br />Позволяет сфокусироваться на игре, не на технологии<br />
  46. 46. Ресурсы<br />Email: <br />wpgames@microsoft.com<br />On the web: http://developer.windowsphone.com<br />XNA Creators Club @ http://creators.xna.com<br />Team Blog @ http://blogs.msdn.com/xna/<br />Shawn Hargreaves @ http://blogs.msdn.com/shawnhar/<br />Сотни примеров<br />Большое сообщество экспертов поможет начать работать с XNA<br />Peer Support @ http://forums.xna.com<br />Blogs<br />Contact Microsoft<br />
  47. 47. Сергей ЛутайРуководитель департамента разработки Silverlight приложенийMVP, MCT, MCPDserhii.lutai@dctua.comhttp://lutay.uneta.com.ua@sergeylutay<br />

×