'

Разработка игр для Windows Phone 7 интерактивное представление

Понравилась презентация – покажи это...





Слайд 0

Разработка игр для Windows Phone 7 интерактивное представление Дмитрий Сошников академический евангелист twitter.com/shwars 5 сентября 2011 г.


Слайд 1

Очень разные игры...


Слайд 2


Слайд 3

Очень разные игры...


Слайд 4

Содержание Мы напишем простую 2D-игру «Морской бой» менее, чем за 30 мин Посмотрим другие примеры игр Также вы узнаете Что нового в XNA в Mango XNA – не только для игр! Концепция 3 экранов и разработка под 3 экрана Управление телефоном: multitouch и жесты Облачные игры: XBox Live 5


Слайд 5

Телефон как платформа для игр


Слайд 6

Концепция трёх экранов


Слайд 7

Разработка под три экрана 8 XNA Framework .NET Framework .NET Compact Framework .NET Compact Framework XNA Game Studio


Слайд 8

Выбор платформы XNA Silverlight HTML5


Слайд 9

Самая главная мысль на сегодня! Программная модель XNA основана на игровом цикле, а не на событиях!


Слайд 10

Игровой цикл public void LoadContent(…) { … } public void Update(…) { … } public void Draw(…) { … } LoadContent Update Draw


Слайд 11

Пишем игру 1. Игровой цикл


Слайд 12

Разработка под три экрана 13 XNA Framework .NET Framework .NET Compact Framework .NET Compact Framework XNA Game Studio


Слайд 13

Архитектура XNA Direct3D XACT XINPUT XContent Platform Graphics Audio Input Math Storage Core Framework Application Model Content Pipeline Extended Framework Starter Kits Code Content Components Games


Слайд 14

Пишем игру 2. Ориентация и масштабирование


Слайд 15

Масштабирование / ориентация Пишем игру без учёта нативного разрешения и ориентации экрана Масштабирование для поднятия производительности Масштибирование в обе стороны к нативному разрешению Автоматический поворот между портретным и ландшафтным режимами Touch API автоматически поддерживает изменение ориентации Компромисс между производительностью и четкостью 800x480 = 384,000 пикселей, 480x320 = 153,600 пикселей Много лучше, чем билинейная фильтрация Простой перенос игр с других платформ Масштабирование на аппаратном уровне 16


Слайд 16

Пишем игру 3. Обработка ввода


Слайд 17

Обработка ввода 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) { //... } } Состояние и опрос вместо событий Кросс-платформенное API Touch API


Слайд 18

Пишем игру 4. Звук и музыка


Слайд 19

Захват звука 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); } Захват и воспроизведение Простой API для проигрывания WAV Изменить pitch, volume, pan Синтез/буферизация аудио Сериализация захваченных данных Контроль над типами System.Media в Windows Phone 7 Поддержка Bluetooth (захват/воспроизведение) Воспроизведение // 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(); Звук Захват и воспроизведение


Слайд 20

Воспроизведение музыки Выбор изображения // 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); Автоматическое управление списком медиа в игре Можно воспроизводить по URI/URL Поддержка выбора.публикации фотографий Поддержка Video Player API Показать или убрать элементы управления Поиск и воспроизведение музыки Перебор и просмотр изображений Воспроизведение видео Музыка/фото/видео


Слайд 21

Дальнейшие улучшения Компонентизация игры


Слайд 22

Компонентизация игры Контент Выделение в отдельный проект Разделение по директориям Код Выделение классов под объекты игры GameComponent / DrawableGameComponent Game State Management Хорошие ресурсы: http://create.msdn.com/en-US/education/catalog/sample/game_state_management Catapult Wars Lab http://msdn.microsoft.com/en-us/WP7TrainingCourse_2DGameDevelopmentWithXNALab


Слайд 23

3D


Слайд 24

3D-графика World Matrix Преобразование модели перед отображением Camera View Matrix Направление обзора Camera Projection Matrix Угол обзора / фокусное расстояние Плоскости отсечения


Слайд 25

3D-графика и работа с жестами


Слайд 26

Эффекты Эффекты, доступные на всех платформах BasicEffect SkinnedEffect EnvironmentMapEffect DualTextureEffect AlphaTestEffect


Слайд 27

Основные жесты WP7 Tap Double Tap Pan FreeDrag | Horizontal Drag | Vertical Drag Drag -> DragComplete Flick (всегда после Pan) Hold Pinch / Stretch Pinch -> PinchComplete


Слайд 28

Законченная игра + работа с акселерометром


Слайд 29

Оптимизация и производительность


Слайд 30

Производительность Нет лишней сборки мусора Аппаратное ускорение графики / масштабирования Оптимизированные библиотеки математики Более 3 лет оптимизации производительности Более 800 игра на XBox Live Arcade / XBox Indie Games XNA – производительная платформа, несмотря на управляемый код! Проверка опытом!


Слайд 31

Content Pipeline Управляем содержимым прямо в Visual Studio Импортеры для основных игровых форматов Оптимизация в двоичный формат для эфф.загрузки Полностью расширяемая – возможно создавать свои классы, которые делаю эффективный препроцессинг ресурсов и обрабатывают дальнейшую загрузку (Content.Load<…>) Внешний контентный проект позволяет использовать единый набор ресурсов для различных игровых платформ перенос части операций на время компиляции


Слайд 32

Оптимизация игры Оптимизация загрузки контента Уменьшение размера Загрузка в правильное время Загрузка больших изображений Оптимизация работы с памятью Больше Value Types Вызов GC.Collect() Простные структуры < 1Mb Работа в меньшем разрешении + автомасштабирование Tombstoning


Слайд 33

Построение множества Мандельброта (Ч.Петцольд)


Слайд 34

Physics Engines http://farseerphysics.codeplex.com/ http://helium.codeplex.com/


Слайд 35

Новое в Mango 36


Слайд 36

Что нового в Mango XNA 37 Интеграция XNA и Silverlight Новая модель выполнения и быстрое переключение приложений Motion API Возможность включения Silverlight-интерфейса в игру (необходима явная отрисовка и рендеринг интерфейса в методе Draw) Возможность включения игровой составляющей в Silverlight-проект При наличии достаточных ресурсов, игра не выгружается из памяти при переключении приложений Новые аппаратные возможности, включая гироскоп и компас API позволяет автоматически обрабатывать данные от всех датчиков, получая уточненные данные об ориентации / местоположении


Слайд 37

Интеграция SL+XNA и Motion Sensor 38


Слайд 38

Motion API vs. Accelerometer Новый API Montion() позволяет получить: Attitude Pitch, Yaw and Roll Rotation rate Direction of Gravity Использует все доступные сенсоры для получения наиболее точных измерений Очень полезен для приложений дополненной реальности и игр Доступен только для Mango 39


Слайд 39

Что дальше? 40


Слайд 40

Дальнейшие ресурсы для изучения Сегодняшняя игра: http://blogs.msdn.com/b/sos/archive/tags/xna/ Windows Phone 7 Training Kit 2D-игра: http://msdn.microsoft.com/en-us/WP7TrainingCourse_2DGameDevelopmentWithXNALab 3D-игра: http://msdn.microsoft.com/en-us/WP7TrainingCourse_3DGameDevelopmentWithXNALab На русском языке для offline: https://rusdpe.blob.core.windows.net/downloads/RusWP7TrainingKit.zip App Hub Jumbstart Tutorial: http://create.msdn.com/en-US/education/tutorial/2dgame/getting_started Чарльз Петзольд. Программируем Windows Phone 7: http://rusdpe.blob.core.windows.net/downloads/Programming_Windows_Phone_7_ru.pdf Сообщество xnadev.ru


Слайд 41

Windows Phone 7 Student Bootcamp 1 октября 2011 г. в Московском офисе Майкрософт О регистрации будет объявлено дополнительно (http://twitter.com/shwars) Вход по предъявлению студенческого билета Регистрируйтесь и приходите: с ноутбуками, с идеями, с приложениями Что планируется? Немного лекций Формирование команд и коллективный мозговой штурм идей Консультации с экспертами из Майкрософт Краткая демонстрация проекта и символическое награждение победителя


Слайд 42

Разработка игр для Windows Phone 7 интерактивное представление Дмитрий Сошников академический евангелист twitter.com/shwars blogs.msdn.com/sos dmitryso@microsoft.com


×

HTML:





Ссылка: