I ordered the book a few weeks ago and I've been loving it. It's easy to follow, and the Try It Out section gets me to understand more on how to use the code. I have a few questions though. Any thoughts on creating another book or a book #2 covering the other topics for the XNA tutorials?
I had intended to respond to this a while ago, but I've been backlogged since Christmas. Sorry for the delay.
Yes, I have plans for other books. I've thought about packaging up the XNA stuff into a book, but the reality is, I probably wouldn't add much more to the book than the tutorials already have (unlike the C# one, where I had probably double the content). I haven't completely ruled it out, but it probably won't happen right away.
I can, however, see going in a different direction. For example, I've been entertaining the possibility of creating a book, or even a whole series of books on game math and physics. It's an area that a lot of people have a hard time with, but that I absolutely love. The book would be written to for people using any programming language, but I think it would be somewhat tailored to the C#/XNA people.
I am also entertaining the idea of a second C# book that digs into the BCL in more depth. Something that kind of covers common tasks in a topic-by-topic fashion. This might include things like working with XML, more on files, serialization, the Global Assembly Cache, etc. It still wouldn't cover specific functional regions of the FCL, such as ASP.NET, WinForms, WPF, WCF, etc. Just things that are (potentially) meaningful across *all* programs.
And those are just the tip of the iceberg. I've got about a million ideas floating through my head.
Those two, though, I've already started some of the writing for.
If you (Liam or anyone else) think either of those would be interesting, I'd love to know what kind of topics you'd want to see covered.
Thanks for the reply.
Hmm… since I'm a bit new to c#, I can't really think of any major topics to be covered yet. I'm interested in your math and physics idea, since my goal is to actually create a game with c# and that would probably be useful.
I would also like to report that in the book, Chapter 18 (making your own classes) in the adding methods section, you never really explained what text.Split meant.
Hmm… that's no good. Thanks for pointing it out to me!
You're right, I didn't. I was focused on everything else that is introduced there, about creating methods.
But the line you're talking about just goes off and calls a method that we've never seen before. I was trying to be extra careful to try to avoid doing things like that, but I missed one. I apologize.
Here's an explanation, though. If you have a string, you can call that string's Split method, along with a parameter of a character to split with. As an example, like the book has, if you have the string "I love cheese burgers.", when you call Split, you'll get back an array of strings (string[]) that is based on the original string, but split apart any time it sees the character you listed. So in this case, you'd see the following strings:
I
love
cheese
burgers.
You can, of course, put any other character in there, and split on something else.
The other part of that little line of code is that after I split on spaces, I immediately take the resulting array and find it's length. (So I'm not storing the split apart array of words anywhere permanent.) The length is the total number of words that were in the string.
If you look at a word processor like Microsoft Word, their word count feature is far more sophisticated than my one line of code there. It's really a rough estimate. For example, with my code, if you had two spaces back to back, you'd have an empty string ("") item in the array that is created. In Word, it wouldn't have counted an empty string. Also, in word processors, a lot of times, hyphentated words like "all-inclusive" are counted as two words, but the code I listed doesn't see a space and would only count it as one.
It is also worth pointing out that the Split method uses the params keyword, so that method can have a variable number of arguments. (You could say text.Split(' ', '-'); and it would split the string whenever it sees either of these.) You don't really notice it when you use the method. The feature about a variable number of parameters for a method is described in the book in Chapter 27 (Methods Revisited) in the section called Variable Number of Parameters.
If you run into any other problems, feel free to let me know. That way I can post corrections/clarifications for everyone, and I can get it fixed in future revisions of the book.
Thanks again for pointing it out!
Another error:
Found in page 119
Chapter 18 (making your own classes)
section "name hiding"
Well, I think this is an error. Isn't all the bold text in the section titled 'name' should be 'title'?
Thanks again, Liam. I'll take a look when I'm back by my book. I suspect if it looks misformatted, it probably is.
Your XNA tutorials were a major help. I have to admit that without your tutorials my first game wouldn't have gotten anywhere near complete. It's actually about 58% of the way through peer review on its way to the Xbox Indie Marketplace.
Since you helped me so much, I have ordered the Player's Guide, it should be arriving today. I just wanted to post here to let you know that what you are doing on this site isn't falling upon deaf ears. Well, actually I am half deaf, but the point is you are helping people to realize their dreams of game development.
Thank you, for all the help that you have, are, and will continue to provide to me as I humbly attempt to build myself into a game development career.
… the point is you are helping people to realize their dreams of game development.
That's the hope! I can't tell you how nice it feels to hear from people that all of the time I'm spending on this site is actually meaningful to people. Thanks for saying so!
Hi there,
After I moved to UK, I got time for my future plans - C# programming.
I guess game programming will be more fun then everything else - I'm aiming for network programming/multiplayer.
I've been searching for good book and I found this site, so my question is (to people who already got it) Is this book good to start and go further into programming with? I mean, I got one Book (over 600 pages) but it's not what I was looking for.
Greetings Chris!
As someone who has purchased and read the book, I can say its a most excellent beginner to intermediate manual. Although it's called "The C# Players Guide" it's actually focused on a broad introduction to the language and it's features vs. being about actual game programming. That being said, it does a wonderful job of introducing C# specific theories and code practices as well as the majority of common programming elements. It does not, however, deal with Object Oriented Programming or networking - in any form. I would suggest reading over some of the Amazon.com reviews for further info from people who have read the book.
That probably sounds a little negative compared to what you were expecting or looking for, but let me assure you its not. By not focusing on just game programming, RBWhitaker covers the entire language in a simple to understand format, which lays the groundwork for delving into whatever programming type you chose. I first started with C# a little under a year ago, and purchased the book about 3 months in. Since that time my understanding has grown enough to the point that I was able to complete around 6 games since that time. All of these games can be found on this site, under the 'Community Projects' part of the forum if you care to have a glance. These are basic 2D clones of existing games for the most part… a needed step in the journey to serious 3D engine programming.
That being said, RB also has built a good community here for responding to questions, helping out if you have other problems, and generally hanging out in chat and hamming it up. RB himself pops in from time to time as life permits, so he's even available for help on occasion. (First time I've personally ever seen an author do that). At any rate, if you have any other questions, or just feel like hanging out, you're welcome to join is in the chat room. There are often several people there, but due to time zone differences, a lot of times we will be AFK sleeping, or in my case, doing chores. We'd love to have you join us if you get the chance!
"May the mercy of His Divine Shadow fall upon you." - Stanley H. Tweedle, Security Guard class IV, The League of 20,000 planets
Hello and welcome! Always fun to see new faces!
I do not want to be a doom and gloom harbinger but I do feel the need to point this out. Network programming is very complex and hard. If you have no prior knowledge of programming or any experience with network protocols and routing you are going to get frustrated and quit, saying it is too hard.
Start with learning the basics of the language, doing simple stuff as Hello Worlds and loops that counts to 100 and down to zero again. Gradually make it harder in small steps.
I have not read RBs book myself, although I trust Mike if he says it is good. There are tons of material to be found on this site as well and the rest of the internetz and we will gladly help you if you ask.
Once again, welcome and good luck to your programming endeavour!
//Emblis
I'm biased, of course, but I think there's a good bet this is a good book for you.
As PiscesMike stated, it focuses purely on the C# language. It's not specific to game development, but if you want to do game development in C# (XNA, MonoGame, Unity, SharpDX, even OpenGL) this is really the right place to start. And it should give you knowledge that will be helpful across the board, even if you start doing desktop app development, web development (through ASP.NET), or even smartphone app development. C# is a great all-purpose language, and this book ought to get you started in the right direction.
But it is worth restating: this book isn't specifically a game development book. It's more about general C# programming. (Though this website has a ton of other useful information about game dev, once you know C#.)
It also doesn't talk about networking in C#. I know, that's kind of frustrating. But you need to learn the basics before getting in to networking. C#'s networking API is actually pretty clean and pretty powerful. (Much better than C++ or Java's, and I've done a fair amount with all three.) But pushing data through TCP sockets or downloading content from a web URL (or working with a full-fledged web service) will make so much more sense after getting the basics down.
Not to beat up on PiscesMike (he did a great job with his response!) but the book does cover object-oriented programming. C# is an object-oriented programming language, and the book covers all of the important aspects of OO programming from the language's perspective. Inheritance, abstract classes, interfaces, methods, properties… you name it.
What it doesn't cover in that regard, and what I assume PiscesMike was really getting at, is that the book doesn't cover things like object-oriented design principles. The book covers the syntax of making classes and objects in C#, but only briefly touches on what makes for good class design. (There are hints of it peppered throughout the book, but it's not a thorough explanation.)
There are two reasons for this. First, in many ways, it's only truly learned by experience. You probably need to write 10000 classes before you could call yourself an expert in object-oriented design. It takes time, practice, and on a few occasions, doing it wrong and learning the hard way how things went bad.
The second reason is that it's actually a very broad topic. It really deserves its own book. I have a few I could recommend (well, like this one).
Consider how Computer Science works at a university. The first thing you learn is the language. You usually have a class or two that will get you up to speed in one (maybe two) programming languages. Next, you learn some data structures and algorithms. Things like how to sort collections of things, or how to use a hash table/dictionary, and when to use that vs. a list. Then you move on to your first "software engineering" class, where you first learn the principles that make one particular software design better than another, and the software development lifecycle. After that, you start to specialize and take classes like networking, parallelism, GUI development, etc.
This book helps you in that first step. And I think it's a good first step. But I don't think there exists a single book out there that can really take a person from beginner to pro networking/MMO Game Developer of the Highest Order. It's a journey, and The C# Player's Guide is a great starting point!
Hi there and Thanks for replay!
Wow, I must be honest, I didn't even expected that someone would really answer! Thank You for that.
Sorry, You took me wrong - I did not except that book be the whole guide "From 0 to Network Programmer", and It's half guide to game dev. Sorry for that, English is not my native language :D
I'm not completly beginner. I used C++ at my school (3 years IT Tech), so I know basics of programming (like loops, how use data types and that kind of stuff) plus I had specialization in network administration (so I know network protocols, how they works etc.), completed CISCO course, so I know a little bit about that :D.
Anyway, thank you for fantastic replays. I see that community here is great, so I guess I will stay for a while and more :D
I received book today and I must say, I'm really excited and ready to start that Journey :D
Yeah, there's kind of a small group of us here, and our programming knowledge/experience varies widely, but we're all happy to help as much as we can, and we're relatively active, so don't hesitate to ask more questions!