Advertisement

Are people in the need of a guide from scratch?

Started by February 27, 2015 08:14 PM
8 comments, last by alnite 9 years, 8 months ago

Hello peepz.

While I was preparing some thing to write a book about the basics of C++, I thought:

Why shouldn't I start writing a series of books for complete beginners in game development

(Starting with C++ and ending with a 3D game for example, with each different book a comprehensive guide about that topic).

Do you guys think there's a certain "need" of this?

There are lots of books and online resources out there already that purport to cover this... with exceedingly mixed results. What value do you think you'd add?

Advertisement

I understand your point but my vision is build out of two main things:

-The books will follow up each other, so that people are sure that they can follow along and don't have to hesitate about which book might be the best.

-Quality: It doesn't matter if the books are big, I just want the reader to learn it.

That's a wide range of topics.

Let's start with the language itself.

Several of the commonly recommended books are:

# "Accelerated C++" Andrew Koenig and Barabara Moo (Fairly gentle introduction with good coverage of the language)
# "C++ Primer" Lippman, Lajoie, Moo (a similar gentle introduction with good coverage)
# "Effective C++" Scott Meyers (Lots of things you probably didn't know)
# "More Effective C++" Scott Meyers (More things you probably didn't know)
# "Effective STL" Scott Meyers (Things you probably didn't know about the standard library)
# "Exceptional C++" Herb Sutter (Many fun and exciting edge cases of the language)
# "More Exceptional C++" Herb Sutter (More edge cases)
# "The C++ Standard Library" Nicolai Josuttis (very deep, very technical, very enlightening)

Could you introduce a language and teach its concepts better than the existing book on that specific topic? Note that most of the best of these books were written by members of the language committee who know the language better than most.

Would your teaching be accurate? A surprisingly large number of books describe a language that is nearly, but not quite, the actual language. Teaching wrong things can be detrimental to a beginner.

Would your teaching be effective? It is difficult to write a book that flows at a pace that matches learning. It is one thing to provide an explanation to someone who can ask you questions and also give clues when they understand. It is much harder to write a book that a broad collection of people from different backgrounds can all understand.

Those books cover the language, but you also need several books on algorithms and data structures. I could provide a similar long list of books frequently used as both textbook and reference for these, such as Sedgewick's books that are among the best. Could you teach the variety of algorithms and data structures necessary?

Similarly, when it comes to graphics, if you are teaching OpenGL will you be able to make a book better than the current rainbow books? If recommending Direct3D could you do better than the current best literature? When it comes to deeper theory could you beat books like the Watt&Watt Advanced Animation and Rendering book, or Foley and vanDam's Computer Graphics: Principles and Practice?

Repeat for all the other topics.

If you want to cover everything they'll need, you'll essentially be writing material covering four to six years worth of college studies.

With self publishing being a valid way to go these days, i say go for it. Who knows you might write a series of books folks here will be recomending to any beginners. Don't be disuaded by the fact that the subject has already been covered. It only takes presenting the information in a new way that might make it "click" for people that other books might not have been able to do.
Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.

You say that you intend this book to be for absolute beginners--do you mean prospective developers who haven't yet learned a programming language to a significant degree? If so, have you looked at languages other than C++? While I don't intend to gainsay the use of C++ in general, I'll confess that I'm dubious of it as a beginner's language, given all of the pitfalls that it provides. I'd be inclined to recommend something in which a student can learn the principles of programming, but which provides at least a slightly easier initial experience.

(Python would perhaps be my own choice (especially given the importance that it places on indentation), with Java in second-place, but that I feel is more a reflection of my own experience with languages rather than an informed selection.)

MWAHAHAHAHAHAHA!!!

My Twitter Account: @EbornIan

Advertisement

Just to toss in my two cents:

Could you introduce a language and teach its concepts better than the existing book on that specific topic? Note that most of the best of these books were written by members of the language committee who know the language better than most.

Knowledge of a subject doesn't automatically mean someone is a good teacher of the subject.

This applies both ways: Do the existing books (regardless of who wrote them) teach the subject well?
Do you, @Romee, regardless of your programming skill level, also have a high skill level in the unrelated discipline of being able to teach?

Would your teaching be accurate? A surprisingly large number of books describe a language that is nearly, but not quite, the actual language. Teaching wrong things can be detrimental to a beginner.

This is an important point. There are plenty of skilled programmers who can't teach well, but there are also a good number of teachers who can't program well. Books can contain wrong information, but are viewed as authoritative sources of knowledge.

