These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE General Discussion

 
  • Topic is locked indefinitely.
Previous page12
 

Stackless Python and Some EvE Tech Questions

First post First post
Author
Unsuccessful At Everything
The Troll Bridge
#21 - 2015-08-17 23:15:07 UTC
La Rynx wrote:
Unsuccessful At Everything wrote:
Im sure with all the spagettified legacy code in there for this and that, and the fact that no one knows what some of it actually does anymore, im sure its more like 'Stackless Monty Python' at this point.

Python was derived from "Monty Python" and not from the snake.

Did not expect that.

Since the cessation of their usefulness is imminent, may I appropriate your belongings?

stoicfaux
#22 - 2015-08-17 23:56:53 UTC
Unsuccessful At Everything wrote:
La Rynx wrote:
Unsuccessful At Everything wrote:
Im sure with all the spagettified legacy code in there for this and that, and the fact that no one knows what some of it actually does anymore, im sure its more like 'Stackless Monty Python' at this point.

Python was derived from "Monty Python" and not from the snake.

Did not expect that.

Oddly enough Unladen Swallow is dead, but Parrot is not.

Pon Farr Memorial: once every 7 years, all the carebears in high-sec must PvP or they will be temp-banned.

Little Speedie
Eclipse Mining Corporation
#23 - 2015-08-18 04:58:03 UTC  |  Edited by: Little Speedie
Thank you for all the replies everyone.

Firstly, like another poster pointed out, I'm careful with employee reviews of a company. Even if it's as bad as those reviews say, I'm not to deterred by it. If I was applying for a job at CCP, it'll be for a few specific reasons. One of those reasons is the very unique experience it would provide because of EvE's architecture/implementation. This aside, I'd enjoy working on a game a little more than on an algorithmic trading platform, which I believe, would be one of the few other areas where I can get the experience I am looking for while still being interested in subject.

Secondly, spaghetti code sounds tasty and interesting! Debugging and testing are one of the areas of coding I enjoy a lot. Having tutored people in C++, Python, and Java, it still remains somehow exciting when trying and figure out why something is not working, or magically is when it shouldn't. For what ever reason runaway recursion still makes me giggle a bit, though Stackless may have ended that. :(

Thirdly, on the subject of (Stackless)python performance-really any programming language-they all have their place. My assumption is that EvE's event handling would die on C++, because the server's event processing would be as fast as the slowest event driver/participant. With the chain delay caused by each player, since each one is handled sequentially and made worse by their latency, I don't think it's possible for C++ to keep up without some tricky programming(?). I can be totally wrong however on this thought. Though, based on this, I wonder if this is the reason why, when playing some games, a really laggy player can cause all the players to stall. Digressing, Stackless in some situations is faster than C/C++ from what I have read.

I do have two other question for the Devs.

I assume Stackless wasn't used for other areas of EvE because of anomalies that pop up in asynchronous processing?

EvE's server tick is one second, while other games I have played it is 100ms. Is this because of the margin of error needed for the asynchronous processing?


Finally, again thanks for all the replies, especially to CCP Explorer and Steve Ronuken. This has been quite helpful.

PS: I was kind of looking forward to WoD. Cool idea, I would have bought it.
La Rynx
School of Applied Knowledge
Caldari State
#24 - 2015-08-18 06:45:43 UTC
if a scripting language like php, perl or python is not compiled, it needs to be run in a runtime environment. the code gets translated into machinecode during the runtime. compiled code is translated completly before it is started. not much difference with small code pieces, but the larger a project gets, the more the runtime environment adds memory usage and processing time.
you want sthg mean and lean, you compile it.
lezs say the graphics are in the frontend and compiled, so the game side runs in python on the cluster. btw all calculation is done on clusterside, this is why eve can not easily be hacked.
anyway, evey grid in a system , might be a complex in python, which may have to sync with it neighbour system or grid.

Atomic Virulent : "You can't spell DOUCHE. without CODE."

Primary This Rifter
Mutual Fund of the Something
#25 - 2015-08-18 10:00:32 UTC
CCP should really hire someone whose sole job is to really dig into and understand the spaghetti.
CCP Explorer
C C P
C C P Alliance
#26 - 2015-08-18 11:25:19 UTC
Primary This Rifter wrote:
CCP should really hire someone whose sole job is to really dig into and understand the spaghetti.
Is this a job application? You should work a bit more on the CV... Blink

