Robocode
# Robocode

Robocode ist ein Open-Source-Programmierspiel, bei dem virtuelle Roboter auf einem Spielfeld gegeneinander kämpfen. Entwickelt wurde es von Mathew Nelson (ursprünglich von IBM), zurzeit ist Flemming N. Larsen Hauptentwickler und nimmt Aktualisierungen und Bugfixes vor. Weiterentwickelt wird es von der Community.

Es wurde entwickelt, um die Programmiersprache Java im spielerischen Umgang erlernen zu können. Aufgrund der einfachen Bedienung und dank der mitgelieferten Beispiele kann schon in wenigen Minuten ein simpler virtueller Roboter (im Englischen kurz: Bot) entwickelt werden.

## Das Spiel

Die Spieler schreiben die Software für einen virtuellen Roboter (einen Panzer), welcher dann gegen andere Bots (von anderen Mitspielern und daher mit anderer Software) auf einem virtuellen zweidimensionalen Schlachtfeld antritt. Die Bots können sich bewegen, schießen und bestimmte Variablen ihrer Umwelt wahrnehmen. Die besten Bots haben deshalb auch hunderte Zeilen Softwarecode und verfolgen bei ihrer Siegstrategie so unterschiedliche Ansätze wie statistische Analysen, ereignisbasierte Routinen oder ein künstliches neuronales Netz.

Bei dem Spiel geht es darum, den eigenen Panzer so zu programmieren, dass er so wenig wie möglich getroffen wird und selbst so oft wie möglich die Panzer der anderen Spieler trifft. Gewonnen hat, wessen Roboter als letzter auf dem Spielfeld zu verbleibt oder, in Teamspielen, alle Roboter der gegnerischen Teams vernichtet hat.

Das Spiel ist kein Online-Spiel, es ist also nicht möglich, Partien über das Internet auszutragen. Man kann aber eine Vielzahl an Steuerprogrammen (die teilweise sogar als Open Source vorliegen) im Internet finden, welche man dann auf seiner lokalen Maschine ausführen kann. Die Steuersoftware läuft in einer abgeschirmten Umgebung, d. h., es bestehen keine Sicherheitsrisiken beim Ausführen fremder Binärdateien. Lässt man die eigene Software gegen die fremde antreten, lässt sich die Effektivität der eigenen Software testen.

## Größenbeschränkungen

Um Programmierer dazu zu zwingen, den Funktionsumfang ihrer Bots einzuschränken, gibt es verschiedene Roboterklassen, die sich durch unterschiedliche Größen der Binärdateien auszeichnen. Auf diese Weise bleibt es auch Anfängern offen, sich mit etablierten Robocode-Spielern zu messen.

Man unterscheidet:

* Megabots ohne Größenbeschränkung
* Minibots mit weniger als 1500 Bytes
* Microbots mit weniger als 750 Bytes
* Nanobots mit weniger als 250 Bytes

## Ligen

Es gibt mehrere Robocode-Ligen, die bekanntesten sind:

### RoboRumble@Home

RoboRumble@Home ist eine ständige Liga, die drei verschiedene Disziplinen in allen Klassen austrägt. Die Disziplinen sind:

* 1-on-1, wobei nur 2 Roboter auf das Spielfeld gelassen werden
* melee, eine Massenschlacht mit mehr als zwei Robotern; wer als letzter übrig bleibt, gewinnt
* team, Gruppen treten gegeneinander an.

In den Modi 1-on-1 und melee tritt jeder Roboter mindestens einmal gegen jeden anderen an. Im Team-Modus scheiden Teams nach einer Niederlage aus (K.-o.-System).

### Robocode Little League

Die Robocode Little League war spezialisiert auf größenbeschränkte Bots. Die RLL ist momentan nicht mehr aktiv.

