SlideShare a Scribd company logo
1 of 39
Download to read offline
Qt Dev Days Berlin 2014 
7.10.2014 
by Christian Feldbacher, MSc 
Co-Founder V-Play GmbH 
Qt Responsive Design& How to Boost User Retention
•XP 
–Game Development 10+ years 
–iOS, Android, Symbian App Development 
–C++ 10+ years 
–Qt 5+ years 
•Co-FoundedV-Play GmbH 2012 
–Started in 2009, full-time 2011 
–Basedin Vienna, Austria 
–EhancesQt 5 forgames 
AboutMe
Why QML Plugins? 
2011 
Game prototype 
For iOS & Android 
QGraphicsView 
2011 
Custom cocos2d-x 
Renderer beginning 
2012 
V-Play Launch 
Ready to publish high performance 
iOS & Android games 
2014 
V-Play Qt 5 Plugins 
For apps & games 
2010 
QML / Qt Quick 
Wholy shit 
That’s cool!!!
V-Play Plugins 
Availableat http://plugins.v-play.net
Part 1: ResponsiveDesign withQt 
Part 2: HowtoIncreaseUser Retention 
Agenda
Part 1: ResponsiveDesign withQt
Fixed Ratio, Percentage
•Usemultiplicationforsizes 
•UseImage.PreserveAspectFit 
•Usefont.pixelSize* heightforText 
•Usefulforappsthatshall/canhavethesame UI ratioon all devices 
•Verysimple toimplement 
Fixed Ratio, Percentage
Layouts makepositioningsyntaxnicer: 
Layouts
Layouts makepositioningsyntaxnicer: 
Layoutsvs
•The propertiesx, y, width, heightareignoredin Layout childrenitems 
•Usesizeconstraintsminimum*, preferred*, maximum* andfill* 
•Similartoweightsconceptin Android LinearLayout, but moreflexible 
* eitherWidthorHeight 
Layouts
•Items shallbesame physicalsize(millimeters) acrossall devices 
•Pixels not usable 
•Usedpinstead–howtodo thatin QML? 
Density-Independence
CalculatescreenDpi 
https://bugreports.qt-project.org/browse/QTBUG-35701 
ExamplescreenDpivaluesare: 
–326 foriPhone Retina 
–212 forNexus 7 
–143 for13“ fullHdnotebook 
Density-Independence
At a 160 dpi screen, 1 dp= 1 pixel 
At a 320 dpi screen, 1 dp= 2 pixels 
Still thesame physicalspace! 
Implementation Guide & Usage: 
Density-Independence
More Issueson Windows withpointSize: 
Text Sizes
RemainingText Issues: 
•User fontsizesettingsnot supported 
•Youcouldreaditbyyourselfthough 
Text Sizes
•Problem with1 image: 
–Low resimage: blursat upscaling 
–High resimage: space& memorywaste, performanceissuesat loadingtime 
•Solution: Chooseimagebasedon screensizeordpi 
•Bad Approach: 
Dynamic Image Switching
•File accessgeneralizedacrossplatforms 
•Works behindthescenes 
•V-Play Approach: 
Lesscode& easiertoread(noifdefs) 
Same physicalsizethankstodp() 
Dynamic Image Switching 
+hd2/imageSwitching.png 
+hd/imageSwitching.png 
imageSwitching.png
•Also useper platform, e.g. +ios, +android 
•TogetherwithQML Singletons setfontsizes, dimensions, layouts 
•DisadvantagesFile Selectors: 
–Must besetbeforeQmlEngine.load() 
–Cannotbechangedat runtime 
Todo that, useLoader 
–Not asmatureasAndroid (e.g. sw600dp) 
File Selectors
•Toachievethis: 
Density-Independence Summary
Content Scaling 
•1 logicalScene 480x320, Safe Zone 
•Getsscaledtofullscreen 
•Default scaleModeletterbox 
•Scene isvisibleon all Devices 
•Similarapproachtofixedratio(percentage) 
•Esp. forgamesimportanttobecomparable 
•Advantages: 
•Simpler positioning, like on iOS 
•Easiesttouse, fastest todevelop 
•Goodenoughformostusecases, also apps
Forfullscreenusagelike UI elements, usegameWindowAnchorItem 
Content Scalinghttp://v-play.net/doc/v-play-examples-windowscenescaling-example/
•Makebackgroundbigger 
•Outside zonecuton devices 
•Whatiscutdependson aspectratio 
Content Scaling
•UseContent Scalingwhenpossible: 
–Pixel valuesarecontent-scaled 
–Easiest& fastest todevelop 
–File Selectorsauto-supportedbyV-Play 
•If(ContentScaling!== possible): 
–ForequalphysicalItem sizesusedp() 
–ForText usefont.pixelSize: sp() 
•Supply sd(default), +hd, +hd2 graphics 
•Never usepixels! 
QML ResponsiveDesign Summary
Part 2: HowtoIncreaseUser Retention 
Ofmobile apps& games
•Achievement& Leaderboardintegrationin 70 Lines ofCode! 
•Facebook & Game Center integration 
•Also usefulforapps! 
V-Play Game Network
V-Play Game Network
V-Play Game Network
•GameCenteron steroidsmadefor/withQt 
•True cross-platform: 
–Leaderboards 
–Achievements 
–Challenges 
–Cloud storage& syncing 
•DeepFacebook connection 
•Fulloffline support 
•Skinnable 
•Add Gamification also for„normal apps“ 
V-Play Game Networkhttp://v-play.net/doc/vplay-vplaygamenetwork/
User-GeneratedContent 
Balance any property at runtime with the ItemEditorcomponent
User-GeneratedContent 
Style the UI to match your app / game
User-GeneratedContent 
Monetize the user-generated content with an 
“App Store for Levels”
User-GeneratedContent 
This is all it takes to change the width & height property at runtime
V-Play Level Editor & Level Sharing 
Squaby 
Particle Editor 
•Save time in internal development 
•Let users create levels 
•Social Sharing & Rating of Levels Community 
•Monetize content packs with IAP 
•Customizable Look 
Add appstoreforusergeneratedcontenttoyourownapps/gameseasily. 
Examples(in App Stores): 
Stack And Friends
Push Notifications 
http://plugins.v-play.net/plugins/notifications
V-Play Plugins 
Availableat http://plugins.v-play.net 
0-100€per pluginper app, Samples on GitHub
•Gamification elements: 
–Leaderboards 
–Achievements 
–Challenges 
•SocialIntegrationslike Facebook 
•User-GeneratedContent 
•Push Notifications 
User Retention Summary
Contact 
Christian Feldbacher 
Co-Founder 
chris@v-play.net 
Alex Leutgöb 
Co-Founder 
alex@v-play.net 
V-Play GmbH 
Kolonitzgasse9/11-14 
A –1030 Wien 
http://v-play.net 
@vplayengine 
http://www.facebook.com/vplayengine 
Meet us outside @ the V-Play Booth! 
•Summary ofSupportingMultiple Screens & Densitiesat V-Play Blog: http://v-play.net/2014/11/supporting-multiple-screen-sizes-and-screen-densities- with-qt-and-v-play 
•Android Guide –„SupportingMultiple Screens“: http://developer.android.com/guide/practices/screens_support.html 
•V-Play Guide -„How to create mobile games for different screen sizes and resolutions”: http://v-play.net/doc/vplay-different-screen-sizes/ 
•Windows DevCenter Guide –„DPI andDevice-Independent Pixels“: http://msdn.microsoft.com/en-us/library/windows/desktop/ff684173%28v=vs.85%29.aspx 
•V-Play Tutorial -„How to increase player retention & downloads in 10 minutes”: http://v-play.net/doc/lesson-5/ 
•V-Play Tutorial –„How to add Facebook & Game Center sharing to your game”: http://v-play.net/doc/lesson-6/ 
•V-Play Tutorial –„How to boost level creation and balancing of your game with V-Play Level Editor”: http://v-play.net/doc/lesson-7/ 
•V-Play Tutorial –„How to benefit from user-generated content in your game with V-Play Level Store”: http://v-play.net/doc/lesson-8/ 
References

More Related Content

What's hot

[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
MinGeun Park
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
Seungjae Lee
 
East Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
East Coast DevCon 2014: The Slate UI Framework - Architecture & ToolsEast Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
East Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
Gerke Max Preussner
 

What's hot (20)

[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
[NHN_NEXT] 게임 휴먼 프로젝트 CI + GitHub 세팅 방법
 
UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기UI드자이너의 짧은 언리얼 UMG 사용기
UI드자이너의 짧은 언리얼 UMG 사용기
 
온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기온라인 게임 처음부터 끝까지 동적언어로 만들기
온라인 게임 처음부터 끝까지 동적언어로 만들기
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
UI Programming with Qt-Quick and QML
UI Programming with Qt-Quick and QMLUI Programming with Qt-Quick and QML
UI Programming with Qt-Quick and QML
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
 
190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁190119 unreal engine c++ 입문 및 팁
190119 unreal engine c++ 입문 및 팁
 
Umg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation BoxUmg ,이벤트 바인딩, Invaidation Box
Umg ,이벤트 바인딩, Invaidation Box
 
UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1UI아트 작업자를 위한 언리얼엔진4 UMG #1
UI아트 작업자를 위한 언리얼엔진4 UMG #1
 
Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4Best Practices in Qt Quick/QML - Part 1 of 4
Best Practices in Qt Quick/QML - Part 1 of 4
 
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with QtConvert Your Legacy OpenGL Code to Modern OpenGL with Qt
Convert Your Legacy OpenGL Code to Modern OpenGL with Qt
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
The Hack Spectrum: Tips, Tricks, and Hacks for Unity
The Hack Spectrum: Tips, Tricks, and Hacks for UnityThe Hack Spectrum: Tips, Tricks, and Hacks for Unity
The Hack Spectrum: Tips, Tricks, and Hacks for Unity
 
Selenium
SeleniumSelenium
Selenium
 
Flutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by StepFlutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by Step
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
Qt Application Programming with C++ - Part 1
Qt Application Programming with C++ - Part 1Qt Application Programming with C++ - Part 1
Qt Application Programming with C++ - Part 1
 
East Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
East Coast DevCon 2014: The Slate UI Framework - Architecture & ToolsEast Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
East Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
 
QVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI developmentQVariant, QObject — Qt's not just for GUI development
QVariant, QObject — Qt's not just for GUI development
 

Viewers also liked

Cross platform development
Cross platform developmentCross platform development
Cross platform development
dftaiwo
 
Cross platform solutions for Mobile App Development
Cross platform solutions for Mobile App Development Cross platform solutions for Mobile App Development
Cross platform solutions for Mobile App Development
USAID CEED II Project Moldova
 

Viewers also liked (20)

Creating apps that work on all screen sizes
Creating apps that work on all screen sizesCreating apps that work on all screen sizes
Creating apps that work on all screen sizes
 
Screen orientations in android
Screen orientations in androidScreen orientations in android
Screen orientations in android
 
Design Multiple Screen android
Design Multiple Screen androidDesign Multiple Screen android
Design Multiple Screen android
 
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
Qt App Development - Cross-Platform Development for Android, iOS, Windows Pho...
 
Qt for beginners part 1 overview and key concepts
Qt for beginners part 1   overview and key conceptsQt for beginners part 1   overview and key concepts
Qt for beginners part 1 overview and key concepts
 
Practical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme ChangePractical QML - Key Navigation, Dynamic Language and Theme Change
Practical QML - Key Navigation, Dynamic Language and Theme Change
 
QUOSA for iPad sharing
QUOSA for iPad sharingQUOSA for iPad sharing
QUOSA for iPad sharing
 
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows PhoneWinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
WinJS, Apache Cordova & NFC - HTML5 apps for Android and Windows Phone
 
SIDC Seafood Handbook
SIDC Seafood HandbookSIDC Seafood Handbook
SIDC Seafood Handbook
 
Qt for beginners part 2 widgets
Qt for beginners part 2   widgetsQt for beginners part 2   widgets
Qt for beginners part 2 widgets
 
Qt for beginners part 5 ask the experts
Qt for beginners part 5   ask the expertsQt for beginners part 5   ask the experts
Qt for beginners part 5 ask the experts
 
Supporting multiple screens on android
Supporting multiple screens on androidSupporting multiple screens on android
Supporting multiple screens on android
 
Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7Qt and QML performance tips & tricks for Qt 4.7
Qt and QML performance tips & tricks for Qt 4.7
 
The Mobile Market and Qt
The Mobile Market and QtThe Mobile Market and Qt
The Mobile Market and Qt
 
Cross platform development
Cross platform developmentCross platform development
Cross platform development
 
Qt Application Development on Harmattan
Qt Application Development on HarmattanQt Application Development on Harmattan
Qt Application Development on Harmattan
 
Cross platform solutions for Mobile App Development
Cross platform solutions for Mobile App Development Cross platform solutions for Mobile App Development
Cross platform solutions for Mobile App Development
 
Qt for beginners part 4 doing more
Qt for beginners part 4   doing moreQt for beginners part 4   doing more
Qt for beginners part 4 doing more
 
Building Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and QyotoBuilding Cross-Platform Apps using Qt and Qyoto
Building Cross-Platform Apps using Qt and Qyoto
 
Qt State Machine Framework
Qt State Machine FrameworkQt State Machine Framework
Qt State Machine Framework
 

Similar to "How to Develop with Qt for Multiple Screen Resolutions and Increase Your User Retention (of Cross-Platform Apps and Games)" - Qt Developer Days 2014 Presentation by V-Play

Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...
Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...
Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...
FELGO SDK
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
Droidcon Berlin
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011
Frank Karlitschek
 
Niko Sévoz – Game designer
Niko Sévoz – Game designerNiko Sévoz – Game designer
Niko Sévoz – Game designer
Niko S
 

Similar to "How to Develop with Qt for Multiple Screen Resolutions and Increase Your User Retention (of Cross-Platform Apps and Games)" - Qt Developer Days 2014 Presentation by V-Play (20)

Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...
Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...
Qt World Summit 2015 Talk by V-Play: How to Develop with Qt for Multiple Scre...
 
Desktop apps with node webkit
Desktop apps with node webkitDesktop apps with node webkit
Desktop apps with node webkit
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
Resume_Haran21 mca
Resume_Haran21 mcaResume_Haran21 mca
Resume_Haran21 mca
 
Configuring in the Browser, Really!
Configuring in the Browser, Really!Configuring in the Browser, Really!
Configuring in the Browser, Really!
 
Modern App Development with the SharePoint Framework
Modern App Development with the SharePoint FrameworkModern App Development with the SharePoint Framework
Modern App Development with the SharePoint Framework
 
Metodologías de desarrollo de software en Gaming
Metodologías de desarrollo de software en GamingMetodologías de desarrollo de software en Gaming
Metodologías de desarrollo de software en Gaming
 
Froyo to kit kat two years developing & maintaining deliradio
Froyo to kit kat   two years developing & maintaining deliradioFroyo to kit kat   two years developing & maintaining deliradio
Froyo to kit kat two years developing & maintaining deliradio
 
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-PlatformVisual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
Visual Studio 2015: novità per gli sviluppatori iOS, Android e Cross-Platform
 
SamSegalResume
SamSegalResumeSamSegalResume
SamSegalResume
 
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
What is cool with Domino V10, Proton and Node.JS, and why would I use it in ...
 
Designer and Developer Collaboration with Visual Studio 2012 and Expression B...
Designer and Developer Collaboration with Visual Studio 2012 and Expression B...Designer and Developer Collaboration with Visual Studio 2012 and Expression B...
Designer and Developer Collaboration with Visual Studio 2012 and Expression B...
 
Google Platform Overview (April 2014)
Google Platform Overview (April 2014)Google Platform Overview (April 2014)
Google Platform Overview (April 2014)
 
HTML5 Group Lead
HTML5 Group Lead   HTML5 Group Lead
HTML5 Group Lead
 
tomtaila
tomtailatomtaila
tomtaila
 
Online File Formats.pptx
Online File Formats.pptxOnline File Formats.pptx
Online File Formats.pptx
 
CV
CVCV
CV
 
Joomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiencesJoomla as a mobile App backend - ideas, examples and experiences
Joomla as a mobile App backend - ideas, examples and experiences
 
Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011Project Betzn - LinuxTag 2011
Project Betzn - LinuxTag 2011
 
Niko Sévoz – Game designer
Niko Sévoz – Game designerNiko Sévoz – Game designer
Niko Sévoz – Game designer
 

Recently uploaded

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 

Recently uploaded (20)

SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Generic or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisionsGeneric or specific? Making sensible software design decisions
Generic or specific? Making sensible software design decisions
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

"How to Develop with Qt for Multiple Screen Resolutions and Increase Your User Retention (of Cross-Platform Apps and Games)" - Qt Developer Days 2014 Presentation by V-Play

Editor's Notes

  1. Hi & welcome to my presentation about.. Well, first let me tell you a little story why I’m here or what brought me here…
  2. I am now programming games since 13 years, and what fascinated me MOST was that you can create games that are fun and bring joy to people, with already small teams and just a bunch of guys! That’s also what made me dive into mobile app development, quite a while ago for the good old Nokia devices with J2ME and native Symbian, and then the iPhone came out! This changed just about everything, because all of a sudden you could reach millions of users without any publisher! So I started to port my games to the iPhone, and then later to Android too and also created more native apps. At that time, I came across Qt and I thought: wholy shit, that’s cool! You can use the same code base of your apps and games across all platforms! And this QML was the best thing I’ve ever seen! What if you could use that to create cross-platform games, no need to port it to other platforms!
  3. Qml was introduced in sep 2010 with qt 4.7.0, first used it 2011; Code so much faster (60% less code compared with previous project done in C++), with almost same performance Game prototype based on both QGraphicsView and QtQuick – too slow for sprites, particles, etc. (Just mention that we now look into qt5.2 as high performance renderer if we are asked!) Mobile first
  4. After last year‘s lightning talk was well received, we announced v-play plugins to extend qt 5 mobile app services And got selected as qt technology partner
  5. Besides engine & plugin development, we have since 5 years been developing native apps for iOS & Android, both as own apps and client projects. In the meantime, we do most of them with Qt5, so i‘ll now share our experiences with that!
  6. Responsive design = how to support all kind of screen resolutions, phones, tablets, desktop
  7. Simplest approach: property bindings with multiplications Will have the same ratio on all devices – if that is ok for your app UI, thats good and easy In screenshot shows that portrait & landscape most of the time different layout is needed
  8. - Less mistakes, more flexible: if you add another item, with the prop bindings the calculation needs to be adopted & an id is required for each item - and faster (in c++ not evaluated in QML) than with property bindings
  9. - Less mistakes, more flexible: if you add another item, with the prop bindings the calculation needs to be adopted & an id is required for each item - and faster (in c++ not evaluated in QML) than with property bindings
  10. Side Note: recommended button height is 36-48dp, based on Android style guide Images from: http://developer.android.com/guide/practices/screens_support.html
  11. On windows it seesm that logicalDpi & physicalDpi are swapped! Since qt 5.2, on Android bug that the reported physicalDpi is incorrect! Thus retieve via JNI (you need to add QT+=androidextras for jni access in the pro file!)
  12. On windows pointSize is too big, kills UI! On ios & android same size as sp The blue rect is 50dp – so 50dp is not the same as 50dp for the pixelSize! Multiply with custom value in sp() to do that!
  13. pointSize not supported: read device dpi settings (in android & ios in settings, in windows screen dpi settings); also not by sp yet
  14. Bad, because error-prone, a lot to type, slow at runtime PLUS, it still is NOT the same physical size on all screens!
  15. Based on the max screen size - Up to 960px max width -> +sd - 960px – 480*2.8=1344 -> +hd - >1344 -> +hd2 These values & thresholds are adjustable! Disadvantage multiple images: app size gets bigger! But you could use DownloadableComponent for that to download zipped content and unpack it permanently to device at 1st app start, based on how many dpi it has Or multiple versions in app store (on android that is possible); on iOS make hd version for example with higher-res images
  16. X Also useful to load different layouts based on the min width (like in android sw600dp) – doesnt work because higher values are not used by it! E.g. sw600 is not set by default, you would need to manually add it to the fileSelectorlist! (e.g. make list: sw600, sw590, sw580, etc. -> maybe show code how to use singletons or layouts per platform? – no time!
  17. Show vpqt5 example GameWindowSceneScaling.qml
  18. Show squaby live demo with resizing the window and how the ui changes with it, and how bg is cut off Additional advantage when using vp: Image File Selectors(+hd, +hd2) auto-supported Old: Easiest approach, good enough for most use cases! All px values get scaled; images automatically the correct ones taken
  19. Show live demo kochgourmet, what you can do with content scaling as well as non-content scaling approach SideBar moves in at certain width (GameWindow size or dp); delegates change (no rating shown, no images), gridview -> listview
  20. Examples to use in apps: award users with credits for coming back; give them achievements for several opens, for certain activities that matter to you (e.g. when they buy something); maybe even give them credits to use in your app when an achivement is rewarded!
  21. Problem in most apps: keep users coming back; one way to do this, especially in games but also normal apps can use it by adding gamification elements, is a GAME NETWORK We have built a game network from the ground up
  22. - Most powerful way of user engagement, is to let them create their own content and share that with others! We have component for that! Runtime balancing, runtime level generation App examples: * user-generated pictures in a travel app * bmw app where configurable car, share this picture * modify colors of app and share these settings, so friends can have the same color style
  23. Show squaby level editor functionality, with level sharing & publishing
  24. App examples: * user-generated pictures in a travel app * bmw app where configurable car, share this picture * modify colors of app and share these settings, so friends can have the same color style
  25. Here the width & height is changeable – can be anything in your app, like colors, images, etc.!
  26. Remind them to come back to the app, e.g. in an alarm clock app that he did not use it for a longer time, 1 hour in this example reward users for coming back with some credits
  27. - The push notifications plugin is available at plugins.v-play.net, free sample on github - Along with other plugins that may be useful for your qt 5 app like iap or ads for monetization
  28. We are looking for interns in summer, so apply if you are interested in game development