Hi my name is Chris and this is Battle(non)sense
If my gameplay of the Ironsight Beta makes you think:
"Oh my god, this is looks like yet another cheap Call of Duty clone"
then I really don't blame you,
because I though the same after I've seen the trailer.
However, as it turns out I could not have been more wrong.
Not only do I really enjoy the gameplay and the map design of this free to play game,
I also found that it is very interesting from a technical stand point,
which is why I decided to do a netcode analysis for it.
I also got the chance to talk to the Project Manager of Ironsight.
We discussed my test results, a few of the issues I found,
and I learned some interesting details which I will share with you in this video.
Now while always do my best to keep the netcode analysis as simple as possible,
you will still need to have some basic knowledge about computer networking,
tick rates, update rates, network models,
super bullets, lag compensation, packet loss
and a few other things like how I do my network delay tests.
So to keep the netcode analysis videos as short as possible,
I have put all this information into a separate "Netcode 101" video
which you should have watched at least once
before you continue with this video here.
The card overlay as well as the link in the description down below
will both take you directly to that video.
So, first of all which network model does Ironsight use.
Even in the latest Call of Duty game, players have no control over if they end up in a
client hosted match or on a dedicated game server.
The game not only makes this decision on its own,
it does not even tell the player if he is on a dedicated server or a listen sever.
And when you create a custom match in Call of Duty,
then this will always be hosted by a player who then has the host advantage.
Ironsight on the other hand uses dedicated servers for both public and custom matches,
which means that no player has the host advantage.
Currently it's not possible to set a password when you create a custom match,
but the developers will add that feature later,
as well as more configuration options,
an invite system and much more
to properly support custom matches and community tournaments.
They seem very determined to provide everything the competitive scene needs to form and flourish.
In the open beta, the game currently uses data centers in North America and Europe,
which are provided by Googles Cloud Platform.
More locations will be supported later,
however the developers currently have no plans to
support other cloud services like Microsoft's Azure or Amazon's AWS,
which is a bit unfortunate as that could make their online services more robust.
What you will notice here is that compared to hosters like multiplay or gameservers.com,
none of these cloud services have datacenters in South Africa, Russia or near Turkey.
Which is not only bad news for players who live there
but more about that a little bit later.
Now how about the rates at which the clients and servers send and receive data.
This is where it gets very interesting.
Very simply put, the consensus among developers who work on online multiplayer games,
is that you should use the UDP protocol
when your application has a real time requirement on packet delivery.
This is why you usually don't see an online game use TCP for gamedata,
as that protocol was designed to ensure that data always arrives at its target location,
even if that means increasing the delay by waiting for the target to confirm that it received that data packet
and re-sending it if it didn't.
Ironsight however uses TCP instead of UDP.
And while it uses the push flag to prevent TCP from buffering data
and thus increasing the delay even under perfect network conditions,
I still find this decision concerning,
as TCP will cause very noticeable lag spikes as soon as there is packet loss,
since TCP it is more concerned about ensuring that data arrives at its target destination,
than how long it takes to get it there and if that data is outdated when it arrives there.
This is of course an extremely simplified explanation.
But if you want to learn more about that topic then you can find an excellent article about
TCP vs. UDP in the description down below.
So, I did ask the developers why they decided to use TCP.
I was told that one of the reasons is that some people don't have access to UDP,
as that protocol might get blocked by a firewall, or a router where NAT isn't working correctly.
Now, based on research done by google, about 8 to 9% of the internet population can't use UDP,
as it gets blocked by a firewall.
However, that's mostly hotels, airports and corporate networks.
So, for cases where a firewall does indeed block the online functionality of a game,
I think that using TCP as a back up is a good solution.
But I, and other developers in the industry that I have talked to, say that UDP is the
first and only choice for applications such as online games where data is time-critical.
So, in short – TCP can be as fast as UDP when the you use the push flag
and as long as the client has a perfect connection to the server.
Which is sadly not the case for most players.
The Ironsight developers told me that they are exploring UDP for the future,
but right now the game uses TCP.
So, we will have to wait and see how that affects the online experience of
its growing player base.
What is also interesting about the data that is send and received by the game,
is that the send rate of both the client and the server depend on what the players do.
When the players just stand around, then the clients send 25 updates per second
and the server sends 22 updates per second.
When one player fires his gun then the send rate of both the client and the server increase.
It looks like the client immediately sends the player input to the server,
and the server then sends an update to the clients.
The servers send rate can get as high as 240Hz as you can see here.
Now, how much bandwidth do you need for these update rates.
In my previous netcode analysis videos I showed you how many MegaBytes a game downloaded and
uploaded during one hour of playtime.
That info was surely interesting,
but it did not really help gamers to find out if their
internet connection can handle these games,
as your ISP and every speedtest website out there,
will tell you how many Kilobits or Megabits per second you can upload or download.
So, starting with this video,
I will now show you the average and maximum Kilobits or Megabits per second,
that a game downloads and uploads while you are playing.
Spikes that occur while the game is loading the map are not included.
So, when we look at these numbers, then Ironsight uses very little bandwidth,
and pretty much everyone should be able to play it.
The 2.1 Megabits per second spike for the download in Battlefield 1
occurs only when you press the deploy button.
While the 1.7 Megabits per second spike that you see for the download in Overwatch
is caused by the game client downloading the death cam data from the server after you got killed.
I hope that you find this new information helpful,
and please let me know in the comments down below what you think about this new chart.
Now, the visual delay between players is not only affected by the update rates,
but also the frame rate and the players ping.
Unlike most other games, even big budget triple-A titles,
Ironsight has a very flexible frame rate limiter built right into the options menu,
where players can set a specific FPS cap,
which is especially useful for owners of a GSync or FreeSync monitor.
Inside the options menu you can also enable a "Display FPS" option,
which not only shows you the frame rate, but also your ping to the game server.
That said, the ping display is not very reliable at the moment
as sometimes it will show a ping of 0ms,
but I have reported this issue to the developers, so I guess we can expect a fix in the near future.
Speaking of the ping value,
Ironsight sadly does not show you the numerical ping value inside the scoreboard.
Instead we get those rather useless signal strength icons.
However, this might change in the future as I was told by the Project Manager.
The developers also plan to include network icons later,
which will then alert the player of packet loss, or other issues with his connection to the server.
Now, how about the network delay in Ironsight
Before I show you the results of my network delay tests I want to ask you once again to
watch Netcode 101 video first to find out how I do these network delay tests,
as that is required to understand what these results mean for your online experience.
At an ICMP ping of 17ms to the game server,
I measured an average damage delay of just 26.75ms
and an average gunfire delay of only 29ms.
These are by far the lowest delays that I have ever measure in a multiplayer game.
The movement delay however is very long with 104.5ms on average.
Which is one of the reasons why you will frequently take damage behind cover,
but more on that in a minute.
The reason why the damage and gunfire delays are so incredibly short
is that the game client does indeed send a gunshot immediately to the server,
which according to the developers then processes this data in real time and then updates the players.
The server does not use a fixed tickrate.
Movement data however is only sent 25 times per second,
which is why the movement delay is a lot longer.
Now, even when we consider that Ironsight was tested at a ping of 17ms
while most other games were tested at a ping of 25ms,
Ironsight still shows the lowest damage and gunfire delays of all games that I ever tested
which is very impressive.
That said, the developers should increase the rate at which they update player movement
as more than 100ms on average is far too long at a ping of just 17ms.
Now besides the high movement delay,
there is also the issue that the server compensates a lot of lag.
Even at a ping of ping 400ms shots will still register,
which the other player then receives very far behind cover as you can see here.
What we also must keep in mind here is that Ironsight only uses Googles Cloud Platform,
which does not yet provide servers in South Africa, Russia or near Turkey.
This means that players who live there
will be forced to play on servers to which they have a very high ping.
Not only will they have a bad experience then,
but also players with a low ping will suffer
as they then receive damage far behind cover.
So, to ensure that all players have a good time,
the developers must reduce that movement delay,
add servers in locations where Google does not provide any,
do something about how much lag the game compensates
and think about switching to UDP.
Now on a more personal note,
I've got to say that I made the mistake of judging this book by its cover.
It surely looks a lot like Call of Duty,
but while I honestly got sick of that franchise over the last few years,
I really enjoy the gameplay in Ironsight,
especially the maps as their design always allows you to flank and surprise the enemy.
Also based on my conversations that I had with the Project Manager,
it sounds like they are not only committed to provide a very good free to play experience
where the micro transactions are limited to cosmetics,
they also do listen to the feedback that they get from the community
and they are committed to build a game that is fun, competitive and fair.
So, I want to encourage you to give Ironsight a shot,
because it might surprise you too.
You can find a link to its website in the description down below.
So that's all for today.
I will keep you updated on the progress that the developers make,
and if you enjoyed this netcode analysis of Ironsight,
then it would be great if you could support me on patreon
as YouTubes ad revenue is sadly not enough anymore
to run a niche channel like mine.
Without the awesome support that I get from my patrons,
Battle(non)sense would not exists anymore.
You can find a link to my patreon in the description down below,
where you will also find links to my social accounts
in case that you want to stay up to date on the videos that I am working on.
So, if you enjoyed this video then please give it a like,
subscribe for more and I hope to see you next time!
Until then, have a nice day and take care,
my name is Chris and this was Battle(non)sense.
No comments:
Post a Comment