Currently Online

Latest Posts

Topic: Verbesserungsvorschlag : Kein Schiffe stapeln

Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 245
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: Today 16:36

EN : Improvment Suggestion : No Ship stacking

In vergangenden Mehrspieler Partien , zuletzt gegen carlie2 am 31.12.2024 , bin ich zum Schluss gekommen dass die neue Seekrieg Funktion doch noch unausgereift ist .
Außerdem hat man das auch schon in vielen Partien im Seekriegturnier 2023 gesehen .
Viel zu viel Mikro-Management und ein einziges "wer den anderen schneller mit Kriegsschiffen überschütten kann gewinnt" .
Ich habe eine simple Lösung für das Problem : An Land wird dies bereits bei Soldaten durchgeführt . Es kann sich nur ein Soldat auf einen Punkt befinden .
Genau das gleiche brauchen wir für Schiffe im allgemeinen , also nicht nur Kriegsschiffe .
Entweder man kopiert den Code für die Soldaten mit dieser entsprechenden Funktion und passt Sie an Schiffe im allgemeinen an oder ,
da ich nicht weiß wie diese Blockierung technisch gelöst wird , hier mein Lösungsvorschlag :
Bei der initalisierung der Partie wird eine neue Tabelle / ein neues Feld erstellt .
Jeder Punkt erhält eine leere String-Liste . Soldaten haben einen Blockierungsradius von 1 .
Schiffe sollten einen Blockierungsradius von 2 haben . Ich gehe mal davon aus das jede Einheit in Widelands eine eindeutige Nummer hat ,
die fortlaufend erhöht wird und immer an neu erschaffene Einheiten vergeben wird .
Das Beispiel Schiff mit der ID 1253 führt an allen Punkten im Radius von 2 um sich herum einmalig bei Erstellung des Schiffes
( Die Schiffsbaustelle wird in ein Schiff umgewandelt ) einmalig aus : "Füge Integer / String "1253" zur Integer / String Liste des Punktes hinzu .
Wenn das Schiff den Befehl erhält nach Osten zu fahren dann :
Prüfe alle 3 Punkte in Richtung Osten , außerhalb des Radius 2 , ob die Integer / String Liste der Punkte leer sind .
Prüfe alle 3 Punkte in Richtung Osten , innerhalb des Radius 2 , ob die Integer / String Liste nur die eigene ID 1253 enthält .
Eigentlich müsste man statt 6 Punkte nur 2 überprüfen aber ich bin mir da nicht ganz sicher , deshalb vorsichtshalber alle 6 .
Trifft obriges zu dann bewege um eins nach Osten . Wenn die Bewegung um eins nach Osten abgeschlossen ist ,
Füge bei allen 3 Punkten in Richtung Osten , die nun innerhalb des 2 Radius liegen die eigene ID 1253 zur Integer / String Liste hinzu .
Entferne bei allen 3 Punkten in Richtung Westen , die nun außerhalb des 2 Radius liegen die eigene ID 1253 aus der Integer / String Liste .
Trifft obriges nicht zu dann warte Beispielsweise 5 Sekunden ab und prüfe danach erneut ob nun eine Bewegung nach Osten möglich ist .
Falls das Schiff auch nach 60 Sekunden nicht weiter nach Osten sich bewegen kann , gebe eine Nachricht an den Spieler aus , dass das Schiff keinen Weg findet .
Diese Lösung führt aber auch zum Problem das wenn sich zwei Schiffe auf einer Route gegenseitig blockieren ,
das diese dann jedes mal vom Spieler manuell durch Mikro-Management entknoten werden müssen .
Um diese Art von Mikro-Management zu unterbinden , sollten Schiffe , sobald sie sich nicht mehr weiter bewegen können ,
versuchen einen Alternativen-Weg um das "Schiff-Hindernis" herum zu finden und erst wenn Sie gar keinen Weg mehr finden , dann den Spieler benachrichtigen .
Wenn der Spieler zu viele Schiffe bauen ließ und somit seine Küste verstopft der ist selbst Schuld .
Dann hat die "Schiff versenken" Funktion auch mal mehr nutzen .
Aber wenn ich es richtig beobachtet habe , gibt es bereits diese Ausweich Funktion für Schiffe , zumindest für Transport-Schiffe .

Das bringt übrigends auch die netten Taktien mit feindliche Transportschiffe zu blockieren an engstellen oder Häfen . Würde ich begrüßen .
Kann man mit der realen Welt vergleichen wo Kriegsschiffe dies Handelsschiffen auch androhen und behindern können .
Aber Sie dürfen keine Zivilen Schiffe angreifen und genau gleiches sollte auch in Widelands so bleiben . Blockieren ja , Versenken nein .

