Having said that, we can now move onto the first topic.
If you read my previous entry you will see that I claim that sometimes resources (in any form of documentation, white-paper, book, source code, etc.) in some way assumes that you already know certain concepts, techniques, programming languages ...
Thus, if my blog will mainly deal with game development/programming with C#, what should you know first to properly follow and understand those resources? Think! Think! ... Tic-tac, tic-tac, ... Yes, you're right ... C# (pronounced "C-sharp" ).
1) What is this so-called "C-Sharp" language? In short, it's Microsoft's flagship language.
The long answer, it is a high-level language based on MS framework that deals for you with, among other things:
- Memory management (say 'goodbye' to pointers and function pointers and say 'hello' to the garbage collector delegates and so on, but of course, you can still use pointers with C# if you want, not to mention with C++.NET).
- Translation of source code to MS Intermediate Language or "MSIL" (now, executables and dlls are no longer machine code after "compilation" and no matter which .NET language you choose, you can reference and use assemblies created with other .NET languages with ease).
- Proper execution of assemblies on clients' machines (this will make sure that an MSIL assembly is "natively" compiled to machine code on the machine that executes/calls it in order to avoid the problems of running programs pre-compiled on third-parties' machines).
2) Being C# developed by MS, does this mean that C#-based assemblies will only run on PC computers with Windows OS? No, there is an open-source project called "Mono" which provides the necessary software that let you develop and run .NET applications on a multi-platform environment (Linux, Solaris, Mac OS X, Unix and even Windows).
You can use the "Mono-Develop IDE" to compile and run any assemblies you create for .NET through Mono's framework.
Off course, you can use Visual Studio 2005 to develop on Windows platforms, either on the commercial flavors or the free ones (called "Express Editions"). You can also use an open-source, and yet powerful, IDE called "Sharp Develop".
3) What makes this C# language a value asset for programming? Glad you ask.
Friendly, portable, powerful, fast, with lots of features that help you program ... And as you will see, as long as approach to game-related topics, that it not only a language suitable for applications (for which it is mostly used nowadays) but also for games.
Coming from Java? Not a problem. You will quickly find your-self programming with ease.
Coming from C++? Not a problem either. You will feel a great amount of relief when you notice that you can stop dealing with pointers. Speed? Almost the same under certain circumstances and growing (it will eventually match C++). Differences? Heritage is only allowed on a single basis. Delegates replace function pointers. "Generics" resembles "Templates". Etc., etc.
Coming from any other sort of basic and non-basic language? You will find that it is not hard to learn, even if it is the first time that you get your hands on Object Oriented Programming ("OOP").
4) Which versions of the MS framework are currently out there? Good question.
You have three main versions:
- .NET Framework 1.x: the one that started everything. Many applications still use it.
- .NET Framework 2.x: it has introduced one of the greatest features you will find: "Generics" (some friend!).
- .NET Framework 3.x: formerly called "WinFX". Currently, it's under a beta stage and will ship within "Windows Vista" next year. It will change the way you use the components that form the Framework it-self (from now on referred as "Foundations") . For instance, the "Window Presentation Foundation" will replace GDI (everything will be based on DirectX), and will introduce "XML for Applications" or XAML (pronnounced "Zamel") as a way to create GUI's.
5) Where can I find books, tutorials and any other resources to get my hands on C# programming? Interested, uh?
For books, always visit vendors like "Amazon" and "Barnes and Noble", so to speak. Use the search for references like C#, .NET Framework, and so on.
And for tutorials, you can visit places like "The Code Project", "C# Corner" and "GotDotNet".
But always visit the main source: "MS Developers Network" and "MS Forums".
Well, to finish off today's entry (... yes, please ...) I could spend a lot of weeks and even months to talk about C#, but it is not the point here since you can see you shall find plenty of resources out there. I just wanted to give you a brief explanation of its main characteristics as well as to point you the right places to find resources.
If you aren't a newbie then it's most likely that you already knew all of the above-mentioned information, but if you are a newbie I hope it helps ... :)
Just remember, the use of C# is growing faster and faster among "indies" (we will talk about this in later posts) and I believe it's a matter of time until the game industry adopts it as a standard. And believe me, it will ... ;)