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