Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Would you play a distributed, programmable MMO?
60 points by vyrotek on July 22, 2010 | hide | past | favorite | 40 comments
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.

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 & REST? And what if we made the game persistent?

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.

The visuals would obviously be basic at first and should be displayable on a webpage.

The game itself could be as simple as a 'player' moving and shooting when it detects another player. You could introduce items, weapons, etc.

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/

Does something like this exist?




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.


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.


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


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


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


Corewar might be worth looking into. I don't think it has hit a degenerative case yet, or if it has, it has lasted pretty long.

The hill (when Corewar is played king of the hill style on the internet) could be considered the environment. Of course different kinds of hills could be envisioned, for example arranging warriors on a grid.


What also tends to happen is that you stumble upon a project after it has existed for a while and there are already AI's with PhD-grade algorithms around, that are impossible to beat without investing a huge amount of time. That tends to demotivate people. It would be nice if you could develop a contest where such a thing is impossible and even an unsophisticated AI wins some of the time, for instance because the context is manipulated such that being sophosticated is far from optimal strategy.


One possibility that would solve both of those problems is periodically changing the rules. Minor adjustments as needed to make sure nobody finds a way to totally exploit the system, and maybe a major monthly rule-change.


Perhaps if one of the games was a simple 'capture the flag' which could reset, it would avoid this problem? You wouldn't be competing against those awesome players all the time. A round would start, 10 players would be selected for each team (randomly or based on pre-organized teams). The actions could be as simple as, Look, Move, Shoot, Take Flag.


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.


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.


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.


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.


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.


I definitely want to play this. Announce it loud on HN if you ever make in progress in building it!


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.


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


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.


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.


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.


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.


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.


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.


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.


I've seen WeeWar before but didn't know they had an API. Looks interesting.

I also wondered if Microsoft had anything in this realm. The thought of company sponsoring the server would be interesting as well. We might be able to get their attention if the central server was written C# and deployed Azure. I have experience with both technologies :)


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.


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.


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.


http://terrarium2.codeplex.com/

Terrarium 2 with source on codeplex.


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.


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


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.


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


  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.


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


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?


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


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


I'd be up for giving it a shot.


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.




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

Search: