Can one make real games with XNA and C#? - directx

Can XNA and C# be used to create commercially feasible PC/XBOX games?
Is it the best approach for creating 3D games with C#? If not, what would be?

Actually you can do that but it is a little bit tricky.
You need to pass via an approval process by the "community" (XNA Creators club Online users).
You will also need to pay an Xbox live account plus an Xbox live developper licence.
According to XNA FAQ:
Do I need an XNA Creators Club premium membership to create games?
You don't need a premium membership to make games for Windows or Zune. However, you must be a premium member and in a supported region to create games for the Xbox 360, to release Xbox 360 games to Community Games on Xbox LIVE, or to peer-review submitted games.
Who can peer review XNA Community Games?
A member of the Creators Club whose premium (paid) account is in good standing and is a legal adult (for the countries we currently serve this means 18 years of age or older).
And:
Why does my game have to be peer-reviewed? Why can't I just send it to Xbox LIVE marketplace?
Peer reviewers help creators write better games, and protect game players from experiencing highly offensive or malfunctioning games. Peer reviewers will reject your game if:
Your game contains prohibited content, which is content not allowed on Xbox LIVE services
You misrepresent what is in the game play or in the promotional materials for the game
The promotional content for your game ( for example, the box art, description, banner or title) is not appropriate for all ages on Xbox LIVE Marketplace
The game crashes, it has too many bugs, or it is technically defective in some way
the faq is can be read here
If you want to do it simplier you can play with DirectX directly or even other libraries like SDL (for 2D games). Actually C# is very good for a variety of things and it gets better as the time goes.

A short answer to your first question would be, yes. It is entirely possible to create just about any kind of game with the XNA library. It can be used to make simple 2D platformers, or moderatily complex 3D shooters.
Depending on the game, the amount of logic you'll need to create for your game may vary.
Of course, while creating 3D games, you'll either have to create your own 3D engine, or get your hands on one pre made. XNA in and on itself does not provide an engine that would be fully usable out of the box. It does, however, provide wide variety of tool to help you in the process of making your own engine.

XNA is dedicated primarily to garage games, small projects with small teams, and hobbyists. Also, it's a really good learning tool for game architecture and 3D programming. But for commercial applications, there's a clearly huge gap between the XLA and the XDK.
Using the XDK allows you to access to a much deeper level of hardware, which is definitively a must if performances are an issue. Also, most of commercial game engines are developed for use with the XDK (the Unreal Engine, for example). The debugging and profiling system of the XDK is also an amazing tool which is not available using XLA.
So yes, it is technically possible to make commercial games using XNA, but the real world tends to prefer the XDK.

C# is not that much slower than C++, however C#'s memory management is not really Game friendly (in the AAA style). Never the less rendering is basically the same, as you'll be using DirectX I guess, so there is no reason a very professional game like Gear of Wars couldn't be made with C# (As a game dev my self, I've seen the source code for Gears of War, and can tell you this first hand). But you'll need great artists.
The real roadblock, is if your source is in C#, you have just locked your self out of other Platforms that aren't from Microsoft (Say Sony or Nintendo), but then again GoW is Microsoft bound, ASFAIK.
As for XNA, the best selling Arcade/Community Game Braid, was written in C++, but that's because the author didn't want to lock himself out of other platforms, and he had lots of experience and a large code-base that was already C++ based

XNA saves you a lot of the low level tedium associated with making games. This can be a huge time savings for a handful of people banging out games that don't need to push the hardware to its limit; however, most AAA games require a few people getting down and dirty with the hardware to push the limit as much as they can.
Having said that by no means does your game have to be AAA to be commercially feasible or fun - one could even argue it hurts more than it helps. Technology is rarely the bottleneck of making good games.

I doubt you will create the next Gears of War with it, but XNA works fine for many types of games. Most (all?) of the Community Games on XBox Live are created using XNA.

Related

How to translate two languages at the same time without delay for instance: "two online games written in different languages"

