Ai Dreams Forum
Member's Experiments & Projects => AI Programming => Topic started by: Ben.F.Rayfield on November 29, 2015, 07:09:31 AM
There should be a massively multiplayer opensource game that we can build new code into from inside the game - A technical and gametheory challenge
Imagine a million people playing many kinds of games in a single 2d or 3d space, and when someone gets a good idea of how the slime monster could flow its slime better, they write a little (safely sandboxed) code and turn the slime flows dripping off it into a fluid puzzle game, and then somebody else drops in some custom shaped tiny boats and has a race on the waves.
Anything could happen. Rules would be agreed to through software in certain parts of the game instead of enforced in the core. Anything could be changed if you can get other players to click a button, or get their code to agree automatically after looking at it.
Its a challenge in both technical skill and gametheory, to build such a core of a massively multiplayer openended game that anyone can add code to while inside the game, from the tools found in the game. The challenge is extreme, but so would be the openended fun.
I've always liked crowdsourced projects :)
I bet someone would write a nasty virus that fix your points to 0 when you reach 1000000. And then he would ask for things to get it returned back to 1000000. And people would cheat the game, who would prevent them to write the code that slips 2-3 levels up?
A lot of things to worry about in the scenario and as you said, the challenge is extreme. Some security rules should permeate every fragment of the code. Like someone authorize a new level as an administrator and give privileges to others who want to update the level.
Github deals with this problem, there should be a plenty of ideas with code forks, push requests and pulling new changes.
In trade school, I learned about virtual machine based commercial products that have completely eliminated the need for human computer programmers.
As I have said before in the A.I. community, "I don't want to program someone else's program." Meaning, I want to directly program a computer, not a virtual machine which in theory is just going to covertly capture my programming talent, and render it worthless.
Just adding, Ben, these are strictly general comments about the state of computer programming, definitely not a specific criticism of the topic you started. This is an interesting topic. Games are usually for entertainment. I suppose it could be even more fun if every player brought a refurbished laptop to the game running Linux and the programming language of their choice.
Everything should be a game, especially serious things, because thats where people are most creative and efficient. Problem is most games dont do anything useful, but that can be changed. This is the gameful movement.
I agree push requests are needed, but I do it at the immutable binary forest level instead of files, a very simple datastruct I've created but am working on the many ways to use it.
There can be no admin accounts, no code or person with authority over another, because as you said someone would enforce cheating on others. It can only work through democracy or indidividual choice of what parts of the game to combine at that moment, especially with the help of AI to do it fast and automatically by what it predicts we want. These AIs that help us through the many openended choices would themselves be part of the choices in what we together build the computing game into.
Stateful design is dangerous to such a system. Immutable objects and functional programming are stateless so we would only have to handle gametheory of agreeing on the tops (or any node not a dependency of another known) in the forest, since each immutable node is made of 0 or more other immutable nodes (in a forest shape) and you must include such dependencies (shared by many things in the forest) if you include something which needs them. If you cant include such a dependency, you cant include what needs them.
To keep it as simple as possible, I'm using immutable binary forest nodes which have no data in each node except which 2 childs, and they all lead to the same leaf. You can try an early prototype of this in http://sourceforge.net/projects/humanainet (http://sourceforge.net/projects/humanainet) version 0.8 where I've created a very simple type system, lists, key/value events, strings, object oriented properties, event listeners, and a stack that takes an average of 2 node changes per push or pop and log time for random access reading, all as shapes of the immutable binary forest nodes. All of these things are a complete snapshot of the system at every change, similar to diffs.
On my 1.6 ghz (and 1 of 4 cpus) laptop, this runs 2.5 million object creations or lookups per second with dedup, 20 million without dedup, and 130 million reuse of combinations of the same 64k objects.This should allow many people and AIs to play and work together without destroying eachothers data and at gaming speed.
8pla.net - "I don't want to program someone else's program." Meaning, I want to directly program a computer, not a virtual machine which in theory is just going to covertly capture my programming talent, and render it worthless.
Thats why its got to be opensource. When you take only the relevant parts of the best opensource code you see around and do your own thing, it becomes your code even though many people are working together that way. If you cant fork it, its not opensource. If you cant fork it in realtime, its not a multiplayer computer. The computer part is important, instead of being a specific system at the core, so it can become anything groups or individuals want, in whatever ways they want to work together or fork, hopefully more together as it becomes a massively multiplayer game and AI experience.
Do you mean open source, compiled into a standalone program that executes directly on the computer? Otherwise, open source that gets turned into bytecode, is not really open source. Bytecode winds up as just interpretation.
If AI designs new behaviors as neuralnets, you might call the neuralnet equations and learning algorithms source code, but the weights usually have no meaning Humans can understand. Can you explain to someone how to ride a bicycle? Its a bunch of vectors in your brain. As long as these parts that never had a source code form remain modifiable by statistical AI tools, we can all keep modifying the game together. Source code should be required where words can represent the meaning.
Are you talking about playing the game and making an AI that has your "skilled" actions and cues now? Google's Go did that with a huge bunch of skilled players moves, then trained on itself and improved.
With AI, it helps, BUT, ya don't need ta, just make the 1st agent,and he'll learn all on his own and soon startup the 1 world SYStem that take care of us.