Sessions is temporarily moving to YouTube, check out all our new videos here.

Building Apps/Games for Xbox One Using UWP - Build Once and Target Many

Simon Jackson speaking at Dot Net North in June, 2017
431Views
 
Great talks, fired to your inbox 👌
No junk, no spam, just great talks. Unsubscribe any time.

About this talk

With Windows 10, Microsoft introduced the Universal Windows Platform to target multiple Windows platforms from one project. Now with Xbox and more, the reach of UWP has expanded even further. Through this session we'll walk through getting your UWP projects on to Xbox using a variety of tools, from Visual Studio, Unity and MonoGame.


Transcript


- Right everyone, welcome tonight. So here we're going to be talking about building games for UWP and also for the Xbox. Now, what also makes this rather special is that this isn't just any Xbox. This is a retail Xbox. No, no, no, no, this is a retail Xbox, there is nothing special about it. You go walk into the shop, you go pick it up, there's a box down there. There's no development kit, it's just off the shelf, so this is something anybody can do. Where this takes advantage of the fact that we're building for the Windows UWP, or Windows 10 UWP platform, which allows you to deploy to anything, now including the Xbox. So, I'm Simon Old Darkside Jackson, or Simon Darkside J., as you'll find me on the interwebs just about anywhere. I've written a few books. But mainly I'm a game development evangelist. Now, a lot of people quiz me about that, but basically I'm everywhere. If it's about game development I'm normally in doing it, or playing with it, or trying it out, trying to bash it to bits to make it work better. Or, with some certain engines, who shall remain nameless, they'll never work better, we'll just keep suffering through them what they are. I've written a few books to my name, still writing more. I'm championing working on goodness knows how many different all sort projects, all to do with game development these days. And if that wasn't enough, I then went and picked up anther project, I'm now heavily into the world of 3D printing, and if you want to ask me abut that, as well, feel free. That is a lot of fun, and then matching that up with game development, is even more fun, but hey ho. So, that's me. You can find me at my blog and / There is multiple YouTube channels, multiple different avenues and things that go along, so. Most of it, right okay, so. Let me walk over here now. Okay, so what we're here to talk about. So first we got the Universal Windows Platform. So hopefully most of you Microsoft devs who have least heard of this. It's been around now for two years? Yeah, about two years. It's only gotten better and better I mean. In those case, you know, what does this bring? And what does it bring to the ecosystem and how we're gonna get used to it? What tools are involved? It's a Dot Net North, so basically it's Visual Studio. But there are other tools they can use. Howstarted with UWP on Xbox and how fast that is. And most people are taken aback about just how quick this is. You think developing to your cult your PC of the store's fast, but wait 'til you try the Xbox. We're gonna go through some tools and engines that we've support there, so we got Unity. It's the Unity 3D game engine. And we got our favourite one which is MonoGame. Brought back from the old days of X and eight. We'll to on how to get published when you're building these games for the Xbox itself and the store. And lastly it's a case of what makes developing for the Xbox in retail different from developing on the developer mode which a lot of people generally ask about. And one year I ought to actually get myself a clicker, but not today. So, Universal Windows Platform generally means what it says on the box, it's universal. You're building for one Microsoft, obviously weather the whole Bond regime. I mean this path started back in Windows 7, evolved into Windows 8 into this more unified platform. And now it's what we see here today where we've got Windows 10 on everything. If it's Windows 10 runs it, the universal platform will run on it. So you're writing at the end of the day one app, for everything. You might have a few different builds because you've got different process and run times. You got ARM, you've got x66, x64 and so on. But generally speaking it's one app. And you're simply building it to scale to work on whatever real solution you're working on. Everything from your IOT devices, mobile PC, the huge Surface hub, or even HolloLens and Murphy will go, "Oo, HolloLens." Gonna get hands on the HolloLens. I'd love to, no one can. Backed behind this a whole lot of rafter services that come onto the same regime. So if you're running a Windows universal app you'll actually be accessed to one API for access to everything, access to the store. With Xbox and gaming the same Xbox gaming live services. You'll ask of the store centres, one store to deploy to and a whole lot of other things there all again under one banner. It means I can then go and ship it to absolutely everything is that one package or one build. You're scaling it for whatever solution you're working with and each device will just run. Even the HolloLens and the Xbox is a case of the same app. You don't have to do anything to it from the get go to get it to run. But also there are certain differences. So you know, an Xbox has not got a touch screen. An IOT device generally hasn't got a screen. The HoloLens, unless you're walking around with a big backpack, has not got a keyboard. So how can you build one app across all these devices and not have it fall over and have to keep chubbing if defs and changes ahead that were? And this is where the extensions come in. So each platform has an extension that goes behind it. It's one unified layer, one unified application programme and interface for everything. And basically what these extensions do is they light up those features if it's on that platform. So you don't have to write different code, you say right, if you've got a touch screen event you're gonna go and do this. So you're gonna ask for a touch screen on the HoloLens it'll pick up the Jester logic. A laptop you've got a touch screen that'll work. On the Xbox it'll go, "I've not got a touch screen. "I can't help you." And you'll just get nothing. Won't crash, won't stop, won't not run. That's not to say you can't improve things, because the Universal Windows Platform Within the API you have a way to test APIs. To say, "Have you got a touch screen," or "Have you got this particular thing? "If so go and do it or if not just ignore it." And actually have it so that your application can bend, twist and turn to meet the demands of whatever device it's running on. But the key thing is that you don't know. Actually you don't care, your app is running and doing stuff. And in some of the more advanced cases though it would seem is that you'll actually hear different things based upon what those platforms are. So if you're on the Xbox you're gonna light a whole lot of features. If you're on the phone you're gonna cut it down and say, "Right, it's just these. "But I'm gonna give you an extra ability "because it's the same application on the same store "to connect all these other devices if they're running." And the world of how tuned to where you to be can't really be understated 'cause the fact that you're building to Microsoft you're not building to any particular platform. Which if anyone's actually tried doing Android and liveth through the pain that is Android and having five million builds to all the different variants in different devices. Even with iOS where you're developing maybe to my pattern in a phone if you're lucky, but you can't touch Mac. That's a whole different ecosystem completely different API. One Microsoft means one platform for all. And when we start to look at games there's a growing number tool sets and chains that are there that support UWP out of the box. So Unity, Unreal, MonoGame, all of these different game engines allow you to build with UWP by the click of the button. So you've built your game you've built it for your assets now and you simply say, "Right, "go and build it for UWP," and that's opened up every platform for UWP. You can also then, most of these, you can then tweak it afterwards to say, "Right I want to enhance my UWP build "with a lot of extra things." In most cases you don't have to 'cause Microsoft gets on board with a lot of these vendors and build things into those features, so it reduces the impact when you actually go to build. However there is the old safeguard. You can say, "Sod everyone else, sorry," and just built for DirectX. UWP is at the end of the day a D3D rendering platform behind the scenes. It's for all your WPF your XAML they're all writing for the platform. It's just run, anything that's drawing is just going through this. It's a high performance 3D rendering engine behind all that. And in fact if you watch the latest build you ought of seen a load of extra features thrown in there or the composite rendering of the other things, it's all DirectX under the hood. The way it runs and makes it fast. And you can use that if you want to. That's only for like C++. That's painful. So, right. So we want to build a universal platform and we will need to play it to our Xbox. So first thing we'll need an Xbox, why as I say? Any old Xbox. Doesn't matter where it is. As long as it hasn't been opened and altered by someone in career to make it work with every game going. Not that that happens. It will work for the Xbox One, it'll work for the Xbox One S, it'll even work for the Xbox One X as you announced or Project Scorpio announced the other day. Once you've got that you need a dev store account. There's one there. Free for a lifetime. And from that then you're gonna instal an application on your Xbox, free from the store to basically light it up. And we'll walk through that in a minute. And you're gonna need a PC running the minimum of Windows 10, preferably the original creator's update. But anything later than that is just as good. You need Visual Studio two you see how old this is. Visual Studio Community 2015 or higher, so yes it works on 2017 and above and beyond and what ever is beyond that. You will need the Windows UWP SDK, preferably from 14.393 and above. But the other stuff we'll actually warn you about that with give them with anyway. And then any tool or framework or engine of your choice, what you're gonna build the game with. You can built it XAML if you want and deploy it to the Xbox, you can. So you can go and put your Go Find My Car app on the Xbox. But it might be a bit hard to cart around and plug in every now and again to find out where your Xbox is. But there is unfortunately one crucial thing here which you can't get away from. You're gonna need some free time, basically to go and build a game. Games can take anywhere between weeks to years to months to build if you wish. But from the Xbox point of view you only need a little bit of time to actually get going. So, what's involved? He says whipping out his Xbox. So you're gonna go to the store and you're gonna instal this lovely little application. They're free to anyone, anyone can open it up. You go and instal that and run it. And it's gonna say, "Right. "The first part of the journey is "I'm gonna activate your Xbox for developer mode." And what this is gonna do, this is gonna link your Microsoft Live ID to this Xbox for development and only you. Anyone else who logs onto the Xbox won't have this experience. It is paired to you. And it's part of a long running security journey here. So it basically asks you to go to the website, copy that code, and that pairs the physical address of that machine to your Live account. So it's now your development environment. You'll go restart your console and up it comes. And there it is and you have this lovely little developer mode. Interesting thing, the amount of times that I've been hopping between conferences with this box, is you need internet access. Something I don't go into here. Without internet access the Xbox does not know it's a developer Xbox, it's not linked to your account, will not let you do anything. So you need internet access from which, from the moment you turn on the Xbox. If you don't it goes back to retail mode by default. What this will give you when the Xbox app start up is an IP address, which basically tells you this is the Xbox console's IP address for connectivity to it for development. It also, now it gives you on the later version 'cause this is updated since, an actual web address you can even web manage your console on your local network. Not from the internet, just from the local network. And not let anyone to over write a gateway. So we then fire up Visual Studio and we want to connect to our Xbox. And again the console is gonna give you a code. You'll drop into Visual Studio select like you would with any other development, select the Xbox as remote deployment option. Once you've selected it and the first time you run it it's gonna ask you for that code. And what is happening here is it's pairing your Live ID on your development machine, preferably also logged into Visual Studio, although it's not essentially critical. To your Live account on the web and then onto the Live account that's opened up for development on this Xbox. And this has created a secure development boundary which is all linked to you. No one else can out of this stuff on this Xbox than you, simple as. This is a whole security trend around this to make sure the fact that when you're in this development mode it's a completely sum boxed environment. So it is your own development kit. It can't access anything on the retail, when it's in retail mode. And retail mode can't access anything in developer mode. It's a complete sum world. They're actually completely different virtual machines under the hood, so neither of those will meet. So you don't have worry about anyone to access your saved games or trying to rip off your code off the Xbox itself, it is just not possible. 'Cause there's that many hoops and hurdles you've got to get through to even get on the Xbox. It's not really possible. And also is case if you can't deploy or develop over this over the wider internet. It is a local network access only. Originally you could only do it from a wire connection, which was a right pain in the, yeah. But now you can actually even do it on Wifi. Although they do recommend when you're deploying games that your preferably over wire, just 'cause of speed. All right and then you can go and deploy your game to it he says. So. From spinning up environment itself, an extra one there. You're gonna go instal the app, get it activated, restart the console. You're gonna get your Visual Studio connected up, wired up to it and get going and actually get your app deployed. Now does anyone want to guess how long this all takes? No takers? Five minutes! I challenge you to get any other remote environment set up in five minutes, from scratch. I actually literally timed this, by unboxing this for the first time. If you can exclude the first bit when it updates when it starts up. So from that console being on it took me five minutes to get my Visual Studio connected to it. All secure. Now see with the kids running around me saying, "Can I play on the Xbox now?" I'm going, "No! "I'm developing on it! "You can't." So, let's have a quick demo. Now this should be interesting. Can we switch over? Now what I always like is lovely grass roots, I'm gonna sit down for this part. And hopefully Visual Studio's not gonna sit there for five minutes going, "Please wait while "I'm formatting your text." - [Audience Member] It's patch Tuesday. - No, I've already patched. He says, honest. Right okay. Let's create a new project, he says. Ah we're just gonna create a nice Windows universal. I'm just gonna be a blank cap, 'cause that's how I roll. Just blank. There. I'm not creating it in .gif. So the first it'll do is the fact that when you're starting a new universal Windows project, obviously you're gonna select which target the version's gonna do. You need a minimum of 14.93, 393 build or higher. Mostly since this is now on, the automatic, I forgot I was on fast mode, so this is now actually on the creator's update mark two build, even though I didn't want it, 'cause this is my work machine. Look at the machine, he says. Right we'll let that spin up. And there we go. So e have a nice little development app running. I can go and run this if I want. It's gonna be really exciting, this is my first blank cap. It's gonna look absolutely fantastic, he says. After it finishes restoring the three million nugget packages, 'cause obviously we're all nugget now. Oh it's deploying. I must admit they have improved that nugget deployment solution, so if you've ever installed them ever on your machine it now remembers. Makes life funny. So there's my nice front blank cap lazy running! So, let's get this on our Xbox. So we're simply gonna go remote machine. And I'm gonna connect now obviously at this point in time I could rip out the wires here and go, "I'll go plug them in the Xbox." But hey no, we're flying by the seat of our pants here, so what Xbox have actually given you is the Xbox app. You can simply start and go, "Hey Xbox." I've got it started here already. And within this now if I connect a controller, wire it to my machine, or if you have the Bluetooth wireless Xbox controller thingy you can then stream your Xbox to your PC. Which means that Xbox can be anywhere and I'm still developing on it. You can also use it for playing games. So if I'm sat in bed and I'm playing on the games I'm bored and the Xbox is downstairs and I'm in bed upstairs it works fine. And there you go, now this is me using my Xbox. And this is obviously there is now the developer home. So we've got our nice little console IP address, we've got lots of little features down here. Ignore this section for now. And it'll give us lots of little options. You can even go back you can actually switch back to retail mode. If you want to leave dev mode, that'll restart your box, gives you the option whether you want to delete anything or keep it for next time. So your kids can go back to playing Road Blocks, 'cause that's all my kids play on it. Huge powerful machine, let's play Road Blocks or MineCraft. Or we can MineCraft in HD soon, coming in 4K. I don't know how that's gonna work. - Sorry. - Yup. - [Audience Member] So you've the controller linked-- - Yup the controller's wired up to my PC, 'cause I'm streaming the Xbox from my PC. A word to the wise though, when I unplug I then have to resync it to the Xbox because it completely forgets that fact that it was ever tagged to an Xbox. Yeah I think that's an interesting feature. But anyway, so as we seen, but though more importantly it says there's my IP up in the top left. So I can come out of that, go over to here and go right, I'm gonna put in my address. Which I pasted here earlier. If you're lucky, real lucky, it depends on the network, it can autodetect the Xbox like any other host. Now 'cause I've already connected this to the machine it's not gonna ask me for that lovely key. So I don't have to put it into it. And then all I simply have to do is click play. Now for that to work I have to be logged onto my Xbox as me on my Live ID. Deploy is starting. And now it's gonna think about it for awhile. But it shouldn't think too long because it's a very small app. The amount of times I've done this demo now, it's a 50/50 chance whether something happens because the network dies. It's never good when the network dies when you're trying to do a live demo of something deploying to a machine somewhere else. But yeah, this Xbox could be anywhere, so long as it's within the bounds of your local network. It is not accessible over any kind of wired, LAN net, no, WAN network, forget my terminology right now. Come on deploying. - Basically the Xbox app is running on my PC and that streams the screen from the Xbox to your PC. It's actually more like, if you look at any of these live streaming services it's more like that than RDP. So there's actually a streaming part on the back of the graphics card. Which basically is hard wired into the network. And as soon as you say stream it just goes, foomp. There's very limited latency. This is ready, so I'm gonna hope it's running. Oh no, there were deployment errors, so that's why it didn't look. Why were there deployment errors? All right, okay. Noob mistake I selected the wrong platform. That'll teach me. Yeah obviously the Xbox is Nex 64 machine at the end of the day. - The message that Ken would prefer does anybody ever crash? Yes. - [Participant] What happens if you press yes? - I don't know. - Does like Patty come down - [Participant] and say, "Congratulations." - Yeah what do you learn your last bill deal, okay. Yeah, yeah it's gonna ask me the IP address again. Ah, we'll try it again then! We have to do it again, no it's not, it's not behind me. Oh, deploying south, that's why it failed the last time it was thinking about it too long. This normally should only take about a few seconds realistically. Come on deploy! You have started and you will deploy. Worst case of, it is simple as that. So for any Xbox as long a you've got the Xbox on, the key thing is signed in as you. If it's not signed as you, you're gonna get a lovely pop up here saying, "I'm sorry, no you need to be signed in." So it will tell you. Then you have to run downstairs and get the controller and plug it in the Xbox or use the streaming app to connect to it. But theactually the last thing I used to think, the streaming app won't connect to the Xbox unless you're signed into it already. So if you're planning to play the Xbox in bed and the Xbox is downstairs, sign into it first before you go upstairs and get comfortable. So then when you're ready to get your Halo game on, when you've connected to the laptop and I've done this many a time. To sit and watch that thing, "I'm just browsing "the internet. "No wonder you won't work, shoot." Come on we're deploying. Don't let me down now. There we go succeeded! So that thinks it's running. I'm gonna switch over to the Xbox which is also thinking. I've got network quality problems, I was gonna say. Whoops. And that's running my nice little UWP app and it's firing up. And I even have a cursor, look at that. It's highly interactive. So every UWP app that you shipped that Xbox itself will turn the cursor on by default. You can have an option to turn this off. And because this is the Universal Windows Platform, all the GUI controls, all your lists, and everything else are all also geared up to work with the Xbox controller as well. So you've navigation around the app itself is there by default. You can tweak it. And what's also interesting is that it's also debugging. So now it's debugging like any other machine to the Xbox itself, catching exceptions, looking at memory. Because I'm using 22 meg of this Xbox's eight gig of memory. It's really throttling it. So that's where it is out of the box itself. He says. All right, where's presentation? Okay, so. That you want to do yourself, but if you actually use something a bit more serious. So we switch a little demo of the Unity 3D gaming engine. Has anyone actually looked or tried Unity before? Three people, oh four. I went and did a Hackathon in London. It was a game development Hackathon using Unity to a bunch of medical students. I asked that question, I had two hands out of 80. I then had to do an impromptu one hour training session of how to use Unity. So for anyone who's not seen it before. Yup. Here we have a nice little game. This is actually one of the Unity samples that they give you. And if you've not seen it before it's just a nice little game development service. This will tell you what've you've showing, what it looks like, what's going on. It works most of the time. Well it's not gonna play. Gosh I thought it was playing. Let's actually have a look at the game itself. This is the game running in the actual editor itself. So Unity allows you to test and play your builds locally before you then go and build and push it to someone else. I'll go ahead and play it. Not that one I can't. This all worked fine in the preparation. Ah, that's because I'm looking in the wrong place, there we go. Especially using another vendor's samples for using your demos. This normally works, he says. All right is that now loaded? 'Cause it obviously looks no different whatsoever. There we go. Now, hey. There I am running around. We have no sound, which will be a shame. Or else you could really have the extremely annoying music. And here I'm, it's why I don't use the controller. You'll notice one thing here is the fact as I'm going around a nice little twin six shooter left and right, oop. No, no, go away, away. And this is shooting constantly. And that's how it's designed to work with touch interfaces and touch controls that's how it works. But I want to go and build this for Unity, or for the Xbox even. And honestly I don't need to build it for the Xbox, I now actually need to build it for Windows universal projects. And in Unity the way that we do this the fact that we simply sacked the Windows store, set our target as the Universal 10, unfortunately they didn't get the memo to say it's now the Universal Windows Platform, not the Univerasal App Platform, so they didn't change it. There was a couple of options here, you can either do as a Direct 3D game or actually as a XAML project. So if you want to, you can actually deploy your game and then do XAML on top of it if you so wish, so you can customise it further. And interesting thing for anyone who's doing Unity development, They've sort of left a Unity C sharp projects option. Only use this when you're doing development. But by checking that instead of giving you a compiled project it actually gives you all the source for your game in the target platform. It's a lot easier to editing, debugging and checking things. Now I would go and click on build in this, but unfortunately this is Unity. And that would take an absolute eternity. But what that's gonna give you is basically a Universal Windows Platform project. It's got the game bundled in with it, it's got a lot of boilerplate code for basically saying this is how run a Unity game. And then basically say, right click to the same remote machine. And especially important if you're going to the Xbox itself, also selecting what's called the master build. And this is basically where they strip out all of the Unity rubbish and just ship your actual game. It's important to us it will run like a dog, because unfortunately the debugging version of Unity is so slow you need a high powered machine to run it. Then again if anyone's actually ever developed in Unreal engine you'll know the pain of having an editor which needs more power than the actual game to you've just edited the thing. It's interesting. Now I've clicked on builder which is rather foolish. And I'm gonna cancel that because that with Unity takes an absolute eternity simply because when Unity ships a project to any platform it ships first its player. Which can be anywhere between 200 meg to 600 meg or more. And then the game itself. You can imagine some of the gigs going down. So here's one I deployed earlier. He says. So I get the same solution. We get the lovely Unity splash screen because it's a built project. He says. There you go, hey, hey made with Unity. And then we'll get our game fired up. Now I have not had to change anything to the project except for one thing, which was to change how the control macro works slightly. So now I have to just use the trigger to actually fire it. You'll notice there the fact that I'm running around, there's basically no lag or latency on this at all, he says. Any jerkiness I will appreciate the fact that it's just doing the streaming itself. All the lighting effects and everything else hasn't worked very wrong. I'm going on there, he says. Now I've gone and died. Should be with the really annoying music 'cause the annoying music gets really annoying. Go on. No. I don't know. Oh we're not going home. Nah, 'cause we're debugging. But also a case of what, if that was running from the machine. Oh we're gonna host we're gonna have a problem here. All right stop that. Now this must the networking here, 'cause sometimes it can get conflicted now come on. Yes I am streaming. Oh this is gonna cause me no end of problems. I've got no way of stopping this game. Okay now that's how to kill a demo. He says. Let's try, will that work? Yay, there we go! Whoops, go down. That's the first time I've had that happen. Yes, all right. So that's one game okay. So but, ironically from a Unity perspective there's not much in there. There's a few lights. There's some 3D scenes in there, but there's not really much in there. So you think for a power horse of an Xbox you'd get a little bit more out of it. So. I talked to one of the ID Xbox developers. And I actually went and borrowed his game. So this is an actual full game that's in development. Have fingers crossed it's the right one, 'cause I couldn't see the name. Hey, good. Nice little game called Off and On Again from Ginger Biscuit Games. Now the reason I wanted to show this is that a lot of people question the fact that I'm using a retail kit. I'm not having a full development control of the Xbox it's just a sandbox part of the console itself. So, does that mean you've got less power to work with? The sound on this one is actually quite nice. And this game specifically I chose 'cause this has got tonnes of particle effects, there's tonnes of rendering going on in the background, and the Xbox itself has got no issue at all running it. Even with the resources that you only have, running it on UWP. This is a full 3D game. This is actually being built for the native Xbox, but as you can see no issues whatsoever just simply running. And there's tonnes of graphics effects going on there. In the report you see it right on this. Gonna have to kill that again. Where people go, "Oh well it's only got "so much power for us." You see it makes no difference whatsoever. There is, you know, there are some resource constraints when using UDP on Xbox. Because you're running in a smaller sandbox area. But there's a hell of a lot you can get out of that. And if you're developing games for the Xbox, sometimes the better path is to actually get your game out in Windows 10, get out on to the, and that gives you both Windows 10 and the Xbox from the get go. Get going, get promotions, get your actual work going on the store. And get presence, which is very important. Then when you're ready then evolve to the next level. But what about another project? So let's have a look at MonoGame. So MonoGame is a fully C Sharp framework built up, go on. - That project is a Windows 10 project. - [Participant] And you develop a game where it's running? - Yup. - [Participant] Developed by for the Xbox or for Windows 10, right? - Both, yes. So what we built here. - Well Unity at its heart really is fast track, is sometimes seen as a fast track way of building games. I've always said in more of case if you build games wherever you're comfortable with. So if you come from the land of C++ then build a game in C++. If you're more design centrics and you like more drag and drop kind of things, Unity is a better home. Granted you don't learn really to build games you build them the way Unity tells them. It's like passing a max of exams, it's not what the right answer is, it's what Microsoft thinks the right answer is. But with Unity is a case of, it's a very quick drag and drop interface, you're getting a lot of things for you. But with that flexibility there are a also a lot of constraints. And especially when some people get to like really high end games, they end to either the right half if you need to get it to work or dump Unity and go back to using C++. But yeah, that project itself when we built it, there, that is just a Windows 10 app. I've done nothing to it. So that will run on my Windows 10 machine, it'll run on my Xbox. If you've got a little IOT Rasp Pi 3 running Windows 10 it will run on there. It probably won't run very well, 'cause I think Unity is a bit overkill for IOT, maybe just a tad. Ironically MonoGame has no issues on IOT. We've send a game with over 30,000 polygons rendering on a Raspi Pi 3 with no issues. But anyway. It can run on HoloLens. So this will by default as a 2D plane in a HoloLens app with no changes. And that is what the power of the Universal Windows 10 Platform is, is the fact that you build it once and then you instal it in anything. And then you decide after that, "Well I want to put some light up features on HoloLens "to do some extra spacial mapping. "On the Xbox I want more control with it "with a game controller, or to use them "on the more Live services." On the Windows 10 it's like, "Well, "I'll have game controller or I might have joystick support. "Or I might have keyboard and mouse support." And other little light up features between them. And some of the more advanced ones I've seen is where you plan for all of them. So that, if you're playing it on the Xbox and you then just want to put it down and switch to a Windows 10 machine, that's the play anywhere framework. So it means that you can continually continue on a game with no interruptions. And games that involve play anywhere, so that means it's an Xbox game that also runs on Windows 10. Which either can be a Universal Windows app or it can be a native app, those have seen a tri-fold increase in sales simply because I'm buying my game once, and I've got it running everywhere. I don't have to buy it for Windows and buy it for Xbox and buy it for my phone. You pay once. And a lot of people see a huge attraction with it. Yes, even when there's 10 mobile although it's, all right even I must admit it's dying, he says. But anyway. So that was Unity. You okay with the answer? - Yeah, yeah, thank you. - Yup. Okay so. So Unity is a more of a graphical way of building things. But a lot, when I originally got started in game development I started in C++ and then this herald of what was called XNA came along, which is a managed C Sharp framework for building games. Most of that died. Then the MonoGame took over. And this is all so simple, C Sharp code. And what MonoGame gives you is an entire framework that abstracts talking to the hardware. So you build your game to the framework and then the framework handles how it talks to the devices. MonoGame, like Unity ships to many different platforms. So we've got iOS, Android, Mac, Linux. And also the Universal Windows Platform. And because it's got the Universal Windows Platform, not only can it deploy to Windows 10 it can now also deploy to the Xbox for free. They're all actually console variance for MonoGame as well. But you also need to be on the, you have to be on the native development platforms for access to those. Because you need development hardware. But you can get started by building on UWP first then actually having something to show and sell. And coming to it later. So this when it runs it's simply gonna go and, again same as Unity I've got the same project. I've simply got no overhead of it's just the game itself. And if the gods are willing. Please demigods be kind. That's gonna simply remote deploy from my machine to the Xbox. Now I'm happily to have hit play on this, because MonoGame is a lot lighter. A lot friendlier to the console itself. There's virtually no overhead when running MonoGame, 'cause all you're really doing is building your game and shipping your game. Frameworks like Unity and Unreal they require a specialised player already on the console which interprets the game to display. It sounds odd. But anyway. Go on we'll wait 'til that, we'll wait 'til that starts. Like we showed with the basic Universal Windows app, when you deploy it to the Xbox through debug mode then not only are you actually playing the game on the actual Xbox you've even got all the debug statistics, performance stats, memory counters, the works. And if you have Visual Studio 2017 that also means you have access to all the graphical debuggers. Hey, deploy succeeded. So we'll let that fire up and connect, he says. So with extensions you have all the 3D tools with it as well. That means I can do frame inspection of what's happening on this game. We already can see that it's memory RAM popping my games is running, all the different events, all the analysis events. And if I wanted to I can actually go through. There's even, find the CPU usage. Oh, disabled it. Memory use summary. Oh it's off. Whoops, now I'm mad. So I push on the game and there's the game and again I've not had to do anything to the project for it to work on the Xbox. I've simply said write. In Unity you get a game pack with a MonoGame feature, XNA feature, same thing. And that's it, that's all I had to do, sound, audio, arts, graphics it's all the same. It is that simple. So if I've got any project which is already targets in the Windows Universal 10 Platform, it is gonna run on the Xbox. But granted again, whoo. Yeah I got a shimmer effect. That's a screen effect. That's obviously quite a basic game, that's just simple 2D graphics. And instead of stopping it there what I'm gonna do it go back to my dev machine and hit stop here. You will stop running. - I can hit, I can put break points on. You can fully, right now this is a fully bug environment connected to an Xbox. Like any other machine. So if I want, yes, if I wanted to I can put a break point in, inspect variables. If you've got 2017 you've obviously got running continue now. Very handy. If you want to advance your game onto another level, put a break point in, change it, jump over. Well that's a very basic one. And promise to be another nice little game. MonoGame. I bow to you. And this basically is just another MonoGame game. Now this in itself might look quite simple, but this has anything up to about four million pixels running at the same time. With all the different graphic effects. The way you look, oh, I died! Now I need to look at this screen not to that screen or else I'm gonna get confused. But if you can see from the background there's lots of warping effects going on in the background there. And also you've got a wormhole coming up. Oh there it is! Actually been a space in itself. And this gets a lot of it and it's not even, the Xbox is not even flinching. You know there's a lot power in, with this, just from using UWP. So what we usually see from people is that again, because it's, I don't want to do that. Nope, let's get it stop streaming now, 'cause that's the end of those demos. Yeah, so there's a lot of power under the hood. And we'll come into that about the resources. 'Cause there are some resource constraints but not many. So. This is now not true. So originally when you talked about getting games on UWP, you needed to talk to ID@Xbox to actually get on. But I'd still recommend doing it anyway. Sign up is free. If you have a project already in process submit it and then what I recommend is start on Windows 10 first. Even if you think about you want to go and publish the Xbox, start in Windows 10. It's a much easier way to get on the platform itself and then you can apply it with Xbox later once you've got a winning game. Followers and people playing your game will sell your game to anyone else. And the Xbox, for getting on the Xbox at the end of the day is a pitch like anything else. No matter what, who you're gonna talk to, what publisher you're gonna talk to, you're pitching your game to say, "I want to go build it for you." It's the same for Playstation, same for Nintendo. If you want to go on the Switch, run the game so Switch, so does Unity. But presence at the end of the day is everything you want to build up a following. So if you start off with like a Windows 10 version of something and then you're gonna have the console exclusive you're gonna make the evolved version. Something better. Doesn't matter. I have sets news. Okay so. Like I said there are some differences between UWP. Now when you build UWP it's compatible on every single Windows 10 device. Without restriction. You have a much shorter dev cycle 'cause the fact as you're running and testing on your own machine you don't require any external hardware. If it runs on your PC it's gonna run in the Xbox, it's gonna run on the HoloLens, anything else. So it's much easier to test and deploy and have it actually running and validate if there's any issues. The Xbox is simply not gonna add anything to that at all. And also because it's a UWP means you are deploying for everything all at once. There are some memory constraints you'll get about 70% of the graphical resources on the Xbox on the memory. But you'd be surprised just how much you can get out of that. 70% of the power that's on this thing is quite amazing and it's the same when it gets to the Xbox One X which has got quadruple of everything else. So 70% of that is even more. As far as I'm aware you still have access when you get to the scope here, you will have access to all the extra little bits. So, but if you want to build to the actual Xbox itself, so this is called the Xbox Developer Kit and you also need a developer version of one of these. A retail one won't do. You do get full resource access. You get actually, every single ounce of power in the box. Ah it would be best all in C++. 'Cause most of the native components that run the Xbox are still C++. Yes you can still write your game in MonoGame or C Sharp or Unity, but anything you do on the Xbox for connecting to Xbox Live or the other services is all C++. Yes there are some, there all libraries out there to make it easy for you. Or the downside is you're only building for the Xbox. That's it, nothing else. Just the Xbox. If you had to want to go and build it for Playstation you've got to completely change your build to go work for Playstation, same for the Nintendo Switch. It's not one it's many. But granted these days if you design your game right in Windows 10 from the beginning, then adding your Xbox bits on top of that then gives you a much richer presence than starting with a smaller share. And one thing that can not be understated are the certification requirements. There are about 200 certification requirements which might sound a lot for Windows 10. There are about 2,000 when it comes to the native Xbox. Now the main reason for that is for thinking things that you don't crash the Xbox. When you go native it is actually remarkably easy to crash the Xbox. Which you are not allowed to do on an actual recircuit. So if you give a game to someone it's not allowed to kill their Xbox. Which is quite possible. But all the certifications there, is of quality, localization, quantity checks and also all their rapid fire testing to make sure that your game's not gonna fall down. If you unplug a controller it's not gonna break everything. But with Windows UWP route, those guys check it for you, which why it's so cheesy to actually get certified and get onto the Xbox itself. Because UWP handles the majority of that work for you. So. That's where we are. So from that case we can get publishing, get rocking again, get building. All right, any questions, he says. - Performance. - Yeah. - Native on the Xbox you mean? - Yeah. - Yeah. So like I said UWP gives you about 70% of the active resources on the machine. That's about two calls and I think it's six gig of memory you've access to in total. But with that it's a case of, apart from that, everything else is unfiltered. You're still accessing the raw calls of the machine. You are almost effectively running as an app within the Xbox itself. But when you're publishing the games you'll still appear on the game store. With the new, the Xbox Live portal as it were there'll be a, like we had in the old, Xbox Live Indie Games. Does anyone remember the Xbox Live Indie Game from 360? 'Cause effectively the new platform's like that. And there will be a separate store for those. But you'll still be accessing from the home screen and everything else from what we've been told. And also if you want to, I mean this is not limited to games. If you wanted to write and UWP app to put on the Xbox, most of the apps are on there are already. Edge is a UWP app. Not quite the same as the one on the Windows desktop, but close. But you know those things like Twitch and the other ones they are just UWP apps running on the Xbox. - Yes. All it was, all the Unity code change in the controllers. And that's only 'cause the Unity demos app itself was keyboard and mouse. So I simply said, put a controller. And he simply, yeah, yeah. - He put a take for Xbox it. - That's, that I would have to do in Unity if I wanted to do it to a stand alone Windows 7 machine. To actually have controller support. They just didn't have it in the, because it's just standard controller support, there's nothing fancy. It just works, I mean the bottom mappings work for anything else. There are a few little things with Unity when you're configuring controllers because the Xbox One controller is not the same as the Xbox 360 controller, which is not the same as the Mac controller which is not the same as your Playstation controller if you can go and connect to it. But for that, Unity has assets. Both the help and the pain of hindrance of assets with Unity. They are a dulled sort of lot of the time. Things like in control do help with things like that for mapping all the different controller types. - Simplest thing is talk to ID Xbox. - [Participant] I just thought, thought we kind of-- - Well if fact on the store now I believe there is an option for turning on, it was updated six months ago I think it was on the actual store. There was an option for Xbox on there. - [Participant] Oh, okay. - But the, otherwise the simplest thing is talk to ID Xbox, 'cause basically they are, they are almost handling anything to do with Xbox on the store. And it's mostly because of their need to switch something on for each developer. But they are accepting both apps and games. So in this case again it's just pitch it to them, this is the audience I've got, I think this would add value to the Xbox community if we are having this app everywhere. The Find My Restaurant app from the Xbox when you get that late night binge and you actually say, "Oo I could do with some food. "Let's go pull that down, let's go away and eat. "Where's my nearest restaurant." Or, "Can I order takeaway from my Xbox?" - [Participant] Hungry Howie's. - Yeah, they got they got the Hungry Howie's app on the Xbox. It is a shame that the snapping thing is gone now with the latest update to Xbox. That would have been brilliant because it's like Snap in, Hungry Howie's, order pizza, back to the game. And then you have a live streaming of your order, as it's on its way, driver's knocking at your door. Pause game quickly. Anyone else, any questions? Oh short, sharp and sweet, he says. - [Participant] I can throw you another one. - Go on. - Yup. - [Participant] Windows 10 and the Xbox. What projects can I have there, in terms of being able to get it on the Android? - No. - [Participant] So I'm looking at having a Unity project that got UWP. - Okay so, all the frameworks we did there. Well, let's go back to here. Do, do, do, do, do. I should have done slide, which way are we going? There. So like I said. All these projects out here they're all multi-platform. See you, the idea is all that you build it once and then all you're simply doing is basically cranking your handle to ship it out to whatever platform it is. So with Unity you say you select a Windows 10 platform you crank it out. You've got your UWP project. Which you might ship as it is, or you might just tweak it. But you could just do the same to Playstation you could do the same to iOs, Android. There's even the new, you can get for the Tizen TVs as well now that they've started shipping those. Even though it's got no graphical capabilities whatsoever let's ship a game on it. Oh even the watches as well. - I was gonna say. - Yeah you can do, you can do it to the Apple Watch. I've not seen Unity work well on the Apple Watch yet. I must say. Marmalade probably works the best, 'cause that's a C++ engine. But all of these are geared around is crank a handle and out spits a project that's built for that platform, ready for you. Unity obviously does have the most pain. Because what you end up relying on is if you don't want to build it itself you go and buy and asset from someone who's done it for you. Well whoever has built that asset has only ever actually built it for Android. So then when you go to churn it out for iOS it's go, "I've not got that bit." Or worse, you ship it out to another programme and suddenly you have all these red errors in your project because nothing works and all because it's written towards the way one platform does it and not another. There are ways around it. Not generally speaking it's just. It's just one of those things. But all of these is geared around the fact that you focus on building your game or your app and then it handles all the bits about churning it out to make into an Xco project into a Java project or into a Windows 10 UWP project. So it takes the pain out of one of these. - [Participant] I've got a bit of a follow up on that. If I start and someone and forms my change, I got an iOS project, I've got an Android project, I've got a UWP project. So I could then deploy. I could write that as whatever. - Yup. - [Participant] And then the UWP I can deploy-- - Yeah, anything, anything Windows 10. 'Cause that's the whole point with the Universal Windows Platform is that it is the same thing everywhere. Now Apple's been trying to do this for years, but they're just... You know I sometimes think Apple don't like developers. They despise everyone, they put so much roadblocks in the middle, on the folks in the community side but whereas Microsoft it's always been the goal. Steve Baum like, "Developers, developers, developers." And the whole lame is that yes, you build it once. And the only thing you should care about any of these projects when you're working with all these platforms, oddly is resolution. What size screen am I gonna play this on? On your site if you're building a responsive website it's the same question, how much screen space have I got to use? So if I've got a huge screen Max did a brilliant post on building for the 80 foot experience. So whether you're building for your phone or whether you're building for that, is how your game or project reacts to the available screen space available. Does your game have multiple screens? So I can either have a companion app, so I'm running on my Xbox, and someone's on my phone interacting with my game. Having a much more richer experience and involving a lot more people. And one thing I came across, now see if I can get this up. It'd be interesting now. Now this is the sort of thing which can blow your mind. Who's heard of Mixer? Let me get it down. - [Participant] The beam. - It's a new beam, basically it's a video streaming service. Mixer just announced a rather interesting little thing where so if you're building for Xbox there are a lot of people using streaming things. Either Twitch or now Mixer, which allows people to watch you and then chat to you while you're playing a game. But what Mixer's just added to it now is that you as the person watching the stream can actually interact with the game not the person's playing. Provided you've built the game that way. I mean it scares the life of me how you do it, but I can imagine, interesting scenarios with this. You're building a game for YouTubers to stream and interact with their community. And giving them more power to also promote your game. Which is what, getting your game into the hands of YouTube is gold as it regards to sales. Because everyone watches YouTubers. Some people even actually like to watch YouTubers instead of actually playing the games. But if you can imagine that YouTubers they are playing your game showing everyone playing, but the audience can participate and get involved with it. Actually dropping power ups or giving extra way points saying, "Well go check this out." Or in fact in one instance I saw playing against each other. So they actually had a blue team and a red team competing each other. One of the YouTubers actually controlling the game doing what they're doing. And adding the Nth degree. And Mixer provide the, an enter S to K, which basically says, "Right in my game this is where the," you set up how that works and then you put it into your game and then it's all connected. And even further opening up the walls of, well there's something playing it on the phone, there's someone there. There's someone across the world watching the stream interacting with your game as you're playing with it. Or given people more opportunities. A lot of things now, I've seen now with games is that the Universal features is not enough. Not having this board room thing is not enough. You need to be able to engage, you need to be able to actually get more players into the game at a time. You need simpler ways of having them interact. But now we have this extra world where there are people who just watch games or like to interact with games while they're watching them playing. So it's the next wall of actually entertainment actually trying to involve everybody. I can just imagine one game where you got one person playing VIA, another person who'd playing on a HoloLens and someone using an Xbox. And what can they do together? Can you project one person in the other and have different things? The last place where I did this talk they had an excellent VR game where you had one person who's the chef, who's got the VR camera and he's there cooking away. You get through to about eight people on controllers on the Xbox as bees, attacking the chef, trying to nick his food and walk off with it. Now, it's very hard to actually just visualise that. Because if you can imagine that kind of experience as a home entertainment playing game. So there you've got granted you've not only got the Playstation, but you got Playstaion VR. It's not brilliant but it works. Xbox haven't announced any VR kits for the Xbox themselves, but they have done for the Windows 10 PCs. But again, follow the train and I can't say it, is the fact that they're building VR kit mixed reality VR kits which work on Windows 10 machine. And we know that Windows 10 apps will work on something else. So it's not hard to understand where the progression of all this is going. And I must say the fact that those mixed reality headsets are basically a trimmed down version of the HoloLens itself. They include the majority of the features. So all the room sensors to be able to scan the room is built into it. So there is no need for extra cameras, extra things holding up on the wall, you're simply walking around. It is tethered for the moment. But there are companies who are also working on wireless solutions for VR headsets. So they actually get the wireless bandwidth for the machine to make the couplet. So what you know HoloLens is still the only wireless, completely wireless, hand, head held machine, computing machine for doing all these things. But there are people making it so that your common garden day VR kits are all gonna do the same thing. But again, come back to the hot Universal Windows Platform you build it for Universal Windows Platform, it'll run on whatever you're running on. So if you go and build a fully 3D massive experience that's for VR on Windows 10, if and when the Xbox opens up headsets it will just work. Easy as, with no work to do at all on your part. So it's how it's getting vested in the beginning, get in there and the best of all it'll come down to is the fact that, target small, progress on that. Build a following, build a presence. There's nothing said about people knowing who you are and what you're games are like. For them to invest and to say, "Well I want the next thing "that that person's building." Or you got an Xbox version for now, right I know what's going into Xbox or other places. - [Participant] I was just thinking they should have called that dog a dog Mixer. - There's always one, there's always one. - [Participant] You'll never look at that really. - Never again. Actually I must say one last thing. MonoGame now has the coolest URL ever. They got MonoGame.rocks! On the site for where developers, but that's just fantastic. All right, any other questions or queries? No. Anything on game development in general? We've done in general, right? You good? - Thank you very much.