Windows 8 dla twórców gier - rzut oka

Post on 21-Jun-2015

956 views 4 download

description

Pierwszy rzut oka na Windows 8 z punktu widzenia programisty gier. Kilka słów o narzędziach itp. Zapraszam do kontaktu i przesyłania do mnie informacji, które zagadnienia mam rozwinąć i o czym jeszcze chcielibyście posłuchać/poczytać.

Transcript of Windows 8 dla twórców gier - rzut oka

Windows 8 nowe możliwości dla twórców gier

Rafał Czupryńskiv-rafacz@microsoft.com

O czym dzisiaj?

Dlaczego właśnie gry na Windows 8?

Nowe możliwości i wyzwania dla twórców gier

Narzędzia dla programistów i nie tylko

Dlaczego właśnie gry

na Windows 8?

Dlaczego właśnie gry na Windows 8?

Platforma łatwo dostępna dla deweloperów

(Stosunkowo) łatwo się je programuje

Bardzo duża baza odbiorców

jedyna możliwość jednoczesnego zaadresowania urządzeń

ARMowych

Nowe możliwości…

34% wszystkich ściągniętych aplikacji stanowią gry

57% wszystkich płatnych ściągnięć to gry!!!

Czy wiecie, że…

Windows 8 to wiele urządzeń

Twoja gra jest w centrum uwagi

Łatwość wykreowania własnej marki

Łatwość w dystrybucji i zarabianiu

Poprzez Windows Store zainstalujesz grę na każdym urządzeniu z Windows 8

Wersje trial Płatności wewnątrz gry Reklamy

Nowe możliwości i wyzwania dla twórców gier

Platforma Windows 8

Communication

& Data

Devices & Printing

WinRT APIsGraphics &

Media

Desktop apps

CC++

Win32

C#VB

.NET SL

HTMLJavaScri

pt

Internet Explore

r

Windows Store apps

Application Model

XAML

JavaScript

HTML / CSS

CC++

C#VB

Windows Kernel Services

Syst

em

Serv

ices

Vie w

Mod

el

Con

trol

ler

Kern el

DevicesSensor

sGeolocation

Portable

NFC

Communications & DataContracts

XML

Web

SMSNetworking

Notifications

Local & Cloud Storage

Streams

Background Transfer

User InterfaceHTML5/CSS XAML DirectX Controls

Input Accessibility Printing

Data Binding

TilesSVG

FundamentalsApplication

ServicesAuthenticatio

nCryptograph

yGlobalizatio

nMemory

ManagementThreading/Timers

MediaVisual Effects

Playback

PlayToCaptur

e

Windows Store App API

Środowisko uruchomieniowe aplikacji

Jadro

syst

em

uwywołania Direct API

Brokerwywołania API

Brokera

Kontener aplikacji: podpisany i zwalidowany kod

Twoja gra

Win

RT A

PI

Game.exe

AppXManifest

Uruchomienie gry

OS wczytuje Twoją grę

Gra urucha

mia Loadin

g Screen

Splash Screen Loading Screen

Gra działa

Gameplay

Menu Screen

Load() Run()

Cykl życia gry

Gra działa

Uśpiona gra

suspendingKill grymało

zasobówresuming

Gra ma jeszcze 5 sekund działania zanim

zostanie zawieszona

Gra nie dostaje informacji, że będzie

„ubita”

Gra dostaje powiadomienie, że jest

wznawiana

Użytkownik

uruchamia grę

Różne stany widoku

Gra otrzymuje informacje o zmianie widoku Można np. zapauzować grę w widoku Snapped Użytkownicy mogą mieć np. naszą grę otwartą w Filled i

serwis społecznościowy uruchomiony w Snapped

Filled4 x 3

Snappedtrochę jak

telefon

Full screen16 x 9

ViewState

void MyApp::SetWindow(CoreWindow^ window){    window->SizeChanged +=      ref new TypedEventHandler<CoreWindow^, WindowSizeChangedEventArgs^>( this, &MyApp::OnWindowSizeChanged);     ApplicationView::GetForCurrentView()->ViewStateChanged +=      ref new TypedEventHandler <ApplicationView^, ApplicationViewStateChangedEventArgs^>( this, &MyApp::OnViewStateChanged);}

Orientacje ekranu

Gra otrzymuje powiadomienia o zmianie orientacji ekranu Możemy zablokować grę w określonej orientacji Jak z tego korzystać?

Landscape

Portrait

Preferencje rotacji{

DisplayOrientations::None; // Enable rotation by OS/AccelerometerDisplayOrientations::Landscape; // Lock rotation by OS/AccelerometerDisplayOrientations::LandscapeFlipped; // and enable this orientationDisplayOrientations::Portrait;DisplayOrientations::PortraitFlipped;

}

using namespace Windows::Graphics::Display;

DisplayProperties::AutoRotationPreferences = DisplayOrientations::Landscape |

DisplayOrientations::LandscapeFlipped;

Gęstość pikseli (DPI)

Przy tworzeniu grafiki skup się na DPI

XAML jest właściwie niezależny od rozdzielczości

Uważaj na sterowanie dotykiem – ludzka dłoń ma taki sam

rozmiar niezależnie od rozmiaru ekranu

Ekrany 1080p mogą mieć różne rozmiary np. 10”, 30”, 75”

Korzystaj z nowych możliwości sterowania

• Windows 8 umożliwia sterowanie grami poprzez dotyk

• Mysz i klawiatura są nadal jednym ze sposobów sterowania

Nawigacja wewnątrz aplikacji

Semantic Zoom

Główny Hub Rozgrywka

