Jump to content

Server tech


drainedman

Recommended Posts

http://bigworldtech.com/en/technology/bigworld-server/

 

Weird.. someone is building top-notch MMO server to introduce efficiency and picks Python? That made me lough :). But the good news is if their solution works you can expect it be much faster when C++ comes to play.

Python is like duct-tape by this point. Low-tech but mighty efficient.

Link to comment
Share on other sites

http://bigworldtech.com/en/technology/bigworld-server/

 

Weird.. someone is building top-notch MMO server to introduce efficiency and picks Python? That made me lough :). But the good news is if their solution works you can expect it be much faster when C++ comes to play.

 

C++ is overated :) Its more important to get hardware to do the heavy lifting by using hundreds of cores. Then it doesn't matter much what language you use. 

 

Remember these DU ideas are nothing new and are actually quite common. Now, does this approach work...? Kind of but not really. It depends how you design the game and impose limitations. I think the biggest problem is how to make the game be large scale yet offer players a vast amount of freedom. Typically you run into the n^2 problem - see below. Personally I think people are waaay too optimistic how well this server scaling works. In MMOs what people do is basically want large scale battles anywhere at a given instance where they can fire loads of shots at each and basically that breaks everything. 

 

If you remember HeroEngine? That did server side single shard scaling. I think this article does a good job of explaining the challenges:

http://hewiki.heroengine.com/wiki/Scalability_and_Building_For_Massive_Multiplayer_Audiences

 

A couple good quotes from the article:

 

"For example, I personally have run 5000 AI controlled characters in an area server instance (a process). Great! That means we can have 5000 players in an area server instance easy right?" (This sounds a bit like the DU approach to testing :S)

 

and,

 

"It bears repeating...no engine, no programming language, no technology can make an N^2 algorithm anything other than an N^2. Game logic must take advantage of an engine's features to choose the right trade-offs for the game design.

Engines whose marketing departments claim their engine solves the problem of N (for a large value of N) players who all decide to move to the same game location are selling you snake oil, don't buy any. There is no magic "Easy Button", the laws of physics still apply."

Link to comment
Share on other sites

I would agree if Python would be slower by factor of 5.. even 10 but not 100+. It's 100x more concurrent calculations being handled on a single blade.

Difference in number crunching algorithms is even higher, sometimes we talking 400x. 

 

I know Python is easier and cleaner and.. cheaper, since got so popular in US as one of the main langue to teach kids at school.
C++ is not overrated, it's just forgotten, developers got lazy. But is the only way for close to the metal performance critical operations and writing robust server is one of them. Hell, even old Java server for Flash MMO games were way better!

Link to comment
Share on other sites

I would agree if Python would be slower by factor of 5.. even 10 but not 100+. It's 100x more concurrent calculations being handled on a single blade.

Difference in number crunching algorithms is even higher, sometimes we talking 400x. 

 

I know Python is easier and cleaner and.. cheaper, since got so popular in US as one of the main langue to teach kids at school.

C++ is not overrated, it's just forgotten, developers got lazy. But is the only way for close to the metal performance critical operations and writing robust server is one of them. Hell, even old Java server for Flash MMO games were way better!

The idea that python is slow is kinda overused or misused. Python can compare to C in many ways if handled correctly. The website mentions that game objects are programmed in python but "Scripts can utilize C++ when required for optimization of regularly used functions." Tells me they are probably using something more then pure python.

 

If i had to guess they are probably using Cython. if they are using pure python that would be interesting.

 

https://en.wikipedia.org/wiki/Cython

 

Neat page showing speed comparison:

https://www.ibm.com/developerworks/community/blogs/jfp/entry/A_Comparison_Of_C_Julia_Python_Numba_Cython_Scipy_and_BLAS_on_LU_Factorization?lang=en

Link to comment
Share on other sites

I read Python and stopped, because it usually tells me developers attitude.

http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=python3&lang2=gpp

 

But OK, fine. If they using C++ modules and Python as a glue this can be acceptable.

 

I only hope NQ will go for best tool to do the job not the faster to to develop some PoC. Since a scale of the project and problem they trying to solve is big and every cycle matters. Counting on hardware that will do the job means more expensive cluster to maintain in expense of fewer players served. Even factor of 10 when wrong lang/tech is being used it means 10x less players or 10x more blades to pay for. Simple as that.

Link to comment
Share on other sites

I read Python and stopped, because it usually tells me developers attitude.

http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=python3&lang2=gpp

 

But OK, fine. If they using C++ modules and Python as a glue this can be acceptable.

 

I only hope NQ will go for best tool to do the job not the faster to to develop some PoC. Since a scale of the project and problem they trying to solve is big and every cycle matters. Counting on hardware that will do the job means more expensive cluster to maintain in expense of fewer players served. Even factor of 10 when wrong lang/tech is being used it means 10x less players or 10x more blades to pay for. Simple as that.

 

I feel its misguided to think about programming languages in this manner (x or y is slow we can't use it).

 

Whilst I don't care for Python I don't believe it necessarily has a huge impact on speed - IDK maybe this is an issue with beginners but consider that experienced developers should usually understand how to use higher level languages without performance impact.

 

It might be that only 1% of the processing power is spend with Python that does 99% of the game logic. Putting game logic into C++ would not only take far longer to develop but would be such a minimal gain (e.g. 3x of 1%) its simply not worth it.

Link to comment
Share on other sites

If you know the nature of algorithms involved as experienced developer you would know up front what technology is the best choice. And what technology has it's bottlenecks. There is also a question of time and resources to spend on something so you can go for easy PoC solution, rapid development mode but not necessarily the optimal solution from tech point of view.

 

In this very case knowing the nature of algorithm involved it's simple as that. Python is slow for raw number crunching. As a glue for components and network operations is OK. So don't try to justify it :) If they using C++ modules that may be fine. As I said I stopped reading to early. 

 

Things like binary search, quad trees any search algorithms actually to determine to what clients you need to send what portion of data and work out priorities, Python is no go. For sending this information once you know it.. Fine, it's just network operation that Python is good for. All I wanted to say.

Link to comment
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
×
×
  • Create New...