
Ask HN: Would you play a distributed, programmable MMO? - vyrotek
In college I enjoyed participating in a few AI competitions. Students would develop some basic AI for a robot who could move and shoot, submit the code and then watch everyone's robots battle on a large projector in a digital arena. Very educational and fun.<p>I know there are many open source projects that let you build and compete in these sort of things, but they always seem to be language specific. You can't battle your Java AI against your C# or Python AI. So, what if we all settled on a common language such as JSON &#38; REST? And what if we made the game persistent?<p>The idea is this. A cloud hosted game which is persistent but allows new players to join or leave at any time. To participate you only need to register an account and give it a base URL of where you are hosting your player's AI logic. There would be some documentation on the expected REST URLs that need to be available. This lets you use any language you want to participate. It also allows players to have a database to store past moves or data about the environment. The game server could manage invoking the player's AI based on a turn system or in real-time when needed. A player's AI while waiting for a 'turn' could invoke service calls on the game server to 'look around' and learn about the environment.<p>The visuals would obviously be basic at first and should be displayable on a webpage.<p>The game itself could be as simple as a 'player' moving and shooting when it detects another player. You could introduce items, weapons, etc.<p>Or it could be more complex and similar to this (posted on HN not too long ago):
http://phonons.wordpress.com/2010/06/01/cells-a-massively-multi-agent-python-programming-game/<p>Does something like this exist?
======
patio11
I have participated in a few AI programming competitions (where the AI control
simple programs, robots, ants, etc) and they generally turn into a few weeks
of wonderful ideas followed by discovery of a degenerate case in the rules
set.

(For example, in a beautiful simulation where a single program had to control
a colony of ants who did not have any room for state other than a current
instruction pointer and the input of their senses, someone successfully
identified an algorithm to have each ant figure out which ant they were, and
then execute a pre-planned sequence of moves to wall in the entire enemy base,
faster than any non-degenerate program could possibly counteract it. It was
beauty to behold but it also crushed the life out of the community -- the best
ant has been crowned, everyone else gets to play for second best.

~~~
mechanical_fish
This is, of course, a universal problem in game design. The answer is to
iterate on the rules. I don't play WoW, for much the same reason that I've
never tried heroin, but I have heard the term _to nerf_ ; it was obviously
invented by people whose killer strategies were neutralized by a new iteration
of the rules.

With luck you eventually discover chess or Go: a game with no obvious
degenerate case in the rules. But that takes lots of design work.

My suspicion is that writing AIs is so much work, and the player base is so
rarefied, that there's not quite enough energy to support a game that evolves
quickly enough to be constantly escaping from the degenerate case of the week,
wandering through game-design space in search of the next chess. But I suppose
that could change. There didn't used to be a core audience for a card game
whose rules and cards changed constantly, but now there apparently is.

~~~
Benjo
I love your point about chess and go. Is there any way to objectively evaluate
that a game with no obvious degenerate cases?

~~~
jerf
I am fairly sure that for any non-trivial game that would boil down to a
solution to the halting problem, though I lack time to prove it.

(Or possibly what I think of as the "finite halting problem" somewhat
colloquially; a system that isn't actually Turing Complete because it's finite
and bounded, but shares "enough" aspects of Turing Completeness that it still
means that it's completely computationally infeasible to "prove" the property
in question in the real world. Technically the halting problem on real
computers falls into this class, a program running without IO is technically
on a finite state machine but you're still not going to solve even _that_
halting problem in a world where the bidding opens at 4GB of RAM.)

~~~
mechanical_fish
This is going to be like the second half of a joke about a mathematician and
an engineer walking into a bar....

... but, to objectively evaluate whether a game has a degenerate winning
condition, make it good enough that twelve-year-olds want to play it, then
wait a month or two. ;)

------
skolor
I'm fairly sure most people kick around ideas like this at some point or
another. It would definitely be cool to give a try.

It does have the problem of playability. How do you keep someone's interest
beyond a week or two of this?

