Sign in to follow this  
Deek880

Online game programming book?

Recommended Posts

Can anyone recommend an instructional book such as "multiplayer online game programming for beginners"?

Something that assumes only basic windows programming knowledge.

Share this post


Link to post
Share on other sites
[quote name='Deek880' timestamp='1298137766' post='4776358']
Can anyone recommend an instructional book such as "multiplayer online game programming for beginners"?

Something that assumes only basic windows programming knowledge.
[/quote]

Such a book really doesn't exist, because there's too many things that stand between "basic Windows programming knowledge" and "multiplayer online game programming."

You need to improve your programming skills such that you are 100% sure of yourself when you use pointers, arrays and type casts. You should be able to read something like "void *(*func[])(char const *)" or "template<typename A, typename B> B func((A::*Func)(B volatile &))" without having to think about it. You need to understand the difference between "extern char foo[];" and "extern char *foo;" and understand why one of them can be passed to sizeof() and one cannot. Without understanding these fundamentals of systems programming, you're doomed to failure, or, at best, uncomprehending copy-and-paste mediocrity (which pretty much counts as failure in the eyes of the world).

You need to improve your game development skills. You need to understand what the difference is between game input, game processing and game presentation. You need to understand how game entities will relate, and which relations have what requirements, and how such requirements are generally expressed. How do you fastest find the 10 objects closest to a given point in the world? How do you test whether one object can see another object? Until you feel comfortable with this level of game development, you won't be able to do networked gaming any justice.

Finally, you need to understand networking. What does it mean to "bind" to a "port," what is a "process" versus a "node," what does an address in the 192.168.x range mean, and how does an UDP datagram differ from an IP datagram?

Once you have all that, you can start making inroads into the really difficult problem of networked games programming (which is also known as a "distributed simulation" or, sometimes, "interactive distributed system.") There are some academic books on this, such as "Networked Virtual Environments," plus a bunch of research from the '80s and '90s on DIS and HLA, plus various ad-hoc descriptions of game networking from studios like Id, Valve and Epic, but they won't make a lot of sense without first being solid in the required pre-requisites.

You could start with the resources pointed at by the FAQ in this forum, though, and see where you get stuck, and go looking for references on whatever the problem is at that point. Good luck!

Share this post


Link to post
Share on other sites
Thank you for your encouragement. It never was my intent to offend anybody with my ignorance. I'm making pretty good progress with pointers, vectors, classes, double buffering and intermediate c++. Ive gotten to the point where Ive built my game on my computer which is a major accomplishment for me that has taken years in my spare time to get to. Am now beginning a look into the next step which is to make it an interactive online game. I feel confident that if I keep moving forward I will start getting a basic understanding of the issues. Ive already built a couple of console applications that will take a buffer coming out of the send() function and convert that to an integer vector in order to translate the data stream something that a game my game can use, but know I see there's something called data packets so thre must be a more established way.

I'm just starting to re think my game now. I could make the whole thing work with my own rudimentary code inventions but first I have to get over this whole thing about TCP/IP and network addressing.

[quote name='hplus0603' timestamp='1298160168' post='4776492']
[quote name='Deek880' timestamp='1298137766' post='4776358']
Can anyone recommend an instructional book such as "multiplayer online game programming for beginners"?

Something that assumes only basic windows programming knowledge.
[/quote]

Such a book really doesn't exist, because there's too many things that stand between "basic Windows programming knowledge" and "multiplayer online game programming."

You need to improve your programming skills such that you are 100% sure of yourself when you use pointers, arrays and type casts. You should be able to read something like "void *(*func[])(char const *)" or "template<typename A, typename B> B func((A::*Func)(B volatile &))" without having to think about it. You need to understand the difference between "extern char foo[];" and "extern char *foo;" and understand why one of them can be passed to sizeof() and one cannot. Without understanding these fundamentals of systems programming, you're doomed to failure, or, at best, uncomprehending copy-and-paste mediocrity (which pretty much counts as failure in the eyes of the world).

You need to improve your game development skills. You need to understand what the difference is between game input, game processing and game presentation. You need to understand how game entities will relate, and which relations have what requirements, and how such requirements are generally expressed. How do you fastest find the 10 objects closest to a given point in the world? How do you test whether one object can see another object? Until you feel comfortable with this level of game development, you won't be able to do networked gaming any justice.

Finally, you need to understand networking. What does it mean to "bind" to a "port," what is a "process" versus a "node," what does an address in the 192.168.x range mean, and how does an UDP datagram differ from an IP datagram?

Once you have all that, you can start making inroads into the really difficult problem of networked games programming (which is also known as a "distributed simulation" or, sometimes, "interactive distributed system.") There are some academic books on this, such as "Networked Virtual Environments," plus a bunch of research from the '80s and '90s on DIS and HLA, plus various ad-hoc descriptions of game networking from studios like Id, Valve and Epic, but they won't make a lot of sense without first being solid in the required pre-requisites.

You could start with the resources pointed at by the FAQ in this forum, though, and see where you get stuck, and go looking for references on whatever the problem is at that point. Good luck!
[/quote]

Share this post


Link to post
Share on other sites
[quote name='Deek880' timestamp='1298161853' post='4776503']
Thank you for your encouragement. It never was my intent to offend anybody with my ignorance.
[/quote]

I hope you're not offended! I certainly wasn't -- I just explained why what you ask for doesn't exist. Taking someone from "basic Windows programming skills" all the way to "networked game programming" is a long journey, and you're probably better off taking one step at a time, as I suggested. There are good books for most of those steps, I think. Good luck!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this