Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

31

26.07.2009, 01:04

Also irgendwie scheine ich zu blöd für das Framework zu sein, auch wenns ganz gut kommentiert ist ^^
Wo genau soll man denn jetzt seine KI implementieren? in MyPilot, User oder Dummy? :?:

Helmut

5x Contest-Sieger

  • »Helmut« ist der Autor dieses Themas

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

32

26.07.2009, 02:09

In MyNickname.cpp ;) Steht auch ganz oben. Ist aber eigentlich wurscht wo du es implementierst, hauptsache es läuft :)

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

33

26.07.2009, 11:17

C-/C++-Quelltext

1
2
3
Shot* VirtualShot = VirtualGS.Shoot(Me);
if(VirtualShot == 0)//Oh, wir können garnicht schießen

  return K_Left;

Wofür ist diese Abfrage? Ich dachte dafür gibt es GameState::CanPlayerShoot(Me)?

Helmut

5x Contest-Sieger

  • »Helmut« ist der Autor dieses Themas

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

34

26.07.2009, 12:17

Ob du erst CanPlayerShoot(Me) aufrufst und bei true Shoot aufrufst, oder einfach Shoot aufrufst und 0 abfängst, kommt aufs Selbe raus. Gut, außer MaxShots wird zu klein, aber das werde ich erhöhen, falls es nötig wird.

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

hanse

Alter Hase

Beiträge: 472

Wohnort: Wien

  • Private Nachricht senden

35

26.07.2009, 12:22

Wie verstehst du das deterministisch? Heißt das, dass wenn das Spiel zweimal mit den selben Parametern gestartet wird, genau der gleich Spielablauf stattfinden muss, oder das jeder Aufruf von WhatDoYouWantToDoNow, mit den gleichen Parametern, das gleiche Ergebnis zurück liefern muss? Die zweite Möglichkeit würde den Contest wesentlich langweiliger machen.

Atlan123

1x Contest-Sieger!

  • Private Nachricht senden

36

26.07.2009, 12:27

Es geht nur darum, das auf jedem Rechner das Spiel gleich läuft. Soll heißen primzipiell darf die Funktion WhatDoYouWantToDoNow bei gleichen Parametern unterschiedlich reagieren.

Gruß,
Atlan
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." (Bjarne Stroustrup)

Helmut

5x Contest-Sieger

  • »Helmut« ist der Autor dieses Themas

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

37

26.07.2009, 12:32

Also wenn du this als versteckten Parameter mitnimmst musst du schon für jeden gleichen Parameter das gleiche Ergebnis zurückliefern. Da sich FrameNo jeden Frame ändert, sind die Parameter schonmal praktisch immer anders. Wieso sollte das also langweilig werden?
Falls man übrigens Zufallszahlen möchte, kann man auch gerne am Anfang der Funktion srand(GS.FrameNo) aufrufen und dann rand benutzen. Ist ja dann auch deterministisch.

Ciao
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

38

26.07.2009, 13:01

Macht wirklich spaß der contest ;) Und ist eigentlich für jeden machbar.
Das Framework ist auch gut durchdacht und fair. Wirklich gute Arbeit Helmut ;)

Edit: Wie genau soll eigentlich die Auswertung am Ende aussehen? Weil es macht einen Unterschied, ob man als Spieler 1 oder 2 startet, zwar keinen großen, aber wenn ich gegen mich selbst antrete, gewinne ich 23:21. Ich würde vorschlagen, wenn es am Ende zwischen zwei KIs relativ knapp ist, beide nochmal umzudrehen und nachzusehen, wie es dann ausgeht. Wenns dann wieder gleich ausgeht, ist der sieger klar, wenn nicht, kann man ja anhand der punkte entscheiden, und wenn die dann auch noch gleich sind... nunja ^^ dann vllt ein unentschieden oder so :)

hanse

Alter Hase

Beiträge: 472

Wohnort: Wien

  • Private Nachricht senden

39

26.07.2009, 15:08

Zitat von »"Helmut"«

Also wenn du this als versteckten Parameter mitnimmst musst du schon für jeden gleichen Parameter das gleiche Ergebnis zurückliefern.

ah ok wenn this kein "Parameter" gewesen wäre, wäre es imho verboten gewesen z.B. das Verhalten des anderen Spielers zu analysieren, da man immer nur das aktuelle Frame gesehen hätte.

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

40

26.07.2009, 15:10

Verstehe ich jetzt nicht ganz, aber es ist doch verboten, die KI des Gegners zu analysieren, oder? in Sternmanöver.cpp hab ich davon was gelesen.

Außerdem denke ich, geht es hierbei doch darum, die beste KI zu schreiben, und nicht, mit möglichst kreativen tricks irgendwelche schranken zu umgehen ^^ auch wenn es denke ich ne gute leistung ist, die gegnerische KI zu analysieren und das dann auch noch gegen sie zu verwenden. Ich habe schon große Probleme, nicht in die Sonne zu fliegen ;)

Werbeanzeige