Banner left   Banner center   Banner right

Germanenglish Home · News · Diary · Screenshots · Documentation (Wiki) · Downloads · Guestbook · Forum

Home · Benutzer registrieren · Suchen · Statistik · FAQ · Benutzerliste

Zur Zeit online: keiner ausser dir

 X-Force - Fight For Destiny - Forum —› Verbesserungsvorschläge/Ideen —› Sichtberechnung

Autor Mitteilung
verfasst am: 27.11.2011, 00:33 · Edited by: Kamor
Registrierdatum: 20.07.2005, 00:01

 Beiträge: 203
klickst du hier

http://s14.directupload.net/file/d/2721/gr7yvxnf_jpg.htm

Da wo der gelbe Kreis ist, bzw. der Mauscursor drauf zeigt steht ein Alien.

Seht ihr es? Nein? Ich auch nicht.

Bitte, bitte sagt nicht, das das Ok ist und argumentiert mit irgendwelchen Bäumen, wo die Äste seitlich herausragen, bzw. der Schatten vom Baum durch die Sonneneinstrahlung und den Stand des Mondes... Ne Spass beiseite.

Hier muss echt was getan werden. Wie soll man darauf basierend eine vernünftige KI legen, bzw. als Spieler ein sauberes strategisches Game hinlegen? Da muss echt was getan werden. Auch wenn ich aus einem Fenster gucke, bzw. in einen Raum stehe und eine Küchenfront entlangschaue. = Katastrophe

Bei Kreks hatte ich auch noch die Situation, das ich 2 Felder entfernt und ein Feld seitlich ein feindliches Alien nicht anvisieren konnte (keine Schussbahn) weil da noch ein Alien vorstand, welches ich aber nicht gesehen habe, weil rechts neben mir irgendein Küchengerät stand. Also das gleiche Problem, wie im Screen kann dann auch noch bewirken, das man auf Aliens die hinter den nicht zusehenden Gegnern stehen nicht mehr schiessen kann, obwohl man sie sieht.

Hier sollte man echt eine sehr hohe Priorität für ansetzen, weil in der derzeitigen Situation selbst die beste KI-Logik da nichts reissen kann, wenn Sicht und Schusslinieberechnung noch so chaotisch sind.
verfasst am: 27.11.2011, 01:36 · Edited by: Natter
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Hmm, die Frage wäre jetzt natürlich, woran das liegt. Hat das Alien keine Animation, wurde in der Karte versehentlich eine unsichtbare Mauer gesetzt, wurde im Tileset der Bereich des Baumes zu groß gewählt? Ich würde jedenfalls vermuten, dass die Probleme an der Karte bzw. falschen Einstellungen im Tileset liegen. Übrigens bedeutet "Keine Schussbahn" nicht, dass du nicht schießen kannst (ist nur eine Warnung). Die Kugel wird auf ihrem Weg allerdings auf ein Hindernis treffen (z.B. ein anderes Alien). Dabei unterscheiden sich Sicht- und Schusslinien auch etwas, denn die Höhen-Werte für Augenposition und Waffe unterscheiden sich glaube etwas.
verfasst am: 27.11.2011, 13:50
Registrierdatum: 20.07.2005, 00:01

 Beiträge: 203
Jo sind wahrscheinlich unsaubere Tiles.
Der gezeigte Baum gehört definitiv dazu und das in allen Bodenkarten die ich gesehen habe.
verfasst am: 27.11.2011, 15:09
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Es wäre hilfreich, wenn jemand mal alle Tiles sammeln würde, die angepasst werden müssen. Gehört der Baum z.B. zu den Standardtilesets, oder ist er aus einem speziell für den Spielsatz erstellten Tileset? Ich stimme dir jedenfalls zu, dass diese Art Probleme hohe Priorität haben sollten - zumal sie sich leicht beheben lassen sollten, wenn es nur um falsche Werte in den Tilesets geht (Da bin ich mir aber noch nicht 100% sicher, je mehr Infos zu dem Thema desto besser)
verfasst am: 27.11.2011, 16:02 · Edited by: Kamor
Registrierdatum: 20.07.2005, 00:01

 Beiträge: 203
Dann könnte man auch hier nochmal drüber nachdenken.

http://s14.directupload.net/file/d/2721/tkhxngao_jpg.htm

Die rot markierten Felder haben keine freie Schußbahnen, zumindest laut der Zielansage mit der SHIFT-Taste.

Paradox ist hier, das laut der Ansage alle anderen Felder aber einen Trefferchance haben, auch sämtliche Felder die direkt hinter dem Busch liegen.

