Krishna's profileKrishna's XNA SpaceBlogListsNetwork Tools Help

Krishna Kumar

Occupation
Location
Interests
My focus is on reaching out to studentsand helping them reach their potential using IT.

Who Links to Me!

Krishna's XNA Space

Your complete set of XNA resources on the web
February 02

Developer Diary Software

 

Every time I (and I bet, the most of us) create a software demo or just any program, however big or small, we go through a process - a process of discovery, not just in terms of incremental feature additions, but also language and framework tools that help us in the project and finally, and probably the most important: THE THOUGHT PROCESS - through the project, our thoughts, ideas and understanding continually evolve... Typically, at the end of the project, we feel much wiser.

And much like every other skill, unless we keep at it on a regular basis, we slowly lose the specialized knowledge we gained during the course of the project. A solution to this is a 'Developer Diary', where we can jot down thoughts and references during the course of the development activity. Of course, nobody likes to break the train of thought during hard core development to make detailed notes citing time, references etc. It would be great if there were a plugin (to VS or similar IDE) or standalone app. that can be launched with a simple keyboard shortcut that would be available to make quick, short notes. It should automatically stamp the time to each message, automatically infer the URL and/or context from each paste operation and stamp it and auto save periodically (much like onenote) and when idle for a certain timeout period, should 'hibernate' consuming a very small footprint. It would be nice to also have syntax highlighting for code pastes and support for audio and screen capture notes for developers too lazy (busy!) to type notes.

I would be interested in public opinion around this and also in knowing if there is such a tool out there.

February 01

Rules for Software and Business in the new World

 

Sure, it is a new world out there! Especially if you owned Yahoo! stock last night. After an overnight gain of 48% following Microsoft's bid offer to buy yahoo, I don't blame you if you have a grin the size of a football field.

Anyway, this only brings to focus the new dynamics of the game - How software and business have changed over the past to adapt and embrace the medium of the Internet. So, if you are a CS/IT or a business student, you will do well to take these points into consideration:

1. The net is now the universal computer - the machine where we run software and store data. When was the last time you accessed an encyclopedia or a dictionary in print or DVD form, or get an entire roll of film or card full of images printed? With online applications like Wikipedia, Facebook and Flickr, we are buying less and less packaged software and going online more and more for our computation needs. With traditionally packaged software such as Office being available for use online as well, it definitely signals the "Net is the Computer" era.

2. The lines between software, content and media are blurring. This has profound implications on system architecture and revenue models. There will be a prevalence of loosely connected services and MashUps versus tightly integrated software. Your system architecture and design has to accommodate that. We are seeing this today in the growing prevalence of SOA and S+S models (wikipedia these terms!).

3. The above fact fundamentally shifts the revenue model for applications. If your app is made up of disjointed heterogeneous services and content sourced (on-demand) from various entities, there is no longer a basis for a pre-determined cost for the service. The pricing and in turn, the revenue model will now rely on a lot of other factors such as usage, relevance and the all important "Advertising", especially if it will reduce the cost of the service to the consumer.

4. Like it or not, advertising is going to be the major revenue source for the new breed of internet based applications - it is a win win for both the parties (consumers and advertisers): The advertisers now see much better returns on their investments since they are reaching their ideal target demographic due to the self-selecting nature of the application and audience. The consumers are happy because a. their costs for use of the application or resource is subsidized or often completely free and b. they are served relevant advertisements for products and services that they may ACTUALLY be interested in given the context.

5. TRAFFIC is critical. Due to the earlier point, scale becomes much more important - if you are an advertiser, wouldn't you rather go to the vendor that has aggregated a lot more content and traffic than a relatively smallish site (unless of course it is a niche site and you are in that market)? Therefore, we see the emergence all sorts of sites and services such as technorati, digg, etc. that do not product produce any substantial content on their own, but serve to index and aggregate the other content on the web to drive traffic to their sites. Seen in this context, the Microsoft Yahoo merger makes a lot of sense. Together, Microsoft and Yahoo! accounted for 15.6% of all U.S. Internet visits for the week ending Jan. 26. In the same period, Google's share was 7.7%.

6. Relevance drives Traffic. Web search engines are the ultimate example of this fact. Often, the most advertising dollars go to those services that can accurately and comprehensively aggregate and serve out relevant resources to consumers. Relevance drives traffic, relevant traffic drives advertising, advertising drives revenue. Revenue drives profits. Profits mean that you can kick back and sip pina coladas without having to work 80 hour weeks and read blogs like this one!!

January 25

Number of Microsoft Certified Professionals Worldwide

 

Found something really interesting today...

Do you want to know how many Microsoft certified people there are in the world for each certification level? Check out: http://www.microsoft.com/learning/mcp/certified.mspx 

Eye Opening!

January 20

Talking about ORD to LAS in Virtual Earth, Photosynth

Check out the cool capabilities of Virtual Earth and Photosynth in this virtual trip from Downtown Chicago to the Bellagio at Las Vegas! Fasten your seatbelts and head to http://local.live.com to create your own journeys!!