Erlendur S. Thorsteinsson | Senior Development Director | EVE Online // CCP Games | @CCP_Explorer

CCP Explorer
C C P
C C P Alliance
#27 - 2015-08-18 11:45:34 UTC
Little Speedie wrote:
I do have two other question for the Devs.

I assume Stackless wasn't used for other areas of EvE because of anomalies that pop up in asynchronous processing?

EvE's server tick is one second, while other games I have played it is 100ms. Is this because of the margin of error needed for the asynchronous processing?
T-SQL is used because that's the only language available in the database Blink. In other areas, if Python is not used then that's because of performance concerns.

We do use C++ in all operating system level interfaces (disk, network, database) but of course always build a C++/Python bridge and the question really becomes where to draw the line, i.e., where does it make the most sense to build that bridge.

Regarding EVE's tick rate of 1 Hz, this is a question of scale. The lower the tick rate is, the larger number of entities can be in the simulation (i.e., larger battles). Of course at a certain point the tick rate would become noticeably slow but the balance depends on the type of game. Fast-action shooter need a higher tick rate but EVE has a different pace. EVE isn't a fly-by-wire pilot simulation, it's a "make it so" captain simulation.

Erlendur S. Thorsteinsson | Senior Development Director | EVE Online // CCP Games | @CCP_Explorer

La Rynx
School of Applied Knowledge
Caldari State
#28 - 2015-08-18 11:59:31 UTC
CCP Explorer wrote:
...

The Bridge might be the usual: Libraries for Python. C++Functions you call via Python. Those too will be executed faster than the same functions written in python.

About the Ticks:
The Data those systems have to process grow exponentialy:
Planetes, moons, stations. ships common grids, Weapons fired and a lot of modifiers like implants and boosters.
Not an easy feat.

What might be the most "spagettieske" code?

I would say python, since its the oldest code, methinks with the biggest base.
However python tries to get the programmer to structured programming.
The code might be not so much spagetti, as just very very very complex.

Atomic Virulent : "You can't spell DOUCHE. without CODE."

Circumstantial Evidence
#29 - 2015-08-18 19:28:04 UTC
CCP Explorer wrote:
Regarding EVE's tick rate of 1 Hz, this is a question of scale. The lower the tick rate is, the larger number of entities can be in the simulation (i.e., larger battles). Of course at a certain point the tick rate would become noticeably slow but the balance depends on the type of game. Fast-action shooter need a higher tick rate but EVE has a different pace. EVE isn't a fly-by-wire pilot simulation, it's a "make it so" captain simulation.
I know / have known - a number of players with poor connections who are able to play this game over others, because of this architecture.

However, the warp speed changes and timings of attempting to lock and point an interceptor from going into warp push against the envelope, giving an edge to players with superior connections. Another however: that is just one aspect of gameplay poor connections may not be able to participate in.
Pew Terror
All of it
#30 - 2015-08-19 15:02:07 UTC
La Rynx wrote:
if a scripting language like php, perl or python is not compiled, it needs to be run in a runtime environment. the code gets translated into machinecode during the runtime. compiled code is translated completly before it is started. not much difference with small code pieces, but the larger a project gets, the more the runtime environment adds memory usage and processing time.
you want sthg mean and lean, you compile it.
lezs say the graphics are in the frontend and compiled, so the game side runs in python on the cluster. btw all calculation is done on clusterside, this is why eve can not easily be hacked.
anyway, evey grid in a system , might be a complex in python, which may have to sync with it neighbour system or grid.



This is very outdated info (like 10-20years outdated) like someone stated already earlier.

A lot of the really high performance systems are interpreted nowadays due to the simple fact that the machine is much better at optimizing program flow than you or I. Let's take multithreading as an example. How many threads are you going to start on a dual Core I7 for your cep pipeline? How many for an octa core itanium? Well, whatever numbers you came up with they are wrong. This is something you describe to the interpreter as 'i want this done in parallel, this done sequential, etc' and the interpreter optimizes it for the hardware it is actually running on.

The reason why you would use a straight compiled language like C++ nowadays is almost always memory pressure. At some point creating and destroying objects becomes the bottleneck at which point you will need to write your own memory manager. Loosing these advanced runtime optimization techniques in the process is a major disadvantage and you would only do it if you really need to.

tl;dr: To say compiled = fast and interpreted = slow is wrong.
Previous page12