A few months ago I ran a survey to find out which programming-languages people were using with Entity Systems:
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.
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.
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.
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
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)
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:
The form-results are free and open to anyone to view here:
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: