(no title)
syeaj
|
8 years ago
Would any sort of actor model language have the raw throughput for a AAA game? I get how this model is nice for the web, for example, but I'm wondering why it doesn't get used for high performance computing (that I know of).
zzzcpan|8 years ago
I would also say that performance wise actor model is usually better, than low level shared memory multithreading, because it enforces locality-friendly contention-free architecture and fundamentally maps better to modern hardware.
[1] https://www.ponylang.org/
[2] http://db.cs.berkeley.edu/jmh/papers/anna_ieee18.pdf
syeaj|8 years ago
chamakits|8 years ago
Who is using Orleans: https://dotnet.github.io/orleans/Community/Who-Is-Using-Orle...
Video presentation on it: https://www.youtube.com/watch?v=7OVU9Mqqzgs
Now if you are wondering about raw throughput for graphics and physics stuff in AAA games, that I don't know. I believe that to be a completely different beast, with different requirements, which may or may not benefit from this paradigm.
macintux|8 years ago
It is designed for robustness, scalability, concurrency, distributed environments. And immutable data. So far as I know, you literally cannot implement a language with mutability on the VM.
So, raw performance will never be its thing.
In general, I think the actor model could achieve high performance, but perhaps only if messaging is syntactic instead of truly distributed with mailboxes, network transparency, etc.
mercer|8 years ago
Am I correct in thinking that this would be pretty okay for most games, AAA or not? Would an FPS be possible (quick updates, small messages)? Or a World Of Warcraft or Sea of Thieves style game with many actors that need sort-of-realtime performance but don't rely on it entirely?
I've been looking into creating a game, and I'm also learning Elixir, so I'm curious what would be realistic when combining both.
dragonwriter|8 years ago
You could do so, several different ways, e.g.:
(1) use the process dictionary,
(2) store data transparently to the new languageās user in ets (or, similarly, dets/mnesia),
(3) use separate (again, hidden from the language user) Erlang processes for mutable cells.
You can't get hig-performance mutability, but you can definitely implement a language with mutability on BEAM.
mapcars|8 years ago
Elixir allows reassignment, of course, in the end, it uses different "Erlang" variables, but the language abstracts it.
kqr|8 years ago
mastax|8 years ago
[1]: https://www.gdcvault.com/play/1022186/Parallelizing-the-Naug...
jrs95|8 years ago
Not saying that other concurrency models don't have the throughput for a AAA game, but when your goal is to get the most out of the hardware of one desktop/console you're going to have different priorities than a server environment.
Thaxll|8 years ago
pjmlp|8 years ago