Hi all, I am working on a project I call PyAGENT. It is a network server that let's mobile python 'agents' enter the machine and execute on it. The environemnt will try to be restricted and secure as possible, as I would like PyAGENT servers to be accessible through the internet.
I created a sourceforge project. For bizarre reason, I call the project Pyggly. While this name is bizarre, there is already a pyagent. PyAGENT and pyagent are fundamentally different things I think. pyagent is for making XML-RPC agents. PyAGENT is a framework for making mobile agents in Python using a server model. It also allows communication between agents through a message queue. But for now it is called Pyggly on SourceForge until I find a better name.
In it's simplest design it allows python scripts to be imported into a host and executed as a process over a socket. I've already got most of this working.
My goal for using PyAGENT is to write a robot game. Robots are python objects and code. They are written in Python. Eventually I would like to have some sort of command language for robot reasoning, or use CLIPS. It is free for all how you implement robot AI. There will be a standard tools for beginners to learn how to make robots. The emphasis on robots is that it is easy to build a robot and learn how to program at the same time.
Robots primarily explore worlds and learn about their environment. They learn to remember where they have been and how to get to interesting places. A robot can have many purposes. It can be a helper robot, which comes along and helps another robot refuel. It can be an explorer robot, mapping out new territory and learning about a new world. Some robots are warriors, and there purpose is to terminate other robots they encounter.This provides an interesting environment for a robot with a purpose to interact in. Some robots are hostile, some are not. Robots should be designed to find out what another robots purpose is, and to react to it.
Robots can communicate. How they communicate is up to the designer. Some robots might not communicate at all. Or some may speak in strange languages (R2-D2). There are no rules how a robot communicates. It simply send a message to another robot in it's language and if the robot understands, it can reply.
The world environment is a very simple landscape. In the world are portals to stores (where you can buy fuel and repair), and to other worlds (hosts). Robots will also be able to find valuable ores (money) and fuel in their environment. Environments will maintain a balance for fuel and ore and continously spawn new ones on the surface. This way a world does not run out of resources. Robots must look through the world to find them. There is no guarantee they will ever return to the same sport again.
Robots should be fundamentally curious. They are continously looking for other robots in their world, and are looking for portals to other hosts, or to stores to buy supplies or get repairs.
There should be a way to track your robot. You should be able to find your robot and find out how he/she is doing. You might want to talk to your robot to encourage it. Maybe there is a way to upload a new intelligence program into your robot too, or this might be considered cheating.
The idea is that even a kid just learning to program can learn to make a robot. I want to encourage robot building to be as easy as possible but also to be a customizeable experience. Robots can be dumb or smart. It depends how much the robot designer wants to put into their robot. Robots will be based on classes which provide all the tools for interacting with the environment. The emphasis of the programming should be on creating the intelligence of the robot and how it reacts to situations. It should give the designer freedom to make their own robot that works the way they want they want a robot to work, but keeping in mind that some people make robots for very different purposes (and could be hostile).
It can also be allowed to restrict violence. A world that has restricted violence prohibits robots from fighting.
If there is anyone interested in joining the project as a developer send me an email. You really must know how to program, at least in Python. Experience with C is also a good thing but not necessary. You really must understand sockets and how to write programs that communicate over a socket. You should also be familiar with basic data structures (lists, queues, stacks). Important is the ability to learn fast and be creative. You must also be somewhat dedicated to the project for at least a month or two. I would prefer to find people who are really interested in the development, and not just passing through.
If you are interested in being a design guru (and I could definitely use someone with more experience to mull ideas over with) or just a project coach, then you really should be a guru who has some time to answer emails and help on the growth of the project. Having experience in writing a robot game like this would be a major advantage and much appreciated, as I would not have to reinvent the wheel each time to create new solutions. In short if you have experience and would like to be a project coach that would be greatly appreciated.
The purpose of robots is to make a simple tool to explore programming. It does not have to be just a simple tool though. It can be used as a framework for creating agents with AI. I would like for it to be used by kids to learn how to program, or also AI researchers interested in creating robots in environments, or by hobbyist that are tired of games like Quake and Doom and want a more challenging game to play with. The primary purpose is to be a tool to learn how to program and experiment with AI techniques (you don't have to be an AI rocket scientist to make a robot, and it's purpose is not JUST for researching into doing AI. Robots are as various as their designers. If you are afraid to fight, build a fast robot with very little armor and guns. If you are a warrior, build a slow warrior with guns and armor. The point is it should be fair that if you don't want to fight, you don't have to. I incorporated fighting into the game to make it more interesting. The purpose of the game is not about fighting. But fighting does add an interesting element to robot design. And if your robot does get blown up, you can leave it there until a helper robot comes (hint hint you can make your own helper robot to go find your robot and fix it). It should be a fun game and not just about blowing things up. In fact there will be an option to completely disengage fighting (leave your guns at the door, please).
Tools I would like to see done on the project: a graphical view of you agent on it's world/host, speech synthesis and recognition for talking to your robot and having it talk to you, experimenting with custom languages for robot instruction, and other ideas.
As for PyAGENT it is the framework for the game. it's purpose is to provide all the tools that host the game. It is a general purpose tool for executing python programs on the host and hosting the worlds. It provides the tools for interaction.
I may just call it PyROBOT and just make it a robot game instead. I thought it would be cool to have two distinct projects in one, one for a mobile agent platform, and one for the Robot game. It is still an open design.