Just thought I would create this to let people know some things that are frequently misunderstood.
Q: What exactly is XNA?
A: XNA is a programming API, not a coding language, not a standalone software utility, but an API or Framework which integrates itself into Microsoft Visual Studio or Microsoft Visual C# Express.
It's sole purpose is to easily make high-end games that run on the Xbox 360, PC[, and soon-to-be Zune] without many changes to the game.** It can be used for creating high-quality full featured 3D games up to par with games like Bioshock or Dark Sector with nearly all the features you would require (bump mapping, normal mapping, full HLSL support.) It also allows for creating 2D games very easy and simple just by using the Spritebatch class.
Q: What will I be able to do with the Zune? Bioshock Mobile?
A: Not quite. All the 3D capabillities have been said to be removed and supported since the Zune couldn't handle that much. So according to the developers we have Spritebatch which is pretty useful by itself. You can use advanced scaling/rotating effects to make a pseudo 3d game like doom. Rendertargets and the ability to directly set pixel data to textures are also available.
Q: How will people get my games? Can I share them on Xbox Live, Zune Marketplace, Over Wireless?
A: Microsoft as of current has said that Zune games will not be supported over Xbox Live, Zune Marketplace, or over wireless sharing with friends. Meaning that we will have to share our games the good old fashion way of packing them into the .ccgame files and it will unpack it and beable to play it.** In the beta it most likely will be uploaded to the zune via VS 2008.**
Q: So how can we hack it? I'm sure you can add your own thing in there to change the firmware? Or what about this Buffer Overflow thing?
A: You can't. Microsoft has put more than a nice hypervisor on the this thing. It has taken the abillity to modify things on the device away, so if you try it will instantly throw an exception and won't know whats going on.** The 360 would have been exploited months ago.
Buffer Overflow would work if we could code in unmanaged code. We can't so we write in the magical magaged coding language of C#. Managed Code makes buffer overruns impossible.
Q: What languages can I use? I've heard something about VB.NET XNA games or C++ XNA games, can't we make those?
A: You can use other languages to create xna games on the PC. You cannot use other languages to code games that are needed to run on the Zune or Xbox 360.**
Q: What about C# emulators, we can use those right, play our good ole NES or GBA games?
A: The only emulator I have found that works in XNA is the SharpNES emulator. I've looked into it, and found that its old, unsupported and ran at very choppy framerates on even the Xbox 360 with no sound. It could just be the emulator of course so who knows!
Q: Can we do Xbox Live on Zunes? PC to Zune? Web Browsers?
A: Xbox Live will not be supported. PC to Zune will not be supported. The only way you could do a web browser would be to connect a Zune to a PC which, while I'm not saying it would be impossible, I'd say that it happening anytime soon isn't very likely.
Q: Controls? What can I use?
A: The virtual Thumbstick on the new zunes is mapped as the left thumbstick. The dpad works fully. The play and back buttons do work, but if back is held in the Zune will auto exit no matter what your code tells it to do.
** - Speculation
If there are any other questions, additions, or mistakes please let me know.
Just a couple of things:
1. We also have the Render Target sub-API to use
2. The games can only be placed on the zune via VS 2008 using XNA to transfer the files over. so we will have to dristibute the source and teach people how to complie and proc it.
3. we have the exact mapping of the controls now in the XNA 3.0 FAQ if you wanted them
Spread the rep. If someone has helped you or they really deserve it or did a good job on something, click the button under their name. Or if you are using the new skin click the button in the top right hand corner of their post.
It's very very unlikely. They take away the ability from the Zune to do any damage. I don't want to give anyone hope where they shouldn't be placing it.
the thing that makes me hopeful is the ability to play song while playing games, this tells me that games have access (at least nominally) to memory... the game itself would only act as "glue" to help execute a buffer overrun in a differnt place
__________________
With all due respect, Napoleon IQ
Really really great list. One question about the controls, say you were recreating a nintendo or gameboy game, you could you use the center as A, but could you use the back button as B or is the back button soley the back button and un programable?
the thing that makes me hopeful is the ability to play song while playing games, this tells me that games have access (at least nominally) to memory... the game itself would only act as "glue" to help execute a buffer overrun in a differnt place
You have access to read memory but you don't have access to write it. So there's no way for you to inject your data into any buffer anyway. Not to mention the sandboxing and security wrappings around the XNA runtime and .NET prevent most of this from working anyway.
Thanx for posting this, I found some stuff out I didnt know, like when I started on xna yesterday I thought xna was a language(or scripting language) like Lua.
Q: What languages can I use? I've heard something about VB.NET XNA games or C++ XNA games, can't we make those?
A: You can use other languages to create xna games on the PC. You cannot use other languages to code games that are needed to run on the Zune or Xbox 360.**
** - Speculation
If there are any other questions, additions, or mistakes please let me know.
VB.NET is usable, but it requires coding using no VB shortcuts and manual building of the file to exclude the VB runtime. I have some info on the build process at: http://soapitstop.com/blogs/fleamark...mes-in-vb.aspx.
Note that while you can build a VB.NET application against the framework, you still can only deploy it using the Visual C# IDE. At that point it's so much hacking together you might as well just learn C# as it's pretty similar to VB.NET anyway.