A new project for Python

Mr. Neutron nicktsocanos@charter.net
Thu, 22 Aug 2002 04:26:33 -0400


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.