RoverTron: AI sandbox game, spore inspired

Started by
8 comments, last by GameDev.net 17 years, 9 months ago
Hi, Have you guys heard of Robocode http://robocode.sourceforge.net/ This game involves identical tanks which battle on a battlefield. The tanks are controlled by the AI which is written by the players. It is somewhat popular. Ive always thought about taking it further. Story: The human race launches super intelligent self replicating robots into the galaxy. They spread. They are smart and are built to SURVIVE. Picture this: Mars type planet, Players create robot and AI, place them on the planet to do everlasting battle between each other. Other details coming up but the name for this type of game is: Massively Multiplayer Online AI Game, MMOAIG. 3D. The Robots: Light (fast, less space for weapons, cheap) Medium (normal speed, more space for weapons, medium price) Heavy (slow, lots of space for weapons, expensive) Tracks only (at least for the first version) The Tasks: Mine minerals to build weapons, upgrade. Defend, attack, communicate, learn, repair, survive. The Tools: Miner (free) Local Line Of Sight exact radar (cheap) Local Not-Line Of Sight exact radar (medium price) Section rough radar (mediun price) Region rougher radar (expensive) Mortar detector (reports speed direction) Mineral detectors... The Weapons: Standard cannon, variable fire mode, high power = more cost more damage and slower .. low power = less cost less damage and faster Mortar Launcher Sniper Rifle (very slow turn speed, long range, acts as long range localized exact radar) You can place the weapons in different places. The game modes: Free For All (no grouping, disable GetRobotName()) Free for all (with grouping, enable GetRobotName()) Team modes (difficult to get this gameplay right) Robots verses Environment (aliens). Level X robots only. At start you will be given a standard robot which has a miner, standard cannon and Local LOS exact radar. You write the AI for it in .NET. When you mine minerals you can upgrade your robot and add new tools/weapons and then write the code to control these parts. You can close the game, go to work, come home and your robot will have fought all day and have a great story. Other thoughts: Destruction/respawning/rebuilding is something which needs alot of thought. Should the robots be able to self replicate? perhaps another tool? how long should this take? Salvage broken robots? As your robot performs better it will level up (not effecting any of the robot properties, merely an indicator of difficulty) I want the tools/weapons to be different, not better. A small light fast cheap robot can move and dodge better than a heavy expensive robot. Other Interactive features: History - where your robot went, what it did. Watch the battles in glorious 3d/2d. Use website to monitor your robots progress and make changes, upload new AI. Standard robot AI, aggressive, defensive, etc. Video AI/programming tutorials. In client Code editor. Off-line testing mode. I think this would be very popular, robocode is somewhat popular and it doesnt have alot to offer. I hope to make this game available to everyone, even if they have never programmed before. Any thoughts / seggestions are very welcome. Regards [Edited by - Riviera Kid on June 28, 2006 10:34:03 AM]
--------------------------------Dr Cox: "People are ***tard coated ***tards with ***tard filling."
Advertisement
Come on dudes, give me something... good? bad? boring? why?
--------------------------------Dr Cox: "People are ***tard coated ***tards with ***tard filling."
I have thought about makeing a similar game, but with spaceships, so the entire game is in 3D (not just 3D graphics, but 3D movment as well).

One aspect to it was not to have the players code the robots in a programing language (as that could turn people off), but to have a "Block" based system where the player joins blocks that represent different sections of code/commands/variables/etc.

So there might be an "IF" block that allowed the player to link variables or litterals into it and have 2 links off it for the "Then" "Else" conditions. Another command block might be "Scan" with valuse for the Scanner to use, the ange, range, resolution, etc and it would then return (ie: link to a variable) the details of the scan.

This would be more intuitive for player to use than text scripting and can achieve much the same thing (I wonder if you could make something like this for a programming language and then compile it?).

One of the components I was going to include on the Ships/Bots was a processor. The processors would be able to excecute a certain number of Command Blocks each tick and the better the processors included the more blocks would get excecuted. This would have added another chalenge for the Scripters in that the only factor was the functionality of the script, but also the efficiency of it (smaller cade would be better).