-

EN : The new Warship Function needs improvment . To much Micro-Management by Player in Warship fights .
The Solution : Similar to Land Soldiers , Ships generally , including Warships needs a Blocking Radius of 2 around the Ship ,
where no other Ship can enter the Point by moveing .
Each Point get at initzializing a new table / integer-list / string-list which is at start empty .
When the construction of a Ship is completed , the Ship send one time a add Ship-Unique-Unit-Number to all Points in Radius of 2 around the new Ship add Unit-Number .
When Ship moveing the table / list of next point is checked if it is empty . If not empty than ship try to find a alternative path to target .
If the ship cant find another alternative path to target than ship notificate the player that it cant find a path / ship moving is blocked .
If the player orders to many ships at shipyard and flooding his own coast , to the point where the ships no longer find a path ,
than the player self make the mistake and not the game . The current Function "Ship deleteing" becomes than also more usage .

This brings also the Tactic of blocking enemy civil ships at small sea points or ports . I would like that .
But similar to the real world , warships dont have the right to attack civil ships and i would say this must be also in Widelands .

icon name meaning
square_red /wlmedia/wlimages/square_red.png contra / -1
square_red /wlmedia/wlimages/square_red_green.png partially pro / +0.5
square_red /wlmedia/wlimages/square_green.png pro / +1
! [ ] ( /wlmedia/wlimages/square_green.png ) Bild einbinden
Edited: Today 16:57

Top Quote
kaputtnik
Avatar
Joined: 2013-02-18, 20:48
Posts: 2603
OS: Archlinux
Version: current master
Ranking
One Elder of Players
Location: Germany
Posted at: Today 17:37

Teayo, deine posts sind immer eine Textwand und sehr schwer zu lesen. Bitte benutze nicht <br>, und schon gar nicht nach jedem Satz. Bitte lass den Text fließen und benutze zweimal return um den Text in Absätze zu gliedern. Bitte benutze Listen um abfolgen darzustellen. Das ist natürlich nur ein Vorschlag, du kannst schreiben wie Du willst, aber damit erhöhst Du die Chancen das deine posts auch gelesen und vor allen Dingen verstanden werden.

Zum Thema: Es gibt etliche Dinge rund um marine Kriegsführung die noch offen sind. Kannst ja mal hier gucken.


Top Quote
Teayo
Avatar
Topic Opener
Joined: 2015-03-09, 22:11
Posts: 245
OS: Windows 11 Home 64-bit
Version: 1.2.1~rc1
Ranking
Widelands-Forum-Junkie
Location: Deutschland
Posted at: Today 19:33

@kaputtnik

EN : Improvment Suggestion : No Ship stacking

In vergangenden Mehrspieler Partien , zuletzt gegen carlie2 am 31.12.2024 , bin ich zum Schluss gekommen dass die neue Seekrieg Funktion doch noch unausgereift ist . Außerdem hat man das auch schon in vielen Partien im Seekriegturnier 2023 gesehen . Viel zu viel Mikro-Management und ein einziges "wer den anderen schneller mit Kriegsschiffen überschütten kann gewinnt" . Ich habe eine simple Lösung für das Problem : An Land wird dies bereits bei Soldaten durchgeführt . Es kann sich nur ein Soldat auf einen Punkt befinden . Genau das gleiche brauchen wir für Schiffe im allgemeinen , also nicht nur Kriegsschiffe . Entweder man kopiert den Code für die Soldaten mit dieser entsprechenden Funktion und passt Sie an Schiffe im allgemeinen an oder , da ich nicht weiß wie diese Blockierung technisch gelöst wird , hier mein Lösungsvorschlag :

  • Bei der initalisierung der Partie wird eine neue Tabelle / ein neues Feld erstellt . Jeder Punkt erhält eine leere String-Liste .
  • Soldaten haben einen Blockierungsradius von 1 . Schiffe sollten einen Blockierungsradius von 2 haben .
  • Ich gehe mal davon aus das jede Einheit in Widelands eine eindeutige Nummer hat , die fortlaufend erhöht wird und immer an neu erschaffene Einheiten vergeben wird .
  • Das Beispiel Schiff mit der ID 1253 führt an allen Punkten im Radius von 2 um sich herum einmalig bei Erstellung des Schiffes ( Die Schiffsbaustelle wird in ein Schiff umgewandelt ) einmalig aus : "Füge Integer / String "1253" zur Integer / String Liste des Punktes hinzu .

