Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
21.04.2002, 19:48
[RMen]OneStone



Vorsicht: Lang mit viel Theorie
Als ich letztens durch das Internet stöberte, stoß ich auf ein paar Projekte, die das Antreten von selbstprogrammierten Robotoren (im weiteren Bots genannt) gegeneinander zuließen. Dies fand dann immer in einer 2D Umgebung, in einer sehr begrenzten (meist um die 400 * 300 pixel großen) Fenster-Arena statt. Die Bots wurden meist in irgendwelchen (sehr einschränkenden) Skript-Sprachen geschrieben, die einzige Ausnahme die ich fand war Java, welches bekanntlich dynamisches Laden von Klassen, etc. ermöglicht.
Meiner Meinung nach ist 2D Grafik etwas veraltet, und warum sollte man nicht 3D-Grafik benutzen? Dann müsste man sich natürlich von Java trennen, da Java etwas sehr langsam ist. Weiterhin fand ich die Script-Sprachen mehr als abstoßend, QBasic ist anspruchsvoller, also überlegte ich, ob es eine bessere Lösung gibt. Graphische Oberflächen zum erstellen von Bots fallen für mich auch weg (ich mag das nunmal nicht), was bleibt sind Hochsprachen.
Eine aus meiner Sicht sehr gut geeignete Hochsprache ist dafür C++, da schnell und objektorientiert. Da man mit C++ jedoch nicht, wie in Java, dynamisch Klassen oder Code laden kann, entschied ich mich für DLLs. Der End-Nutzer würde dann eine komplett exportierte Klasse, die von CBot abgeleitet ist, schreiben und in die DLL packen. Dies ermöglicht es auch, trotz meiner Vorliebe für C++, andere Sprachen zu benutzen.
Zurück zum Spiel; damit das ganze nicht langweilig wird, kann man im Internet seine Bots in Multiplayer Arenen gegeneinander antreten lassen und einige Einflüße nehmen, zum Beispiel könnte ein Eventhandler onUserEvent(...) in die Klasse CBot implementiert werden, der von den Entwicklern dann überschrieben werden könnte. [read answer, Zeichenbegrenzung]

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 21.04.2002 um 19:51 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
21.04.2002, 19:48
[RMen]OneStone



Dies macht es möglich die Bots auch zu steuern, dennoch sollte das Hauptziel sein, seine eigene KI zu entwickeln.
Die Arenen sollten mehr sein, als nur einfache Kästen, in denen man kämpft, mit Arenen sind viel mehr komplexe und dennoch überschaubare Levels gemeint, die jedoch nicht zu verschlungen sind.

Meine Frage an euch: Was haltet ihr davon, bzw. wer wäre bereit mitzumachen?

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
002
21.04.2002, 19:57
Tubgirl



Das klingt hochinteressant
Bin richtig froh mich im Forum verklickt zu haben ;)
Braucht's wen, der eine Arena konstuiert?

--

zum Seitenanfang zum Seitenende Profil || Suche
003
21.04.2002, 20:06
Sonium



Ihr sprecht sicher von http://robocode.alphaworks.ibm.com/home/home.html
Aber es soll ja auf die KI ankommen nicht nicht auf hübsche Grafik.

--

---------------------------------
www.killerlevels.de Editing mit Quake III Arena, Urban Terror, Elite Force

zum Seitenanfang zum Seitenende Profil || Suche
004
21.04.2002, 20:13
[RMen]OneStone



@BlackAvenger: Davon sprechen "wir" (bis jetzt eigentlich ja nur ich =]) unter anderem. Nur bei meiner Version soll es auch ein wenig auf die Grafik ankommen, ich habe ja oben mein eigene Konzept (auch wenn es auf anderen basiert) präsentiert, und mich nicht nur ausschließlich auf diese Seite berufen.

@-Sir_Pepe-: Natürlich, aber bis dahin ist es noch lang. Wenn du dich am weiteren Verlauf interessierst, PM me! Aber das wird bestimmt nicht mappen à la WC (oder Hammer) sondern etwas komplexer, soll ja kein Kult-Game wie HL werden, sondern die Möglichkeit bieten, dass sich Programmierer messen.

