Tumbolia

From MorphixWiki

Jump to: navigation, search

rotrvidarc Yet Another Project Idea I've been wanting to get noted down for some time.

Tumbolia concerns the interaction of agents in a virtual world, not unlike 3D RTS/RPG or MMORPG games, in a manner resembling CoreWars . For this reason I've been looking at various GraphicsEngines, as I'm not someone who would enjoy building one from scratch, although the difference between engines isn't large enough to really matter much.

The goal of the project is vast: to experiment with various forms of agents and game AI in a virtual world. The world allows a number of ways that agents can interact.

* movement
* communication with other agents (orders, trading and negotiation, gossip, politics, reproduction, etc)
* fighting, stealing, assassination
* eating/consuming
* working (farming, mining, construction)

The world itself runs on a central server, with clients (agents) being able to connect at random. Ideally a server would be able to host hundreds of clients, but for this to work the code of each agent would have to be run locally on the server (lag with a few hundred different clients would be quite unbearable).

For this reason the code of clients would be a scripting language (duh), probably Python or something, that is sent by the client to the server at the 'birth' of the agent. The client would receive updates on the state of the world so that the user can view the performace of 'his' agent(s) in near real-time, while not negatively effecting the performace of that agent. 'Agent goals' could be living as long as possible, gaining as much in-world currency as possible or killing as many agents of a certain alignment. Clearly, agents would need to specialize, and that's the whole point.

Input would be limited to the vision of an agent (haven't decided if this would be a simple radius around the agent or if it would be valid to go for a half-circle vision with proper Line-of-sight), in combination with communication and actions done to the agent. Agents would have to perform an action within a certain timeframe (1s or something), failing to do so would mean not performing an action for the next timeslot. Code would naturally have to be run in a VM-like environment. Agents would have a few common variables (health, alignments, currency, vitality, dexterity, possibly more RPG-like variables like intelligence, wisdom and charisma). Agents would need to keep track of locations, remember various agents and agent types. Agents would have to adapt to a changing world, with new types of communication and actions being introduced 'on-the-fly'.

Using these rules, it would be interesting to have agents fight out battles, create societies and form and break alliances. A 'real' player king might even be able to give general orders on a strategic level, with NPC's handling tactical deployments, but the goal of the project would be to see if 'emerging' intelligence would be possible on a primitive level, similar to how simple ants working together create a thriving society.

The name Tumbolia comes from a remark in Hofstadter's book 'G�del, Escher, Bach'. It is the world where hiccups go after you got rid of them. It probably also has collected a lot of single socks. The big question however would be: if an agent dies in Tumbolia, where does it's soul go? Would agents in Tumbolia ever be able to ponder the previous question for themselves? Would they ponder about the existance of a GOD? Would they be able to make their own 'Tumbolia'?

I need a beer.



I've had it. After fooling around for a whole weekend with Worldforge and Arianne, it's clear that both won't go anywhere this century. Both projects have a serious amount of NIH-ness. Of course, my own NIH-ness can be frustrating, but I'd like to see how far I can get using existing projects.

Proposed components:

* Python (both client- and server-side)
* Twisted (networking)
* SqLite / SqlAlchemy (persistance)
* Python-Ogre (client-side engine)

Proposed framework:

* Realm server (maintains a list of World servers, useraccounts in the case of PCs)
* World servers (each maintains a certain part of the realm. clients connect and disconnect to world servers depending on their location. "Zone-less" transfer would be fairly hard, but this allows P2P-distribution of World servers and offer better scalability. Maintain users, npcs and objects currently in their zone of control)
* NPC/Mob server (would ideally be situated on or near the World server. Ability to offload AI-control)
* Quest server? Media/Download server?

Other lill' bits:

* Agents use actions to change their world
* Agents get updates (periodically/heartbeats?) of their surroundings
* Worlds should be create-able via an editor (map, objects, NPCs)
* Worlds should share a single set of rules (base stats of objects)
* Worlds maintain the current stats of all agents. During world-transfer, these stats would have to be transfered with them
* Realms should maintain the relations between Worlds. World servers should necessarily be reliable, adding redundancy would be vastly more complicated

Time for sleep. I know, MMO-worlds are impossible to create on your own. This is just a personal itch I really want scratched. I might drop this 2 weeks into development.

Then again, Morphix didn't turn out that bad either!

Personal tools