Have a look at this version (this is what gave me the idea for the block based scripting): http://roboships.sourceforge.net/
i think a visual programming system would be good for beginners definitely.
Definitely worth having.
However text scripting is necessary for very advanced stuff. So it would be a choice.
--------------------------------Dr Cox: "People are ***tard coated ***tards with ***tard filling."
You should check out MindRover. It has a great "blocks" system for programming battlebots.
I think that the RoboShips game actually stores the scripts as XML files, so you could just edit the XML file directly ofr the more advanced scripting.

But I think that a sufficently advanced block method could do everything that a simmerly advanced text based scripting language could do.

The system I was considdereing useing was that each block had a pointer to the next block (in the case of if statement it would be 2 pointers - one for the true condition and one for the false condidtion). Each block would essentially be a function with the inputs as the requiered variables, etc.

As psudo code:
function BlockAssignVariableInt(pointer VariableObject, int Value)begin      VariableObject.Int=Valueend


or an If statement (you might use overloading to allow for different variable types)
pointer function BlockIf (int Value1, int Value2, char Comparison, pointer ConditionTrue, pointer ConditionFalse)begin      Case (Comparison)           ...           "=":           begin                 if (Value1 = Value2)                 Then                       return ConditionTrue                 Else                       return ConditionFalse           end           ...end


You could design a block system that would give you access to all the same comands that a text based scripting language would do. A scripting language that uses pointers to the next "line" of code will even eliminate the need for a "Loop" command as to create a loop you just point to a previous command (to make a for loop you would just use an if block and a counter).

A block based language will be slower than a text based language, because of the need to use pointers to the next block (like in a linked list), but it would be more intuitave for people to use.
interesting. Sounds like a good idea.

However speed would be a priority because all of the robots would be on the server and all of there actions would be computed there.

How would i implement saya predictive aiming system with a flow diagram?
you would still need to understand the maths.

Really tho, how much easier would it be to use a flow diagram?

i mean,

if(x>y)
{
fire(1)
}
else
{
fire(2)
}

when all the override events are already setup just how hard is it for a beginner programmer to code if's and for's. With a good tutorial its not going to be THAT much harder than a visual system. The logic is still there. And when a visual system gets very large it would be very cluttery imo.

I am going to try a visual system eventually, but for the first few betas it will be text.
--------------------------------Dr Cox: "People are ***tard coated ***tards with ***tard filling."
The big problem with the visual system is that it can get cluttered, but for a beginner programmer the flow of the program can be hard to understand. Although most code will excecute in a linear fassion (ie one cammand after the other), once you put an IF statements in it can get hard to understand, where as witha visual ther are 2 distinct lines that you can see that show the excecution path.

To reduce the clutter you could introduce "Fuctions". All you need to do is have a Block that can call another Block script and return after the excecution of that sub script is done and you have a function call. If you use a linked list of variables you can even pass and return parameters to and from the function.

Quote:However speed would be a priority because all of the robots would be on the server and all of there actions would be computed there.

This was one reason I though of introduceing a limit to the number of code blocks that a robot could execut each tick. If you have a limited number of commands that get excecuted each tick, it will reduce the load on the server (as the entire script wont have to be excecuted each tick). It also puts a limit on the compexity of the scripts, which adds an extra chalenge to the game.
I might get shot for saying this, but have you had a look at gamemaker?

I only mention it because it has such a simple interface which can be used by almost anyone to create "fairly" complex behaviours by means of a simple drag and drop interface. Creating a similar interface to GM would certainly open the game up to a slightly wider audience.
I know someone suggested something similar to this (mindrover), but imho, gm has got it right when it comes to doing things like this, kinda like turning game-programming into a game.
Who says I have to believe in what I stand up for?
Quote:Original post by Temple
I might get shot for saying this, but have you had a look at gamemaker?



hahaha

This topic is closed to new replies.

Advertisement