Development Blog Update - NS2 Q&A #2
Max
Technical Director, Unknown Worlds Entertainment Join Date: 2002-03-15 Member: 318Super Administrators, Retired Developer, NS1 Playtester, Forum Moderators, NS2 Developer, Constellation, Subnautica Developer, Pistachionauts, Future Perfect Developer
Comments
Improving "netcode" has been my focus for a few months, however this doesn't actually involve working on the networking system. The networking system will only deliver a good gameplay experience if the server is able to keep up with the work load and deliver updates at 20 times per second. If the server is only pushing out 1 update per second, you're going to see all types of problems that people often confuse with networking issues.<!--QuoteEnd--></div><!--QuoteEEnd-->
I am not happy with your answer to netcode...
Edit: I mean how can it be the servers fault? Every server I join has a horrible ping, so bad that I can not even walk or shoot. My FPS is fine and stable, but the ping is just so bad, and I don't know what you mean by saying its the servers fault, when it is every server that is hosted right now. How is it possible that every single server hosted can't keep up with the work load. Sorry if I sound like a winer, I just want to make sure you guy's are fully aware of this so that come release of the game, you don't have massive connection problems. Since, you guys probably play on the office LAN, and do not see what we see.
This means the server is so bogged down, it can't calculate updates fast enough. if it's not calculating updates, you can't do anything, and it feels like you are lagging out.
improving server performance will fix this.
If you get on a server that has recently restarted, you'll be getting about 15 ticks per second. it's not great, but it's playable. after a while server performance degrades and eventually it'll get to 2-5 ticks per second.
Max's answer is right on.
even if you play on a lan, server performance will degrade and you'll see this problem.
Edit: I mean how can it be the servers fault? Every server I join has a horrible ping, so bad that I can not even walk or shoot. My FPS is fine and stable, but the ping is just so bad, and I don't know what you mean by saying its the servers fault, when it is every server that is hosted right now. How is it possible that every single server hosted can't keep up with the work load. Sorry if I sound like a winer, I just want to make sure you guy's are fully aware of this so that come release of the game, you don't have massive connection problems. Since, you guys probably play on the office LAN, and do not see what we see.<!--QuoteEnd--></div><!--QuoteEEnd-->
Your ping can never be higher than the update rate for the server. So if the server is updating at 1 tick per second, your ping time is going to be at least one second.
As for the netcode remarks, I've contemplated it and came to pretty much the same conclusion. Bandwidth-usage at the moment isn't spectacular (and thus not so much a culprit), and there is a clear link between the tick-rate\update-rate, and the various issues that are experienced (rubber-banding, hit-registration et cetera). So I'm expecting significant improvements on all fronts of net-play when the server is easier on the CPU.
So are you saying its the server's fault? And if yes then, why can't I find a single good server then?
PersianImm0rtal if I read it correctly, the game is creating too much data for the servers to handle. The netcode itself is not a problem but the servers themselves are getting overloaded with too much game data, which causes them to choke and create problems.
As far as servers go, I find endar's server to be the best performing (powerful hardware perhaps?). You should be able to have a reasonable game on it.
<!--quoteo--><div class='quotetop'>QUOTE </div><div class='quotemain'><!--quotec-->203.12.139.127:27015 Australia-Pure NS2<!--QuoteEnd--></div><!--QuoteEEnd-->
Or is your actual latency good, but you have such a bad FPS you can't move or do stuff, ifso how about on a localhost?
He is not talking about the hardware setup, location or bandwidth. It is that the information it recieves can't be processed and sent fast enough, which probably means a whole lot of problems for the clients.
It is like a group of people throwing a ball to each other, except they are throwing 100 at once and keep dropping them.
I'm hoping that is right and fairly good analogy.
Programmers never get the praise that the artists do, so go easy on the guy. Keep it up Max, great read. Looking forward to 163 :)
A serious heartfelt pat on the back to the entire team for their work so far, its really neat watching this game progress and talking with the developers.
I had a post about map support at <a href="http://www.unknownworlds.com/ns2/forums/index.php?s=&showtopic=112527&view=findpost&p=1827691" target="_blank">http://www.unknownworlds.com/ns2/forums/in...t&p=1827691</a>
It's a long way off of course, but I'd be interested in knowing how you'd tackle custom maps. I think map developers would agree having some sort of publishing system to make it painless to play custom maps would be fantastic.
weaker machines will degrade faster, but every machine will eventually degrade.
oooooh he renamed it! hell, wish i knew that a while ago, ive been looking for his ausradasucks server and been disappointed not to find it! the gameplanet server sucks ass and crashes on a very regular basis. I vouch for this server too, you might get a high ping coming from the US tho.
Great post Max, very informative, post like this will hopefully keep the whiners at bay.
Which can be led back to the hardware setup. At least that's what I understand when the word 'processed' is used. I'm not saying the servers out there are rubbish, but rather that Spark has some nasty inefficiency-issues at the moment, that make it run poor on the most powerful of setups.
<!--quoteo(post=0:date=:name=Runteh)--><div class='quotetop'>QUOTE (Runteh)</div><div class='quotemain'><!--quotec-->Programmers never get the praise that the artists do, so go easy on the guy.<!--QuoteEnd--></div><!--QuoteEEnd-->Sadly very true and thanks for saying so Runteh.
For anyone that's interested, you can verify the server problems by watching process (and child threads) CPU/Cycles usage in correlation with the number of objects (buildings, hydras, players, grenades, etc.). It happens in all contexts, listen or dedicated server.
And quite a few of my questions were answered too, thank you a lot for that, Max!
Keep up the great work.
Keep up the good work and keep following your dreams no matter the circumstance!
Matt.
Incase someone wonder what the hell I talk about:
<!--quoteo--><div class='quotetop'>QUOTE </div><div class='quotemain'><!--quotec-->When will there be some better documentation for modding and how do you make custom entities exist in Spark map editor?<!--QuoteEnd--></div><!--QuoteEEnd-->
I hope the documentation goes fast, but seeing as you are doing q&a now, I bet it will become really rapid. When a dev wonder something, they can ask, wait a few days/weeks (how often are you gonna do a q&a blog anyway?), and if they havent figured it out themself yet (at which point they would have said they dont need help anymore), we will get answer for someone who knows the engine ;).
Atleast I hope that it will be like that :P.
Also, that info about adding stuff to map is something I have wanted to know for a long time, thankyou!
I will try to mess in that file tomorrow, probably mostly with water (I agree thats something we should get XD). Hopefully I suceeds at giving spark map editor a water entity thats scaleable like other cube entities.
I doubt that I will give it any graphics though.
Or maybe I will, that post processing system sounds interesting, and doing a "under water" overlay might be fun just to learn it ;)
Well we will see tomorrow, dont get your hopes up, I often leave my projects when they work, but are really buggy :P.
night <strike>guys</strike> <strike>humans</strike> sentient beings!
Just watched the meet the team video too, very nice to see you all and this post has topped it off for me.
PersianImm0rtal, they don't test on LAN before releasing. Where Max mentions that Australians and Europeans regularly play on the San Francisco server, he speaks truth. Many people working for Unknown Worlds are in Europe, along with many internal playtesters, and Simon is in Aus. I also join the playtests from Aus (see my channel for examples). So they are truly more brutal tests than 'real-life' where people generally play within the one geographic region.
Probably. One of the limiting factors on this right now is that the main menu UI is coded in Flash and is very difficult for us to modify. We're going to be rewriting the menu in Lua, like we did with the in-game interfaces, to make it easier to add additional options.<!--QuoteEnd--></div><!--QuoteEEnd-->
This! This is what I'm waiting for, and would significantly increase my playtime and my promotion to my 'networks' about this game.
We recorded video responses to many of the questions, but we've been having some difficulty getting those into a format suitable for posting on the website. In lieu of having the video responses, I wrote up answers to all of the technical questions I saw.<!--QuoteEnd--></div><!--QuoteEEnd-->
Damn, Max. Gettin' it done, like a boss.
Perhaps you can enlist Hugh's help to fix the videos.
--
There are optimziation tasks in Pivotal Tracker (OnProcessMove, Hydra, etc.) that have been there for quite a few builds under gameplay tasks. When will these be done or are they awaiting engine work on Lua interface optimisation?
The gameplay tasks come from the schedule for Brian and Charlie, so I was not intending to work on these specific tasks, which I believe are currently the slowest parts of the game code. In terms of engine optimization, I am going to be working on the general slowdown we get from executing Lua code due to the garbage collector and interfacing with the C++ code. <b>I'm hoping my system level changes will eliminate the need for any gameplay code changes in Lua and these tasks won't be necessary.</b>
--
Sounds really good and what I was hoping for :)