I have a question about writing a script which can manage to play online games in different codes. I think the easiest to understand is when I say I need to make a platform on which Playstation as xbox players are allowed to play online Modern Warfare 3 together.
Mathematically it seems it is possible: at the end you have two different screens which project the same. On the platform, Sony and Microsoft players stream their code or screen to the platform and play together. Big problem is that you get it delivered in 2 different codes which you have to translate to one language in less than 0,001 second.
Honestly said I have to get into this stuff but I cannot get much further.
Do you have any tips, other forums or solutions for this problem? Maybe it is writing a new language? (Google is technically using it for Google-translating over the phone)
Depending on the game this might not be possible even in theory. Many console games use a peer-to-peer lock-step synchronization model for multiplayer. Games that use this approach only send each other the player input from the other consoles and rely on deterministic simulation (the same inputs produce the same outputs) to keep the systems synchronized.
This only works when the exact same compiled code is running on the same CPU for all players. Games with this networking model usually have periodic desynch checks to make sure that the different systems haven't drifted out of sync with each other. A desynch failure is usually considered a fatal error and either a bug in the game or evidence of attempted cheating by one of the players.
Other multiplayer games use a client server model and so it would be possible in theory to allow different consoles to play against each other. Reverse engineering the network protocol would be a formidable technical challenge however and it would be a difficult problem to get this to work reliably.
Even if you could solve the technical problems though you would likely have even bigger legal issues to overcome. Sony and Microsoft don't want to allow cross platform play so even though it would be possible in theory to make this work with a client server multiplayer game developers aren't able to implement it. A third party trying to make this work would likely have to deal with legal challenges from Microsoft, Sony and the game developer.

What sort of games can developer creates using XNA & Silverlight?

I need innovative ideas on Gaming Application for Windows Phone. Can anyone guide me to how to approach new ideas on gaming application? How shall i start as i am new to this domain? No gaming experience at all? Also i have worked only on C & C++. But now i have to work on gaming application using C# with XNA framework & Silverlight for windows phone 7.
Thanks
Before bumping into a certain framework, and even before approaching a gaming idea, you might wanna invest some time learning C# first. Knowing that you're from a C/C++ background, you should find yourself highly familiar with C#.
Later on, the XNA creators community have extensive libraries, samples and tutorials that can guide you to assimilate XNA.
I wouldn't recommend going for Silverlight unless you want to build an application, and not a game. XNA has an enormous performance/quality boost because it natively uses the GPU for most graphics algorithms including 100% hardware accelerated rendering. Additionally, it has so many game-programming specific libraries and classes that can make your life a lot better.
I remember a highly-animated XNA 2D game of mine was consuming around 2-3% of CPU usage compared to 60% of a much simpler Silverlight game.
XNA will be better for graphics intensive, 3d or games with complex animations utilising more of the GPU. Silverlight can be used for games less demanding of graphics processing.

Can you write applications for the Zune HD?

I know you can write applications for the Zune, but what about the Zune HD?
Answer:
http://coolthingoftheday.blogspot.com/2009/09/xna-game-studio-31-zune-extensions.html
yes. And, while XNA targets gaming, normal apps are usually less complex, so IMHO there's nothing that says you won't be able to deliver normal apps as well as games that target the HD.
Mine's already shipped.
After much research on Google I have determined that the Zune HD is likely, but not officially confirmed, to have support for XNA. If it does have support for XNA, you will be able to create apps for it, although those apps will likely be games as XNA is primarily a game development framework.
UPDATE: XNA Studios just added Zine HD support. So yes, you can at least make games for Zune HD as well as any other app you can make with XNA.
Doesn't sound like it -- see here:
Zune HD will indeed be getting
applications, but at this time
Microsoft is planning to keep the
development in-house. In those
situations where they do want to work
with a third-party developer, it will
be a close relationship with the
Redmond,WA-based software giant. In
other words, you won’t be seeing the
wild west frontier mentality that we
have seen grow up around the iPhone,
iPod Touch, Google Android and the
Palm webOS. At this time there will
be no independent software development
kit (SDK), although Microsoft does not
rule that out for down the road a
ways.
...and also here.
Ever heard of OpenZDK?
"That’s about to change. Through the work of myself as well as Netrix, Nurta, and the rest of the ZuneBoards Development Front, all Zune models, including the Zune HD, have been hacked. The first true hack available for the Zune, this makes it possible to, for the first time, run applications directly on top of the Zune firmware, with full access to everything XNA withheld before. The limitations of XNA are now no limitations at all." (from Zune Boards: http://www.zuneboards.com/?p=vB50442)
The OpenZDK wiki: http://zunedevwiki.org/wiki/
Personal experience: I have used XNA games on the Zune HD along with the Zune 30...works great!

What do I Need to Develop a Game for the XBOX 360

I will devloping a game using the XNA Studio. The game will not be comercial this is just a freeware game that people will be able to download from the internet. if the game will be freeware do I need to pay money?
Well I suggest you have a look at the XNA Express using C#. You will need to pay $99AUD (Don't know the USD price) to get access to loading the game onto your Xbox. However you can't sell it at all, I believe you can put the source up so that other XNA peepz can play your game though.
If you want to make an actual arcade game you need the real SDK which costs a wee bit of money and comes preloaded on an apple powermac :D.
EDIT:
I stand pleasantly corrected by #JohnRudy. It appears microsoft decided that people might want to get compensation or at least some playtime out of their arcade games. I'm glad they've removed the draconian restrictions on getting your game into the arcade.
So bottom line is: for Xbox 360, no you cannot create a freeware game that is distributed via XBL. You can release the source and others can download and run it on the Xbox, but it will cost both you and the end user money since you would both need a Creators Club membership.
For the PC though you are free to develop and distribute as you wish.

Is there an equivalent to the XNA framework for consoles other than XBox360?

It's gotta be free. It's hobby, after all, not a business!. Creating for-profit software isn't an issue, but anything that requires a hardware mod is out.
Nope, I don't think so. The only other .NET environment for consoles I know costs money and is called unity3d: http://unity3d.com/
I think it supports the iPhone and the Wii and uses Mono as runtime environment. 200 bucks and you are in :)
No, all of the major consoles, except for the Xbox 360, do not have open development environments. There are various homebrew kits you can get, but these aren't sanctioned by the console makers (Nintendo, Sony, and Microsoft), so at best, you'll only be able to give away ROMs of what you make for free. If you try to sell anything, you'll get sued into the ground.
As Adam said, homebrew is pretty much the only way to do what it sounds like you want to do. A lot of times, using homebrew kits also involves modifying the console in some manner.
There is a Linux-based portable game device called the GP2X that might interest you, but I think that open source game development (or at least game development using open source tools) is more of a PC thing.
If you are a student at an accredited university, you can get a free 12-month trial subscription to the XNA Creator's Club through the Dreamspark site.
Free and official? No. And XNA isn't free in the respect that you have to pay $99 to use it on the 360.
You're pretty much limited to hacked, homebrew development, coupled with hardware modification. There's at least one console out there where the hardware modification is not required but I'm not sure if we can talk about it.
On a historical note, Sony released something in Japan called Yarouze on the PSX which had a similar situation to the XNA Creators Club on the 360 (paid kit, only for hobbyists) but it never came to the USA.
Not as widely documented and supported as XNA, but here are some libraries with documentation/wiki's for the handheld consoles.
GameBoy Advance: HAM
Nintendo DS: PAlib, devkitPro (the basis for pretty much all homebrew on the DS)
You may still be able to find a "PS2 Linux" kit available - but the games you make there will only run on other instances of PS2 Linux - a limited audience.
It depends what you classifies as a console. The iPod Touch and the iPhone has got the iPhone SDK with which it should be possible to develop quite good games and when you're done they can easily be distributed through App Store either fer free or for a price of which you will be given 70%.
as bhinks mentioned, there's the GP2X, but has been around for a bit, and there's a huge community of homebrew game developers for it. the GP2X has now ceased production, and it has 2 successors on the way, the WIZ by the same company, Game Park and the Pandora which is a proper enthusiast device.
the beauty is you can do games in SDL and build for all devices, including the PC
Just pay your $200 for the Unity3D indie license and you can create games for Pc, Mac, the browser, iPhone and Wii. It's arguably a more powerful enigne than XNA because it has built-in collision detection, physics etc

Resources