Hier greifen dann zwei verschiedene Mechanismen. Eine Art theoretische Vorberechnung der Schußchance und ob eine freie Schußbahn überhaupt möglich ist und die tatsächliche Situation, wenn ich abdrücke und der Busch dann weg ist (Raketenwerfer) obwohl, dort laut Theorie ne Trefferchance war.

Habe die KI jetzt noch nicht so weit recherchiert, aber ich vermute, das die KI, wenn laut Theorie die Trefferchance hoch genug, die dann ebenfalls abdrückt, obwohl der Busch da doch im Weg ist?

Also die theoretische Berechnung ist hier definitiv dann verwirrend, weil sie nur die roten Felder ohne freie Schußbahn registriert und andere Felder, wo die Schußbahn auch durch den Busch blockiert ist, dann einfach ignoriert.

Also drei unterschiedliche Ebenen die kontroverse Informationen für den Spieler liefern.

Die tatsächliche Sicht, die theoretische freie Schußbahn und die tatsächliche freie Schußbahn, beim Schuß.

Noch passend zum Thema, aber nicht so kritsch für die KI, aber dennoch wichtig für das spätere interessante Spiel sind dann die Fenster. Eben im Bodeneinsatz die Fenster waren doch sehr schlecht geputzt. Meine Truppen standen direkt davor, schon mit der Nase an der Scheibe, aber nichts zu sehen, ausser schwarz. ;-)
verfasst am: 01.12.2011, 19:42 · Edited by: Kamor
Registrierdatum: 20.07.2005, 00:01

 Beiträge: 203
Ich poste das mal hier, weil es evtl. auch ein Grund sein könnte, für das vermutete Tileproblem? Aufjedenfall ist es ein Problem für die KI.

guckst du hier

http://s1.directupload.net/file/d/2725/szmmdnen_jpg.htm

Situation:

Alien steht bei vollen Zeiteinheiten in nächster Nähe.

der Code:

    thisUnit.ViewTo(NearestEnemy.GetPosition);
    if (thisUnit.CanSeeUnit(NearestEnemy)=false) then
    begin
      game_api_MessageBox('cant see ...'+NearestEnemy.Name);
    end;



Auf dem Screen sieht man eindeutig, das das Alien richtig guckt, dies wird ja auch nochmal im Script sichergestellt.

Denoch gibt es nicht wenig Situationen bei meinen Tests, wo Gegner, die ein Feld entfernt stehen, nicht gesehen werden?
Man sieht ja eindeutig, das die Messagebox angeschlagen hat und die Befehle auch auf den richtigen Soldaten zeigen.

Komische Sache. Der Busch hat da nichts mit zu tun diesmal, das ganze passiert auch auf offener Fläche.
verfasst am: 01.12.2011, 21:13
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Hm, hier würde ich fast vermuten, dass es mit der Umsetzung von ViewTo zusammenhängt. Genau wie MoveTo setzt das erstmal nur die Absicht - das eigentliche ändern der Blickrichtung erfolgt dann im nächsten Schleifendurchlauf (genau deshalb haben meine früheren Versuche für eine LookAround-Funktion nicht funktioniert). Die MessageBox wird aber noch im gleichen Schleifendurchlauf angezeigt. Um das auszuschließen könnte man z.B. eine Frage statt einer Nachricht benutzen. Da wartet das Programm ja auf die Antwort des Spielers.
verfasst am: 03.12.2011, 10:30 · Edited by: Kamor
Registrierdatum: 20.07.2005, 00:01

 Beiträge: 203
Hm, ja dachte ich auch schon so, verstehe dann aber noch nicht, wieso der Alien dann in der nächsten Runde nicht losballert, da müsste doch spätestens der thisUnit.CanSeeUnit positiv anschlagen?

und thisUnit.CalcHitChance(Targetenemy, Schußtyp)

ignoriert die Sicht total, wenn ich das richtig verstehe. Ein Gegner direkt hinter einer Wand bekommt dort 100%, andere Gegner weit weit entfernt in Häusern haben selbst noch ne 1%. obwohl unmöglich die zu treffen.

Ich versuche jetzt aber trotzdem mal ne zeitliche Verzögerung einzubauen, auch wenn ein nichtsehendes Alien 10 Runden nach dem Viewto den Gegner immer noch nicht sieht?

Und gibt es eine Möglichkeit, nicht rechenintensiv zu warten, so etwas wie die Sleepanweisung bei C#?

Fürs Schiessen gibt es ja den thisUnit.WaitForWeapObj;

