openai / neural-mmo

Code for the paper "Neural MMO: A Massively Multiagent Game Environment for Training and Evaluating Intelligent Agents"
https://openai.com/blog/neural-mmo/
MIT License
1.57k stars 262 forks source link

mmo architecture #16

Closed shuruiz closed 5 years ago

shuruiz commented 5 years ago

Thanks for developing. After reviewing the code, I have these questions and concerns:

  1. Is there any document that shows the detailed architecture of mmo?
  2. MMO and MMO-client can run on different machine, i.e., one is server, the other is user interface that shows the rendering/training result. Also, it is centralized, which means in MMO all agents face the same "environment". Am I correct?
  3. Is there any limit of maximum number of agent that MMO can run? If the limit exists, how it is determined? Are they determined based on game rules?
  4. Does this repo accept community contributions?
jsuarez5341 commented 5 years ago
  1. What do you mean by architecture? The native API should provide a decent sense of what runs where. If you look at the readme, there's also a list of important classes with functionality descriptions. Most of the code outside of that list is just placeholder for future expansion. It's much smaller than it looks. If you really wanted to get to know the ins and outs of everything important, its probably between 1-2k lines of code.

  2. Technically yes, though I've only tested locally. There's a PR under review that fixes Docker builds -- not sure if anyone has tried remote. It is centralized in the sense that all agents face the same environment[S!] -- depending on the scale you train, there could be anywhere from one to hundreds at train time.

  3. I think there's a spawn cap of either 100 or 128 in the current version. You can remove it if you want, but it won't make a difference. The current game maps don't have enough food to support more agents. If you generated larger game maps (the terrain generator is configurable), you could support more agents. For anything under ~100 CPUs, I'd recommend not doing this -- it's more efficient to run a larger number of small environments. This will almost certainly change in the future.

  4. It's an open source project now. The more community engagement the better! I try to be pretty quick to respond to direct messages on Twitter. I also actively review PRs. If you have ideas, feel free to run them by me as well.