Which languages need Entity Systems libraries right now?

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):

Screen Shot 2016-03-25 at 20.16.56

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:

Screen Shot 2016-03-25 at 20.19.21

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:

http://www.patreon.com/tmachine

6 thoughts on “Which languages need Entity Systems libraries right now?”

Comments are closed.