Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Microsoft Windows 8 Monogame Gaming Three Thing Game
1. signing great XNA games
for Windows 8
Dean Ellis
dean@infinitespace-studios.co.uk
@InfSpaceStudios
Dominique Louis
dominique@xamarin.com
@SoftSavage
7. http://bit.ly/GJ_NavDesign
• Makes users first experience a
complete one.
• Provides a great mechanism for
providing users with updates/fresh
content
8. http://bit.ly/GJ_SemZoom
• Semantic Zoom allows a user
to get a different view of your
data
• Navigate between different
levels
• Quickly show unlocked
content, recently released
levels, or new achievements
9. http://bit.ly/GJ_NavDesign
• Great way to keep your game
as front-and-centre
experience.
• Can use the top app bar as
navigation home
10. http://bit.ly/GJ_CommDesign
• Will the control be used very
frequently?
• Is the control crucial to the
playing of the game?
11. http://bit.ly/GJ_Touch
• Users approach tablets and
touchscreens in a variety of
ways
• Windows 8 accommodates a
multitude of interaction
variations
15. http://bit.ly/GJ_StateMgmt
Game gets 5s to Game is not notified
handle suspend before termination
User
Launche
s Game
Game notified when
resumed
Splash
screen
17. http://bit.ly/GJ_LiveTiles
• At-a-glance information delivery in a natural, attractive
format
• Draw the user back into the app with a single tap with
fresh, tailored content via Live Tiles
• Send tile updates even when your app isn’t running
• Secondary tiles provide an entry point into a specific
experience within your app
• Scenarios: game-play status, latest leaderboard
positions, multi-player messages, game news
20. http://bit.ly/GJ_Contracts
Provides users with a familiar and
natural way to search for items
across game.
Scenarios:
• A friend to start a multiplayer
game against.
• A user name on a leader
board.
• An achievement.
• A specific level in a game with
many levels.
21. http://bit.ly/GJ_Contracts
Provides a way to connect the
player of your game to their social
networks, friends, or other apps.
From your game:
• Sharing game levels, high
scores, screenshots, custom
objects etc.
To your game:
• Receiving in-game
content, images, video etc.
22. http://bit.ly/GJ_Contracts
The settings charm provides a
familiar and consistent way to
modify an apps settings
More settings menus can be
added for account management
or game specific menus.
Scenarios:
User-account info, help
content, control
mappings, notification
settings, about app info, support
info etc.
23. http://bit.ly/GJ_Contracts
This allows your game to share it’s
content with other apps seamlessly and
consistently.
• The file picker makes it easy to
organize content. You can also
access content from other apps
Scenarios:
• Exporting images from game to
start screen background,
• using music from music app for
game.
24. http://bit.ly/GJ_Contracts
Extend your experience beyond
Windows 8 and push your
content to devices on your local
network.
The ‘PlayTo’ feature allows relevant
controls to be accessed on the
first device without compromising
the display on the other.
26. http://bit.ly/GJ_Splash
• Many games may take longer
than the expected couple of
seconds to load.
• If that's true of your
game, ensure that you provide
some sort of indication to the
user that the game is actively
loading
27. http://bit.ly/GJ_GreatGames
• Communicate to users when
the game is in a paused state:
• removing them from the in-
game experience and putting
them back in the central hub
• or by presenting a pause
overlay or pause screen
28. http://bit.ly/GJ_GreatGames
Leaderboards are a crucial
component for game enthusiasts.
The competition factor keeps
users engaged in your game and
encourages other users in their
network to return and maintain
their rankings.
Utilise location services to access
local standings.
30. http://bit.ly/GJ_RoamingData
• Most people have more than one Windows PC.
• Make your game a continuous and consistent
user experience across all their Windows 8 PCs
Roaming Scenarios:
• Game settings and configuration
• App licenses and in-app purchases from the
Windows Store
31. http://bit.ly/GJ_WAMS
• Windows Azure Mobile
Services makes it incredibly
easy to connect scalable cloud
backend to your games.
• Easily store structured data in
the cloud that can span both
devices and users,
• Integrate it with user
authentication
• Send out updates to clients
via push notifications
32. http://bit.ly/GJ_W8Store
Designed for discovery
• Spotlight, Recommend, Browse/Fil
er, Search
• IE10 & Deep links
Unprecedented reach
• Global reach: 200+ markets,
• 100+ languages
Flexible business models
• Free, paid, in-app, trials
• 3rd party in-app & advertising
support
Pricing
• Developers control pricing
• Up to 80% revenue share
33. http:// bit.ly/GJ_W8Samples
Windows 8 Samples
http://bit.ly/GJ_W8API
Windows 8 Store Apps API
http://bit.ly/GJ_AppDevBlog
Windows 8 Store Apps Dev Blog
http://bit.ly/GJ_W8Forums
Windows 8 Store Apps Forums
34. • Good luck with the Three Thing Game!
• Thank you for your enthusiasm, support and ideas!
• Looking forward to seeing some great games!
Post Three Thing Game:
• Register for a Windows 8 Developer Store account
DreamSpark members have FREE Windows Store subscription!
www.dreamspark.com
• Build and sell great W8 store apps/games!
http://www.microsoft.com/uk/msdn/windows8/
37. Agenda
Overview
History
Games
Porting
Demos
Questions
38. XNA 4.0 Supported Platforms
XNA
.NET 4.0
DirectX 9/11
Windows Phone 7 Windows Xbox 360
39. Introducing MonoGame
OpenSource implementation of XNA 4 API
2D SpriteBatch
3D (APIs and Model Loading)
Load Existing XNA compiled assets (*.xnb)
Sound and Music
Input (Mouse, Keyboard, Touch, Gamepad)
Effects (Basic Effects & Some Custom Shaders)
Write Once, Play Everywhere
40. Introducing MonoGame
Only way to get your XNA game onto Windows 8!
Actively being developed and promoted by core team members
Me, Dean ( Xamarin )
Tom & his team ( Sickhead Games )
Steve ( Konaju Games )
Aranda ( Gnomic Studios )
Espes
High Code Re-use
Write Once, Play Everywhere
41. Brief History of MonoGame?
Project Started in June 2009 as XNATouch by Jalfx
I joined on October 26th 2009 ( co-incidence?? )
Dec 2009 – v0.7 (2D and iOS only)
Oct 2011 - v2.0 ( Added 2 platforms, Renamed to MonoGame)
Dec 2011 - v2.1
Feb 2012 – (3D codedrop from Flying Dev Studios)
March 2012 – 2.5 (Tom and Sickhead Games)
June 2012 -2.5.1 (11,000 downloads)
October 2012 – 3.0 BETA(available now!)
43. Contributing individuals
Oliver Brown Dean Ellis Tophathacker Koda Turtle Games
David Lively Carl Ådahl
Tom Spilman Niel
Clancey Marshall Ward
Grapes
Nezz Randolph Burt Espes Danzel
Javier Fernandez
Nicolas Coderre
Thiago Pastor Adrian Batzill Inverness
Edward Rudd Akshay Arora
Andre Esteve
Raistlinthewiz David Leaver Jeff Johnson
James Lupiani
Christian Zangl Jorge Cantón Ferrero
Mgroves
Steve 'Sly' Williams Geoff Norton Jordan Phillips
Tom Gooding Dominique Louis Jamesford42 Taskbit
Tapani Värjölä Deathcradle
Jeremy Bell
Lukas Jadaml
Ádám L. Juhász Ray Batts
Renaud Bédard Nicolas Leonard
Jhllnd Kenneth Pouncey
Write Once, Play Everywhere
44. The Future
Embracing XNA: APIs, Shaders etc
Extend: New platforms, APIs, Features
Open: You can make it better or customize it for your game
XNA was a great foundation
MonoGame will continue to take it to new levels
Write Once, Play Everywhere
45. MonoGame Supported Platforms
MonoGame
Windows8
Xamarin Xamarin
.NET 4.5
NET 4.0 MonoTouch Mono for Mono
Android
SharpDX
Direct X OpenGL / OpenAL
46. Future Platforms
In Progress
PlayStation Mobile
2D Working
In Progress
Raspberry Pi
2D, 3D
Google Chrome Planned
Windows Phone 8 Planned
Ouya Planned
47. High Code Re-use
Xamarin compilers enable developers to build fully native iOS and Android games and apps in
C#, that can share code with Windows apps. Through code re-use and sharing, and by
unifying mobile app development in C#, Xamarin makes it possible to deliver
gorgeous, performant, native apps for all major device platforms quickly
49. Commercial games we know of
iOS*
30+
Android*
15+
MacOS, Linux
10+
Windows 8
• 10+
Chrome
Bastion
*Xamarin compilers makes it possible for MonoGame titles to reach iOS and Android users.
Write Once, Play Everywhere
51. Porting to MonoGame
Project Setup
From scratch : ~30-60 minutes
With Templates : ~15 minutes
Platform Specific
Resolutions
Sound/Video
Minimal #ifdefs
Write Once, Play Everywhere
52. Things to think about
It's Being used in AAA games
It's Extendable
It's Growing(games, developers, platforms)
It's In your hands
It's Nnow supported by Microsoft
It's Currently the only way to Windows 8
It's OpenSource
It's Active
Lots of examples
Write Once, Play Everywhere
54. Why Games.... Demand
Most titles in the Windows
Phone apps store are
entertainment and utility apps
Customers are downloading
more games than any other
type of app
Customers are willing to spend
money for the privilege
There is an opportunity here
to give customers what they
want
55. Type of Games....
Freemium games do better than paid games
Action games are the best bet to turn a quick buck
Strategy games dominate long-term
Simulation games account for the second largest share.
Opportunity to carve out a niche ( grow your fan base )
* Taken from http://www.appannie.com/blog/mobile-games-that-last/
56. Summary
Games are the #1 download and #1 money making app category
Pick your niche, grow from there
MonoGame provides a solution to get your cross platform game running as a
Windows 8 Store App
MonoGame provides a cross platform solution so that you can leverage your
existing XNA development effort, across multiple marketplaces
(iOS, Android, MacOS, Linux, PlayStation Mobile... (top secret) )
Follow the certification guidelines (WACK) to make your app Windows 8 Store
ready
57. Contact
Dean Ellis
Site : www.infinitespace-studios.co.uk
Email : dean@infinitespace-studios.co.uk
Twitter : @InfSpaceStudios
Dominique Louis
Email : dominique@xamarin.com
Twitter : @SoftSavage
Time: 1 minuteWe like to talk of Windows 8 as Windows reimagined with a new interface that provides unified input across touch, mouse and keyboard whilst still preserving all the great work that we did in Windows 7Indeed, everything that runs on Windows 7 still runs on Windows 8 (in the same architecture) Windows from chipset to experience with support for a new range of capabilities, scenarios and form factorsUnprecedented user reach & engagement across a wide variety of different devicesWindows 8 makes it easy for your app to scale across desktops, laptops, tablets, All-in-ones and more.
Time: 2 minsSo what about Windows 8 for gaming? Windows 8 provides unparalleled reach across a range of devices, from touch and pen-centered tablets with modern sensors to high-resolution laptop and desktop PCs. These different form factors represent a unique opportunity for game publishers to enable great experiences across a variety of use cases and scenarios.Highlights new capabilities in Windows 8 that are of particular importance for games, including:Sensors—Windows 8 has support for modern sensors including light, gyroscope, accelerometer, and location.Share contracts and Device contracts—New, top-level operating-system functionality makes games more social and lets them make use of nearby devices.Windows Store – lots or commerce models including makes it easy to offer a free trial without writing any code. It's the easiest way to increase conversion rates.Ability to show game controls in different layouts on large screen sizes for an optimal gaming experience.Support for different types of user interaction, including touch, pen, keyboard, and mouse.
Time: 30 secsSo build up excitement and anticipation
Time: 30 secsWe will now highlight some important ideas/capabilities that you can access using Windows 8 and the WinRT API to make your game can embrace Microsoft design style and simultaneously improve its users’ experience.
Time: 1 minGames vary widely in complexity when it comes to how they handle navigation and the exposure of commands and experiences. They range from simple, lightweight puzzle games with no menus or options to richly complex strategy games with tiered menus that host myriad options. Some games only have one experience for the user—the game itself—while others can host achievement screens, leader boards, multiplayer lobbies, and more. A great Windows 8 game will make sure that navigation between those experiences is a fast, fluid, and delightful experience. The navigation pattern you choose will be informed by the type of experience your game provides, so it is strongly recommended that you review both of the patterns discussed here and understand them before continuing. If you have multiple rich experiences in your game, above and beyond the actual game itself, a hierarchical pattern would be beneficial in bringing all of your content to the top level, as opposed to burying it behind menus. This way, every time your game is played, all of your carefully crafted experiences are put in front of the player. If the game is the only experience, however, consider a flat pattern that allows users to swiftly navigate between multiple sessions in the game (for example, multiple one-on-one word games against friends). Pick the appropriate pattern to help users quickly and confidently find the content they want. Oftentimes, it is not the game itself but the other content within it that help determine which model you pursue. Lets look at these in a little more detail…
Time: 1 minHierarchical patternThe hierarchical pattern enables you to put all of your content in front of users, delighting them and making their first experience a complete one. On your hub you can show entry points into the game itself, such as level select, new game, or continue game, as well as recent achievements, friends lists, and other areas of content, all on the same pannable surface. Each category can present content that the user can interact with directly, and section headers that can be used as navigation points to reach a deeper view of content relevant for that category. The hub can also be used to express some of the personality of your game, as shown in the example below, where the section view of the level-selection experience changes to reflect the experience of the portion of the game you’re currently viewing. The hub also provides a way to give updated and fresh content to users each time they view it, making it alive with activity even when they aren’t playing the game itself. For instance, consider the achievements experience modeled below. It divides the achievements into categories and provides information about each individual achievement all at once, telling users what it is and how close they are to unlocking it.
Time 1minTalk about this
Time: 1 minThe flat pattern is a great way to keep your game as the front-and-center experience and support seamless switching across sessions, even if there are no other heavyweight experiences within your game. Rather than taking the user to a sparse hub, simply use the top app bar as your navigation home: present the different users' sessions there and let the user move among them. If there is a preliminary state before your game is started, consider a presenting a screen that shows the user your branding and that also provides a place to identify as a “home” within the game. You don’t need to show the top app bar when your app starts. For example, Internet Explorer in the Windows Windows Store appUI experience handles this case by taking users to the web page they were last on and relying on them to swipe downAs you can see in the image, this game does not offer any experiences beyond the game sessions themselves and the means to initiate them. Rather than trying to move this small amount of functionality into a hub, the flat pattern enables this game to put all of its content in front of its users and let them quickly and confidently navigate it. their tabs to navigate.
Time: 2 minsLocation: on-canvas or app barIn-game controls can be found in one of two places: on the game’s canvas itself or hidden away on an app bar that the user can invoke at will. Asking yourself two questions can help determine where to put them: Will this control be used very frequently?Is this control crucial to the playing of the game?If the answer to either question is yes, consider putting the control on the canvas itself. This will ensure that the control and also how to play the game are plainly obvious to the user, and that the user is not frustrated by constantly having to invoke the app bar just to make progress in the game. CLICKHowever, if the answer to neither question applies, consider putting your control in the app bar. This avoids cluttering the canvas with buttons and controls, and leaves plenty of space for the user to interact with the game itself. This approach reduces distractions and allows the game experience to shine through. In this app, there are no controls on the canvas. Users play the game via direct manipulation. However, when they swipe up from the bottom…CLICK…the application reveals an app bar that contains a number of controls, including ways to pause the game and to change what sort of weaponry they’re using. The game developer has determined that these commands are executed infrequently and so can be hidden most of the time. Some games may have a control that is important enough to take up space on the canvas.
Time: 1 minIf you’re using virtual joystick or button controls on the canvas, let the user customize the size and the position of the controls, or make them relative so that they appear wherever the user puts down his or her fingers. There is no one-size-fits-all placement that is ergonomically pleasing to all users. In-game controls and interactions with them should always be at least 20 pixels from the edges of the screen so that they do not interfere with UI elements such as charms or app bars. For a default placement of a virtual joystick control, where the thumb is when the user is holding a slate. Direct manipulation is also encouraged as a means to control a game. Multi-touch supports panning and commanding at the same time, so users can do things like move their camera and shoot at the same time. Windows 8 devices may also have sensors, such as accelerometers, that can be used to interact with the game. Consider using these when they're available, but be aware that your app must provide alternative access to that functionality for PCs that do not have these sensors.Possible options for showing ergonomics:On Screen D-PadOn Screen ButtonsGeneral swipe to chop, shoot, etcDragMulti-touch
Time: 1 minChanges in orientation and window sizeA game can be in one of four visual states: full screen landscape and portrait, and snapped and fill. Your game should always be playable in full, fill, or portrait states, and you are strongly encouraged to make your game playable when snapped if it makes sense to do so. For instance, a puzzle game could easily be continued while in snapped state, but a first-person shooter would be impractical to play while snapped. When your game is in fill state, it should still be playable and should simply adjust its presentation to the space provided. If focus moves from the game to the snapped app, the game should pause as expected. When your game is snapped, if it can be played (even if modifications to the game's UI are necessary), we strongly encourage you to make it playable. This practice enables multitasking and lets users continue to play your game while doing other things on their system. This approach is particularly great for lightweight, casual games that can occupy the user’s attention without necessarily occupying the entire screen. For example, a user could continue solving a puzzle or playing a board game that's in snapped view. If your game is not playable in snapped view, or if it reaches a state where further progress requires more screen space, it should be paused and should explain to the user that further action is impossible until the app is no longer in snapped view. The game should not programmatically move from snapped view to become the main app independently of user action, nor should it offer a UI that has the sole purpose of moving the game move out of snapped view. It is okay to have the game change to another view in response to user action, and it is also okay to rely on the user to change it from snapped view by using the divider. For instance, your game could offer an "unpause" button that would programmatically make the game the main app as part of resuming game play. Try not to surprise the user by moving the game out of snapped view when they do not expect it. 1366x768 min to support this.
Time: 1 minute (2 CLICKS)and when your app is running, it’s not necessarily making direct API calls to the OS. a lot of APIs are “brokered” and that “broker” decides what to do based on a manifest that’s part of your app.There are APIs that we can’t just allow to “happen” without the user’s consent and so your application needs to say what it’s going to try and do and the user needs to be in control of that.It therefore looks at the applications manifest fileTo determine what the app is trying to access.
Time: 1 minuteThe app has to declare what the app wants to do ( capabilities ) which can still be turned down by the user and it also has to declare what it can do on behalf of the operating system or other apps ( i.e. declarations ).If not declared can’t use at runtime. Protect system integrity. Privacy implications of devices. System prompts the user – make sure when you use you handle this possiblity, expect they may be blocked at runtime from lack of user consent. Some have no privacy implications (e.g. sensors) don’t need to be declared.VS provides a nice graphical container.
Time: 2 minsthis is a huge change and one that needs understanding.In previous Windows version, user was in control of the apps lifetime – selecting to explicity kill it and could bring system to knees if too many running simultaneously.Your win 8 app is in one of 4 lifecycle states at any given time: not running, running , suspended or terminated. As your app transitions between states, it receives lifecycle events that help you provide a consistent and high performance experience to your users. All Win 8 apps move through these states as users launch apps, switch among them, and close them. Suspend – System resources focused on the app that the user is interacting with in the foregroundInactive apps have no impact on battery life or responsiveness, they are suspended by the OSEnables instant switching between apps!User can easily register for the suspend and resume events using Windows.UI.WebUI.WebUIApplication.addEventListener(‘suspending’, ‘resuming’)Suspended apps are not scheduled by the NT KernelNo CPU, Disk or Network consumedAll threads are suspendedApps remain in memoryKernel ensures apps are not suspended in critical sections that could cause system wide deadlocksApps instantly resumed from suspend when brought to foreground5 second phase to perform all operations…Termination – System needs more memoryUser closes the appSystem shutdownApps crashApps do not get notified when they are getting terminatedThere is no event fired during termination… you should save all your stuff by “suspending” … Need to think about saving and restoring state for the users info so that if they come back to the suspended app thenit is in the same place as they left it, with data refreshed.Plenty of guidance and examples online for this.
Time: 30 secsThe things covered so far are must-think aboutsTo make your game stand-out then you should really think about some of the ideas coming up…
Time: 1minTalk about how the user can pin 0, 1 or ( possibly ) more tiles on their start screen if the app offers 2ndary tiles.Talk about how those 2ndary tiles can provide launch context into the app ( jump to ‘movies’, jump to ‘theatres’ )Talk about how those tiles can display notifications; images & text badges – glyphs and numbers cycle through them ( if the user chooses to )Talk about how these also appear on the lock screen ( under the user’s control )Tiles are the “front door” to your app. A compelling live tile will draw users back into your app even when your app is not runningSecondary tiles:Differentiator from other apps in the Store, users will prefer the app with the great live tile.Tiles created by “pinning” content from app E.g user can pin weather tiles for different locations or their favorite stocks.Exposes relevant content eg.. New sci-fi films within a digital media app, local news in news app
Time: 1minLetting you know when it’s your turnAnnouncing new levels being available for cut the rope
Time: 1 minContracts A contract is like an agreement between one or more apps. Contracts define the requirements that apps must meet to participate in these unique Windows interactions.Search contract makes your app searchable from anywhere in the systemShare - People love to share, People often need data from one app in another appShare provides a lightweight, in context experience for app to app sharing Source app fills a data package (OS dealing with brokering between apps), target app processes data packageData package- Plain text, formatted URL, image, HTML, files, custom data formatSettings contract provides quick, consistent, in-context access to settings in your appPlay-to:you can help your users play digital media to connected DLNA devices from within your app. Users tap the Connect charm and then the Play To button, confident that your app will play their media to the DLNA device.Participating in this contract makes your app easy to use and encourages users to remain in your app for longer periods of timeApp-to-app: You can help users pick files from one app directly from within another app. Users gain freedom and flexibility to choose files that are stored and presented by apps.Participating in this contract helps you increase the popularity and adoption of your app
Time: 1min
Time: 1min
Time: 1minAll of your game’s settings, options, and Help content should be accessible via the Settings charm. The Settings charm is where all Windows 8 applications host their settings and options, and it is the natural place for users to look when they want to adjust the game’s sound effects or toggle a color-blind mode on or off. For sound, we expect that games will want to have their own, more complex sound settings (for example, separate volume sliders for music, sound effects, and voice). Use a label to make it clear that the audio settings are specific to your game. Windows 8 provides a global volume control rather than having each application control its individual volume, but games can have multiple sound sources that users will expect to be able to tune independently. As noted earlier, Help content should also be located in the Settings charm. Initial play education, such as tutorials, should be made available to ensure that users know how to play the game. An example of this can be seen here, where the app makes the tutorial part of its initial game-play experience.
Time: 1minExporting images from game to be background for start screenUsing music from music app to play in background of game
Time: 1min
Time: 1min
Time: 30 secs
Time: 1 minNot every game has to support pausing. Multiplayer games typically have no concept of being paused because multiple players are active at once, and games that are driven entirely by the user, with no other external factor such as a timer or clock, gain nothing by being paused. In these cases, there is no need to enter a paused state when users navigate away from the game, and going back to the game should present users with the same experience they were in before leaving if at all possible. If that's not possible (for instance, if a multiplayer gaming session has ended), the game should clearly communicate to users what state they are currently in. For games that do have meaningful pause scenarios, consider pausing when the game loses focus (for example, upon user invocation of charms or upon the appearance of a system dialog box). If the game’s visual state has changed due to rotation or being snapped, the game should continue if it is normally playable in its new state but should be paused if it is no longer playable. Additionally, include a pause button in your game. Decide on its location along with that of the other controls as discussed earlier. However, a game should not only rely on loss of focus to determine that it should pause. Communicating paused stateCommunicate to users when the game is in a paused state, either by removing them from the in-game experience and putting them back in the central hub or by presenting a pause overlay or pause screen. Don't permit interaction with the game while it is paused, except to unpause it. For puzzle, strategy, or timed games, it is advisable to obfuscate the game canvas during the pause so that users cannot gain an unfair advantage by pausing. The next example shows a game that shows its top app bar and enables navigation while the game is paused. Make it just as easy for users to unpause a game as it is to pause it. If you have a pause overlay or pause screen, it should contain some way to unpause the game. If you take a user back to a central hub, tapping the game's app tile should return the user to the game. When users unpause your game, consider giving them a moment to orient themselves before resuming the action. A countdown is a good way to do this. Separating pause from time flowWhile games that present time-flow controls—city-builder games, for example–can "pause" the flow of time, this is not the same thing as pausing the game. Pausing is the complete cessation of user interaction with the game, though some background rendering may continue so that animations continue to play.