My thoughts on the subject have lead to something like this:

Create a fairly persistent world. This means that any action a player can make
will be permanent in the game. It can be something fairly simple, a grid based
game, maybe some resource management. I like the idea of a turn based strategy
game, with ~30s per turn.

Create a point system. How points are won doesn't really matter, but make it
something interesting. Point reset every week. When they reset, the person
with the highest amount of points gets to make a new "rule". This could be
anything from a new ability for a unit to a change in the way the physics
work. It (obviously) has to be tested and verified, but would be deployed
relatively quickly. This process iterates for as long as desired.

Obviously a number of iterations will cause problems of complexity eventually.
My thoughts on the matter have led me to a rather specific idea for a game of
this type, which I think would be incredibly enjoyable to play.

If you're interested, send me an email. I'd be happy to send you a more
complete description of my idea, and if you still like it I'd be up for trying
to implement it. That is true for anyone, not just the OP.

~~~
dpezely
The bit regarding the winner getting to make a new rule has long been tested
since the industrial revolution and likely far before then: In that context,
of course, the new "rule" is essentially a law through lobby efforts, etc.

It becomes a competitive advantage to win early for express purpose of
introducing protectionist mechanisms that would favor your particular
technique or more likely, blocking the approach used by one's greatest
challenger.

This may degenerate to "dirty tricks" early for the sake of an early win.

Therefore, to counteract that tendency:

Consider an "evolving" world. Take a card from artificial life techniques or
randomly permute some attribute of the environment; e.g., terrain might become
a more rocky, introduction of a natural predator, or perhaps switch from land
to sea.

Mythology is rich with scenarios to draw upon.

I'd recommend NOT revealing the change until the round begins! Between rounds,
let participants experiment only with the previous iteration of the world.

------
shabble
This is something I've been thinking about for a long time, albeit with
ridiculous sets of features that are unlikely to ever be practical.

<http://metavore.org/faff/Botlife.txt> is the sketch of what I came up with
there.

The main novel aspect would be that it is essentially an MMO, but there is
_no_ direct control ability; you can only upload new programs to your robots.

~~~
vyrotek
Thats a nice idea, pretty complex. I wonder if the complexity of the game
chosen would scare away people though. I'm not sure I would even know where to
start to build an AI for that. I typically would want to tinker at first (get
a unit moving around) and go from there. Small progress and victories keep
people interested. And like others have mentioned, the challenge will be
finding a way to let advanced AIs play with basic AIs.

~~~
shabble
There were a few ideas that I thought might help with those problems:

1) The goal is primarily to gather/produce resources, not to actually force
combat. Combat is one strategy that could prove beneficial (since you avoid
the cost of mining/production by just taking it from their wreckage), but with
minimal effort, you should be able to outrun/avoid most of these 'pirates'.

2) By employing some sort of hosted code, you can organise some sort of a
market for code snippets/components, encouraging people to share what they
have done in a variety of ways, on teh basis that profitting from it being
used by others outweighs the cost of others using it against you.

3) It doesn't need all that complexity to start, or even in the same game. But
the complexity helps to some extent by making it harder for a single abusable
game mechanic to control the whole system. Most people will focus initially on
developing a good (or just workable) solution to a single aspect.

------
duck
I use to be really big into "Robot Auto Racing Sim" (~ 12 years ago):
<http://rars.sourceforge.net/>

You would write all the logic of your car in a single C program and then race
it against others. It had a visual so you could watch the race or just see the
results. At the time I thought the physics engine was pretty realistic, not
sure what I would think if I went back to it now though. It was a blast to
play with friends.

------
drblast
There are actually thousands of these types of project, almost all abandoned.
One of the longest lived, and perhaps not coincidentally the simplest, is Core
Wars.

I started working on something very similar to what you describe a few months
ago because it's a fantastic idea that I don't think has been implemented well
in a while. It was Java-based but the idea was that you had a team of robots
with 64k RAM and a simple CPU. You could configure robots with different types
of equipment, (radios, weapons, sensors, etc.) that would be mapped to memory
locations for control.

