Anaximander Posted May 28, 2017 Share Posted May 28, 2017 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 More sharing options...
drainedman Posted May 28, 2017 Author Share Posted May 28, 2017 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 More sharing options...
devu Posted May 28, 2017 Share Posted May 28, 2017 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 More sharing options...
ostris Posted May 28, 2017 Share Posted May 28, 2017 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 Anaximander 1 Link to comment Share on other sites More sharing options...
devu Posted May 29, 2017 Share Posted May 29, 2017 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 More sharing options...
drainedman Posted May 29, 2017 Author Share Posted May 29, 2017 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. drainedman and Anaximander 2 Link to comment Share on other sites More sharing options...
devu Posted May 30, 2017 Share Posted May 30, 2017 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now