Als Vising-System hatte ich mir zuerst ein Tile-Set System überlegt, aber das ganz schnell wieder verworfen, da die Arenen ja nicht alle gleich aussehen sollen. BSP Trees scheiden eigentlich ja auch aus, da es sich hauptsächlich um nicht verwinkelte Outdoor-Level handeln soll => keine Vis-Blocker.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 21.04.2002 um 20:15 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
21.04.2002, 20:35
Tubgirl



Was auch immer das wird: Ich mach das! Verlass dich drauf. Dazu isses viel zu interessant.
Mal schauen wie sich das entwickelt...

--

zum Seitenanfang zum Seitenende Profil || Suche
006
21.04.2002, 20:45
[RMen]OneStone



Ok...
Ich habe mich während der letzten 10 Minuten (Star Wars - Episode I) dazu entschlossen dieses Projekt umzusetzen, egal wieviel es kostet (mental (!), Geld hab' ich nicht). Ich werd' mich in den nächsten Tagen mal um die Web-Site kümmern. Bitte immer schön weiter posten, ich bin für alle Anregungen dankbar.Jeder der jetzt schonmal geschnuppert hat, schicke mir doch eine PM (Private Message),

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
007
21.04.2002, 21:26
hausi



Hatte sowas schon mal vor ca. 3 Jahren vor zu machen, ist dann aber nier zu Stande gekommen. Kannst du mir mal ein paar Links zu solchen "Tools" geben? Würde mir das gerne mal anschauen...
[Edit]
Würde mich als BETA-Tester melden :D
[/Edit]

--


Dieser Beitrag wurde am 21.04.2002 um 21:26 von Superhausi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
22.04.2002, 14:37
[RMen]OneStone



Zitat:
Schwarzer Avenger schrieb:
Ihr sprecht sicher von http://robocode.alphaworks.ibm.com/
Aber es soll ja auf die KI ankommen nicht nicht auf hübsche Grafik.

Ich bin ab heute um 16:00 Uhr eine Woche auf Exerzizien (Meditieren und Beten von der Schule aus [Erzbistümliche Schule]). Am Freitag komm' ich wieder, bis dahin diskutiert mal schön. ;)

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
009
22.04.2002, 20:42
Pa



nette idee, dann muss ich mich doch noch in C einarbeiten .. :P

ich fänds ohne manuelle steuerung viel interessanter, so als ne art spectator zuschauen was seine KI gerade macht (oder halt nicht :P) und jeder kann vorgegebene waffen einbauen, aber halt nur 1 Waffe, 1 Verteidigung, usw
und jeder bastelt sich seinen eigenen Bot mit eigener KI!!

greez Pa

--

_______________
cooldata.org - real bugware

zum Seitenanfang zum Seitenende Profil || Suche
010
22.04.2002, 20:47
Sonium



Wenn du das wirklich ganz alleine durchziehen willst: RESPEKT
Ich würde dich gerne dabei unterstützen, auch wenn ich warscheinlich nicht so viel kann :/ Hab auch schon Ideen:

1. Oberste Regel: Es muss einfach besser gesagt, skalierbar sein. D.h man muss mit 5-10 Zeilen code einen einfachen Bot bauen können. Das ist wichtig für ein schnelle Erfolgserlebniss.

2. Es muss einen Server geben auf den Jeder seine Bots uploaden kann und auf dem die Teile automatisch gegeneinander Antreten. Dabei ist eine schöne Grafische darstellung unnötig, es reicht eine Konsolenanwendung. Hauptsache es geht schnell. Für einen einigermaßen gerechte Wertung solltes du mindestes 10-20 Kämpfe verwenden, da der Zufall erfahrungsgemäß eine recht große Rolle spielt

3. Auf dem Client sollte dafür die Grafische Darstellung um so schöner sein. Ein nettes Feature wäre wenn man sich die aufgezeichneten Kämpfe vom Server dort in Ruhe ansehen und analysieren kann.

4. Terrain: Vieleicht führt es zuweit, aber trotzdem Mal eine Idee wert. Man könne die Bots auf 3d Terrain kämpfen lassen. Das führt dann natürlich zu der Frage: Soll der Bot das Terrain schon von Anfang an kennen oder ein system mit Sichtweite?

--

---------------------------------
www.killerlevels.de Editing mit Quake III Arena, Urban Terror, Elite Force

zum Seitenanfang zum Seitenende Profil || Suche
011
26.04.2002, 12:52
[RMen]OneStone



Zitat:
Wenn du das wirklich ganz alleine durchziehen willst: RESPEKT

Würde ich hier posten, wenn das ein Alleingang werden sollte? Ich suche noch Hilfe. Ich denke trotzdem, wenn wir das durchziehen, haben wir einiges an Respekt verdient.
Zitat:
ich fänds ohne manuelle steuerung viel interessanter, so als ne art spectator zuschauen was seine KI gerade macht (oder halt nicht :P) und jeder kann vorgegebene waffen einbauen, aber halt nur 1 Waffe, 1 Verteidigung, usw
und jeder bastelt sich seinen eigenen Bot mit eigener KI!!

So war das auch eigentlich gedacht, aber wer will kann halt einen Event-Handler für User-Events in seinen Bot einbauen.

Zitat:
1. Oberste Regel: Es muss einfach besser gesagt, skalierbar sein. D.h man muss mit 5-10 Zeilen code einen einfachen Bot bauen können. Das ist wichtig für ein schnelle Erfolgserlebniss.

Nein! Ich will keine billige Script-Sprache, man soll alle Möglichkeiten einer Hochsprache nutzen können. Da es jedoch so etwas wie ein BDK (Bot Development Kit) geben wird, kann man schon etwas mit kleinen Änderungen erreichen.

Zitat:
2. Es muss einen Server geben auf den Jeder seine Bots uploaden kann und auf dem die Teile automatisch gegeneinander Antreten. Dabei ist eine schöne Grafische darstellung unnötig, es reicht eine Konsolenanwendung. Hauptsache es geht schnell. Für einen einigermaßen gerechte Wertung solltes du mindestes 10-20 Kämpfe verwenden, da der Zufall erfahrungsgemäß eine recht große Rolle spielt.

Währe auch möglich, ich dachte eher daran, das zwei Clients sich bei Interesse verbinden und direkt gegeneinander grafisch antreten.

Zitat:
3. Auf dem Client sollte dafür die Grafische Darstellung um so schöner sein. Ein nettes Feature wäre wenn man sich die aufgezeichneten Kämpfe vom Server dort in Ruhe ansehen und analysieren kann.

s.o.

Zitat:
4. Terrain: Vieleicht führt es zuweit, aber trotzdem Mal eine Idee wert. Man könne die Bots auf 3d Terrain kämpfen lassen. Das führt dann natürlich zu der Frage: Soll der Bot das Terrain schon von Anfang an kennen oder ein system mit Sichtweite?

Das 3D Terrain war von Anfang an geplant (s.o.), aber sie haben nur ein bestimmtes Sichtfeld: 90° x 45° x 1000m.

Ich setz mich dann heute mal an die Homepage. Vielen Dank für euer Interesse, und postet fleißig weiter.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 26.04.2002 um 12:53 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
012
26.04.2002, 19:51
Sonium



1: Scriptsprache hab ich nicht gesagt. Scriptsprache find ich auch total schwachsinnig. Ich lern doch nicht extra eine andere Sprache nur für ein Spiel ;) Ich meinte damit dass man zum bespiel nur seinen eingenen C++ Code in einsetzen braucht:
Quellcode:
void run()
{
   moveForward(50000);
   turn(-50000);
}

