Hacker News new | past | comments | ask | show | jobs | submit login
Erlang and First-Person Shooters in online games [pdf] (erlang-factory.com)
117 points by therockhead on June 19, 2011 | hide | past | favorite | 13 comments



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.


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


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.


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...


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.


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


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


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.


> 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"


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.


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


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


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




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: