| Pages: [1] 2 :: one page |
| Author |
Thread Statistics | Show CCP posts - 3 post(s) |

Little Speedie
Eclipse Mining Corporation
0
|
Posted - 2015.08.17 09:26:52 -
[1] - Quote
Hello!
Apologies if this is in the wrong section. I wasn't quite sure if this was supposed to go in the technology lab section or the eve general section.
First off I'd like to say, "Wow Stackless Python!"
I've decided to post this on the forums rather than send an email, because I felt that some members of this community would also benefit from the answers to these questions as well.
Some background:
I have recently become interested in the programming/tech side of EvE. Currently, having just started my second year in my computer science degree, I've started to understand and admire the finer points of games. This is especially true for the logic and 3d aspects (Grrr WinAPI/DX COM's).
EvE's technology has been an interest of mine for a while now. I finally decided to try a little Stackless. This interest was due in part to the "Engine Tools" menu, and the fact that CCP discusses its technology with their subscribers, unlike many MMOs. After experimenting with some Stackless, even with my limited background (almost none) in game design and client/server programming, I can see some benefits from using it. After seeing these benefits, and the fact that python is pretty fun, noticeably easier to learn than C/C++, and didn't induce convulsive fits of rage like TASM/MASM: I want to learn more. I also want to learn more about EvE.
I have a few questions in regards to Stackless, the Engine Tools window, and EvE:
- There is a lot of documentation on Python 2.7-3.4, but I have found very little on Stackless. Are there any resources that can assist in the learning process? How did the Devs learn?
- How much of EvE is written in Stackless? How many other languages are used?
- In the Engine Tools menu, which I am very thankful for, it has a section named python objects. Are these ALL the python objects? There sure are a lot, heh.
- In the function call section, I see some functions that seem to have the C++ scope operator "::" in them. Does the function section list all function calls from all used languages or just python ones?
One side question:
- EvE must be huge from both a programming and engineering standpoint. How do you get a new developer oriented with the EvE code, structure, and what ever else? How can an aspiring developer prepare? (stealth dev candidate preparation post)
|

Trii Seo
Executive Outcomes
853
|
Posted - 2015.08.17 09:52:59 -
[2] - Quote
Considering the release in year 2003, it's probably Python 1.x or early 2.x. There are presentations on Fanfest regarding legacy code and how they cope with it actually. I think they had a custom importer written for example.
The king is dead, long live the king!
Glory to Maximilian Singularity the Sixth, First of his Name!
Proud pilot of the Imperium
|

mydingaling
GoonWaffe Goonswarm Federation
19
|
Posted - 2015.08.17 09:56:50 -
[3] - Quote
Yeah my girlfriend handles a bit of python every now and again but she is stacked.
|

Little Speedie
Eclipse Mining Corporation
0
|
Posted - 2015.08.17 10:07:06 -
[4] - Quote
Trii Seo wrote:Considering the release in year 2003, it's probably somewhere around the times of Python 1.x or early 2.x.
I think Stackless is still kicking, currently at 3.x?
There are presentations on Fanfest regarding legacy code and how they cope with it actually. I think they had a custom importer written for example, to deal with cyclic imports I believe.
I "Think" EvE uses 2.6+ now. At some point I remember reading an old engine optimization blog/post that mentioned an upgrade to 2.5.1 while having their eyes on 2.6.
Currently stackless is up to 3.4.2 which is 0.0.1 off from the mainstream release version. Python Stackless Python
found it: Source |