Edit: Das Problem, das der Alien ne Runde später den Gegner immer noch nicht sieht, lag irgendwo in meiner Gesamtlogik, die ich gerade ein bischen umstruktiert habe. Manchmal lösen sich Probleme von alleine. Dann scheint das jetzt nur noch ein Timingding zu sein, wie du sagtest. Werde meine Logik dementsprechend noch weiter umstellen, um da irgendwo ne Verzögerung reinzubekommen, evtl. setze ich sogar ein timer, der ne sekunde wartet.
verfasst am: 03.12.2011, 22:46 · Edited by: Kamor
Registrierdatum: 20.07.2005, 00:01

 Beiträge: 203
Zitat: Natter
Hm, hier würde ich fast vermuten, dass es mit der Umsetzung von ViewTo zusammenhängt.


Ja, das kann ich inzwischen 100% bestätigen. Ich bin hier langsam am verzweifeln.

Ein Shot ohne vorherigen ViewTo ergibt bessere Ergebnis, wie mit ViewTo davor. Sowie ich den Viewto einsetze, stimmt dann alles vorne und hinten nicht mehr. Ich vermute fast, das selbst wenn das Alien schon in die richtige Richtung guckt, wenn dann ein ViewTo kommt, der thisUnit.CanSeeUnit negativ anschlägt. So als wenn ein noch nicht abgearbeiteter Viewto-Auftrag generell den thisUnit.CanSeeUnit erstmal auf false flagt, und der thisUnit.CanSeeUnit erst wieder positiv ausschlagen tut, wenn der ViewTo abgearbeitet wurde und keine weiteren viewto´s gestartet wurden.

Im Moment sehe ich nur die eine Lösung, den Einsatz von Viewto mit allen möglichen Mitteln zu vermeiden. :-(

Edit: Habe eine Workaround-Lösung für dieses Problem gefunden.

Man ersetze alle Viewto´s durch einen Nichtschiessenbefehl und voila, alles ist gut.

thisUnit.ShootToUnit(NearestEnemy, stNichtSchiessen);

Als Nebeneffekt gibt es in der Routine einen sofort ausgeführten Viewto.

Trotzdem sollte man irgendwann den Viewto mal überarbeiten und den sofort abarbeiten. Den Move-Befehl in eine Auftragsschleife zu legen ist was anderes, aber den Viewto da reinzulegen macht den Befehl absolut unbrauchbar. Der Befehl sollte echt instant ausgeführt werden.
verfasst am: 04.12.2011, 11:46 · Edited by: Kamor
Registrierdatum: 20.07.2005, 00:01

 Beiträge: 203
Ok, der Vollständigkeit hier auch nochmal. Der neue Viewto-Workaround sieht jetzt so aus.

procedure viewto(Figure : TGameFigure ; FigureLookAt : TGameFigure);

begin
  // thisUnit.ViewTo(NearestEnemy.GetPosition);
  // viewto ist mangelhaft, da er nicht sofort ausgeführt wird
  // deshalb ein workaround mit ShootToUnit(NearestEnemy, stNichtSchiessen);
  // da shoot aber schiesst, wenn ziel in sicht, das erstmal abfragen

  if (Figure.CanSeeUnit(FigureLookAt)=false) then
  begin
    Figure.ShootToUnit(FigureLookAt, stNichtSchiessen);
  end;
end;



habe das ganze auch nochmal ins Mantis gegeben. 2505

dann habe ich nochmal 3 Situationen per Screenshot eingefangen.

http://s14.directupload.net/file/d/2728/6hd5k23x_jpg.htm
http://s1.directupload.net/file/d/2728/bc3lfiv4_jpg.htm
http://s7.directupload.net/file/d/2728/tksangu3_jpg.htm

Edit: Ich vergass zu erwähnen, da wo der Kreis ist, steht jedesmal ein Alien.
verfasst am: 04.12.2011, 12:57
Programmierer, allgemeines

Registrierdatum: 06.06.2004, 17:19

 Beiträge: 3186
Hmm, das mit ShootToUnit ist jedenfalls sehr interessant. Das ändern von ViewTo ist alles andere als trivial gewesen, weswegen ich das damals erstmal aufgeschoben hatte. Wenn ShooTo allerdings sofort eine Blickrichtungsänderung bewirkt (oder ein Warten, bis die Blickrichtung geändert wurde), dann könnte man dort vielleicht eine brauchbare Vorlage finden.



Du musst dich registrieren um auf dieses Thema zu antworten.
Login :: » Name » Passwort

Ladezeit (sec.): 0.014 · Powered by miniBB 1.6 with parts of 1.7 © 2001-2003