To play you'd write an assembly-language program to control the robot and set
it loose on the world.

You could write compilers and such to compile down to the robot machine
language if you wanted to get sophisticated.

Each "round" would consist of running one machine cycle for every robot in the
world.

The problem I ran into, other than not having enough time to work on it, was
that you could really go down the rabbit hole on "realism." For example, the
radios; should I implement actual antenna propagation patterns and delays, or
should a transmission just be instantaneous and recievable everywhere?

There's a tradeoff between realism and fun, and between limitations of the
world and longevity. If you make it too limited, you end up with gameplay that
essentially favors a single strategy. If it's too complex, only the most
hardcore players will put in the effort to play. I think this is a fundamental
problem with a game like this.

Maybe something like this would be fun and accessible if you eliminated the
competitive aspect of it.

Edit: if you decide to pursue this project and want some (intermittent) help,
send me an email at [my username]@gmail.com

------
rdl
This sounds like Core Wars and Network Tierra combined, both from 15-25 years
ago.

I would definitely play an MMO which let me script and didn't require my
realtime involvement. EVE Online is like that for some of the gameplay
already, but something where everything is through "agents" would be even
better.

~~~
vyrotek
What are you thoughts on the game server itself?

You could open source it and just expect someone to pick it up and host it
somewhere for others to play on. The advantage is the host could make
modifications to the game mechanics itself (just like any other game).

The alternative would be to develop the server with the 'cloud' in mind.
Meaning, there would most likely only be one large game server that perhaps
managed 'instances' of matches. The advantage here is that you avoid
fragmenting an already small pool of players.

------
almost
Sounds like fun :) I really like the idea of having the it communicate with
the BOTS via a REST API. Presumably people would all run them on their own
servers and submit a URL of their bot's interface to the tournament site.

It would have to be turn based otherwise latency would make it very unfair.
Which of course would mean that efficiency wouldn't be part of it much (there
would have to be a timeout of course, but you still wouldn't usually be able
to get an advantage by optimising your code to run really fast).

Having them run on other machines would also mean that collusion and such
between bots would be a possibility if you had games with more than two
players. I think you'd just have to accept and embrace it.

I'm up for getting involved if you want to make this. Email is in my profile.

------
robryan
A civilisation like game could work. Thinking about something like this in the
past I like the idea of something that may run for some days and then have a
winner. At which point it can be modified to remove any game breaking
strategies that may crop up, probably changed enough to that copying the
previous winner won't help. Then give everyone say another week to rescript
their AI.

Possibly something like 30 seconds to 1 minute turns with allowing the server
your querying maybe 5 seconds to return moves. Then you would just need some
way to assess progress. I like the idea to the people can get beaten
relatively fast, just the idea that everyone starts out on a massive map and
bigger civilisations soon start to form by wiping others out.

------
arethuza
I'd _love_ to see a larger scale version of something like Defcon
(<http://www.introversion.co.uk/defcon/>).

Closer to realtime too (rather than a huge multiple) - which would make close
to 24x7 interaction necessary, requiring automation, teamwork, mobile device
interfaces....

Damn - yet another project to think about :-)

Edit: I've just noticed that they are trying to encourage the development of
nuclear war fighting bots within Defcon.