If you want to cover everything they'll need, you'll essentially be writing material covering four to six years worth of college studies.

Not to mention it'd be covering multiple different fields. Even if your skill is great in one area (like general programming), are you skilled in all the areas you intend to cover?

On the other hand, I'd hate for you to actually be able to make a valuable contribution to the industry, or to beginners, and be dissuaded by the roadblocks.

Suggestion: Why not start by writing some articles and posting them online, essentially getting them peer-reviewed for free, and if you enjoy the task, and they get a good reception, then expand from there?

One thought for when you do get to the 'writing books' stage: If you do start writing a series, I'd try to semi-conceal the fact that they are more books coming in the series until those books are actually released. Make each book stand on its own. It would be very annoying to start following a tutorial or series and find out the author never completed them, or that the Nth book will take two more years before release, or that the 4th book was broken into four more books. But if each book stands on it's own, even if people jump to the book that meets their skill-level, they aren't caught of-guard by not having read the earlier books, and don't feel obligated to read the future books.

This is also good for if you get two or three books into the series and decide that it's too much work, or if life gets in the way.

Several different members of the community have written programming books before (I own a couple of their books). One thing that surprised me when hearing them talk about it was that, despite the high costs of textbooks, they didn't make much money off them. Textbooks are really niche, so there are few sales; manufacturing costs alot, publishers take alot, and the checks were nice but not enough to quit their day jobs despite investing alot of work into the books. Still probably worth trying though - I've thought about writing some but decided not to, at present.

If I'm being blunt, I think you will find it exceedingly difficult to add anything that's both valuable and new to the books that have been written on any one subject, let alone all of them. Furthermore, writing a book -- a formal book, with bindings and everything -- is really a very big undertaking; in your case, you must posses skill in not just programming, but in programming, in programming games, in teaching, and in formal writing of a technical nature. I earn my living doing all of those things at Microsoft -- I think I *could* write a book if I were pressed to do so -- but I am yet unconvinced that its something I ever *should* do.

Why not? Because of what I said before: adding a valuable entry to the pantheon of books is hard. I've read--actively, not passively--most of the books that have been listed above, and many more on programming and other relevant topics, I've been helping (and I would hope, to a smaller degree, teaching) people here on this forum for 15 years--through writing, I've read at least 3 times as many interesting discussions than I've ever participated in. And so, the crux of the matter -- How do I pull apart everything I have ever learned and read, sprinkle in my own novel observations based on my experiences, and then recombine it in a way that is not only just as good as any book to come before, but better?

And if you aim to write a book that you one day hope to sell, then you have a moral obligation to provide real value, and to not simply regurgitate what's been written before. People will not and should not support your writing hobby without getting fair value in return.

All of that said, I do encourage you to write about and share what you've learned, but I think that starting with the intent of writing even a single book is wrongheaded. There are ways you can do that and be on your way to achieving your goal (if not your ends) of helping bootstrap budding minds. Presented in the right way, your personal experiences can be valuable to the right audience, even if you are no authority on the matter, and even if your teaching methods or writing skills are unrefined. Being an active blogger is one way, actively participating in forums is another, writing small self-published articles and investigations is yet another. All of these things can be powerful, without carrying the moral authority and duties that a book does. And as a bonus, it can benefit you in other ways -- I very much credit my many years on Gamedev, beginning in my teens, to ultimately have helped me land my current job: when I applied for my first writing gig, I gave as writing examples some documentation I had written for code I had produced, and links no a number of forum replies I had made right here. I got a degree in computer science and game development along the way, too, but I still think my forum going played no small part in securing that first writing gig, and I have done writing of one form or another almost ever since.

throw table_exception("(? ???)? ? ???");

I personally don't prefer to read a book. And I don't finish tutorials that start off with me getting it, and halfway though the first part I am lost. Most loose their consistency.

I have found a decent video tutorial on C++, but another thing is I would like to follow along in an environment with him, that is standard. I might even prefer an app that teaches it (free of course).

Some practical use in live demos? Not too simple and not too complicated examples?

Go ahead and take a whack at it for folks like me!

They call me the Tutorial Doctor.

How many books do you plan on having? C++ and game programming are two separate skillset. You can spend a thousand pages just on C++ alone, and another thousand on game programming. As frob has mentioned, there are already great books on the subject of C++. So maybe you can skip the C++, and just focus on writing a series of books on game programming?

This topic is closed to new replies.

Advertisement