Dodatki

Żywe kafelki

Przyciągnij uwagę gracza do swojego

produktu – nawet jeżeli w tym momencie w

niego nie gra!

Notyfikacje Toast

Wykorzystaj możliwości „bump to play”

Pamiętaj o Semantic Zoom

Semantic Zoom

Główny Hub

Wykorzystaj akcelerometr

Potrząśnij żeby wczytać od nowa level

Charm Settings

Charm Share: podziel się rozgrywką

Charm Device = Extend + PlayTo

?40,000,000 użytkowników

2,100,000,000 godzin gry / miesiąc

>6,300,000,000 przyznanych achievementów

176,802,201,383 zdobytych punktów gracza

Wykorzystaj nowe możliwości C++

Poprawiony edytor kodu

Kolorowanie koduPoprawia przejrzystość kodu

Podświetlanie referencjiZnajdź wszystkie odnośniki w kodzie

IntelliSenseWsparcie dla C++/CLI

Testowanie, ALM i C++

Testy jednostkowe Poprawione możliwości

analizy kodu Diagramy zależności

Struktura projektuTesty jednostkowe

Pokrycie kodu Analiza kodu

Specjalne rozszerzenie języka na potrzeby WinRT (pełne wsparcie C++ 11)

Między innymi: nowy sposób

tworzenia obiektów i referencji do nich

partial classes wsparcie dla typów

generycznych integracja z STL

Rozszerzenie języka C++/CXXAML:

<Button x:Name=“TestButton” Width = “50” Height= “20” Content=“Click Me” Click=“TestButton_Click” />

C++ (generated):Button^ TestButton = ref new Button();TestButton->Width = 50;TestButton->Height = 20;TestButton->Content = “Click Me”;

C++ (user editable):void MyPage::TestButton_Click(Object^ sender, RoutedEventArgs^ e){// do something}

C++ AMP (Accelerated Massive Parallelism) Biblioteka oparta

na DirectX 11

Łatwe zrównoleglanie algorytmów

Znaczne przyspieszenie wykonywania obliczeń – przeniesienie ich na GPU

Poprawiony kompilator C++

#include <amp.h>using namespace concurrency;void AddArrays(int n, int *pA, int *pB, int *pC){    array_view<int,1> a(n, pA);    array_view<int,1> b(n, pB);    array_view<int,1> sum(n, pC);     parallel_for_each(sum.grid, [=](index<1> idx) restrict(amp) {        sum[idx] = a[idx] + b[idx];    } );}

Co z DirectX?

Wersje DirectX

Windows XP DirectX 9 Hardware Direct3D 9 API

Windows Vista DirectX 10 Hardware Direct3D 10 API

Windows 7 DirectX 11 Hardware Direct3D 11 API

Jak stworzyć grę na wszystkie te platformy?

Feature Levels umożliwiają dostosowanie do konkretnego sprzętuFeature_Level_9 DirectX 9 HardwareFeature_Level_10 DirectX 10 HardwareFeature_Level_11 DirectX 11 Hardware

Feature Level 9(Available on ALL hardware)

• Vertex shaders• Pixel shaders• 8 Textures• 4 Render Targets• Cube maps• Volume textures• Anisotropic filtering• Antialiasing• HDR rendering• Texture compression

Feature Level 10(Available on DirectX 10 and later hardware)

• Vertex shaders• Pixel shaders• 8 Textures• 4 Render Targets• Cube maps• Volume textures• Anisotropic filtering• Antialiasing• HDR rendering• Texture compression

• Geometry shaders• Stream out• 128 Textures per

shader• 8 Render Targets• Integers in shaders• Vertex textures• Shader sampling• Constant buffers• Alpha-to-coverage• Basic DirectCompute• Async resource

creation

Feature Level 11(Available on DirectX 11 and later hardware)

• Vertex shaders• Pixel shaders• 8 Textures• 4 Render Targets• Cube maps• Volume textures• Anisotropic filtering• Antialiasing• HDR rendering• Texture compression

• Geometry shaders• Stream out• 128 Textures per

shader• 8 Render Targets• Integers in shaders• Vertex textures• Shader sampling• Constant buffers• Alpha-to-coverage• Basic DirectCompute• Async resource

creation

• Full DirectCompute• Random access writes• Tessellation shaders• New compression

formats• Shader linkage

Narzędzia dla programistów i nie tylko

Programiści C++ Unreal Engine (UDK)

Od Epic Games – kompletny profesjonalny framework do tworzenia gier

Programiści C++ CoCos2d-X

Oparty o bibliotekę iOS -> taka sama struktura API

Programiści C# XAML

Można stworzyć grę w Blendzie

Programiści C# MonoGame

Framework oparty na XNA 4.0

Programiści HTML5/JS Canvas

Stwórz grę wykorzystując element Canvas

Programiści HTML5/JS CreateJS

Zestaw przydatnych bibliotek i narzędzi, umożliwiający tworzenie gier w HTML5

Programiści C# Unity

Najpopularniejsze narzędzie cross-platformowe do gier 2D i 3D

Programiści HTML5/JS ImpactJS

Oparty na JavaScript silnik umożliwiający tworzenie multiplatformowych gier w HTML5

Programiści HTML5/JS GameMaker

Zestaw narzędzi dla początkujących umożliwający tworzenie cross-platformowych gier

Programiści HTML5/JS GameSalad

Cross-platformowe gry budowane z klocków -> nie trzeba kodować

Programiści HTML5/JS Construct2

Platforma dla początkujących

Twórzmy fajne gry na Windows 8

v-rafacz@microsoft.com