Wenn das Schiff den Befehl erhält nach Osten zu fahren dann :

  • Prüfe alle 3 Punkte in Richtung Osten , außerhalb des Radius 2 , ob die Integer / String Liste der Punkte leer sind .
  • Prüfe alle 3 Punkte in Richtung Osten , innerhalb des Radius 2 , ob die Integer / String Liste nur die eigene ID 1253 enthält .
  • Eigentlich müsste man statt 6 Punkte nur 2 überprüfen aber ich bin mir da nicht ganz sicher , deshalb vorsichtshalber alle 6 .

Trifft obriges zu dann bewege um eins nach Osten . Wenn die Bewegung um eins nach Osten abgeschlossen ist ,

  • Füge bei allen 3 Punkten in Richtung Osten , die nun innerhalb des 2 Radius liegen die eigene ID 1253 zur Integer / String Liste hinzu .
  • Entferne bei allen 3 Punkten in Richtung Westen , die nun außerhalb des 2 Radius liegen die eigene ID 1253 aus der Integer / String Liste .
  • Trifft obriges nicht zu dann warte Beispielsweise 5 Sekunden ab und prüfe danach erneut ob nun eine Bewegung nach Osten möglich ist .
  • Falls das Schiff auch nach 60 Sekunden nicht weiter nach Osten sich bewegen kann , gebe eine Nachricht an den Spieler aus , dass das Schiff keinen Weg findet .

Diese Lösung führt aber auch zum Problem das wenn sich zwei Schiffe auf einer Route gegenseitig blockieren , das diese dann jedes mal vom Spieler manuell durch Mikro-Management entknoten werden müssen . Um diese Art von Mikro-Management zu unterbinden , sollten Schiffe , sobald sie sich nicht mehr weiter bewegen können , versuchen einen Alternativen-Weg um das "Schiff-Hindernis" herum zu finden und erst wenn Sie gar keinen Weg mehr finden , dann den Spieler benachrichtigen . Wenn der Spieler zu viele Schiffe bauen ließ und somit seine Küste verstopft der ist selbst Schuld . Dann hat die "Schiff versenken" Funktion auch mal mehr nutzen . Aber wenn ich es richtig beobachtet habe , gibt es bereits diese Ausweich Funktion für Schiffe , zumindest für Transport-Schiffe .

Das bringt übrigends auch die netten Taktien mit feindliche Transportschiffe zu blockieren an engstellen oder Häfen . Würde ich begrüßen . Kann man mit der realen Welt vergleichen wo Kriegsschiffe dies Handelsschiffen auch androhen und behindern können . Aber Sie dürfen keine Zivilen Schiffe angreifen und genau gleiches sollte auch in Widelands so bleiben . Blockieren ja , Versenken nein .

-

EN : The new Warship Function needs improvment . To much Micro-Management by Player in Warship fights . The Solution : Similar to Land Soldiers , Ships generally , including Warships needs a Blocking Radius of 2 around the Ship , where no other Ship can enter the Point by moveing . Each Point get at initzializing a new table / integer-list / string-list which is at start empty . When the construction of a Ship is completed , the Ship send one time a add Ship-Unique-Unit-Number to all Points in Radius of 2 around the new Ship add Unit-Number . When Ship moveing the table / list of next point is checked if it is empty . If not empty than ship try to find a alternative path to target . If the ship cant find another alternative path to target than ship notificate the player that it cant find a path / ship moving is blocked . If the player orders to many ships at shipyard and flooding his own coast , to the point where the ships no longer find a path , than the player self make the mistake and not the game . The current Function "Ship deleteing" becomes than also more usage .

This brings also the Tactic of blocking enemy civil ships at small sea points or ports . I would like that . But similar to the real world , warships dont have the right to attack civil ships and i would say this must be also in Widelands .

Ist das so besser ?

Ich habe in dieser Nachricht keine >br< genutzt und auch Abfolgen mit "-" gelistet . Also bei mir sieht das jetzt schrecklich schlecht lesbar aus .

Bezüglich des Themas , so habe ich auf den Github Link von dir gesehen dass das Problem bereits in Behebung ist , was mich freut .


Edited by kaputtnik: Listen benötigen jeweils eine Leerzeile oben und unten. Ich hoffe ich habe den Post nach deinen Wünschen korrigiert und die Beschreibung in Wikisyntax angepasst.

Edited: Today 20:21

Top Quote
kaputtnik
Avatar
Joined: 2013-02-18, 20:48
Posts: 2603
OS: Archlinux
Version: current master
Ranking
One Elder of Players
Location: Germany
Posted at: Today 20:23

Listen benötigen jeweils eine Leerzeile oben und unten. Ich hoffe ich habe den Post nach deinen Wünschen entsprechend korrigiert und die Beschreibung in Wikisyntax angepasst.

Das ist besser, imho face-smile.png Danke!


Top Quote