Quote

ORD to LAS in Virtual Earth, Photosynth

  
Video: ORD to LAS in Virtual Earth, Photosynth
January 11

Win Cool prizes for just browsing the web and playing games

 

Yeah, here is a deal too good to be true; but, it's true...

We all know and love rewards credit cards where we spend money and for every dollar we spend, we get a point, that we can redeem for prizes.

What if we could get points for searching on the web and playing online games that could be redeemed for cool gifts like music downloads, software, hardware and XBOXes? Wonder no more: check out Live Search Club @ http://club.live.com/

Install their toolbar and for every search you get 1 point and for playing their games you get around 20 or so points. Then you can redeem all the points for really cool prizes such as these:

Get Prizes

check it out.

Thanks to my colleague and friend SoCal Sam for pointing this out to me...

November 02

XNA Express Beta 2 Released...

 
Rush to the XNA Portal to download your copy...
November 01

XNA Express Beta 2

 
Should be up in the not too distant future...
Check out the XNA portal for more details.
 
Also, while you are there, be sure to check out all the content from Gamefest 2006. All the content from a $500 conference for free? Yipee!!
 
If all you care about is XNA, just get the Zip file of the slides and audio recordings from the Gamefest 2006: Developer Tools: XNA and Visual Studio Track.
 
If you guys have already gone off and built cool demos and apps using XNA, send me a link, and I would be happy to showcase your work here.

Thoughts on XNA as a programming platform for Graphics courses

 
Here are the reasons why XNA would be a great platform for students to be programming in following their intro Graphics course.
 
To set the context, XNA is a completely managed (.NET 2.0 based) API that targets Direct3D 9.0 (for its Graphics functionality) under the covers that provides a seamless programming experience for Windows and the XBOX 360. Right off the bat, here are the obvious advantages:
 
1. Extremely straightforward programming model: You are not stuck worrying about passing long pointers back and forth as in the case of C++ over DX. Since it is based on .NET, all the memory allocation/dealloc are taken care of, so no more worries about memory leaks and dangling pointers <whew!>.
 
2. Simplified API: My constant feedback from people getting started on DirectX is that the API and the DX structures are too complicated. XNA cleans up and simplifies the API to a very large extent thereby leading to code that flows well and makes sense at first glance.
 
3. No infrastructure maintenance: You don’t have to worry about writing the 50 or so lines of code just to get your device up so you can start painting - the XNA framework automatically initializes the device and passes a handle to you so that the first lines of code are for your game - not for infrastructure initialization. And this is true not just for device creation, but also in a lot of other cases, where the theme of XNA is to take care of the grunt work in handling device states and let the programmer work on just the game logic and drawing features. However, this does not mean that you have no control over the nitty-gritty - almost all features can be controlled by tapping into the right event handlers prior to initialization, so, if you want a custom backbuffer, just do it before device creation, just like you would with good ol' DX.
 
4. No portability issues: For me, this is the killer part - write your code once and have it run on both Windows and the XBOX 360 with almost no changes. The framework abstracts away the platform differences and lets you target multiple platforms with a single codebase. No porting effort required.
 
5. Simplified content import model: Instead of an export based model for content as we are used to with DX, XNA features a content import pipeline that will work with models and media of various vendors and make the process of importing and using those assets a breeze.
 
I could go on and on, but the above are the key distinctions of XNA. Apart from the Graphical capabilities, the XNA framework also provides support for Audio, Math and Storage. Furthermore, a lot of game engine vendors are embracing XNA and making their offerings available in XNA as well - a case in point: the very popular TorqueX engine from Garage Games.
 
In most of the talks that I do on XNA, the students are extremely interested in the 360 platform, where they can convert their Graphics homework assignments and Game development hobbies into a 10 foot experience that they can share with their entire family. Also factor in potential support for XBOX Live (which is in the cards eventually), and the 360 is suddenly the coolest platform to target to showcase your work and get noticed.
 
To sum up, I know it has been a long write-up (I am just really really excited about this technology), but for the typical student profiles, this would be an ideal platform.
 
XNA (and DirectX 10) only support the programmable pipeline, so you can write Shader based programs that would be cross-platform (Windows and XBOX) compatible. Students with prior Graphics experience could come in, be productive on day 1, writing Games and Game/Visualization components in XNA that they could showcase on our MSDN-XNA community site, and get noticed. Students with no Graphics experience would be able to focus on starting their learning without worrying about the nuts and bolts of the infrastructure or worrying about the idiosyncracies of the language, and delve directly into the conceptual features that they are trying to master.
 
I hope I have been able to give you an idea in terms of the capabilities and power of this new offering and am always available for any additional questions or concerns.

Introduction to XNA


What is XNA

XNA is the latest Gaming API to come out of Microsoft. It can be thought of as a successor to Managed DirectX and brings the intuitiveness and power of .NET 2.0 to graphics programming that was hitherto unavailable. 