onScanTarget()
{
   fireRocket();
}

Das versteh ich unter einfachem C-Code

--

---------------------------------
www.killerlevels.de Editing mit Quake III Arena, Urban Terror, Elite Force

zum Seitenanfang zum Seitenende Profil || Suche
013
27.04.2002, 13:37
hausi



Ich habe deinen Code komplimiert und habe Fehler bekommen. Was habeich falsch gemacht????????????? *fg*
Klingt ganz gut... Würde aber sagen, dass es eine Script-Sprache wird. Dann braucht man schon keine kommerziellen Compiler etc. mehr. Und C ist nicht so schwer zu interpretieren...
Ev. würde ich mich sogar mal ransetzen und nen C-Interpreter schreiben, der die Grundlegenden Kontrukte, Variablen etc. kennt... Aber nur, wenn ich mal Zeit habe... (In den nächsten 2 Wochen sicher nicht)

--

zum Seitenanfang zum Seitenende Profil || Suche
014
27.04.2002, 13:39
Archangel



Zitat:
Dann braucht man schon keine _kommerziellen_ Compiler etc. mehr

ich sach nur gcc

wofür also nen interpreter schreiben ?

--

Mar 01 01:10:13 <voice> jo
Mar 01 01:10:40 <voice> bis dann ^^
Mar 01 01:11:20 <Archangel> jo
**** ENDING LOGGING AT Tue Mar 1 01:58:13 2005

