Posts tagged 'XNA'
Yesterday I posted some info that suggested a two-tier Xbox LIVE marketplace on Windows Phone 7, and that I thought it was a massive mistake on Microsoft's part. Today I had a lengthy chat with Paul Foster, a Microsoft Developer Evangelist, about that post. He wanted to give some more details about how things worked to avoid me having to draw my own conclusions.
We went into Xbox LIVE publishing in great detail, and I decided to get Paul to confirm some of the things we discussed by email so I could post them here, for those that had read my previous post and were worried. Paul was unable to answer all of the questions (due to various things being hush-hush at this time), but said he'll answer them when he can. Below I've included his answers, along with the outstanding questions we'll hopefully have answers for in the future!
Q: Will Microsoft engage directly with small companies/individuals that have great games, ready to publish (to become part of the managed portfolio)?
A: Microsoft's XBL team and importantly a range of 3rd party XBL publishers are looking out for new opportunities, in fact at GDC 2010 and Mix10 the wpgames@microsoft.com alias was advertised asking for indie games devs to submit their game concepts they are building. The important point here is that if you want your game to be a big success you have to do more than just post it into an app store. You need to think about it as a manuscript for a book and take it around various publishers to get opinion and seek publishing opportunities. Publishers have the skill and capability to market your game and find bigger publishing opportunities – such as XBL. Publishing by default into an app store isn't enough for success when big numbers of people are doing just that – you need to do more than just develop your game, you need to drive the commercial publishing of it and the ecosystem of XBL provides broad opportunities for publishing. If after doing all that, the best opportunity for you is to publish straight into the marketplace then work at advertising your game. Seek magazine or blog reviewers, publish videos of it and ensure you have a cool web landing page for it. None of this stuff costs much and can raise the profile of your game.
Q: How are managed/unmanaged portfolio games separated in the store (visually/category-wise)?
A: All apps/games are in the single app store, filed by various categories. There are various merchandising locations in the marketplace and in the Games hub – these will be driven by various metrics from the store as well as for apps/games of planned marketing activities.
The following questions are unanswered as yet, but it seems like the answers will be positive for indies!
Q: Will there be separate "top sellers" / "what's new"-type lists for managed/unmanaged portfolio games, or combined lists?
Q: Are managed/unmanaged games separated in search results (if I search by name)?
Q: Will there by managed/unmanaged portfolios of apps too, or games only?
Update: Today I had a lengthy chat with Paul Foster, a Microsoft Developer Evangelist, about this post. I posted an update here.
Ever since I had my first iPaq with the .NET Compact Framework, I've wanted to code for a Microsoft mobile device. Coding in C# and Visual Studio is by far the nicest coding experience I've come across in the 15 or so years I've been programming. Unfortunately, up until now, Microsoft's mobile operating systems have all been absolutely rubbish.
Windows Phone 7 is set to change all that. Everything I've seen suggests Microsoft have finally got their act together, and WP7 looks set to be a huge success. Finally I can have the Windows phone I've always wanted!
Over the past couple of months, I've been reading more about developing for Windows Phone 7, and in the last few weeks, I've been playing around with both Silverlight and XNA as part of this. The experience is great, and I've been really looking forward to working on a game for WP7. I've spent the last few months of my spare time working on an iPhone app, and it's so nice to be able to switch Xcode/Objective-C for Visual Studio and C#!
However, there may be a problem...
I was just pointed to this page by a fellow XNA coder. Although not entirely clear, my interpretation of this text surprises, and shocks me. (Emphasis mine).
To answer, it's important to understand that we have a managed portfolio for Xbox LIVE titles on Windows Phone 7. As we looked at how the mobile gaming industry was evolving, it was obvious that there's a significant problem with the "race to zero" – or having too many, mixed quality titles available on a marketplace. Too many offerings makes it very hard for any specific title to stand out (no matter how high-quality), and negatively impacts the overall business ecosystem by making it almost impossible for developers to earn a fair return on their work. Our goal with the Windows Phone 7 games that utilize Xbox LIVE services is to cultivate a portfolio of high-quality titles that are regularly released – this is very similar to the portfolio management we do for Xbox LIVE Arcade titles.
This sounds to me, an awful lot like the current Xbox LIVE Arcade situation. Indie titles (eg., those created by people that do not have commercial relationships with Microsoft) are relegated to a crappy sub-category of "Indie Games".
You may be wondering what the big deal is here - surely we want to keep all this "indie crap" generated by bedroom coders hidden away so we can see stuff output by the real companies, eh? Well, not so. Not only are there "real games companies" that develop this way (because they're just not big enough to have this kind of relationship with Microsoft), there are also a lot or really good quality games output by "bedroom coders".
If you look at the Apple/iTunes App Store, every application or game sits equal. A game I publish, sits alongside a game published by a large company like EA. There are "league tables" for ratings and sales, which allow the best games (whether they're from a large games publisher, or a single coder in his bedroom) to rise to the top. For all of the faults with Apple's App Store, this is how it should be. If an individual puts out some work that is better than EA, then it deserves to be above them. Consumers care games, not about the companies (or individuals) behind them.
I have no real idea, but I would estimate that at least 75% of all apps/games on the App Store are created by individuals or companies too small to have relationships with Microsoft. That is a huge portion of apps/games to relegate to "the shit section". One of the reasons the iPhone did so well was because of the third party software. If Microsoft screws over the huge majority of developers like this, it will absolutely affect the success of their platform. We're already lacking things like Achievements - it's already going to be hard to convince users they should buy our game instead of EAs's, so pushing us into the amateur category will just make things harder (And therefore, less worthwhile).
My interpretation of the quoted text may be incorrect. I really hope it is. It's also possible this affects only games, and not apps. Who knows? If games created by me are relegated on Windows Phone 7 like they are on the Xbox, then I'll simply put up with Xcode/Objective-C, and go back to coding for Apple's platform. And this means, despite my desite for a WP7 phone, I'd probably end up buying a new iPhone, and not a WP7 phone.
Until this little mystery is confirmed, one way or another, my WP7 game is on hold :-(
Sunday, 15 August 2010
0 comments .NET Games XNA Rob Hutchinson, a talented programmer I used to work with, from nullcity.com has just release a game called Breeze on the Xbox LIVE Indie Marketplace. It was built using Kitae, his 2D XNA Game Engine. I'm really impressed with how this game turned out, and I think it's going to do really well in the marketplace. I thought I'd plug it here, as I know many readers are XNA coders :-)
Wednesday, 11 August 2010
0 comments .NET Games XNA With the iPhone app I've been working on nearing completion, and Windows Phone 7 + XNA 4.0 in sight, I recently decided to get back into game creation. I've previously released a game on Xbox LIVE Indie Games, Jungle Blocks, but it wasn't very good, because I was somewhat excited about the idea of my game being live, and pushed the button before it was really finished.
So, here I am again. Take 2. This time, I want to finish something. A game to be proud of! It doesn't matter how long it takes to finish, I've already done the whole XBLIG thing, so I aim to take my time and do it right.
In order to keep me motivated, I decided to encourage my colleagues to get involved, by declaring a games programming competition. Until now, nobody else at work really knew XNA, so by getting others involved, there will be people to talk to and discuss ideas with. To encourage people to join in, even if they have other priorities, we set a 6 month deadline and set down minimal ground rules. To keep things fair, we decided:
- Games must be legally publishable - e.g. no copyright material
- No paid-for assets
We didn't define a platform/technology, to allow for iPhone, Android and other platforms, but as it turned out, all but one participant decided on XNA :-)
It would be kinda lame for someone outside our company to win the competition, so I'm afraid you guys are official excluded. However, if you're interested in learning something new, I encourage you guys to lay down a similar challenge at your workplaces. If you do, be sure to let me know - I'd be interested to see how other people get on with the same challenge :-)
I was toying with the idea of creating "Jungle Blocks 2" for the Windows Phone 7, since it wouldn't be hard to do, and if it was ready for WP7 launch, it could probably make a few quid before the marketplace fills up. However, because I have a (small, but real) advantage over my colleagues (having used XNA before) and because a few of them are ambitious enough to be doing 3D, I feel somewhat pressured into not being a wuss with a 2D game...
So, my plan is now to build a small 3D RPG for the Xbox, something not too different to Zelda 64 or Mario 64 (though on a much smaller scale ;-)). I've not really played with 3D, so this feels like enough of a challenge that I'll learn a ton of stuff, but simple enough that I (hopefully) won't just abandon it half-way through (something I may have a reputation for...).
Over the coming months, I'll blog about what I'm doing as I go. I can't promise I won't give up and go back to a 2D Jungle Blocks, but at least if I do, I can say I tried!
Thursday, 17 May 2007
2 comments .NET XNA The last time I played with XNA was when it was in in beta. There was no "Content Pipeline", and loading models was so tedious, I just decided to stop using XNA until it RTM'd. Since now is that time, I thought I'd best see how things have changed...
I bought the GarageGames Orcs RTS Buildings Pack, since it looked fitting for an MMO, was pretty cheap and had .x versions already included (which I know the Content Pipeline should handle).
I fired up GSE and added the .X files to my project and clicked Build....
I was greeted to some compile errors - and I hadn't even started coding!!
Thankfully, these errors were trivial. The content pack included .x and .jpg files with the same name (orcs1.jpg and orcs1.x). The content pipeline likes to strip the extensions off for the asset names, so there was a clash. I ran through and added ".jpg" to the asset name of each jpeg (though now I'm typing, I'm thinking I could've just Excluded them from the project, since the reference in the .x file would cause them to be added!).
With them all building, it was time to see if I could add them to my world. I was starting with the ChaseCamera sample from creators.xna.com, since I knew I'd be able to move the camera around easily to see the models.
At the top of Game.cs, I added a new variable to hold my models:
List<Model> buildingModels = new List<Model>();
And in the LoadGraphicsContent() method, I loaded each model. Since the filenames weren't sequential, I just hard-coded them for now:
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs1"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs11"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs12"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs13"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs14"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs15"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs2"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs3"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs4"));
buildingModels.Add(content.Load<Model>("Content/OrcPack/snow/orcs5"));
And in my Draw() method, I called the existing DrawModel() method (which came from the ChaseCamera sample, to draw the ship/ground). Since the models are in a much smaller scale than the ship, I had to scale them up. Really this should be done per-asset at compile time - I'll see about creating a custom importer for this later (since all content packs will likely have different settings, and I want my units to be metres).
DrawModel(buildingModels[0], Matrix.Identity * Matrix.CreateTranslation(new Vector3(0, 0, 0)) * Matrix.CreateScale(100));
DrawModel(buildingModels[1], Matrix.Identity * Matrix.CreateTranslation(new Vector3(300, 0, 0)) * Matrix.CreateScale(100));
DrawModel(buildingModels[2], Matrix.Identity * Matrix.CreateTranslation(new Vector3(600, 0, 0)) * Matrix.CreateScale(100));
DrawModel(buildingModels[3], Matrix.Identity * Matrix.CreateTranslation(new Vector3(600, 0, -300)) * Matrix.CreateScale(100));
DrawModel(buildingModels[4], Matrix.Identity * Matrix.CreateTranslation(new Vector3(600, 0, -600)) * Matrix.CreateScale(100));
DrawModel(buildingModels[5], Matrix.Identity * Matrix.CreateTranslation(new Vector3(300, 0, -600)) * Matrix.CreateScale(100));
DrawModel(buildingModels[6], Matrix.Identity * Matrix.CreateTranslation(new Vector3(0, 0, -600)) * Matrix.CreateScale(100));
DrawModel(buildingModels[7], Matrix.Identity * Matrix.CreateTranslation(new Vector3(0, 0, -300)) * Matrix.CreateScale(100));
DrawModel(buildingModels[8], Matrix.Identity * Matrix.CreateTranslation(new Vector3(200, 0, -200)) * Matrix.CreateScale(100));
DrawModel(buildingModels[9], Matrix.Identity * Matrix.CreateTranslation(new Vector3(400, 0, -400)) * Matrix.CreateScale(100));
I also made a slight change to the ground.x model to reference the snowy ground.jpg from the content pack. I ran the project again, and there are the models!
So, in conclusion, the Content Pipeline makes loading models trivial. The next few things to look at are heightmaps, loading models in from some sort of "level file" rather than hard-coding, and animated models that react to user input (eg. breathing/running animations).
Related Reading