To gain a better understanding of XNA and where it fits in the graphics topology, it would be instructive to look at the predecessors of XNA and and correlate them to some of the offerings in the programming landscape.

XNA Genealogy:

  • GPU Programming <=> Assembly: At the very beginning was GPU programming, before the time of HALs [Hardware Abstraction Layers] where you had to go direct to the metal - one had to program directly for the GPU in the instruction set of the chipset. Very similar to Assembly language programming in the early days of programming where the code you wrote for the Intel 8088/8086 was not compatible with the Motorola 68000 series. Similarly there was a huge porting effort required to get the code written for an ATI chipset to work for an alternate GPU vendor. Further, one had to be really accomplished to get anything done and developer productivity was really low due to the lack of any advanced tools.
  • Direct3D 7.x and lesser <=> C: With the evolution of the HAL [Hardware abstraction Layer], one could target a virtual graphic platform/framework such as Direct3D on Windows and it would use the HAL to port the code automatically to the specifics of the chipset that it was running on. While this made code porting (for different chipsets) a thing of the past, it was still not very sophisticated in terms of developer productivity tools. This can effectively be compared to the C programming language that provided effective platform abstraction but still was not a very sophisticated programming language.
  • Direct3D 8,9 <=> C++: Direct3D 8&9 evolved on the previous versions and simplified Direct3D programming to a certain extent. The main addition worth calling out is the support for fixed function pipelines that simplified 3D programming to a large extent. The ability to use C++ and Microsoft libraries for programming 3D makes it comparable to C++. It was definitely an evolution over the previous versions and provided more support to the developers.
  • Managed Direct3D <=> Visual Basic: Managed3D (as part of Managed DirectX [MDX]) was the first step in attempting to bring 3D programming to the masses. Up until then, programming Direct3D required a level of commitment that was only possessed by professional graphics programmers. Managed D3D or MDX in general, implemented a .NET based wrapper interface around DirectX that made it possible to target DirectX using any .NET language. The wrapper attempted to eliminate many idiosyncrasies of DirectX and provide more intuitive and streamlined API for programming DirectX. Further, it is unnecessary to state how much .NET simplifies programming compared especially, to a language such as C++. It reduces complexity by many orders of magnitude as compared to programming D3D using C++. So, in this regard, MDX can be thought of as doing what Visual Basic did to programming.
  • XNA <=> Winforms [C# or VB.NET]: And finally, XNA, is an evolution on MDX, instead of just being a wrapper around DirectX, it provides more of a .NET based framework that is built on top of .NET 2.0 and DirectX9.0c [as of current writing], that provides a programming model that is more intuitive than anything that has been seen in the world of Graphics programming. It allows you to take all of your experience and expertise as a managed programmer and apply it to 3D programming. Programming Direct3D with XNA feels as natural as programming a Winforms app - you don't worry about all the housekeeping chores and the very first lines of code that you start writing are directly for your game logic. For e.g., All drawing in D3D happens on an object called a "device" and programming D3D on MDX or with C++ requires that *you* create the device, set a bunch of properties on the device and then use the device for doing the actual drawing, whereas in XNA, the device is automatically created and handed to you and the first line of code you write is to use the device for your game. So, to sum up, the following are the 2 main (well, there are 3 actually, but I will save the last one for later in this post) contributions of XNA:
    1. Consistent .NET 2.0 programming model. All major .NET 2.0 design guidelines are followed.
    2. Automatically handles a lot of the boiler plate stuff, so that you only worry about coding the game logic.

Why XNA

Now that we know what XNA is, let us now examine "Why XNA?"!
Is XNA the greatest technological breakthrough in the world of Graphics to date?: Probably Not! It is still based on DirectX 9 and leverages .NET 2.0 for its programming model. So, there is nothing revolutionary about the underpinnings of the technology. However, it has gobs of evolution written all over it. Not since the creation of the HAL has programming graphics become so much more accessible. Leveraging the extremely intuitive programming model of .NET 2.0 and applying that model to programming Graphics is probably the next biggest evolution since .NET 1.0 in the Microsoft development landscape.

The above alone would be sufficient reason to migrate to XNA, however, the BIGGESTcontribution of XNA is its ability to target the XBOX 360 (This is the other contribution of XNA that I was talking about in the above section). Yes, that's right!! Now, just about anyone can write graphics/game programs on their PC and without any significant porting effort, send and run it on their retail XBOX. Now, to ask a rhetorical question: "Why care about the 360?!"

I can see you guys rolling your eyes and going: "Duh!!?" But this sets me up perfectly to talk a bit about the really cool architectural details of the 360 in my next post. It may be worth noting that within 10 short months of the 360 releasing, it currently boasts over 7 Million uses and over 60% of that crowd are on XBOX Live which is one of the highest adoption rate in the online services field. It is also architecturally, the most advanced console available today.

Next: The Architectural Details of the 360