zum Seitenanfang zum Seitenende Profil || Suche
015
27.04.2002, 13:44
hausi



Was ist der Vorteil, wenn du das Compilest? Wenn du Skripts nimmst, hast du ganz klar den Vorteil, dass alles OpenSource ist.
[Edit]
Das erste war eher ne rethorische Frage...
[/Edit]

--


Dieser Beitrag wurde am 27.04.2002 um 13:44 von Superhausi bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
016
27.04.2002, 16:44
Rayk



Wie wärs wenn der Spieler in seinem Code auf unveränderbare Standartprozeduren zurückgreifen wie z.B. laufen, springen, schießen, zuschlagen, drehen, ducken ... und zu ihnen jeweils bestimmte Argumente wie z.B. bei der Sprungprozedur: Sprunghöhe, Sprungweite und Richtung angeben würde. Diese Standartprozeduren könnt man sich dann auf der Gameseite besorgen. So könnte jeder einfach Bots schreiben.

--

ICQ : 293840958

zum Seitenanfang zum Seitenende Profil || Suche
017
27.04.2002, 19:38
Sonium



Zitat:

Wenn du Skripts nimmst, hast du ganz klar den Vorteil, dass alles OpenSource ist.

Ob das ein Vorteil ist wage ich ernsthaft zu bezweifeln. Ich bastel doch nicht Stundenlang an irgendwas hin um mir einen Vorteil zu verschaffen, nur dass der nächste alles abschreibt und mein Vorteil wieder weg ist. Wenn ich es dann doch Veröffentlichen will, kann ich immer noch den Code rausrücken. Aber man sollte auf keinen Fall dazu gezwungen werden.

--

---------------------------------
www.killerlevels.de Editing mit Quake III Arena, Urban Terror, Elite Force

zum Seitenanfang zum Seitenende Profil || Suche
018
28.04.2002, 14:29
[RMen]OneStone



Nette Ansätze...
Folgender Code währe ein Beispiel (nur ein Beispiel, nicht für später benutzen, oder behaupten "Vor drei Monaten hast du geposted..."):
Quellcode:#include <aiw/util.h>
#include <aiw/bot.h>

#pragma comment(lib, "aiw.lib") //ich weiss, evil.

class CMyRobot : public CAIWBot
{
void onEnemySpotted(enemy_t *pEnemyInfo)
}

void CMyRobot::onEnemySpotted(enemy_t *pEnemyInfo)
{
Rotate(VERT, UTIL_GetRadiansTo(GetRobot(pEnemyInfo), pMe, VERT));
Rotate(HORZ, UTIL_GetRadiansTo(GetRobot(pEnemyInfo), pMe, HORZ));

Move(DIR_FW, 128);
FireRocket(R_CLASS_HEAVY);

UTIL_PrintConsole(PRIOR_DEBUG, UTIL_VarMsg("Enemy %i attacked.", pEnemyInfo->iBotID));
}

Das soll nur das grobe Prinzip zeigen!!!
Solche sachen wie Move wollte ich als final Member-fuktionen in CAIWBot einbauen.
Was dieser Bot machen würde, wenn er einen Gegner sieht:
- sich zu ihm drehen
- 128 units auf ihn zufahren
- eine Heavy-Rocket auf ihn abschiesen
Alles klar? =)

Ich hab' mir übrigens doch mal überlegt kommerziellen Space bei byte-camp.net für das Projekt zu holen. Habt ihr Erfahrungen mit byte-camp.net?

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/


Dieser Beitrag wurde am 28.04.2002 um 14:35 von [RMen]OneStone bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
019
28.04.2002, 18:11
Sonium



Wie wärs fürn anfang mal mit Sourceforge.net Da bekommt man doch auch Webspace? Hast du das Projekt jetzt schon begonnen?

