A few months ago I ran a survey to find out which programming-languages people were using with Entity Systems:
https://docs.google.com/forms/d/18JF6uCHI0nZ1-Yel76uZzL1UfFMI21QvDlcnXSGXSHo/viewform
I’m about to publish a Patreon article on Entity Systems (here if you want to support me), but I wanted to put something up on my blog at the same time, so here’s a quick look at the stats.
Overview
So far we’ve had 203 responses, with at least one respondent for each language I included as an option (taken from the 50 most popular langauges globally):
Most respondents ticked 3-5 languages as their “I’m competent in this language”, suggesting quite experienced programmers.
Cleaning the data
Pascal/Delphi. Hmm. I could not find any Entity Systems libraries written in Pascal, and the only game-engines I could find were extremely niche and/or hadn’t seen a release for several years. I don’t know where these votes came from, so I pulled them out into a separate spreadsheet, and looked at them in more detail:
Summary: the people who ticked Pascal pretty much ignored the rest of the form and simply ticked “Pascal for everything!”. They generally claimed not to know any other languages, unlike the other respondents.
I’m assuming there’s some kind of tech in a Delphi library somewhere that’s called “Entity system”, but which means something very different from what we’re talking about here. The words are pretty generic, so that wouldn’t surprise me (if you know of one, please comment – I googled a few times but didn’t find anything substantial. But bear in mind Google hides results they think you won’t like, so it may be easy for others to see).
Personally, I’m ignoring most of the Pascal responses.
Hilights
Everyone knows C++, C#, Java, and C
This is reassuring: Java is the biggest commercial language today, and I expect systems-level (i.e. game-dev) professional programmers to know it.
Likewise, C++ is the biggest commercial language in gamedev, and I expect all mainstream (non-mobile, non-web) gamedev programmers to know it.
C# was a surprise – but I strongly suspect Unity is single-handedly responsible for this.
C … suggests to me that most respondents are veteran programmers, who’ve been programming for at least 15 years. Anyone around that long would have learnt C; anyone who’s been programming 10 years or less is unlikely to have encountered C, as C++ had pretty much wiped it out for new commercial development by then.
Web languages are well represented, albeit less than mainstream gamedev
We see a bit of Ruby, PHP, lots of JS.
Two big presences are Python and JS. Python is the new kid on the block, and Javascript is/was unheard-of in most gamedev. I suspect JS is here because of @richard_lord and his popular Ash framework for ActionScript, which seems to have been popular among web-background people. Both ex-AS coders – who naturally moved sideways to JS as Flash/AS began to fade – and JS coders looking for a framework to port from a similar language.
Most usage of ES is happening in C#
Although half of all respondents know Java, C++, and/or C# … only 8% use ES’s with Java, 15% with C++, and 25% (The winner!) with C#.
C# and C++ desperately need Entity Systems
(Bear in mind there are many open-source implementations in C#, and many MANY in C++)
C++ is especially desperate if we consider how few people are using them already vs actually want to be using them.
For the C++ users, I suspect Unreal is part of the problem: with no meaningful support for languages other than C++, and no modern Entity System that I’m aware of, it might explain the pent-up demand for a C++ solution. Otherwise, I would guess it’s a lot of people with home-grown C++ game-engines who haven’t the time/resource to convert to an ES yet.
Side note: the small group of Unreal Blueprints users all seem to want an Entity System in Blueprints. The sample size is too small to be significant (4 people right now), but it’s enough to suggest polling Unreal users in particular and seeing what response you get.
Current game-engines run in narrow range of langs; devs want much broader range
The game-engines used by respondents overwhelmingly support the classic, old, low-level languages (C, C++) and the biggest commercial modern languages (C#, Java).
…but the langs people wish they supported are vastly more diverse, with demand in particular for Swift, Rust, and Lua.
Conclusions going forwards
TL;DR: If you’re writing about Entity Systems, put your example code in any of C, C#, C++, Java, or Javascript – almost all developers will be happy reading and effortlessly using/porting that code.
If you’re making a new Entity System, and you want to make a significant success, aim for C++ and/or C#.
(although NB: I suspect that a skew towards responses from Unity devs has inflated the C# number a little; to be on the safe side, I’d lean towards C++ for a new engine, if I were you)
Followups…
I’ll leave the survey open. If anyone wants to promote it, and see if we can get a bigger number of replies (1,000 devs would be nice!), the URL is here:
https://docs.google.com/forms/d/18JF6uCHI0nZ1-Yel76uZzL1UfFMI21QvDlcnXSGXSHo/viewform
The form-results are free and open to anyone to view here:
https://docs.google.com/forms/d/18JF6uCHI0nZ1-Yel76uZzL1UfFMI21QvDlcnXSGXSHo/viewanalytics
And, of course, I’ll be using some of this in my upcoming Patreon articles on detailed Entity System design and development. After this survey, I’m inclined to push harder on producing a decent implementation for Unity, supplied as a C# libary that can also be imported to other engines:
6 replies on “Which languages need Entity Systems libraries right now?”
Pascal Delphi is probably related to Entity System for databases from. NET.
I think, the most pascal votes came from the Pascal Game Development Community ( http://www.pascalgamedevelopment.com/content.php ), where I’ve post a link to your survey some months ago.
I agree with Benjamin Rosseaux.
Since Pascal game community (even thou small) is closely gathered around our own webpage posting link to your survey meant that most of Pascal game developers have seen it which can’t be true for game communities that prefer to use other languages because they are more spread out through various different forums.
Is there some tech in Delphi called “Entity system”? As far as I know not and I have been using Delphi for 15 years starting with Delphi 6 and Delphi 7, and then I updated to Delphi XE2 and all newest versions as they come out.
So why did so many Pascal game developers confirmed to use “Entity system” in their games or at least something similar? I would guess that is because the most used Pascal dialect nowadays is Object Pascal which is “Object oriented”. And in “Object oriented” programming it is best to use “Entity system” or at least some very similar concept since “Entity system” itself is “Object oriented”
Now why most of us “Pascal game developers” claimed that we don’t know any other programming language?
I would guess that most of the people that also knew other programming languages have already left Pascal game community because it is easier to find suitable game engines or even code samples in other languages than in Pascal.
Those of us who stayed have either stayed because we prefer Pascal over other languages (few of us) and those who have hard time learning other programming languages like me for example. Now why is it so hard for us to learn other programming languages?
In order for you to understand that you will have to go and make a comparison between Pascal based syntax with syntaxes from other programming languages on your list. I guess you will quickly realize that Pascal syntax has least similarities with other languages.
But many veteran programmers know Pascal. Pascal was created as a starter langauge to help you learn other languages (e.g. it was the first language I learned after Basic). So it’s surprising to see a large cohort of people syaing they don’t know any other languages.
C# popularity is probably caused by XNA initially and MonoGame lately.
Unity3d people are more interested in scripting existing components rather than coding engines from scratch AFAIK so it’s not necessarily the cause.
“Side note: the small group of Unreal Blueprints users all seem to want an Entity System in Blueprints. The sample size is too small to be significant (4 people right now), but it’s enough to suggest polling Unreal users in particular and seeing what response you get.”
Well, as a blueprint user I’ve never seen a good explanation of exactly what an ES would do for me at *that* level rather than at the code level. From my POV, when I’m scripting I shouldn’t have to worry about *how* things communicate or store their data, just that they do.