Ralph King-Griffin
Devils Rejects 666 The Devil's Warrior Alliance
11262
|
Posted - 2015.08.17 11:29:04 -
[5] - Quote
mydingaling wrote:Yeah my girlfriend handles a bit of python every now and again but she is stacked.
Badum tss
=]|[=
|

Nana Skalski
Poseidaon
845
|
Posted - 2015.08.17 11:39:57 -
[6] - Quote
http://www.robg3d.com/2014/01/why-ccp-is-still-using-python-2/
( -á° -ƒ-û -í°)/ GòáGò¼GòªGò¼Gòú my sandcastle
|
|

CCP Explorer
C C P C C P Alliance
3049

|
Posted - 2015.08.17 12:06:56 -
[7] - Quote
Little Speedie wrote:- How much of EvE is written in Stackless? How many other languages are used?
We use C++ for performance intensive tasks (e.g., the physics simulation and graphics rendering) and all operating system level interfaces (disk, network, database). We use CCP Stackless Python (our own slightly modified version of Stackless Python) for all game feature code. We use T-SQL (Microsoft SQL Server) in stored procedures for all database logic.
Erlendur S. Thorsteinsson | Senior Development Director | EVE Online // CCP Games | @CCP_Explorer
|
|

Rain6637
GoonWaffe Goonswarm Federation
32192
|
Posted - 2015.08.17 12:09:49 -
[8] - Quote
I enjoyed this article from 2005. I'm thinking you may not have seen it, Little Speedie, due to its pub date.
http://kalogirou.net/2005/08/10/multithreaded-game-scripting-with-stackless-python/
The people you want to talk with about the real deal are former, not current, CCP programmers.
Or I can save you time and summarize their sentiment for you: run.
Help, I can't download EVE
President of the Commissar Kate Fanclub
PLEX: A Giffen good? (It's 1B?)
|

Rain6637
GoonWaffe Goonswarm Federation
32192
|
Posted - 2015.08.17 12:22:20 -
[9] - Quote
http://www.glassdoor.com/Reviews/CCP-Reviews-E159347.htm
Help, I can't download EVE
President of the Commissar Kate Fanclub
PLEX: A Giffen good? (It's 1B?)
|

Felo Maxun
Pator Tech School Minmatar Republic
110
|
Posted - 2015.08.17 16:43:46 -
[10] - Quote
I couldn't agree more that you should RUN towards their jobs page : http://www.ccpgames.com/en/jobs
I wish they would list more developer jobs as i've been waiting to apply for MONTHS!! |

Unsuccessful At Everything
The Troll Bridge
22782
|
Posted - 2015.08.17 17:35:50 -
[11] - Quote
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.
Since the cessation of their usefulness is imminent, may I appropriate your belongings?
|

Felo Maxun
Pator Tech School Minmatar Republic
110
|
Posted - 2015.08.17 18:24:05 -
[12] - Quote
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.
Perhaps i'm a masochist, but that sounds like a fantastic environment to start working in, some much improvement to have, so many forgotten truths to relearn / decipher. Sometimes its difficult to appreciate why something has been programmed they way it has, doesn't make it wrong, just means its may not suitable for the now, or the requirement has changed but the implementation has lacked behind.
As someone who's job it is to unravel these balls of yarn, I can tell you its surprising how much you learn from what others consider "dead/legacy code".
Even if all your are learning is how it should never be done :P |

La Rynx
School of Applied Knowledge Caldari State
346
|
Posted - 2015.08.17 18:38:42 -
[13] - Quote
Felo Maxun wrote:I couldn't agree more that you should RUN towards their jobs page : http://www.ccpgames.com/en/jobs
I wish they would list more developer jobs as i've been waiting to apply for MONTHS!!
You didn't read the glassdoor pages, did you? Interesting.
However: I always wonder: Python is a scripting language. Is the code somehow compiled? If the project gets a certain size, i consider scripting languages sub-optimal.
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.
Atomic Virulent : "You can't spell DOUCHE. without CODE."
|

Rain6637
GoonWaffe Goonswarm Federation
32192
|
Posted - 2015.08.17 18:40:14 -
[14] - Quote
Pick a better game with healthier revenue and a good bit of popularity for the sake of job security
Then make sure they have locations in first world job markets for the sake of your pride.
Help, I can't download EVE
President of the Commissar Kate Fanclub
PLEX: A Giffen good? (It's 1B?)
|

Felo Maxun
Pator Tech School Minmatar Republic
110
|
Posted - 2015.08.17 18:43:35 -
[15] - Quote
La Rynx wrote:
You didn't read the glassdoor pages, did you? Interesting.
I did, but I take sites like that for what they are, a place that are likely to get far more negative post than positive.
|

La Rynx
School of Applied Knowledge Caldari State
347
|
Posted - 2015.08.17 19:02:42 -
[16] - Quote
Felo Maxun wrote:La Rynx wrote:
You didn't read the glassdoor pages, did you? Interesting.
I did, but I take sites like that for what they are, a place that is likely to get far more negative posts than positive.
It's not about the single posts. It is about the picture behind all posts. I did read them all. I know what you mean. You would expect a lot of disgruntled employees. But i am talking about the picture that comes to existence when you where watching CCP and EvE over the years. I also happen to work in small companies growing big, so i can understand some problems with some managment ppl.
"make it more psssshhhhhh.." Still it looks like a nice workplace. Just not perfect, maybe even with a lot of flaws.
What makes me sad: I don't get the feeling, that someone in the managment has a "Vision of EvE". Without Vision, there can only be minor advances for EvE. Without Vision, it is hard to attract ppl.
On a sidenote: Chris Roberts sold just a Vision of SC.
Atomic Virulent : "You can't spell DOUCHE. without CODE."
|

Nana Skalski
Poseidaon
846
|
Posted - 2015.08.17 19:09:03 -
[17] - Quote
A lot of reviews is from Atlanta, This is relevant.
And EVE is made by fans, Python is compiled. I always read it is subpar than C++ because its slower. It have been used in few games for AI, but the only game using Python to that extend is only EVE. You have to be a great fan of the game to work on it. Because I dont see why else would you take this job. Working in programming environment that you cant easily fransfer/apply experience from and shift easily to other job in gaming industry. Maybe in job where python is used, but not like in EVE for sure.
( -á° -ƒ-û -í°)/ GòáGò¼GòªGò¼Gòú my sandcastle
|

Steve Ronuken
Fuzzwork Enterprises Vote Steve Ronuken for CSM
5509
|
Posted - 2015.08.17 20:08:36 -
[18] - Quote
Ahh, the old 'scripting language' chestnut. It's a total red herring. If you're not using Bash or powershell, you're probably not using a scripting language
The terminology you're actually looking for is compiled vs interpreted.
Of course, then you you get into the more complicated territory of byte-code compilation. Which is what happens with CPython. The environment you run it in is important, when defining the answers to questions.
Woo! CSM X!
Fuzzwork Enterprises
Twitter: @fuzzysteve on Twitter
|

Frostys Virpio
KarmaFleet Goonswarm Federation
2110
|
Posted - 2015.08.17 20:24:53 -
[19] - Quote
CCP Explorer wrote:Little Speedie wrote:- How much of EvE is written in Stackless? How many other languages are used?
We use C++ for performance intensive tasks (e.g., the physics simulation and graphics rendering) and all operating system level interfaces (disk, network, database). We use CCP Stackless Python (our own slightly modified version of Stackless Python) for all game feature code. We use T-SQL (Microsoft SQL Server) in stored procedures for all database logic.
Which one of those is the worst "spaghetti" plate to deal with?
If you don't mind sharing of course. |

La Rynx
School of Applied Knowledge Caldari State
347
|
Posted - 2015.08.17 21:03:12 -
[20] - Quote
Steve Ronuken wrote:Ahh, the old 'scripting language' chestnut. It's a total red herring. If you're not using Bash or powershell, you're probably not using a scripting language
The terminology you're actually looking for is compiled vs interpreted.
Of course, then you you get into the more complicated territory of byte-code compilation. Which is what happens with CPython. The environment you run it in is important, when defining the answers to questions.
oh my, if you read my post with open eyes, you could see, that i asked, if the code gets compiled. no cigar!
Atomic Virulent : "You can't spell DOUCHE. without CODE."
|

Unsuccessful At Everything
The Troll Bridge
22790
|
Posted - 2015.08.17 23:15:07 -
[21] - Quote
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
6199
|
Posted - 2015.08.17 23:56:53 -
[22] - Quote
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
0
|
Posted - 2015.08.18 04:58:03 -
[23] - Quote
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. |

La Rynx
School of Applied Knowledge Caldari State
348
|
Posted - 2015.08.18 06:45:43 -
[24] - Quote
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
4S Corporation Goonswarm Federation
913
|
Posted - 2015.08.18 10:00:32 -
[25] - Quote
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
3056

|
Posted - 2015.08.18 11:25:19 -
[26] - Quote
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... 
Erlendur S. Thorsteinsson | Senior Development Director | EVE Online // CCP Games | @CCP_Explorer
|
|
|

CCP Explorer
C C P C C P Alliance
3056

|
Posted - 2015.08.18 11:45:34 -
[27] - Quote
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 . 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
349
|
Posted - 2015.08.18 11:59:31 -
[28] - Quote
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
211
|
Posted - 2015.08.18 19:28:04 -
[29] - Quote
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
Sebiestor Tribe Minmatar Republic
225
|
Posted - 2015.08.19 15:02:07 -
[30] - Quote
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. |
| |
|
| Pages: [1] 2 :: one page |
| First page | Previous page | Next page | Last page |