--

---------------------------------
www.killerlevels.de Editing mit Quake III Arena, Urban Terror, Elite Force

zum Seitenanfang zum Seitenende Profil || Suche
020
28.04.2002, 18:38
[RMen]OneStone



Danke für den Tipp BA!
Das Projekt ist insofern angefangen, als das die Grundlagen der 3D-Engine schon stehen und ich schon ein bisschen mit einem Interface am rum-experimentieren bin. Den Source könnt ihr natürlich direkt downloaden, wenn die Site up ist.
MfG, Georg

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
021
28.04.2002, 21:58
Sonium



Nungut. Wie planst du denn das der Bot aussehen soll? So wie bei Robocode mit Radar-Scanner? Dann nochmal zurück zum Online-Duell System:
Wir müssen dabei einplanen, dass es Anfangs wenig User geben wird. Deshalb ist es auch entsprechend schwer, dass sich zwei Treffen und ihre Bots gegeneinander kämpfen lassen. Für spätere Zeit ist das natürlich ein nettes Feature. Aber für den Anfang würde ich die Client-Server Lösung vorziehen. Das sind meine Erfahrungen mit Robocode, mit dem ich mich einige Zeit beschäftigt habe.

--

---------------------------------
www.killerlevels.de Editing mit Quake III Arena, Urban Terror, Elite Force

zum Seitenanfang zum Seitenende Profil || Suche
022
29.04.2002, 08:04
[RMen]OneStone



Die Bots sollen einfache 3D Modells von volgenden Fahrzeugen werden (natürlich nett beskinnt):
- HummVee (Jeep mit 9mm Gewehr)
- Medium Tank
- Heavy Tank

Das mit dem Client 2 Client soll so aussehen:

Quellcode:                                     +---------------------------+
                                     |           Master Server         |
+-----------------+         |                                      |               +-----------------+
|       Client #1     |-------|---------------------------|-----------|       Client #2     |
+-----------------+         +---------------------------+               +-----------------+

Das heisst, das sich zwei Clients zum Master Server verbinden, ihre gegenseitigen IPs zugeschickt bekommen und anfangen könnn zu spielen.

--

georg-wicherski@pixel-house.net | http://www.pixel-house.net/ - Coding Resource| http://www.google.de/

zum Seitenanfang zum Seitenende Profil || Suche
023
29.04.2002, 13:57
Rayk



Oder man könnte ein Championsystem benutzen:

Der Champion-bot-code befindet sich auf den Server der Spieler kann seinen Bot dann gegen diesen antreten lassen.
Wenn der Spieler gegen den Champion gewinnt, wird sein Bot als neuer Champion auf den Server hochgeladen.

So wäre das Problem behoben das sich so selten welche treffen.

In einer Datenbank werden dann alle Kämpfe und Ergebnisse festgehalten (vieleicht auch Replays?).

Was haltet ihr von der Idee?

--

ICQ : 293840958

zum Seitenanfang zum Seitenende Profil || Suche
024
29.04.2002, 17:09
Sonium



Die Idee ist super. Aber warum immer nur ein Bot auf dem Server uploaden? Ich bin für alle uploaden und als Ergebniss eine Rangliste :)

Sichtfelder:
a: Rundum Sicht mit bestimmten Radius
b: Radar mit theoretisch unbegrenztem Radius

Wenn schon verschiedene Fahrzeugklassen bin ich für follgende:

Jeep: mittlere Geschwindigkeit, mittlere Panzerung, mittlere Feuerkraft;
Tank: geringe Geschwindigkeit, hohe Panzerung, hohe Feuerkraft;
Heli: hohe Geschwindigkeit, niedrige Panzerung, mittlere Feuerkraft;

Sichtfelder:
Jeep: geringes Sichtfeld
Tank: Radar Scanner
Heli: mittleres Sichtfeld

Wenn es mehrere Klassen gibt ist es wohl klar, dass es dann auch Teams gibt oder?

Und da gehets dann aufgrund der Fähigkeiten der einzelnen Fahrzeuge richtig mit Taktik los :)

--

---------------------------------
www.killerlevels.de Editing mit Quake III Arena, Urban Terror, Elite Force

zum Seitenanfang zum Seitenende Profil || Suche