Jump to content

View more

Image of the Day

WIP title screen for #DeathOfAPartisan #screenshotsaturday #gamedev https://t.co/qJNhfZCvd4
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

Sign up now

FPS/RTS mix How to do the network Programming?

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
3 replies to this topic

#1 IceBreaker23   Members   


Posted 31 July 2012 - 07:51 AM

Hey there!

I want to make a mix between RTS and FPS. However i cant figure out how to do the network programming.

I would need client side prediction and lag compensation for the FPS thingy.
And for the RTS thing i would need the technique which is in the "1500 Archers on a 28.8" article.

What i can´t figure out is how should i merge these 2 techniques? They are so much different from each other.
And I need at least a technique which can handle 300 units and 10 players in the network. If i just transmit the position and do inteprolation i would need 300(unit count) x 20(needed for world matrix) x 15(times per sec) = 90 kb/s!! thats too much

Please help me!

Thanks in advance,

#2 SimonForsman   Members   


Posted 31 July 2012 - 08:36 AM

Unfortunatly there is no easy way to solve this, lockstep isn't suitable for actiongames or games with alot of players (as it has to pause if a player lags), remember though that its only the server than needs 90kb/s upload (allthough it will be more in the end, i'd guess closer to 200kb/s , clients won't have to send as much though and if the server sends a total of 200kb/s split between 10 players each player only has to recieve ~20kb/s. (You probably have to send updates for FPS controlled units/players a bit more frequently as they are less predictable)

This should be perfectly playable as long as the server has a decent connection and you don't feel the need to support players on dialup. (0.5Mbps DSL should be capable of recieving around 30-40kilobytes per second even on a bad day and these days few people have worse connections that that), you could also cut the playercount down to 8 and total units to 240 (still 30 units per player) which gives you a fairly big bandwidth reduction without, hopefully changing the gameplay too much. Maybe even let the server hosts choose how many players to support as broadband quality varies greatly between countries (in areas where 100/100 is common you could probably go as high as 32 players).

You can also avoid sending updates for units a player can't see to save a bit of bandwidth in the average case, It won't help for the worst case but it should improve performance in the average case. (Players can probably tolerate a little bit of lag in the rare event where all players decide to smash all their units together at the same time and place)

Edited by SimonForsman, 31 July 2012 - 08:43 AM.

I don't suffer from insanity, I'm enjoying every minute of it.
The voices in my head may not be real, but they have some good ideas!

#3 hplus0603   Moderators   


Posted 31 July 2012 - 10:06 AM

If there is any interaction from the FPS to the RTS, then the FPS must use (or be translated to) lockstep, or you can't use lockstep.

FPS-es can work in "lockstep" if you speculate ahead on the client that sends the commands, and accept time-warps backward (corrections "in the past") from the server when you "guess wrong" -- typically as a result of actions from other players that lead to collisions, damage, etc, in the "past" for the local player.
enum Bool { True, False, FileNotFound };

#4 IceBreaker23   Members   


Posted 01 August 2012 - 06:33 AM

Thanks for your answers. I think this task isn´t worth to implement...

@SimonForsmann: the problem is that the player would need to download 200kb/s which is enormous for a game!

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.