Jump to content
  • Advertisement
Sign in to follow this  
TheSilverHammer

Looking for RTS design principals with regards to synchronized simulations

This topic is 4015 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I am not sure this is exactly the right forum for this, but since this question is so closely bound to networking and multi-player, I figured this was the best place for this question. I am looking for a good solid primer, be it a book or web site (preferred) on designing an RTS game with respect to building a synchronized multi-player RTS simulation. Some points of interest to me on this are: 1. How to design game objects (a player's resource stockpile, tanks, infantry, etc...) to be used in an RTS simulation. For example, getting a game object's CRC for synchronization purposes is important. What else do they need to do? 2. What are the things I need to think about and manage that I would not need to do in a single player RTS? IE: I know I need 'turns' and command stacks and whatnot. What else do I need to know about? 3. What are some good ways to make each kind of thing from question 2? IE: What should a command stack look like, how and where should CRCs be done, etc... 4. On the network level how does all of the above tie in? Whats the best way to start a simulation? How do I handle players 'dropping'? If someone de-synchs, how can I recover or should I even try and recover? What is the best way to build network part? Peer to peer? Client-server? How do I build it in a way to minimize lockups (a client stops responding, but doesn't hang up)? Anyway I am looking for a source of information focusing on these kinds of issues. I am not so much looking for something to explain pathing or how to make terrain, etc... There is one book I saw on this sites book list on RTS game design, but no one reviewed it and amazon only has 3 reviews (of mixed results). It is "Programming an RTS Game with Direct3D" by Carl Granburg. Is it any good? I can't tell from the write up if it covers the multi-player aspect. AFAIK it is about single player RTS games, which doesn't help me at all.

Share this post


Link to post
Share on other sites
Advertisement
You could start with Forum FAQ, and topics that are already posted.

While not organized reference material, it may at least introduce you to some of the applicable topics.

The rest will depend on your experience with technical side. RTS and FPS projects tend to be heavily (sometimes almost too heavily) optimized to offer any high-level insight, and much of the source and example code I've seen doesn't address high-level issues adequately, since they go into compromises on any level.

Game Programming Gems has multiple quite reasonable articles on problems encountered in general scalable game design, but neither is a silver bullet by itself.

Also - everything will be a compromise. So "good" will depend almost exclusively on your particular needs. Only the higher level concepts are generally applicable, their implementation will be almost always be very specific to that particular design.

1. Is CRC important? You can use component model, hard-coded objects, fully networked objects, you can serialize them, or synchronize their state explicitly

2. State synchronization and latency compensation. There's several different methods to deal with it. Time Warp, bucket synchronization, lock-step, fully async, transactions, all of which have up and downsides. Forum FAQ also has article on more exotic ways.

3. Too complex. There is no one answer.

4. All of this will depend on your choice. P2P tends to be much more complex due to n-way communication. But there's pros and cons. The ability to reconnect might be desirable or possible, but doesn't need to be. There is no best here, weighing pros and cons of each (physics, even collision, is much harder on P2P)

Share this post


Link to post
Share on other sites
The forum points to the 1,500 archers article (the Gamasutra link above).
I'd say that's pretty definitive when it comes to the lock-step RTS model.

Share this post


Link to post
Share on other sites
Quote:
Original post by hplus0603
The forum points to the 1,500 archers article (the Gamasutra link above).
I'd say that's pretty definitive when it comes to the lock-step RTS model.


It's also what I'd consider one of the three best articles on reasonably low level multiplayer game architecture, the other two being the Tribes 2 paper from a number of years back, and Simon Hayes brilliant presentation at OGDC this year.

Share this post


Link to post
Share on other sites
I read that, it is a good article. Is there anything with a more in-depth analysis? Something with code design patterns for RTS systems? Are there any good books that anyone can recommend?

Share this post


Link to post
Share on other sites
Gamasutra also has some articles about the AI design for AoE, having to do with how to write a fun AI that doesn't "cheat."

In general, you'll have more luck if you are specific about what problem you want to solve. Animating lots of characters on the screen at once? Queuing commands to the server, dispatching to all clients, and actually executing on the client when it gets back (in sync)? Designing the right level of rock-paper-scissors for enjoying gameplay? If you can formulate your questions into more specific slots, you're much more likely to get useful answers.

To answer your question, as stated: no, there is no comprehensive write-up of everything you need to write specifically an RTS, from start to end.
Except, possibly, the book "Programming an RTS Game with Direct3D," which I haven't read, so I have no idea how good it is.

Share this post


Link to post
Share on other sites
No I am not looking for 'everything' about an RTS. Let me try and put it this way:

Take the set of everything you need to know about making a multiplayer RTS and the subtract everything you need to know about making a single player RTS.

What is left over, that is what I want to know. In a single player RTS you do not need to worry about synchronized simulations or network communications or dealing with latency and all that.

I know what a socket is and I have done some basic client-server apps, so I do not need a low level tutorial on that stuff. However just above that layer, and going all the way up to the part of RTS implementation where you are no longer concerned with multi-player issues and stopping there. It is that block of knowledge I seek.

The most ideal example for me would be a skelleton of an engine that handles all that. I do not care if it is just using X's and O's on a console screen as long as it deals with the core "multi-player and networking" issues specific to RTS games.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!