Post on 21-Jun-2015
description
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