
Erlang and First-Person Shooters in online games [pdf]  - therockhead
http://www.erlang-factory.com/upload/presentations/395/ErlangandFirst-PersonShooters.pdf
======
cageface
I'm surprised Erlang isn't used more often. Out of the box it seems to solve a
lot of the hard scaling problems many business face now. Maybe it's just too
exotic.

I wonder if they could have been as successful with Scala + Akka. They mention
a desire for at least limited static typing at the end of the slides. In my
experience well-defined, statically typed interface declarations can eliminate
a lot of dumb bugs.

~~~
vide0star
We use Erlang at Smarkets.com for a lot of things including a trading exchange

------
yannis
A good background to Erlang is Armstrong's thesis, it really reads like a
popular book <http://www.erlang.org/download/armstrong_thesis_2003.pdf>. He
discusses many of the points raised in the slides.

------
glassx
Nice write up.

Apparently the consensus is that Erlang is amazing for 'lower-level'
infrastructure code but not so great for high-level business code. I wonder if
Reia and Elxir might play a role in changing that...

~~~
getsat
I'm sure they could have done everything in Erlang, but they mentioned that
they only have four developers that do Erlang within the company. Erlang
developers aren't as prevalent as Python/Ruby developers.

------
Luc
Erlang is also used to power Facebook-style social games at Wooga:
[http://www.erlang-
factory.com/conference/London2011/speakers...](http://www.erlang-
factory.com/conference/London2011/speakers/KnutNesheim)

------
getsat
This is really awesome. I had no idea all that stuff was powered by Erlang.
Thanks for the link.

------
thesz
I thought they implemented game network code, scalably. _That_ would be cool.
So I was a little bit disappointed when read that they only keep stats using
Erlang.

Other than that, that's pretty interesting.

~~~
masklinn
> So I was a little bit disappointed when read that they only keep stats using
> Erlang.

Slide 19 lists far more than just stats-keeping:

> Our core server for controlling Python

> – Managing 100,000s of concurrent TCP connections

> – Scheduling/queuing of tasks for python

> – Metrics gathering (SNMP)

> – Presence server(fragmented mnesia)

> – Message passing (nb: this might be the "in-game messaging" service
> mentioned in the presence server slide 21)

> Other standalone game-related servers (expanded on slide 25)

> – Transient in-game data (seems to be a k/v store used for e.g. dynamic chat
> channels)

> – Testing bandwidth (estimation of client bandwidth via blasting UDP packets
> to the server)

> – Ranking leaderboards (real-time rankings, >15m users, built on ets and a
> customized gb_trees)

All of this is listed under "How we use Erlang"

~~~
thesz
I should clarify a bit. I think that contemporary FPS need real-time game
server logic. When I saw link title I thought they finally ported some game
code to Erlang.

All stuff you mentioned has nothing to do with game logic.

It does not require hard real-time response like one required from network
game server.

And yes, I already know that I could use Erlang for non-hard-real-time tasks.

------
willvarfar
I wonder if Go is both the low-level and the business logic - the erlang and
the python?

~~~
cageface
Erlang's support for failover and concurrency is much, much deeper than
anything available in any other language. Maybe Akka + Scala comes close.

~~~
sbalea
Akka is attempting to bring as many Erlang features as possible to Scala.
They're doing a great job, but imho they won't be able to go all the way due
to JVM lacking certain features