------
Tichy
I think several games like that exist, of varying complexity. Sorry I don't
have names ready :-(

I know WeeWar has an API, but that is probably not the kind of game you have
in mind. I think you mean long running simulations with agents trying to
survive.

There might even be one by Microsoft, not sure if they are language agnostic,
though.

I think there is still room for interesting worlds of that kind.

~~~
ryanelkins
The Microsoft one you are thinking of is called Terrarium. It was built to
help people learn .NET 1.0 but I don't think it's been updated for newer
versions of .NET (currently 4.0). It was .NET specific, meaning you could
write your dll in any .NET language but non .NET languages would not be
compatible.

------
primemod3
Interesting idea. Final Fantasy 12 is my favorite game that allows you to
"script" your characters' moves, but you're only ever fighting against the
computer. Incorporating this into a programmable MMO seems like it could be
very fun, and somewhat parallel to the way stock markets work with everyone
using algorithms to compete against each other.

~~~
justindz
I really enjoyed the Gambit system. It felt a lot, at times, like playing with
other people in that you'd have those "noooooo, don't do that!" moments
(despite them being unanticipated use cases, effectively). You'd also have
your "other players" get more sophisticated over time as you acquired more
fine-grained Gambits in parallel with you getting better at the game.

I definitely think this concept would have legs. Even for an MMO where you
could make a rudimentary party and go do something if the rest of your play
group were asleep during the middle of the day.

------
phaedrus
Look up .NET Terrarium. You programmed behaviors for "bugs" that could either
be herbivores or carnivores. It was pretty amazing - it would serialize
people's AI controller classes and inject them into other players' instances
so copies of them could compete. Sadly by the time I discovered .NET
Terrarium, it had already been abandoned (having served its purpose of
demonstrating the power of .NET serialization). It's a tragedy it was never
open sourced.

Interestingly the ultimate winning strategy was a herbivore that acted even
more aggressively than a carnivore. Any carnivore that wantonly killed
everything would also be wasting its food source, but a herbivore has no such
limitation. Someone programmed herbivores that formed packs to attack
everything & keep the plant for themselves, and it was impossible for anything
else to gain a foothold once bugs with that strategy were in a terrarium.

~~~
DParrott
<http://terrarium2.codeplex.com/>

Terrarium 2 with source on codeplex.

------
astrodust
I'd be interested in something like a "WoW for robots" where you navigate
through some kind of world using an API and control your character and its
interactions all automatically.

If you limit the number of API calls per minute to something reasonable,
should be scalable, too.

------
Bluem00
While it's not what you're asking for, you might be interested in Robocode:
<http://robocode.sourceforge.net/> It has been around long enough to be
'balanced', and even the most advanced strategies are documented by the
community and available for you to improve upon. The community has also
developed a way for people to submit their robots and have them run against
all of the other robots via a distributed tournament client.

The description, from the website: "Robocode is a programming game, where the
goal is to develop a robot battle tank to battle against other tanks in Java
or .NET. The robot battles are running in real-time and on-screen."

------
d0m
What I would really like is a RTS (such as starcraft) that let me play
realtime, but we my macro preconfigured. To explain a bit more, starcraft let
you queue up actions.. (For instance, build this, then go take minerals).
However, suppose there was a script language that you could use and use it in
all your games.. For instance, this script could take care of scouting the
opponent, queuing up workers automatically, etc etc. while you focus mainly on
the high level strategy.

------
bertm
Why not take a reverse engineered Ultima Online server and client, and add
your AI twist to it?
<http://en.wikipedia.org/wiki/Ultima_Online_shard_emulation>

<http://www.runuo.com/index.php>

------
Confusion

      You can't battle your Java AI against your C# or Python AI
    

In things like realtimebattle and the recent Google AI competition, you most
certainly could. This is usually accomplished by routing all commands and
their results via the command line.

------
abecedarius
There have been a lot of answers about the AI-competition aspect. Here's an
attempt at a MUD-style distributed, programmable MMO:
<http://wiki.erights.org/wiki/Den>

------
Mgccl
Good idea. I like games where the rules are simple, but the strategies can be
complex. Like chess. Are there bot vs bot chess games around?

------
madhouse
I do not know whether something like this exists, but it certainly sounds fun
- something I'd probably "waste" a lot of time on.

------
d_mcgraw
Second Life comes to mind, but its not exactly what you're describing here,
but close being user created and all.

------
webgambit
I'd be up for giving it a shot.

------
sabat
I've had this exact thought and may even try to implement it. What I'm
planning is closer to a MOO than an MMORPG or other game type, but we're on
the same wavelength.

